4.3. Operator ベースのブローカーデプロイメント用のセキュリティー設定の作成
4.3.1. Operator ベースのブローカーデプロイメント用のセキュリティー設定の作成
次の手順は、カスタムリソース (CR) インスタンスを使用して、ユーザーおよび関連するセキュリティー設定を Operator ベースのブローカーデプロイメントに追加する方法を示しています。
前提条件
AMQ Broker Operator がすでにインストールされている必要があります。Operator のインストール方法の 2 つの代替方法については、以下を参照してください。
- Securing brokers で説明されているように、ブローカーのセキュリティーについて詳しく理解している必要があります。
- CR インスタンスを使用して基本的なブローカーデプロイメントを作成する方法を理解する必要があります。詳細は、「基本的なブローカーインスタンスのデプロイ」 を参照してください。
ブローカーデプロイメントを作成する前または後に、セキュリティー CR をデプロイできます。ただし、ブローカーデプロイメントの作成後にセキュリティー CR をデプロイメントすると、新しい設定を適用するために、ブローカー Pod が再起動されます。
カスタムリソース (CR) インスタンスの設定を開始して、ブローカーデプロイメントのユーザーと関連するセキュリティー設定を定義します。
OpenShift コマンドラインインターフェイスの使用:
ブローカーデプロイメントのプロジェクトに CR をデプロイする権限を持つユーザーとして OpenShift にログインします。
oc login -u <user> -p <password> --server=<host:port>
-
ダウンロードした Operator インストールアーカイブの
deploy/crs
ディレクトリーに含まれるbroker_activemqartemissecurity_cr.yaml
というサンプル CR ファイルを開きます。
OpenShift Container Platform Web コンソールの使用
- ブローカーデプロイメントのプロジェクトに CR をデプロイする権限を持つユーザーとしてコンソールにログインします。
-
アドレス CRD に基づいて新規 CR インスタンスを起動します。左側のペインで、
をクリックします。 - Active MQArtemis Security CRDをクリックします。
- Instances タブをクリックします。
ActiveMQArtemisSecurity の作成をクリックします。
コンソールで、YAML エディターが開き、CR インスタンスを設定できます。
CR の
Spec
セクションで、ユーザーとロールを定義する行を追加します。以下に例を示します。apiVersion: broker.amq.io/v1beta1 kind: ActiveMQArtemisSecurity metadata: name: ex-prop spec: loginModules: propertiesLoginModules: - name: "prop-module" users: - name: "sam" password: "samspassword" roles: - "sender" - name: "rob" password: "robspassword" roles: - "receiver" securityDomains: brokerDomain: name: "activemq" loginModules: - name: "prop-module" flag: "sufficient" securitySettings: broker: - match: "#" permissions: - operationType: "send" roles: - "sender" - operationType: "createAddress" roles: - "sender" - operationType: "createDurableQueue" roles: - "sender" - operationType: "consume" roles: - "receiver" ...
注記前の例の要素には常に値を指定してください。たとえば、
securityDomains.brokerDomain
の値またはロールの値を指定しないと、設定によって予期しない結果が生じる可能性があります。上記の設定では、ユーザーを 2 つ定義しています。
-
sender
のロールが割り当てられたsam
という名前のユーザーを定義するprop-module
というpropertiesLoginModule
。 -
receiver
のロールが割り当てられたrob
という名前のユーザーを定義するprop-module
というpropertiesLoginModule
。
これらのロールのプロパティーは、
securityDomains
セクションのbrokerDomain
セクションとbroker
セクションで定義されます。たとえば、send
ロールは、そのロールが割り当てられたユーザーが任意のアドレスに永続キューを作成できるように定義されています。デフォルトでは、設定は現在のネームスペースの CR によって定義されたすべてのデプロイ済みブローカーに適用されます。特定のブローカーに設定を限定する場合は、「セキュリティーのカスタムリソースの設定リファレンス」 に記載のapplyToCrNames
オプションを使用します。注記metadata
セクションで、namespace
プロパティーを追加し、OpenShift Container Platform Web コンソールを使用して CR インスタンスを作成する場合にのみ値を指定する必要があります。指定する値は、ブローカーデプロイメントの OpenShift プロジェクトの名前です。-
CR インスタンスをデプロイします。
OpenShift コマンドラインインターフェイスの使用:
- CR ファイルを保存します。
ブローカーデプロイメントのプロジェクトに切り替えます。
$ oc project <project_name>
CR インスタンスを作成します。
$ oc create -f <path/to/address_custom_resource_instance>.yaml
OpenShift Web コンソールの使用
- CR の設定が完了したら、Create をクリックします。
4.3.2. ユーザーパスワードをシークレットに保存する
Operator ベースのブローカーデプロイメントのセキュリティー設定の作成 手順では、ユーザーパスワードは ActiveMQArtemisSecurity
CR にクリアテキストで保存されます。パスワードをクリアテキストで CR に保存したくない場合は、パスワードを CR から除外してシークレットに保存できます。CR を適用すると、Operator はシークレットから各ユーザーのパスワードを取得し、ブローカー Pod の artemis-users.properties
ファイルに挿入します。
手順
oc create secret
コマンドを使用してシークレットを作成し、各ユーザーの名前とパスワードを追加します。シークレット名は、security-properties-module name
の命名規則に従う必要があります。ここで、module name は、CR で設定されたログインモジュールの名前です。以下に例を示します。oc create secret generic security-properties-prop-module \ --from-literal=sam=samspassword \ --from-literal=rob=robspassword
CR の
spec
セクションで、ロール情報とともにシークレットで指定したユーザー名を追加しますが、各ユーザーのパスワードは含めません。以下に例を示します。apiVersion: broker.amq.io/v1beta1 kind: ActiveMQArtemisSecurity metadata: name: ex-prop spec: loginModules: propertiesLoginModules: - name: "prop-module" users: - name: "sam" roles: - "sender" - name: "rob" roles: - "receiver" securityDomains: brokerDomain: name: "activemq" loginModules: - name: "prop-module" flag: "sufficient" securitySettings: broker: - match: "#" permissions: - operationType: "send" roles: - "sender" - operationType: "createAddress" roles: - "sender" - operationType: "createDurableQueue" roles: - "sender" - operationType: "consume" roles: - "receiver" ...
CR インスタンスをデプロイします。
OpenShift コマンドラインインターフェイスの使用:
- CR ファイルを保存します。
ブローカーデプロイメントのプロジェクトに切り替えます。
$ oc project <project_name>
CR インスタンスを作成します。
$ oc create -f <path/to/address_custom_resource_instance>.yaml
OpenShift Web コンソールの使用
- CR の設定が完了したら、Create をクリックします。
関連情報
OpenShift Container Platform のシークレットの詳細は、OpenShift Container Platform ドキュメントの Pod への機密データの提供 を参照してください。