アクセス制御プロパティファイルには、ユーザおよびグループがどの操作を実行できるかを指定します。メッセージブローカごとに異なるアクセス制御プロパティファイルを使用できます。
本機能はメッセージブローカプロパティのimq.accesscontrol.enabledが有効になっている場合にだけ使用可能です。
imq.accesscontrol.enabledの詳細については、「9.7.5 セキュリティに関するプロパティ」を参照してください。
メッセージブローカは、次の操作が実行される時に、アクセス制御プロパティファイルをチェックします。
ブローカへの接続
物理格納先へのアクセス:特定の物理格納先、またはすべての物理格納先に対してのコンシューマ、プロデューサ、またはキューブラウザの作成
物理格納先の自動生成
アクセス制御プロパティファイルは以下に格納されます。
[Java EE共通ディレクトリ]\domains\interstage\imq\instances\${メッセージブローカ名}\etc\accesscontrol.properties
[Java EE共通ディレクトリ]/domains/interstage/imq/instances/${メッセージブローカ名}/etc/accesscontrol.properties
アクセス制御プロパティファイルでは、以下のアクセス制御を行う規則を指定できます。
接続のアクセス制御
物理格納先のアクセス制御
物理格納先の自動生成のアクセス制御
注意
アクセス制御プロパティファイルのversionプロパティは変更しないでください。
アクセス制御プロパティファイルを編集する場合は、メッセージブローカを停止してから編集してください。
以降では、以下について説明します。
アクセス制御プロパティファイルに記述する規則の基本構文
アクセス制御プロパティでアクセス制御の規則を記述するための基本構文は、要素をドット(.)で連結して記述します。
リソースタイプ.リソース名.アクセス規則の種類.アクセス対象種別=対象者 |
各要素について以下に説明します。
要素 | 意味 | 設定値 |
---|---|---|
リソースタイプ | 規則を適用するリソースのタイプを表します。 | 以下のいずれかを指定します。
|
リソース名 | リソースタイプで指定したリソースを特定する名前を指定します。 | リソース名、またはワイルドカードを指定します。
|
アクセス規則の種類 | リソースに対するアクセス規則の種類を指定します。リソースタイプがqueueまたはtopicの場合にだけ指定します。 | 以下のいずれかを指定します。
|
アクセス種別 | 対象者に対して、アクセスを許可するのか、許可しないのかを指定します。 | 以下のいずれかを指定します。
|
対象種別 | アクセス権の付与対象がユーザなのかグループなのかを指定します。 | 以下のいずれかを指定します。
|
対象者 | アクセス権の付与対象を指定します。カンマ(,)で区切ることで、複数のユーザまたはグループを指定できます。 |
|
ポイント
アクセス制御プロパティファイルにはASCIIコード以外を記述することができません。ASCIIコードではない文字列を含むアクセス制御プロパティファイルを使用する場合、Unicodeエスケープ文字(\uXXXX)を使用する必要があります。
アクセス制御規則の優先度
アクセス制御プロパティファイルに、同じリソースに対して複数の規則が存在した場合、以下の優先度に従い、アクセス規則を決定します。
特定のアクセス規則(特定のリソースに対する規則など)は、一般的なアクセス規則(ワイルドカード)に優先します。
例) 「queue.*.consume.allow.user=*」と「queue.q1.consume.deny.user=user1」の両方が定義されている場合、すべてのユーザはすべてのキューからメッセージを受信可能ですが、user1はq1からメッセージを受信できません。
明示的な対象者の指定がある場合、ワイルドカードを指定した対象者の規則に優先します。
例) 「queue.q1.consume.allow.user=*」と「queue.q1.consume.deny.user=user1」の両方が定義されている場合、すべてのユーザはq1からメッセージを受信可能ですが、user1はq1からメッセージを受信できません。
ユーザをワイルドカードで表現した規則は、グループをワイルドカードで表現した規則に優先します。
例) 「queue.q1.consume.allow.user=*」と「queue.q1.consume.deny.group=*」の両方が定義されている場合、すべてのユーザがq1からメッセージを受信可能です。
ユーザに許可されたアクセスは、ユーザのグループに許可されたアクセスに優先します。
例) 「queue.q1.consume.allow.group=group1」と「queue.q1.consume.deny.user=user1」の両方が定義されている場合、たとえuser1がgroup1に所属していても、q1からメッセージを受信することができません。
アクセス制御プロパティファイルに記載されていないアクセス権は、暗黙的に拒否されます。
アクセス種別にallowとdenyの両方を指定したアクセス規則が存在する場合、denyが優先されます。
例) 「queue.q1.consume.allow.user=user1」と「queue.q1.consume.deny.user=user1」の両方が定義されている場合、user1はq1からメッセージを受信することができません。
同一条件のアクセス規則が複数存在する場合、最後に記述された規則が有効となります。
リソースタイプがconnectionの場合の注意事項
デフォルトでは、すべてのユーザにNORMAL接続サービスへのアクセス権を付与し、adminグループに所属するユーザにADMIN接続サービスへのアクセス権を付与します。
connection.NORMAL.allow.user=* |
ADMIN接続サービスへのアクセス権を付与する方法は、ユーザリポジトリにより、設定方法が異なります。
単層型ファイルリポジトリ
アクセス制御が無効に設定されている場合、adminグループに、ADMIN接続サービスへのアクセス権を付与します。
アクセス制御が有効に設定されている場合、アクセス制御プロパティファイルに記述した規則に従い、アクセス権を付与します。
リソースタイプがqueueまたはtopciの場合の注意事項
デフォルトでは、すべてのユーザ/グループに、任意の物理格納先(queueまたはtopic)のアクセス権を保持しています。
queue.*.produce.allow.user=* |
また、リソースタイプがqueueまたはtopicの場合、物理格納先を自動生成するかどうかのアクセス制御を指定可能です。自動生成に関するアクセス制御のデフォルトは、すべてのユーザ/グループに、メッセージブローカに物理格納先を自動作成させるアクセス権を保持しています。
物理格納先の自動生成については、「3.15.3 物理格納先の管理」を参照してください。
queue.create.allow.user=* |
注意
物理格納先の自動作成のアクセス規則と、物理格納先のアクセス規則が一致している必要があります。