UNIX に関する FACILITY および SURROGAT クラス・プロファイルのセットアップ

FACILITY および SURROGAT クラスの適切なリソースを保護するため、RACF® プロファイルを UACC(NONE) で定義するときに、特定の UNIX 機能を使用できるユーザーを制御することができます。UNIX 関連リソースは接頭部 BPX で始まります。 通常、UNIX 機能を使用するためには、許可ユーザーは少なくとも FACILITY リソースへの読み取りアクセス権を必要とします。

総称プロファイルの BPX.* を定義しないでください。 セキュリティー関連の意図しない動作が発生する恐れがあります。BPX.* を定義する場合、それに対して OMVS アドレス・スペースの ID を許可する必要があ り、BPXOINIT のユーザー ID は OMVS とは別のものにする必要があります。 このようなガイドラインを守れば、BPX.MAINCHECK 検査や BPX.DAEMON および BPX.SAFFASTPATH のアクティブ化といった、セキュリティー関連の意図しない動作がシステムで発生することはなくなります。

UNIX 機能の RACF 制御をアクティブにするには、RACF SETROPTS CLASSACT FACILITY コマンドを使用します。FACILITY クラスをアクティブにする前に、許可ユーザーに適切なリソースを許可してください。許可しないと、ユーザーは保護された UNIX 機能を使用できなくなります。

変更の始まりTRUSTED ユーザーは、デフォルトでは BPX.SERVER プロファイルおよび BPX.DAEMON プロファイルに対して許可されていないため、これらの 2 つのプロファイルへのアクセスに関連付けられているどの権限も所有していません。変更の終わり

