第8章 ユーザーロールとパーミッションの設定
承認は、ユーザーがキャッシュにアクセスしたり、Data Grid リソースとやり取りしたりする前に、特定の権限を持つ必要があるセキュリティー機能です。読み取り専用アクセスから完全なスーパーユーザー特権まで、さまざまなレベルのパーミッションを提供するロールをユーザーに割り当てます。
8.1. セキュリティー−認証 リンクのコピーリンクがクリップボードにコピーされました!
Data Grid の認証は、ユーザーアクセスを制限することでデプロイメントを保護します。
ユーザーアプリケーションまたはクライアントは、Cache Manager またはキャッシュで操作を実行する前に、十分なパーミッションが割り当てられたロールに属している必要があります。
たとえば、特定のキャッシュインスタンスで承認を設定して、Cache.get() を呼び出すには、読み取り権限を持つロールを ID に割り当てる必要があり、Cache.put() を呼び出すには書き込み権限を持つロールが必要になるようにします。
このシナリオでは、io ロールが割り当てられたユーザーアプリケーションまたはクライアントがエントリーの書き込みを試みると、Data Grid はリクエストを拒否し、セキュリティー例外を出力します。writer ロールのあるユーザーアプリケーションまたはクライアントが書き込みリクエストを送信する場合、Data Grid は承認を検証し、後続の操作のためにトークンを発行します。
アイデンティティー
アイデンティティーは java.security.Principal タイプのセキュリティープリンシパルです。javax.security.auth.Subject クラスで実装されたサブジェクトは、セキュリティープリンシパルのグループを表します。つまり、サブジェクトはユーザーとそれが属するすべてのグループを表します。
ロールのアイデンティティー
Data Grid はロールマッパーを使用するため、セキュリティープリンシパルが 1 つ以上のパーミッションを割り当てるロールに対応します。
以下の図は、セキュリティープリンシパルがロールにどのように対応するかを示しています。
8.1.1. ユーザーロールとパーミッション リンクのコピーリンクがクリップボードにコピーされました!
Data Grid には、データにアクセスして Data Grid リソースと対話するためのパーミッションをユーザーに付与するデフォルトのロールのセットが含まれています。
ClusterRoleMapper は、Data Grid がセキュリティープリンシパルを承認ロールに関連付けるために使用するデフォルトのメカニズムです。
ClusterRoleMapper は、プリンシパル名をロール名に一致させます。admin という名前のユーザーは admin パーミッションを自動的に取得し、deployer という名前のユーザーは deployer パーミッションを取得する、というようになります。
| ロール | パーミッション | 説明 |
|---|---|---|
|
| ALL | Cache Manager ライフサイクルの制御など、すべてのパーミッションを持つスーパーユーザー。 |
|
| ALL_READ、ALL_WRITE、LISTEN、EXEC、MONITOR、CREATE |
|
|
| ALL_READ、ALL_WRITE、LISTEN、EXEC、MONITOR |
|
|
| ALL_READ、MONITOR |
|
|
| MONITOR |
JMX および |
8.1.2. パーミッション リンクのコピーリンクがクリップボードにコピーされました!
承認ロールには、Data Grid へのアクセスレベルが異なるさまざまなパーミッションがあります。パーミッションを使用すると、Cache Manager とキャッシュの両方へのユーザーアクセスを制限できます。
8.1.2.1. Cache Manager のパーミッション リンクのコピーリンクがクリップボードにコピーされました!
| パーミッション | 機能 | 説明 |
|---|---|---|
| 設定 |
| 新しいキャッシュ設定を定義します。 |
| LISTEN |
| キャッシュマネージャーに対してリスナーを登録します。 |
| ライフサイクル |
| キャッシュマネージャーを停止します。 |
| CREATE |
| キャッシュ、カウンター、スキーマ、スクリプトなどのコンテナーリソースを作成および削除することができます。 |
| MONITOR |
|
JMX 統計および |
| ALL | - | すべてのキャッシュマネージャーのアクセス許可が含まれます。 |
8.1.2.2. キャッシュ権限 リンクのコピーリンクがクリップボードにコピーされました!
| パーミッション | 機能 | 説明 |
|---|---|---|
| READ |
| キャッシュからエントリーを取得します。 |
| WRITE |
| キャッシュ内のデータの書き込み、置換、削除、エビクト。 |
| EXEC |
| キャッシュに対するコードの実行を許可します。 |
| LISTEN |
| キャッシュに対してリスナーを登録します。 |
| BULK_READ |
| 一括取得操作を実行します。 |
| BULK_WRITE |
| 一括書き込み操作を実行します。 |
| ライフサイクル |
| キャッシュを開始および停止します。 |
| ADMIN |
| 基盤となるコンポーネントと内部構造へのアクセスを許可します。 |
| MONITOR |
|
JMX 統計および |
| ALL | - | すべてのキャッシュパーミッションが含まれます。 |
| ALL_READ | - | READ パーミッションと BULK_READ パーミッションを組み合わせます。 |
| ALL_WRITE | - | WRITE パーミッションと BULK_WRITE パーミッションを組み合わせます。 |
8.1.3. ロールマッパー リンクのコピーリンクがクリップボードにコピーされました!
Data Grid には、サブジェクトのセキュリティープリンシパルをユーザーに割り当てる承認ロールにマップする PrincipalRoleMapper API が含まれています。
8.1.3.1. クラスターのロールマッパー リンクのコピーリンクがクリップボードにコピーされました!
ClusterRoleMapper は永続的にレプリケートされたキャッシュを使用して、デフォルトのロールおよびパーミッションのプリンシパルからロールへのマッピングを動的に保存します。
デフォルトでは、プリンシパル名をロール名として使用し、実行時にロールマッピングを変更するメソッドを公開する org.infinispan.security.MutableRoleMapper を実装します。
-
Java クラス:
org.infinispan.security.mappers.ClusterRoleMapper -
宣言型設定:
<cluster-role-mapper />
8.1.3.2. ID ロールマッパー リンクのコピーリンクがクリップボードにコピーされました!
IdentityRoleMapper は、プリンシパル名をロール名として使用します。
-
Java クラス:
org.infinispan.security.mappers.IdentityRoleMapper -
宣言型設定:
<identity-role-mapper />
8.1.3.3. CommonName ロールマッパー リンクのコピーリンクがクリップボードにコピーされました!
CommonNameRoleMapper は、プリンシパル名が識別名 (DN) の場合は Common Name (CN) をロール名として使用します。
たとえば、この DN (cn=managers,ou=people,dc=example,dc=com) は managers ロールにマッピングします。
-
Java クラス:
org.infinispan.security.mappers.CommonRoleMapper -
宣言型設定:
<common-name-role-mapper />
8.1.3.4. カスタムロールマッパー リンクのコピーリンクがクリップボードにコピーされました!
カスタムロールマッパーは org.infinispan.security.PrincipalRoleMapper の実装です。
-
宣言型設定:
<custom-role-mapper class="my.custom.RoleMapper" />