ステップ 2: ポリシー・サーバーとしてのポリシー・エージェントの構成

接続するクライアントのポート、およびクライアントに使用する構成ファイルを選択するポリシー・クライアント一致ステートメントを定義します。 クライアントのユーザー ID と一致するユーザー ID をサーバー上で作成し、セキュリティーをセットアップします。

手順

ポリシー・サーバーとしてポリシー・エージェントを使用したい場合は、以下のステップを実行します。

  1. ポリシー・クライアントが接続する先のポートを定義します。 ポリシー・クライアントが使用される場合、メイン構成ファイル内の ClientConnection ステートメントは、ポリシー・エージェントがリモート接続のために listen するポートを提供します。デフォルト・ポート (16310) を使用できますが、ポリシー・エージェントをポリシー・サーバーとして使用するには ClientConnection ステートメントを指定する必要があります。
    ガイドライン: TCP/IP プロファイル内の PORT ステートメントを使用して、ClientConnection ステートメントで指定されたポートを予約してください。
    制約事項: このポート値は、ServicesConnection ステートメントに構成されているポート値と同じにはできません。
  2. ポリシー・クライアントに使用される構成ファイルを選択する、1 組のポリシー・クライアント一致ステートメントを定義します。 ポリシー・クライアントがポリシー・サーバーに接続する際に、一致があるかどうかを判別するために、メイン構成ファイル内の DynamicConfigPolicyLoad ステートメントが評価されます。名前の一致には、大/小文字の区別があります。一致するステートメントが検出されると、パラメーターは、ポリシー・クライアントに使用される共通構成ファイルとイメージ固有構成ファイルの両方を識別します。一致するステートメントが検出されない場合、デフォルトのイメージ固有ファイルが使用されます。一致するステートメント (またはデフォルト値) は、そのクライアントの存続期間中、次のいずれか 1 つのイベントが発生するまで、ポリシー・クライアントにバインドされます。
    • ポリシー・クライアントがポリシー・サーバーから切り離される。
    • ポリシー・サーバーとポリシー・クライアント間の接続が終了する。
    • 関連付けられている DynamicConfigPolicyLoad ステートメントが除去される。この場合、ポリシー・クライアントは異なる DynamicConfigPolicyLoad ステートメント (またはデフォルト値) にバインドされます。

    DynamicConfigPolicyLoad ステートメントでポリシー・クライアント名に正規表現を使用すると、そのステートメントを複数のポリシー・クライアントと一致させることができます。 DynamicConfigPolicyLoad ステートメントでサポートされている正規表現の説明については、「z/OS Communications Server: IP 構成解説書」を参照してください。

    例えば、式 (.+)_(.+) は、1 つ以上の文字と、その後に続く下線、さらにその後に続く 1 つ以上の文字で構成される任意のクライアント名と一致します。ポリシー・クライアントの PolicyServer ステートメントで構成されるデフォルト・クライアント名が、この式と一致します。

    次の 2 通りの方式を使用すると、イメージ固有ファイル名の部分内にあるクライアント名の全部または一部を置き換えることができます。

    • 単一ワイルドカード文字 (*) は、クライアント名全体で置き換えられます。
    • DynamicConfigPolicyLoad ステートメントのクライアント名として正規表現を使用する場合は、イメージ固有ファイル名でシンボリック置換値 $0 から $9 を使用できます。値 $0 は、一致したクライアント名の部分全体を表します。値 $1 から $9 は、正規表現内で括弧に入った対応する副次式と一致する、クライアント名の部分を表します。 例として正規表現 (.+)_(.+)、およびポリシー・クライアント名 SYS123_TCPIP2 を使用すると、可能な置換変数の値は次のとおりです。
      • 値 * は SYS123_TCPIP2 で置き換えられる
      • 値 $0 は SYS123_TCPIP2 で置き換えられる
      • 値 $1 は SYS123 で置き換えられる
      • 値 $2 は TCPIP2 で置き換えられる
      この例では、値 $0 は値 * と同じですが、これはすべての正規表現に当てはまるとは限りません。クライアント名全体を置換値として使用したい場合は、値 * を指定してください。

    使用される一致階層は次のとおりです。

    1. ポリシー・クライアント名と DynamicConfigPolicyLoad ステートメントとの間の完全一致。
    2. ポリシー・クライアント名と DynamicConfigPolicyLoad ステートメントとの間の正規表現一致。最長一致正規表現が選択されます。複数のステートメントが同じ長さの clientname パラメーターと一致する場合、ステートメントの選択はアルファベット順に行われます。
    3. 一致するステートメントなし。次のように、ポリシー・タイプに基づいてデフォルト・ファイルが使用されます。
      ポリシー・タイプ
      デフォルト・ファイル
      AT-TLS
      /etc/pagent_remote.ttls
      IDS
      /etc/pagent_remote.ids
      IPSec
      /etc/pagent_remote.ipsec
      QoS
      /etc/pagent_remote.qos
      ルーティング
      /etc/pagent_remote.routing

    次の例は、単純ワイルドカードをシミュレートするために正規表現を使用する DynamicConfigPolicyLoad ステートメントの一致、および使用される結果の構成ファイルを、IPSec ポリシーを使用して示しています。

    DynamicConfigPolicyLoad  Rem.*
    {
      PolicyType             IPSec
      {
        CommonPolicyLoad     //'ETC.COMMON.IPSEC'
        PolicyLoad           //'ETC.IPSEC(*)'
      }
    }
    
    DynamicConfigPolicyLoad  Remote.*
    {
      PolicyType             IPSec
      {
        PolicyLoad           /etc/*.ipsec
      }
    }
    
    DynamicConfigPolicyLoad  Remote5
    {
      PolicyType             IPSec
      {
        CommonPolicyLoad     /user10/common_remote.ipsec
        PolicyLoad           /user10/pagent_remote5.ipsec
      }
    }

    さまざまなポリシー・クライアントに使用される結果の構成ファイルが表 1 に表示されています。

    表 1. 各種ポリシー・クライアントに使用される構成ファイル
    ポリシー・クライアント名 一致ステートメント 共通 IPSec 構成ファイル イメージ IPSec 構成ファイル
    Remote1 Remote.* なし /etc/Remote1.ipsec
    Remote5 Remote5 /user10/common_remote.ipsec /user10/pagent_remote5.ipsec
    Rem42 Rem.* //'ETC.COMMON.IPSEC' //'ETC.IPSEC(REM42)'
    remote5 該当なし なし /etc/pagent_remote.ipsec

    次の例は、もっと複雑な正規表現を使用する DynamicConfigPolicyLoad ステートメントの一致、および使用される結果の構成ファイルを、IDS ポリシーを使用して示しています。正規表現は、下線文字で区切られる 2 つのストリングと一致します。 各ストリングの先頭は英大文字、末尾は数字でなければなりません。

    DynamicConfigPolicyLoad  ^([A-Z].+[0-9]+)_([A-Z].+[0-9]+)$
    {
      PolicyType             IDS
      {
        CommonPolicyLoad     //'ETC.COMMON.IDS'
        PolicyLoad           //'ETC.$1($2)'
      }
    }

    さまざまなポリシー・クライアントに使用される結果の構成ファイルが表 2 に表示されています。

    表 2. 各種ポリシー・クライアントに使用される構成ファイル
    ポリシー・クライアント名 一致ステートメント 共通 IDS 構成ファイル イメージ IDS 構成ファイル
    SYS42_TCPIP2 ^([A-Z].+[0-9]+)_([A-Z].+[0-9]+)$ //'ETC.COMMON.IDS' //'ETC.SYS42(TCPIP2)'
    Remote1_Image5 ^([A-Z].+[0-9]+)_([A-Z].+[0-9]+)$ //'ETC.COMMON.IDS' //'ETC.REMOTE1(IMAGE5)'
    SYS123_TCPIP 該当なし なし /etc/pagent_remote.ids
    規則: ポリシー・クライアント名と DynamicConfigPolicyLoad ステートメント名には大/小文字の区別がありますが、MVS™ データ・セット名にはありません。したがって、ポリシー・クライアント名で置き換えられるワイルドカードを含む MVS データ・セット構成ファイルを定義する場合は注意してください。例えば、ポリシー・クライアント名 client42Client42 が、MVS データ・セット名で置換変数として使用される場合、両方のポリシー・クライアントに同じ構成ファイルが使用されます。
  3. ポリシー・クライアントのユーザー ID と一致する 1 つ以上のユーザー ID を、ポリシー・サーバー・システムで構成します。 各ポリシー・クライアントは固有のクライアント名を使用しますが、ポリシー・サーバーに対して有効な信任状を提示することも必要です。 有効な信任状としては、ユーザー ID とパスワード、またはユーザー ID とパスチケット (セキュア・サインオンが有効になっている場合) があります。
    規則: ユーザー ID に対応して定義されているパスワードは、ポリシー・クライアント上に PolicyServer ステートメントの AuthBy Password パラメーターを使用して構成されているパスワードと一致している必要があります。

    ポリシー・クライアントを表す SAF ユーザー ID が、セキュリティー製品に対して定義されなければなりません。 ユーザー ID は、OMVS セグメントを使用して使用して定義されている必要があります。 セキュリティー製品として RACF® が使用される場合は、次のコマンドを使用して SAF ユーザー ID を定義してください。

    ADDUSER client PASSWORD(password) DFLTGRP(OMVSGRP) OMVS(UID(x) HOME('/home/client'))

    各ポリシー・クライアントは、固有のユーザー ID を使用する必要はありません (ただし、構成オプションです)。 ポリシー・サーバーでは、ユーザー ID は次の 2 つの目的に使用されます。

    • ポリシー・クライアントがポリシー・サーバーに接続するときのユーザー認証
    • クライアントがアクセスできるポリシーを判別するために、SERVAUTH プロファイルへのアクセス
  4. BPX.DAEMON FACILITY クラス・プロファイルに対してポリシー・エージェントを許可します。 BPX.DAEMON プロファイルの使用については、BPX.DAEMON FACILITY クラス・プロファイルを参照してください。このプロファイルの使用を決定する場合は、そのプロファイルに対してポリシー・エージェント・ユーザー ID を許可します。 セキュリティー製品として RACF が使用される場合は、次のコマンドを使用してユーザー ID を許可します。
    PERMIT BPX.DAEMON CLASS(FACILITY) ID(userid) ACCESS(READ)
  5. ポリシー・クライアントにパスチケット・セキュリティーを使用したい場合は、PTKTDATA クラス・プロファイルを構成します。 ポリシー・クライアントがポリシー・サーバーに接続するときに使用される PolicyServer ステートメントで、パスワードかパスチケットのどちらかを使用するように、ポリシー・クライアントを構成できます。セキュア・サインオン機能およびパスチケットについては、「z/OS Security Server RACF セキュリティー管理者のガイド」を参照してください。パスチケットの使用を選択する場合、パスチケットの生成と検証に使用されるアプリケーション・キーを含むように、PTKTDATA クラスで適切なプロファイルを定義します。 セキュリティー製品として RACF が使用される場合は、次のコマンドを使用してプロファイルを定義します。
    RDEFINE PTKTDATA profile SSIGNON(KEYMASKED(key)) UACC(UPDATE)

    ポリシー・エージェントによって使用されるアプリケーション名は PAGENT であるので、この名前でプロファイルを定義する必要があります。 プロファイルで定義されるアプリケーション・キーは、ポリシー・クライアントとポリシー・サーバーで同一でなければなりません。

  6. ポリシー・クライアントとポリシー・サーバーの間でセキュア接続を使用したい場合は、ポリシー・サーバー上に AT-TLS 規則を構成して、ポリシー・クライアントからの SSL 接続を使用可能にします。 ポリシー・クライアントが SSL 接続を使用している場合は、ポリシー・クライアントとサーバーとの間の通信を AT-TLS を使用して保護するように、ポリシー・サーバー上に AT-TLS 規則を定義する必要があります。スタックの AT-TLS 処理を使用可能にするには、TCP/IP プロファイル内の TCPCONFIG ステートメントで TTLS パラメーターを指定します。 特定の AT-TLS ポリシーはポリシー・エージェント構成ファイルで構成されます。AT-TLS の使用可能化および AT-TLS ポリシーの構成について詳しくは、Application Transparent Transport Layer Security のデータ保護を参照してください。
    規則:
    • TLS 暗号化を必要とする暗号スイートのみがポリシー・クライアントと交換されるように、AT-TLS ポリシーを定義してください。 暗号スイートを暗号化を必要とするものに制限できない場合、非トラステッド・ネットワーク全体で機密情報が平文で流出するおそれがあります。
    • ポリシー・サーバーとポリシー・クライアントの通信が通過するスタックごとに、AT-TLS ポリシーを定義してください。
    • ポリシー・クライアントの中に SSL を使用するクライアントと使用しないクライアントが存在する場合は、SSL を使用するポリシー・クライアントのみを選択するように AT-TLS ポリシーを定義します。
    結果: ポリシー・クライアントとポリシー・サーバーの間の接続に SSL を使用しないことを選択すると、その接続上では機密情報が暗号化されずに伝送されます。機密情報には、次の情報があります (ただし、これに限定されるわけではありません)。
    • ポリシー・クライアントからポリシー・サーバーに認証のために送信されるパスワード (パスワードの信任状を使用している場合)
    • ポリシー・サーバーからポリシー・クライアントに送信される、以下のようなポリシー情報。
      • パスワード
      • 証明書ラベル
      • 事前共有鍵を使用する IKE トンネル用の IPSec 鍵
      • 手動トンネル用の IPSec 鍵
    要件: ポリシー・サーバーは、SSL ハンドシェーク時にサーバーの役目をします。SSL ハンドシェークのサーバー役割で動作するには、ポリシー・サーバーには、秘密鍵、およびその秘密鍵の所有権を確認する証明書へのアクセス権が必要です。AT-TLS を使用するサーバー用の鍵と証明書の作成および管理については、TLS/SSL セキュリティーを参照してください。

    ポリシー・サーバーに AT-TLS を使用可能にするのに使用される AT-TLS ポリシー・ステートメントの例は次のとおりです。

    TTLSRule                     PolicyServerRule                                    
    {                                                                             
       LocalPortRange                     16310
       JobName                            PAGENT                              
       Direction                          Inbound                             
       TTLSGroupActionRef                 PolicyServerGroup                            
       TTLSEnvironmentActionRef           PolicyServerConn                
    }  
              
    TTLSGroupAction                       PolicyServerGroup                                         
    {                                                                             
       TTLSEnabled                        On                                  
    }   
                                                                              
    TTLSEnvironmentAction                 PolicyServerConn                             
    {                                                                             
       TTLSKeyRingParms                                                       
       {                                                                    
          Keyring                         PAGENT/keyring 
       }                                                                    
       TTLSCipherParmsRef                 RequireEncryption
       HandshakeRole                      SERVER                                                              
    }                             
    
    TTLSCipherParms                   RequireEncryption
    {
       V3CipherSuites              TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA  
       V3CipherSuites              TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA  
       V3CipherSuites              TLS_DH_RSA_WITH_3DES_EDE_CBC_SHA  
       V3CipherSuites              TLS_DH_DSS_WITH_3DES_EDE_CBC_SHA  
       V3CipherSuites              TLS_RSA_WITH_3DES_EDE_CBC_SHA  
       V3CipherSuites              TLS_DHE_RSA_WITH_AES_256_CBC_SHA 
       V3CipherSuites              TLS_DHE_DSS_WITH_AES_256_CBC_SHA  
       V3CipherSuites              TLS_DH_RSA_WITH_AES_256_CBC_SHA  
       V3CipherSuites              TLS_DH_DSS_WITH_AES_256_CBC_SHA  
       V3CipherSuites              TLS_RSA_WITH_AES_256_CBC_SHA  
       V3CipherSuites              TLS_DHE_RSA_WITH_AES_128_CBC_SHA  
       V3CipherSuites              TLS_DHE_DSS_WITH_AES_128_CBC_SHA  
       V3CipherSuites              TLS_DH_RSA_WITH_AES_128_CBC_SHA 
       V3CipherSuites              TLS_DH_DSS_WITH_AES_128_CBC_SHA  
       V3CipherSuites              TLS_RSA_WITH_AES_128_CBC_SHA  
       V3CipherSuites              TLS_DHE_RSA_WITH_DES_CBC_SHA  
       V3CipherSuites              TLS_DHE_DSS_WITH_DES_CBC_SHA  
       V3CipherSuites              TLS_DH_RSA_WITH_DES_CBC_SHA  
       V3CipherSuites              TLS_DH_DSS_WITH_DES_CBC_SHA  
       V3CipherSuites              TLS_RSA_WITH_DES_CBC_SHA
       V3CipherSuites              TLS_RSA_WITH_RC4_128_SHA  
       V3CipherSuites              TLS_RSA_WITH_RC4_128_MD5  
       V3CipherSuites              TLS_RSA_EXPORT_WITH_RC2_CBC_40_MD5  
       V3CipherSuites              TLS_RSA_EXPORT_WITH_RC4_40_MD5  
    }
    規則: TTLSRule ステートメントの LocalPortRange 値には、ポリシー・サーバー・メイン構成ファイル内の ClientConnection ステートメントで指定された値が含まれていなければなりません。
  7. ポリシー・クライアントとポリシー・サーバーとの間でセキュア接続を使用する場合は、ポリシー・エージェントを EZB.INITSTACK.sysname.tcpname SERVAUTH クラス・プロファイルに対して許可します。 AT-TLS ポリシーはポリシー・クライアントからの SSL 接続を使用可能にするために使用されます。このため、いずれかのポリシー・クライアントが SSL を使用する場合は、ポリシー・エージェントが EZB.INITSTACK.sysname.tcpname SERVAUTH クラス・プロファイルに対して許可されている必要があります。詳しくは、TCP/IP スタック初期化アクセス制御を参照してください。セキュリティー製品として RACF が使用される場合は、次のコマンドを使用してプロファイルに対してポリシー・エージェントを許可します。
    PERMIT EZB.INITSTACK.sysname.tcpname CLASS(SERVAUTH) ID(userid) ACCESS(READ)