WZSSAD を使用した z/OS セキュリティー・リソースへのアクセス

WLP z/OS® システム・セキュリティー・アクセス・ドメイン (WZSSAD) では、Liberty サーバーに付与された権限を指示します。これらの権限によって、サーバーがユーザーの認証と許可を行う際に、どの System Authorization Facility (SAF) アプリケーション・ドメインおよびリソース・プロファイルの照会を許されるかを制御します。

例えば、2 つの Liberty サーバー・インスタンス (実動用とテスト用) をセットアップして、 実動とテストでロールのアクセス権限が異なるようにする場合は、2 つの異なるシステム・セキュリティー・アクセス・ドメインをセットアップすることができます。

Liberty サーバーは、非管理者や非特権ユーザーが構成して実行することができる無許可プログラムです。 そのため、システムのセキュリティーと保全性を確保するために、 ユーザーがこのサーバーを利用して、明示的に権限が付与されていないセキュリティー操作を実行することがないようにすることが重要です。

注: WZSSAD は、サーバーが認証と許可に許可 SAF サービスを使用している場合にのみ有効です。 つまり、エンジェル・プロセスが実行中で、SAFCRED 許可サービス・ルーチンの使用権限がサーバーに付与されていることを意味します。
WZSSAD によって保護される SAF 操作には、次の 3 つがあります。
  • ユーザーの認証
  • サブジェクトを Java™ EE ロールに許可
  • サブジェクトを他の SAF リソースに許可
デフォルトで WZSSAD は構成されていません。つまり、サーバーには、何についても認証および許可を行う権限がありません。 例えば、管理者が一部またはすべての操作の実行権限を Liberty サーバーに付与するまで、 Liberty サーバーは認証および許可のために許可 SAF サービスを使用することができません。

ユーザーの認証

サーバーは、APPL クラスで APPLID として参照されるリソースを定義することで構成された特定の SAF ドメインに対して、 ユーザーを認証します。 ドメインに対してユーザーを認証するには、APPL クラスのその APPLID リソースに対する読み取り権限がユーザーに必要です。 また、APPL クラスがアクティブな場合は常に、非認証ユーザー ID (デフォルトでは WSGUEST) では、APPL クラスの APPLID リソースに対する読み取り権限も必要です。

サーバーが使用する APPLID リソース名は、<safCredentials> 構成エレメントの profilePrefix 属性で指定されます。 このエレメントを指定しない場合、デフォルトの profilePrefix の BBGZDFLT が使用されます。

以下の例は、server.xml ファイルで profilePrefix に BBGZDFLT を構成する方法を示しています。
<safCredentials profilePrefix="BBGZDFLT"/>
以下の例は、 RACF® コマンドを使用して APPLID を BBGZDFLT として構成する方法を示しています。
// Define the BBGZDFLT APPLID to RACF.
RDEFINE APPL BBGZDFLT UACC(NONE)

// Activate the APPL class. 
//If not active, the domain is not restricted, which means anyone can authenticate to it.
SETROPTS CLASSACT(APPL)

//All users to be authenticated by the server must have READ access to the APPLID in the APPL class:
PERMIT BBGZDFLT CLASS(APPL) ACCESS(READ) ID(UserID)

//The unauthenticated user ID requires READ access to the APPLID in the APPL class:
PERMIT BBGZDFLT CLASS(APPL) ACCESS(READ) ID(WSGUEST)
さらに、 サーバーには、特定の APPLID ドメインで認証呼び出しを行うために WZSSAD 内で権限を付与する必要があります。 これにより、サーバーによる許可 SAF サービスの使用を利用して、どの APPLID を認証できるか、また、認証できないかに関する情報を非許可ユーザーが発見できないようにします。 特定の APPLID ドメインで認証する権限をサーバーに付与するには、 Liberty サーバーの始動タスク ID に、SERVER クラス内の BBG.SECPFX.<APPLID> プロファイルに対する読み取り権限を付与する必要があります。
RDEFINE SERVER BBG.SECPFX.BBGZDFLT UACC(NONE)
PERMIT BBG.SECPFX.BBGZDFLT CLASS(SERVER) ACCESS(READ) ID(serverUserId)