セキュリティー上の理由から、以下のクラス・プロファイルの定義が必要な場合があります。以下に挙げたものはすべて FACILITY クラス・プロファイルですが、BPX.SRV は例外で、これは SURROGAT クラス・プロファイルです。

  • BPX.CF

    _cpl サービスへのアクセスを制御します。

  • BPX.CONSOLE

    許可ユーザーに対して、_console() または _console2() の各サービスを使用する権限が与えられます。

  • BPX.DAEMON
    BPX.DAEMON は、z/OS UNIX 環境で次の 2 つの機能を果たします。
    • このプロファイルで許可されたスーパーユーザーは、ターゲット・ユーザー ID のパスワードまたはパスワード・フレーズを知らなくても、z/OS UNIX サービスを介して、MVS™ 識別を変更するデーモン権限を持ちます。この識別の変更は、ターゲット・ユーザー ID に定義された OMVS セグメントがある場合にだけ 実施可能です。

      BPX.DAEMON が定義されていなければ、すべてのスーパーユーザー (UID=0) がデーモン権限を持ちます。 デーモン権限を持つスーパーユーザーを限定する場合は、このプロファイルを定義して、選択されたスーパーユーザーにだけ許可を与えます。

    • デーモン・レベルの権限を必要とするアドレス・スペースにロードされるプログラムは、すべて、プログラム制御対象として定義しておく必要があります。BPX.DAEMON FACILITY クラス・プロファイルが 定義されていれば、z/OS UNIX は、アドレス・スペースが、制御されていない実行可能プログラムを ロードしていないことを確認してから、次に挙げる z/OS UNIX が制御するサービスの実行を許可します。
      • seteuid
      • setuid
      • setreuid
      • pthread_security_np()
      • auth_check_resource_np()
      • _login()
      • _spawn() with user ID change
      • _passwd()

    デーモン権限は、プログラムが次のことを実行する場合のみ必要であり、それは、ターゲット・ユーザー ID に対して最初に _passwd() コールを出さずに、現行 UID を変更するための、setuid()、seteuid()、setreuid()、spawn() ユーザー ID を実施する場合です。ターゲット・ユーザー ID のパスワードまたはパスワード・フレーズを知らなくても MVS 識別を変更するために、これらのサービスの呼び出し側はスーパーユーザーでなければなりません。さらに、BPX.DAEMON FACILITY クラス・ プロファイルが定義され、その FACILITY クラスがアクティブである場合、呼び出し側に このプロファイルの使用を許可しておく必要があります。 プログラムが制御されているライブラリーからのもので、ターゲット UID のパスワードまたはパスワード・フレーズを知っている場合、プログラムはデーモン権限なしに UID を変更できます。

    RACF WARNING モードは BPX.DAEMON でサポートされていません。

    BPX.DAEMON についての詳細は、デーモンに対するセキュリティーの正しいレベルの確立を参照してください。

  • BPX.DAEMON.HFSCTL

    デーモン権限を持つどのユーザーが、制御されていないプログラムを MVS ライブラリーから アドレス・スペースにロードできるかを制御します。

    制約事項: BPX.DAEMON.HFSCTL は総称プロファイルを許可していません。
  • BPX.DEBUG

    BPX.DEBUG の READ アクセス権を持つユーザーは、特定のタイプの制限付きプロセス をデバッグすることができます。 このプロセスには、PID が 1 のプロセスは含まれません。APF 権限または BPX.SERVER 権限で実行されるプログラムをデバッグするには、 そのプログラムで dbx を使って ptrace 呼び出し可能サービスを 呼び出すことができます。

  • BPX.EXECMVSAPF.program_name

    execmvs 呼び出し可能サービスに対して無許可の呼び出し元が、許可されているプログラムに 100 文字を超える引数を受け渡すことを許可します。

    FACILITY クラスのリソースが存在する場合には、無許可の呼び出し元が FACILITY クラス・プロファイルに指定されているプログラム名に、100 文字を超え る引数を受け渡すことができます。個々のユーザーに対してプロファイルへのアクセス権限を与える必要はありません。 無許可の呼び出し元が、許可されている任意のプ ログラムに 100 文字を超える引数を受け渡せないようにするためには、BPX.EXECMVSAPF.program_name プロファイルを定義しないでください。

    許可されている特定のプログラムを 100 文字を超える引数で呼び出せるようにするためには、以下の各プログラムにプロファイルを 1 つ定義してください。
    BPX.EXECMVSAPF.YOURPGM                                                       
    BPX.EXECMVSAPF.MYPGM 
    共通の名前を持つ、許可されたプログラム・グループを 100 文字を超える引数で呼び出せるようにするためには、パターン・マッチングを許可するプロファイルを 1 つ定義してください。 例えば、先頭が「MYP」という共通の 3 文字である関連したプログラムのセットがある場合、次のように定義します。
    BPX.EXECMVSAPF.MYP* 
    その結果、無許可のすべての呼び出し元が、許可されている任意のプログラムのうち先頭が「MYP」であるものに、100 文字を超える引数を受け渡せるようになります。
    無許可のすべてのユーザーが、最大 4096 文字までの任意の引数を任意の許可プログラムに受け渡せるようにするためには、次のプロファイルを 1 つ定義します。
    BPX.EXECMVSAPF.* 
    ただし、IBM® ではこのようなタイプのプロファイルを定義することをお勧めしません。
  • BPX.FILEATTR.APF

    どのユーザーが z/OS® UNIX ファイルに APF 許可属性を設定することができるかを制御します。この権限は、ユーザーに APF 許可で実行するプログラムの作成を許可します。これは、プログラマーに SYS1.LINKLIB または SYS1.LPALIB の更新を許可する権限に似ています。

  • BPX.FILEATTR.PROGCTL

    どのユーザーがプログラム制御属性を設定することができるかを制御します。 この属性によってマークされたプログラムは、高水準の権限をもって実行するサーバー・アドレス・スペースで実行できます。 詳細については、UNIX ファイルのプログラムをプログラム制御にする定義を参照してください。

  • BPX.FILEATTR.SHARELIB

    chattr() 呼び出し可能サービスによって、共有ライブラリー拡張属性の設定を行うときに、追加の特権が必要であることを指示します。これにより、共有ライブラリー領域が誤用されるのを防ぐことができます。 詳細については、UNIX ファイルを共有ライブラリー・プログラムとして定義を参照してください。

  • BPX.JOBNAME

    _BPX_JOBNAME 環境変数、または spawn の継承構造を使用して、自身のジョブ名を設定する ことをどのユーザーに許可するかを制御します。このプロファイルに 対する READ またはそれ以上のアクセス権が与えられているユーザーが、自身のジョブ名を定義できます。

  • BPX.MAINCHECK

    拡張プログラム・セキュリティー保護を、RACF の EXECUTE 制御プログラムを使用しない UNIX デーモンやサーバーにまで拡張します。詳細については、拡張プログラム・セキュリティー BPX.DAEMON および BPX.MAINCHECK を使用する RACF拡張プログラム・セキュリティー BPX.SERVER および BPX.MAINCHECK を使用する RACFを参照してください。

    制約事項: BPX.MAINCHECK は総称プロファイルを許可していません。
  • BPX.MAP

    _map サービスおよび _map_init サービスへのアクセスを制御します。

  • BPX.NEXT.USER

    UID および GID の自動割り当てを使用可能にします。このプロファイルの APPLDATA フィールドは、RACF が未使用の UID 値および GID 値を得るための、開始値または値の範囲を指定します。「z/OS Security Server RACF セキュリティー管理者のガイド」では、BPX.NEXT.USER を詳細に説明しています。

  • BPX.POE

    _poe サービスへのアクセスを制御します。

  • BPX.SAFFASTPATH

    ファイル・システムおよび IPC 構成のセキュリティー検査をより迅速に行えるようにします。 詳細については、システム許可機能 (SAF) のファースト・パス・サポートを参照してください。

    制約事項: BPX.SAFFASTPATH は総称プロファイルを許可していません。
  • BPX.SERVER

    pthread_security_np() サービスの使用を制限します。 少なくとも BPX.SERVER FACILITY クラス・プロファイルに読み取りまたは書き込みアクセス権限を持つユーザーは、このサービスを使用できます。 これは、呼び出し側のスレッド用のセキュリティー環境を作成または削除します。

    このプロファイルは、z/OS リソースへのアクセス権限を判別する BPX1ACK サービス の使用を制限するためにも使用されます。

    BPX.SERVER への権限を持つサーバーは、クリーンなプログラム制御環境で稼働する必要があります。z/OS UNIX は、制御されていない実行可能プログラムをアドレス・スペースがロードしていないことを確認してから、z/OS UNIX が制御する以下のサービスの実行を許可します。
    • seteuid
    • setuid
    • setreuid
    • pthread_security_np()
    • auth_check_resource_np()
    • _login()
    • _spawn() with user ID change
    • _passwd()

    BPX.SERVER についての詳細は、サーバーのセキュリティーの準備および デーモンに対するセキュリティーの正しいレベルの確立を参照してください。

  • BPX.SMF

    SMF レコードをカットしようとしている呼び出し側が、SMF レコードを書くことを許可されているかどうかを検査します。 また、SMF タイプまたはサブタイプが記録されているかどうかも検査します。

  • BPX.SHUTDOWN

    OMVS シャットダウン用のレジスターおよびブロックに対する oe_env_np サービスへのアクセスを制御します。

  • BPX.SRV.userid

    ユーザーが BPX.SRV.userid への アクセス権を持つ場合に UID の変更を許可します。 ここで uuuuuuuu はターゲット UID に関連した MVS ユーザー ID です。 BPX.SRV.userid は RACF SURROGAT クラス・プロファイルです。

  • BPX.STOR.SWAP

    どのユーザーがアドレス・スペースを スワップ不能にすることができるかを制御します。少なくとも BPX.STOR.SWAP への READ アクセスが許可 されているユーザーは、__mlockall() 呼び出し可能サービスを起動して、アドレス・スペースをスワップ不能または スワップ可能のいずれにもすることができます。

    アプリケーションがアドレス・スペースをスワップ不能にすると、システム内のさらに多くの実ストレージが優先ストレージに変換される場合があります。優先ストレージはオフライン構成にはできないので、このサービスを使用すると、将来、ご使用のインストール・システム のストレージの再構成能力を低下させる可能性があります。 このサービスを使用するアプリケーションの場合、ご使用のインストール・システムの説明書において、この副次作用についてユーザーに警告しているはずです。

  • 変更の始まりBPX.STICKYSUG.program_name

    指定されたパス名が、スティッキー属性および set-user-id 属性または set-group-id 属性が設定されたファイルに解決される場合、exec サービスおよび spawn サービスで、MVS プログラムの検索順序を使用して、実行されるプログラムを検索できるようにします。

    FACILITY クラスのリソースがある場合には、FACILITY クラス・プロファイル内に指定されているプログラム名の検索で、MVS プログラムの検索順序を使用できます。個々のユーザーに対してプロファイルへのアクセス権限を与える必要はありません。

    例:
    1. exec サービスおよび spawn サービスで、MVS プログラムの検索順序を使用せずにプログラムの検索を行うようにするには、BPX.STICKYSUG.program_name プロファイルを定義しないでください。
    2. exec サービスおよび spawn サービスで、MVS プログラムの検索順序を使用して特定のプログラムを検索するようにするには、以下のように各プログラムのプロファイルを定義します。
      BPX.STICKYSUG.YOURPGM 
      BPX.STICKYSUG.MYPGM   
    3. exec サービスおよび spawn サービスで、MVS プログラムの検索順序を使用して共通の名前を持つプログラムのグループを検索するようにするには、以下のように総称プロファイルを定義します。
      BPX.STICKYSUG.MYP*  
      exec および spawn は、MVS プログラムの検査順序を使用して、文字「MYP」で始まるプログラムを見つけます。
    4. exec サービスおよび spawn サービスで、常に MVS プログラムの検索順序を使用するようにするには、1 つのプロファイルを定義します。
      BPX.STICKYSUG.*
      ただし、IBM ではこのようなタイプのプロファイルを定義することをお勧めしません。
    変更の終わり
  • BPX.SUPERUSER

    ユーザーは、スーパーユーザー権限に切り替えることができます。 BPX.SUPERUSER についての詳細は、z/OS UNIX のスーパーユーザーを参照してください。

  • BPX.UNLIMITED.OUTPUT

    ユーザーは、_BPX_UNLIMITED_OUTPUT 環境変数を使用して、プロセスのデフォルト・スプール出力制限値をオーバーライドすることができます。

  • BPX.WLMSERVER
    WLM サーバー関数 _server_init() および _server_pwu() へのアクセスを制御します。さらに、以下の C 言語 WLM インターフェースも制御します。
    • QuerySchEnv()
    • CheckSchEnv()
    • DisconnectServer()
    • DeleteWorkUnit()
    • JoinWorkUnit()
    • LeaveWorkUnit()
    • ConnectWorkMgr()
    • CreateWorkUnit()
    • ContinueWorkUnit()
    この FACILITY クラス・プロファイルへの読み取り許可を持つサーバー・アプリケーションでは、これらのサーバー関数および WLM C 言語関数の両方を使用して、作業要求の作成および管理を行うことができます。
