4.5. Data Grid 承認の設定


承認は、Data Grid で操作を実行する権限とデータにアクセスする権限を制限するものです。管理者は、さまざまなパーミッションレベルを持つロールをユーザーに割り当てます。

4.5.1. Data Grid 承認

Data Grid を使用すると、キャッシュマネージャーとキャッシュインスタンスをセキュリティー保護するための承認を設定できます。ユーザーアプリケーションまたはクライアントが、セキュリティー保護されたキャッシュマネージャーおよびキャッシュに対して操作を実行しようとする場合、その操作を実行するための十分なパーミッションを持つロールをアイデンティティーに提供する必要があります。

たとえば、特定のキャッシュインスタンスで承認を設定して、Cache.get() を呼び出すには、読み取り権限を持つロールをアイデンティティーに割り当てる必要があり、Cache.put() を呼び出すには書き込み権限を持つロールが必要になるようにします。

このシナリオでは、reader ロールが割り当てられたユーザーアプリケーションまたはクライアントがエントリーの書き込みを試みると、Data Grid はリクエストを拒否し、セキュリティー例外を出力します。writer ロールのあるユーザーアプリケーションまたはクライアントが書き込みリクエストを送信する場合、Data Grid は承認を検証し、後続の操作のためにトークンを発行します。

アイデンティティーからロールへのマッピング

アイデンティティーは java.security.Principal タイプのセキュリティープリンシパルです。javax.security.auth.Subject クラスで実装されたサブジェクトは、セキュリティープリンシパルのグループを表します。つまり、サブジェクトはユーザーとそれが属するすべてのグループを表します。

Data Grid はロールマッパーを使用して、セキュリティープリンシパルと、1 つ以上のパーミッションを表すロールを対応付けます。

次の図は、セキュリティープリンシパルがどのようにロールにマッピングされるかを示しています。

4.5.1.1. パーミッション

パーミッションは、実行できるアクションを制限することによって、キャッシュマネージャーとキャッシュへのアクセスを制御します。パーミッションは、名前付きキャッシュなどの特定のエンティティーに適用することもできます。

Expand
表4.1 キャッシュマネージャーのアクセス許可
パーミッション機能説明

設定

defineConfiguration

新しいキャッシュ設定を定義します。

LISTEN

addListener

キャッシュマネージャーに対してリスナーを登録します。

ライフサイクル

stop

キャッシュマネージャーを停止します。

ALL

-

すべてのキャッシュマネージャーのアクセス許可が含まれます。

Expand
表4.2 キャッシュ権限
パーミッション機能説明

READ

get, contains

キャッシュからエントリーを取得します。

WRITE

put, putIfAbsent, replace, remove, evict

キャッシュ内のデータの書き込み、置換、削除、エビクト。

EXEC

distexec, streams

キャッシュに対するコードの実行を許可します。

LISTEN

addListener

キャッシュに対してリスナーを登録します。

BULK_READ

keySet, values, entrySet, query

一括取得操作を実行します。

BULK_WRITE

clear, putAll

一括書き込み操作を実行します。

ライフサイクル

start, stop

キャッシュを開始および停止します。

ADMIN

getVersion, addInterceptor*, removeInterceptor, getInterceptorChain, getEvictionManager, getComponentRegistry, getDistributionManager, getAuthorizationManager, evict, getRpcManager, getCacheConfiguration, getCacheManager, getInvocationContextContainer, setAvailability, getDataContainer, getStats, getXAResource

基盤となるコンポーネントと内部構造へのアクセスを許可します。

ALL

-

すべてのキャッシュパーミッションが含まれます。

ALL_READ

-

READ パーミッションと BULK_READ パーミッションを組み合わせます。

ALL_WRITE

-

WRITE パーミッションと BULK_WRITE パーミッションを組み合わせます。

パーミッションの組み合わせ

使いやすいようにパーミッションを組み合わせることが必要になる場合があります。たとえば、"supervisors" にはストリーム操作の実行を許可し、"standard" ユーザーについては puts と gets しか実行できないように制限するには、次のマッピングを定義できます。

<role name="standard" permission="READ WRITE" />
<role name="supervisors" permission="READ WRITE EXEC BULK"/>
Copy to Clipboard Toggle word wrap

4.5.1.2. ロールマッパー

Data Grid には、サブジェクトのセキュリティープリンシパルを承認ロールにマッピングする PrincipalRoleMapper API が含まれています。デフォルトで使用できるロールマッパーが 2 つあります。

IdentityRoleMapper

ロール名としてプリンシパル名を使用します。

  • Java クラス: org.infinispan.security.mappers.IdentityRoleMapper
  • 宣言型設定: <identity-role-mapper />
CommonNameRoleMapper

プリンシパル名が識別名 (DN) の場合は、共通名 (CN) をロール名として使用します。たとえば 、cn=managers,ou=people,dc=example,dc=com DN は managers ロールにマッピングされます。

  • Java クラス: org.infinispan.security.mappers.CommonRoleMapper
  • 宣言型設定: <common-name-role-mapper />

org.infinispan.security.PrincipalRoleMapper インターフェイスを実装するカスタムロールマッパーを使用することもできます。カスタムロールマッパーを宣言的に設定するには、<custom-role-mapper class="my.custom.RoleMapper"/> を使用します。

4.5.2. 宣言的な承認の設定

infinispan.xml ファイルで承認を設定します。

手順

  1. cache-container でロールマッパーを指定するグローバル承認を設定し、ロールとパーミッションのセットを定義します。
  2. ユーザーロールに基づいてアクセスを制限するようにキャッシュの承認を設定します。

    <infinispan>
       <cache-container default-cache="secured" name="secured">
          <security>
             <authorization> 
    1
    
                <identity-role-mapper /> 
    2
    
                <role name="admin" permissions="ALL" /> 
    3
    
                <role name="reader" permissions="READ" />
                <role name="writer" permissions="WRITE" />
                <role name="supervisor" permissions="READ WRITE EXEC"/>
             </authorization>
          </security>
          <local-cache name="secured">
             <security>
                <authorization/> 
    4
    
             </security>
          </local-cache>
       </cache-container>
    </infinispan>
    Copy to Clipboard Toggle word wrap
    1
    Cache Manager の Data Grid 承認を有効にします。
    2
    ロールにプリンシパルをマップ PrincipalRoleMapper の実装を指定します。
    3
    ロールとその関連付けられたパーミッションを定義します。
    4
    暗黙的に、グローバル設定からすべてのロールを追加します。

    すべてのロールをキャッシュに適用しない場合は、以下のようにキャッシュに承認されたロールを明示的に定義します。

    <infinispan>
       <cache-container default-cache="secured" name="secured">
          <security>
             <authorization>
                <identity-role-mapper />
                <role name="admin" permissions="ALL" />
                <role name="reader" permissions="READ" />
                <role name="writer" permissions="WRITE" />
                <role name="supervisor" permissions="READ WRITE EXEC"/>
             </authorization>
          </security>
          <local-cache name="secured">
             <security>
                <authorization roles="admin supervisor reader"/> 
    1
    
             </security>
          </local-cache>
       </cache-container>
    
    </infinispan>
    Copy to Clipboard Toggle word wrap
    1
    キャッシュに承認されたロールを定義します。この例では、writer ロールのみを持つユーザーは "secured" キャッシュには許可されていません。Data Grid は、これらのユーザーからのアクセス要求を拒否します。
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat