第3章 セキュリティーレルム
セキュリティーレルムは、Data Grid Server エンドポイントの ID、暗号化、認証、および承認設定を定義します。
3.1. プロパティーレルム
プロパティーレルムはプロパティーファイルを使用して、ユーザーおよびグループを定義します。
users.properties
は、ユーザー名をプレーンテキスト形式でパスワードにマッピングします。DIGEST-MD5
SASL メカニズムまたは Digest
HTTP メカニズムを使用する場合は、パスワードを事前にダイジェストすることもできます。
myuser=a_password user2=another_password
groups.properties
はユーザーをロールにマッピングします。
myuser=supervisor,reader,writer user2=supervisor
エンドポイント認証メカニズム
Data Grid Server がプロパティーレルムを使用するよう設定すると、以下の認証メカニズムを使用するようにエンドポイントを設定できます。
-
Hot Rod (SASL):
PLAIN
、DIGEST-*
、およびSCRAM-*
-
REST(HTTP):
Basic
およびDigest
プロパティーレルム設定
<security xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:infinispan:server:12.1 https://infinispan.org/schemas/infinispan-server-12.1.xsd" xmlns="urn:infinispan:server:12.1"> <security-realms> <security-realm name="default"> <!-- Defines groups as roles for server authorization. --> <properties-realm groups-attribute="Roles"> <!-- Specifies the properties file that holds usernames and passwords. --> <!-- The plain-text="true" attribute stores passwords in plain text. --> <user-properties path="users.properties" relative-to="infinispan.server.config.path" plain-text="true"/> <!-- Specifies the properties file that defines roles for users. --> <group-properties path="groups.properties" relative-to="infinispan.server.config.path"/> </properties-realm> </security-realm> </security-realms> </security>
3.1.1. ユーザーの作成と変更
Data Grid ユーザーの認証情報を追加し、データへのアクセスを制御するパーミッションを割り当てます。
Data Grid サーバーのインストールは、プロパティーレルムを使用して、Hot Rod エンドポイントおよび REST エンドポイントのユーザーを認証します。これは、Data Grid にアクセスする前に 1 人以上のユーザーを作成する必要があることを意味します。
デフォルトでは、ユーザーはキャッシュにアクセスして Data Grid リソースと対話するためのパーミッションを持つロールも必要です。ユーザーにロールを個別に割り当てたり、ロールパーミッションを持つグループにユーザーを追加したりすることができます。
Data Grid コマンドラインインターフェイス (CLI) の user
コマンドを使用して、ユーザーを作成し、ロールを割り当てます。
CLI セッションから help user
を実行し、コマンドの詳細を取得します。
3.1.1.1. 認証情報の追加
Data Grid Console の admin
ユーザーと、Data Grid 環境を完全に制御する必要があります。このため、初めて認証情報を追加する時に admin
パーミッションを持つユーザーを作成する必要があります。
手順
-
$RHDG_HOME
でターミナルを開きます。 CLI で
user create
コマンドを使用してadmin
ユーザーを作成します。$ bin/cli.sh user create myuser -p changeme -g admin
または、ユーザー名 admin は自動的に
admin
パーミッションを取得します。$ bin/cli.sh user create admin -p changeme
任意のテキストエディターで、
user.properties
およびgroups.properties
を開き、ユーザーおよびグループを確認します。$ cat server/conf/users.properties #$REALM_NAME=default$ #$ALGORITHM=encrypted$ myuser=scram-sha-1\:BYGcIAwvf6b... $ cat server/conf/groups.properties myuser=admin
3.1.1.2. ユーザーへのロールの割り当て
ユーザーにロールを割り当て、ユーザーがデータにアクセスし、Data Grid リソースを変更するための適切なパーミッションを持つようにします。
手順
admin
ユーザーで CLI セッションを開始します。$ bin/cli.sh
deployer
ロールを katie に割り当てます。[//containers/default]> user roles grant --roles=deployer katie
katie のロールをリスト表示します。
[//containers/default]> user roles ls katie ["deployer"]
3.1.1.3. グループへのユーザーの追加
グループを使用すると、複数のユーザーのパーミッションを変更できます。グループにロールを割り当ててから、そのグループにユーザーを追加します。ユーザーは、グループロールからパーミッションを継承します。
手順
-
admin
ユーザーで CLI セッションを開始します。 user create
コマンドを使用してグループを作成します。-
--groups
引数を使用して、グループ名として developers を指定します。 グループのユーザー名とパスワードを設定します。
プロパティーレルムでは、グループは特別なタイプのユーザーで、ユーザー名とパスワードも必要です。
[//containers/default]> user create --groups=developers developers -p changeme
-
グループをリスト表示します。
[//containers/default]> user ls --groups ["developers"]
application
ロールを developers グループに割り当てます。[//containers/default]> user roles grant --roles=application developers
developers グループのロールをリスト表示します。
[//containers/default]> user roles ls developers ["application"]
必要に応じて、既存のユーザーを一度に 1 人ずつグループに追加します。
[//containers/default]> user groups john --groups=developers