表 1 には、ここで示すプロファイルが定義済みで、かつ呼び出し側のユーザー ID が、指定された RACF FACILITY クラス・プロファイルに対して許可されている場合に、そのプロファイルで、サービスを使用することが許可されているかどうかが示されています。
  • YES は、そのプロファイルに関連付けられたサービスを、呼び出し側が使用することが許可されているという意味です。
  • NO は、そのプロファイルに関連付けられたサービスを、呼び出し側が使用することが許可されないという意味です。
例えば、BPX.DAEMON が未定義で、呼び出し側の UID がゼロでない場合は、その呼び出し側が setuid を使用することは許可されません。
表 1. 未定義の FACILITY クラス・プロファイルの許可
未定義の FACILITY クラス・プロファイル UID(0) である UID(0) でない
BPX.CF No No
BPX.CONSOLE。_console() サービスの許可された機能へのアクセスを制御します。どのユーザーが基本 _console() サービスを使用できるようにするかを制御するために使用されるものではありません。 Yes No
BPX.DAEMON Yes No
BPX.DAEMON.HFSCTL No No
BPX.DEBUG No No
BPX.EXECMVSAPF.program_name No No
BPX.FILEATTR.APF No No
BPX.FILEATTR.PROGCTL No No
BPX.FILEATTR.SHARELIB No No
BPX.JOBNAME Yes No
BPX.MAINCHECK No No
BPX.MAP Yes No
BPX.NEXT.USER。このプロファイルは、ユーザー ID の OMVS セグメントが作成または変更されるときに UID および GID を割り当てるために、RACF によって使用されます。z/OS UNIX で直接処理されるものではありません。 該当しない 該当しない
BPX.UNLIMITED.OUTPUT Yes No
BPX.POE Yes No
BPX.SAFFASTPATH No No
BPX.SERVER Yes No
BPX.SHUTDOWN Yes No
BPX.SMF No No
BPX.SRV.userid。そのプロファイルは、RACF SURROGAT クラスで定義されます。 No No
BPX.STOR.SWAP Yes No
変更の始まりBPX.STICKYSUG.program_name変更の終わり 変更の始まりNo変更の終わり 変更の始まりNo変更の終わり
BPX.SUPERUSER No No
BPX.WLMSERVER Yes No
表 2 には、ここで示すプロファイルが定義済みで、かつ呼び出し側のユーザー ID が、指定された RACF FACILITY クラス・プロファイルに対して許可されていない場合に、そのプロファイルで、サービスを使用することが許可されているかどうかが示されています。
  • YES は、そのプロファイルに関連付けられたサービスを、呼び出し側が使用することが許可されているという意味です。
  • NO は、そのプロファイルに関連付けられたサービスを、呼び出し側が使用することが許可されないという意味です。
表 2. 定義済みの FACILITY クラス・プロファイルの許可 (ユーザー ID が許可されていない場合)
定義済みの FACILITY クラス・プロファイル (呼び出し側が許可されていない) UID(0) である UID(0) でない
BPX.CF No No
BPX.CONSOLE。_console() サービスの許可された機能へのアクセスを制御します。どのユーザーが基本 _console() サービスを使用できるようにするかを制御するために使用されるものではありません。 Yes No
BPX.DAEMON No No
BPX.DAEMON.HFSCTL No No
BPX.DEBUG No No
BPX.EXECMVSAPF.program_name Yes Yes
BPX.FILEATTR.APF No No
BPX.FILEATTR.PROGCTL No No
BPX.FILEATTR.SHARELIB No No
BPX.JOBNAME Yes No
BPX.MAINCHECK Yes Yes
BPX.MAP No No
BPX.NEXT.USER。このプロファイルは、ユーザー ID の OMVS セグメントが作成または変更されるときに UID および GID を割り当てるために、RACF によって使用されます。z/OS UNIX で直接処理されるものではありません。 該当しない 該当しない
BPX.UNLIMITED.OUTPUT Yes No
BPX.POE No No
BPX.SAFFASTPATH No No
BPX.SERVER No No
BPX.SHUTDOWN No No
BPX.SMF No No
BPX.SRV.userid。そのプロファイルは、RACF SURROGAT クラスで定義されます。 No No
BPX.STOR.SWAP No No
変更の始まりBPX.STICKYSUG.program_name変更の終わり 変更の始まりYes変更の終わり 変更の始まりYes変更の終わり
BPX.SUPERUSER No No
BPX.WLMSERVER No No
表 3 には、ここで示すプロファイルが定義済みで、かつ呼び出し側のユーザー ID が、指定された RACF FACILITY クラス・プロファイルに対して許可されている場合に、そのプロファイルで、サービスを使用することが許可されているかどうかが示されています。
  • YES は、そのプロファイルに関連付けられたサービスを、呼び出し側が使用することが許可されているという意味です。
  • NO は、そのプロファイルに関連付けられたサービスを、呼び出し側が使用することが許可されないという意味です。