サブジェクトを Java EE ロールに許可

サーバーは、EJBROLE クラスに定義された SAF リソース・プロファイルに対してサブジェクトが許可されているかどうかを検査することで、 Java EE アプリケーション・セキュリティー・ロール名に対してサブジェクトを許可します。 SAF リソース・プロファイル名は、SAF ロール・マッパーによって、アプリケーション・ロール名からマップされます。 SAF ロール・マッパーは、特定のアプリケーション・ロール名およびアプリケーション・リソース名に対する SAF プロファイル名を生成します。 デフォルトで、{profilePrefix}.{resource}.{role} というパターンを使用して SAF プロファイル名は生成されます。 以下に例を示します。
profilePrefix="BBGZDFLT" 
Application resource name = "MYAPP"

Application role name = "ADMIN"

Mapped profile name = "BBGZDFLT.MYAPP.ADMIN"

詳しくは、Liberty: ロールを SAF プロファイルにマップする方法の制御

を参照してください。
WZSSAD では、EJBROLE クラス内のどの SAF プロファイルに対してサーバーが許可を実行できるかを制限します。 これにより、サーバーによる許可 SAF サービスの使用を利用して、 どの EJBROLE プロファイルに対して許可できるか、または許可できないかに関する情報を非許可ユーザーが発見できないようにします。 EJBROLE プロファイル名の HLQ に対して許可検査を実行する権限が、サーバーに必要です。 プロファイル名の HLQ とは、プロファイル名の中で、最初の「.」までの (ただし、「.」は含まない) 最初のセグメントです。 . 以下に例を示します。
EJBROLE profile name = "BBGZDFLT.ADMIN" 
HLQ = "BBGZDFLT"
プロファイルの HLQ に対して許可検査を実行する権限をサーバーに付与するには、 次のように、サーバー・プロセスに関連付けられたユーザーに、 SERVER クラスの BBG.SECPFX.<HLQ> プロファイルに対する読み取り権限を付与する必要があります。
RDEFINE SERVER BBG.SECPFX.BBGZDFLT UACC(NONE)
PERMIT BBG.SECPFX.BBGZDFLT CLASS(SERVER) ACCESS(READ) ID(serverUserId)
例では、SAF ロール・マッパーが、マップされたプロファイルの HLQ を profilePrefix に設定するため、同じプロファイル BBG.SECPFX.BBGZDFLT で APPLID 認証権限と EJBROLE プロファイル許可権限の両方が管理されます。

サブジェクトを他の SAF リソースに許可

Java EE アプリケーションは、EJBROLE 以外の SAF クラスに対してアクセス制御検査を実行することができます。 WZSSAD では、EJBROLE 外部のどの SAF クラスに対してサーバーが許可できるかを制限します。 これにより、サーバーによる許可 SAF サービスの使用を利用して、非許可ユーザーまたはアプリケーションが非 EJBROLE の SAF クラス内のどのリソース・プロファイルに対して許可されるか、または許可されないかに関する情報を非許可ユーザーまたはアプリケーションが発見できないようにします。

非 EJBROLE の SAF クラスに対して許可検査を実行する権限をサーバーに付与するには、 サーバー・プロセスに関連付けられたユーザーに、 SERVER クラスの BBG.SECCLASS.<SAF-CLASS> プロファイルに対する読み取り権限を付与する必要があります。例えば、FACILITY クラスのプロファイルに対して許可するには、次のようにします。
RDEFINE SERVER BBG.SECCLASS.FACILITY UACC(NONE)
PERMIT BBG.SECCLASS.FACILITY CLASS(SERVER) ACCESS(READ) ID(serverUserId)
注: 非 EJBROLE クラス内のどのリソース・プロファイルに対してサーバーが許可できるかに関しては、制限がありません。 非 EJBROLE クラスに対する許可検査の実行権限がサーバーに付与されていれば、 このサーバーは、そのクラス内のすべてのプロファイルに対して許可できることになります。

トピックのタイプを示すアイコン 参照トピック

ファイル名: rwlp_WZSSAD_zos.html