第4章 Data Grid Server へのアクセスのセキュリティー保護
認証および暗号化メカニズムを設定して、Data Grid Server へのアクセスをセキュリティー保護し、データを保護します。
4.1. Data Grid サーバーのセキュリティーレルムの定義
セキュリティーレルムは、ID、暗号化、認証、および承認情報を Data Grid サーバーエンドポイントに提供します。
4.1.1. プロパティーレルム
プロパティーレルムはプロパティーファイルを使用して、ユーザーおよびグループを定義します。
users.properties
は、ユーザー名をプレーンテキスト形式でパスワードにマッピングします。DIGEST-MD5
SASL メカニズムまたは Digest
HTTP メカニズムを使用する場合は、パスワードを事前にダイジェストすることもできます。
myuser=a_password user2=another_password
groups.properties
はユーザーをロールにマッピングします。
myuser=supervisor,reader,writer user2=supervisor
プロパティーレルム設定
<security xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:infinispan:server:11.0 https://infinispan.org/schemas/infinispan-server-11.0.xsd" xmlns="urn:infinispan:server:11.0"> <security-realms> <security-realm name="default"> <properties-realm groups-attribute="Roles"> 1 <user-properties path="users.properties" 2 relative-to="infinispan.server.config.path" 3 plain-text="true"/> 4 <group-properties path="groups.properties" 5 relative-to="infinispan.server.config.path"/> </properties-realm> </security-realm> </security-realms> </security>
サポート対象の認証メカニズム
プロパティーレルムは、以下の認証メカニズムをサポートします。
-
SASL:
PLAIN
、DIGEST-*
、およびSCRAM-*
-
HTTP(REST):
Basic
およびDigest
4.1.1.1. ユーザーの作成と変更
Data Grid Server では、デフォルトのプロパティーレルムに対してユーザーを認証する必要があります。Data Grid Server にアクセスする前に、少なくとも 1 人のユーザーとパスワードを作成して認証情報を追加する必要があります。ユーザーが属するセキュリティー承認グループを追加および変更することもできます。
手順
-
$RHDG_HOME
でターミナルを開きます。 -
user
コマンドを使用して Data Grid ユーザーを作成および変更します。
このコマンドの使用方法の詳細は、help user
を実行してください。
ユーザーとパスワードの作成
Linux
$ bin/cli.sh user create myuser -p "qwer1234!"
Microsoft Windows
$ bin\cli.bat user create myuser -p "qwer1234!"
グループメンバーシップを持つユーザーの作成
Linux
$ bin/cli.sh user create myuser -p "qwer1234!" -g supervisor,reader,writer
Microsoft Windows
$ bin\cli.bat user create myuser -p "qwer1234!" -g supervisor,reader,writer
4.1.2. LDAP レルム
LDAP レルムは、OpenLDAP、Red Hat Directory Server、Apache Directory Server、Microsoft Active Directory などの LDAP サーバーに接続して、ユーザーを認証し、メンバーシップ情報を取得します。
LDAP サーバーは、サーバーのタイプとデプロイメントに応じて、異なるエントリーレイアウトを持つことができます。このため、LDAP レルム設定は複雑です。すべてのポジションの設定の例を提供するために、本書では扱いません。
LDAP レルム設定
<security xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:infinispan:server:11.0 https://infinispan.org/schemas/infinispan-server-11.0.xsd" xmlns="urn:infinispan:server:11.0"> <security-realms> <security-realm name="default"> <ldap-realm name="ldap" 1 url="ldap://my-ldap-server:10389" 2 principal="uid=admin,ou=People,dc=infinispan,dc=org" 3 credential="strongPassword" connection-timeout="3000" read-timeout="30000" 4 connection-pooling="true" referral-mode="ignore" page-size="30" direct-verification="true"> 5 <identity-mapping rdn-identifier="uid" 6 search-dn="ou=People,dc=infinispan,dc=org"> 7 <attribute-mapping> 8 <attribute from="cn" to="Roles" filter="(&(objectClass=groupOfNames)(member={1}))" filter-dn="ou=Roles,dc=infinispan,dc=org"/> </attribute-mapping> </identity-mapping> </ldap-realm> </security-realm> </security-realms> </security>
- 1
- LDAP レルムに名前を付けます。
- 2
- LDAP サーバー接続 URL を指定します。
- 3
- LDAP サーバーに接続するためのプリンシパルおよび認証情報を指定します。重要
LDAP 接続のプリンシパルには、LDAP クエリーを実行し、特定の属性にアクセスするために必要な権限が必要です。
- 4
- 必要に応じて、接続タイムアウトなどを指定して LDAP サーバー接続を調整します。
- 5
- ユーザーの認証情報を検証します。Data Grid は設定済みの認証情報を使用して LDAP サーバーへの接続を試みます。または、パスワードを指定する
user-password-mapper
要素を使用することもできます。 - 6
- LDAP エントリーをアイデンティティーにマッピングします。
rdn-identifier
は、指定された識別子 (通常はユーザー名) をもとにユーザーエントリーを検索する LDAP 属性を指定します (例:uid
またはsAMAccountName
属性)。 - 7
- ユーザーエントリーを含む LDAP サブツリーへの検索を制限する開始コンテキストを定義します。
- 8
- ユーザーがメンバーとなっている全グループを取得します。通常、メンバーシップ情報を保存する方法は 2 つあります。
-
通常、
member
属性にクラスgroupOfNames
を持つグループエントリーの下。この場合は、前述の設定例にあるように、属性フィルターを使用できます。このフィルターは、提供されたフィルターに一致するエントリーを検索します。フィルターは、ユーザーの DN と等しいmember
属性を持つグループを検索します。次に、フィルターは、from
で指定されたグループエントリーの CN を抽出し、それをユーザーのRoles
に追加します。 memberOf
属性のユーザーエントリー。この場合、以下のような属性参照を使用する必要があります。<attribute-reference reference="memberOf" from="cn" to="Roles" />
この参照は、ユーザーエントリーからすべての
memberOf
属性を取得し、from
で指定された CN を抽出し、それらをユーザーのRoles
に追加します。
-
通常、
サポート対象の認証メカニズム
LDAP レルムは、以下の認証メカニズムを直接サポートします。
-
SASL:
PLAIN
、DIGEST-*
、およびSCRAM-*
-
HTTP(REST):
Basic
およびDigest
4.1.2.1. LDAP レルムプリンシパルの書き換え
GSSAPI
、GS2-KRB5
、Negotiate
などの一部の SASL 認証メカニズムでは、LDAP サーバーの検索に使用する前に クリーンアップ する必要のあるユーザー名を提供します。
<security xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="urn:infinispan:server:11.0 https://infinispan.org/schemas/infinispan-server-11.0.xsd"
xmlns="urn:infinispan:server:11.0">
<security-realms>
<security-realm name="default">
<ldap-realm name="ldap"
url="ldap://${org.infinispan.test.host.address}:10389"
principal="uid=admin,ou=People,dc=infinispan,dc=org"
credential="strongPassword">
<name-rewriter> 1
<regex-principal-transformer name="domain-remover"
pattern="(.*)@INFINISPAN\.ORG"
replacement="$1"/>
</name-rewriter>
<identity-mapping rdn-identifier="uid"
search-dn="ou=People,dc=infinispan,dc=org">
<attribute-mapping>
<attribute from="cn" to="Roles"
filter="(&(objectClass=groupOfNames)(member={1}))"
filter-dn="ou=Roles,dc=infinispan,dc=org" />
</attribute-mapping>
<user-password-mapper from="userPassword" />
</identity-mapping>
</ldap-realm>
</security-realm>
</security-realms>
</security>
- 1
- 正規表現を使用してプリンシパルからユーザー名を抽出するリライトを定義します。
4.1.3. トラストストアレルム
トラストストアレルムは、Data Grid サーバーへの接続が許可されるすべてのクライアントのパブリック証明書が含まれるキーストアを使用します。
<security xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:infinispan:server:11.0 https://infinispan.org/schemas/infinispan-server-11.0.xsd" xmlns="urn:infinispan:server:11.0"> <security-realms> <security-realm name="default"> <server-identities> <ssl> <keystore path="server.p12" 1 relative-to="infinispan.server.config.path" 2 keystore-password="secret" 3 alias="server"/> 4 </ssl> </server-identities> <truststore-realm path="trust.p12" 5 relative-to="infinispan.server.config.path" keystore-password="secret"/> </security-realm> </security-realms> </security>
サポート対象の認証メカニズム
トラストストアレルムは、クライアント証明書の認証メカニズムと連携します。
-
SASL:
EXTERNAL
-
HTTP (REST):
CLIENT_CERT
4.1.4. トークンレルム
トークンレルムは外部サービスを使用してトークンを検証し、Red Hat SSO などの RFC-7662 (OAuth2 トークンイントロスペクション) と互換性のあるプロバイダーを必要とします。
<security xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:infinispan:server:11.0 https://infinispan.org/schemas/infinispan-server-11.0.xsd" xmlns="urn:infinispan:server:11.0"> <security-realms> <security-realm name="default"> <token-realm name="token" auth-server-url="https://oauth-server/auth/"> 1 <oauth2-introspection introspection-url="https://oauth-server/auth/realms/infinispan/protocol/openid-connect/token/introspect" 2 client-id="infinispan-server" 3 client-secret="1fdca4ec-c416-47e0-867a-3d471af7050f"/> 4 </token-realm> </security-realm> </security-realms> </security>
サポート対象の認証メカニズム
トークンレルムは、以下の認証メカニズムをサポートします。
-
SASL:
OAUTHBEARER
-
HTTP (REST):
Bearer