表 3. 定義済みの FACILITY クラス・プロファイルの許可 (ユーザー ID が許可されている場合)
定義済みの FACILITY クラス・プロファイル (呼び出し側が許可されている) UID(0) である UID(0) でない
BPX.CF Yes Yes
BPX.CONSOLE。_console() サービスの許可された機能へのアクセスを制御します。どのユーザーが基本 _console() サービスを使用できるようにするかを制御するために使用されるものではありません。 Yes Yes
BPX.DAEMON Yes No
BPX.DAEMON.HFSCTL Yes Yes
BPX.DEBUG Yes Yes
BPX.EXECMVSAPF.program_name Yes Yes
BPX.FILEATTR.APF Yes Yes
BPX.FILEATTR.PROGCTL Yes Yes
BPX.FILEATTR.SHARELIB Yes Yes
BPX.JOBNAME Yes Yes
BPX.MAINCHECK Yes Yes
BPX.MAP Yes Yes
BPX.NEXT.USER。このプロファイルは、ユーザー ID の OMVS セグメントが作成または変更されるときに UID および GID を割り当てるために、RACF によって使用されます。z/OS UNIX で直接処理されるものではありません。 該当しない 該当しない
BPX.UNLIMITED.OUTPUT Yes Yes
BPX.POE Yes Yes
BPX.SAFFASTPATH Yes Yes
BPX.SERVER Yes Yes
BPX.SHUTDOWN Yes Yes
BPX.SMF Yes Yes
BPX.SRV.userid。そのプロファイルは、RACF SURROGAT クラスで定義されます。 Yes Yes
BPX.STOR.SWAP Yes Yes
変更の始まりBPX.STICKYSUG.program_name変更の終わり 変更の始まりYes変更の終わり 変更の始まりYes変更の終わり
BPX.SUPERUSER Yes Yes
BPX.WLMSERVER Yes Yes