第3章 Programmatically configuring user roles and permissions
Java アプリケーションで組み込みキャッシュを使用する場合は、セキュリティー認証をプログラムで設定します。
3.1. Data Grid のユーザーロールと権限
Data Grid には、キャッシュや Data Grid のリソースにアクセスするための権限をユーザーに提供するロールがいくつかあります。
Role | パーミッション | 説明 |
---|---|---|
| ALL | Cache Manager ライフサイクルの制御など、すべてのパーミッションを持つスーパーユーザー。 |
| ALL_READ、ALL_WRITE、LISTEN、EXEC、MONITOR、CREATE |
|
| ALL_READ、ALL_WRITE、LISTEN、EXEC、MONITOR |
|
| ALL_READ、MONITOR |
|
| MONITOR |
JMX および |
3.1.1. パーミッション
ユーザーロールは、さまざまなアクセスレベルを持つパーミッションのセットです。
Permission | 機能 | 説明 |
設定 |
| 新しいキャッシュ設定を定義します。 |
LISTEN |
| キャッシュマネージャーに対してリスナーを登録します。 |
ライフサイクル |
| キャッシュマネージャーを停止します。 |
CREATE |
| キャッシュ、カウンター、スキーマ、スクリプトなどのコンテナーリソースを作成および削除することができます。 |
MONITOR |
|
JMX 統計および |
ALL | - | すべての Cache Manager のアクセス許可が含まれます。 |
Permission | 機能 | 説明 |
READ |
| キャッシュからエントリーを取得します。 |
WRITE |
| キャッシュ内のデータの書き込み、置換、削除、エビクト。 |
EXEC |
| キャッシュに対するコードの実行を許可します。 |
LISTEN |
| キャッシュに対してリスナーを登録します。 |
BULK_READ |
| 一括取得操作を実行します。 |
BULK_WRITE |
| 一括書き込み操作を実行します。 |
ライフサイクル |
| キャッシュを開始および停止します。 |
ADMIN |
| 基盤となるコンポーネントと内部構造へのアクセスを許可します。 |
MONITOR |
|
JMX 統計および |
ALL | - | すべてのキャッシュパーミッションが含まれます。 |
ALL_READ | - | READ パーミッションと BULK_READ パーミッションを組み合わせます。 |
ALL_WRITE | - | WRITE パーミッションと BULK_WRITE パーミッションを組み合わせます。 |
3.1.2. ロールとパーミッションマッパー
Data Grid は、ユーザーをプリンシパルのコレクションとして実装します。プリンシパルは、ユーザー名などの個々のユーザー ID、またはユーザーが属するグループのいずれかを表します。内部的には、これらは javax.security.auth.Subject
クラスで実装されます。
承認を有効にするには、プリンシパルをロール名にマップし、その後、ロール名を一連のパーミッションに展開する必要があります。
Data Grid には、セキュリティープリンシパルをロールに関連付ける PrincipalRoleMapper
API と、ロールを特定のパーミッションに関連付ける RolePermissionMapper
API が含まれています。
Data Grid は以下のロールおよびパーミッションのマッパーの実装を提供します。
- クラスターロールマッパー
- クラスターレジストリーにロールマッピングのプリンシパルを保存します。
- クラスターパーミッションマッパー
- ロールとパーミッションのマッピングをクラスターレジストリーに保存します。ユーザーのロールとパーミッションを動的に変更できます。
- ID ロールマッパー
- ロール名としてプリンシパル名を使用します。プリンシパル名のタイプまたはフォーマットはソースに依存します。たとえば、LDAP ディレクトリーでは、プリンシパル名を識別名 (DN) にすることができます。
- コモンネームロールマッパー
-
ロール名としてコモンネーム (CN) を使用します。このロールマッパーは、識別名 (DN) を含む LDAP ディレクトリーまたはクライアント証明書で使用できます。たとえば、
cn=managers,ou=people,dc=example,dc=com
は、managers
ロールにマッピングされます。
デフォルトでは、プリンシパルとロールのマッピングは、グループを表すプリンシパルにのみ適用されます。ユーザープリンシパルのマッピングも実行するように Data Grid を設定できます。
3.1.2.1. Data Grid でのロールとパーミッションへのユーザーのマッピング
LDAP サーバーから DN のコレクションとして取得された次のユーザーを考えてみましょう。
CN=myapplication,OU=applications,DC=mycompany CN=dataprocessors,OU=groups,DC=mycompany CN=finance,OU=groups,DC=mycompany
コモンネームロールマッパー を使用すると、ユーザーは次のロールにマッピングされます。
dataprocessors finance
Data Grid には次のロール定義があります。
dataprocessors: ALL_WRITE ALL_READ finance: LISTEN
ユーザーには次のパーミッションが与えられます。
ALL_WRITE ALL_READ LISTEN
3.1.3. ロールマッパーの設定
Data Grid は、デフォルトでクラスターロールマッパーとクラスターパーミッションマッパーを有効にします。ロールマッピングに別の実装を使用するには、ロールマッパーを設定する必要があります。
手順
- Data Grid 設定を開いて編集します。
- ロールマッパーを、Cache Manager 設定のセキュリティー許可の一部として宣言します。
- 変更を設定に保存します。
組み込みキャッシュを使用すると、principalRoleMapper()
および rolePermissionMapper()
メソッドを使用して、ロールおよびパーミッションマッパーをプログラムで設定できます。
ロールマッパーの設定
XML
<cache-container> <security> <authorization> <common-name-role-mapper /> </authorization> </security> </cache-container>
JSON
{ "infinispan" : { "cache-container" : { "security" : { "authorization" : { "common-name-role-mapper": {} } } } } }
YAML
infinispan: cacheContainer: security: authorization: commonNameRoleMapper: ~
関連情報