キュー・ポリシー
Oracle Cloud Infrastructure Identity and Access Management (IAM)サービスを使用して、キューのポリシーを作成します。
このトピックでは、キュー・サービスへのアクセスを制御するポリシーの記述に関する詳細を説明します。
ポリシーを記述する場合、キュー・サービスでは次の方法を使用した認証がサポートされることに注意してください。
- ユーザー名および認証トークン: REST APIとSTOMPプロトコルの両方でサポートされます。
- インスタンス・プリンシパル: REST APIでのみサポートされます(コンピュート・インスタンスは動的グループに割り当てる必要があります)。
ポリシー構文の概要
ポリシー・ステートメント全体の構文:
allow <subject> to <verb>
<resource-type> in <location> where <condition>
たとえば、次のように指定できます。
-
<subject>として、グループまたは動的グループの名前またはOCID。または、any-userを使用して、テナンシ内のすべてのユーザーを含めることができます。 -
<subject>に1つ以上の権限のアクセス権を付与するため、<verb>として、inspect、read、useおよびmanage。inspect、read、use、manageと進むに連れて、アクセス権のレベルは一般に高くなり、付与される権限は累積されます。たとえば、useには、readに加えて更新する権限が含まれます。 -
resource-typeにはリソースのファミリ(virtual-network-familyなど)。または、vcnsやsubnetsなど、ファミリ内の個々のリソースを指定できます。 -
<location>として、コンパートメントの名前またはOCID。または、tenancyを使用して、テナンシ全体を含めることができます。 -
<condition>に1つ以上の条件。アクセス権を付与するためには、これが満たされる必要があります。複数の条件では、anyまたはallを使用できます。1つの条件は1つ以上の変数で構成されます。変数は、リクエスト自体(
request.operationなど)またはリクエストで処理されるリソース(target.queue.idなど)に関連するものを使用できます。たとえば、グループが特定のワークスペースのみを管理できるようにするには:allow group <group-name> to manage queues in compartment <compartment-name> where target.queue.id = '<queue-ocid>'または、グループがテナンシ内のすべてのキュー・リソースを管理できるようにするには:
allow group <group-name> to manage queues in tenancy
リソース・タイプ
ユーザーにキュー・リソースへのアクセス権を付与するには、キュー・リソース・タイプを含むIAMポリシーを作成します。
すべてのキュー・リソースにアクセスするには、queuesリソース・タイプを使用します。
ユーザーがキューを管理しないが、キューに作成したりキューから消費したりする場合は、次の個別のリソース・タイプを使用します:
-
queue-push -
queue-pull
詳細は、ポリシーの例を参照してください。
サポートされている変数
キュー・サービスでは、すべての一般的な変数に加えて、ここにリストされている変数がサポートされています。
OCIサービスでサポートされる一般的な変数の詳細は、すべてのリクエストの一般的な変数を参照してください。
| 変数 | 変数タイプ | ソース |
|---|---|---|
target.queue.id
|
エンティティ(OCID) | リクエスト |
target.queue.name
|
文字列 | リクエスト |
動詞+リソース・タイプの組合せの詳細
ポリシーの作成には、様々なOracle Cloud Infrastructure動詞およびリソース・タイプを使用できます。
次の表に、キューの各動詞でカバーされている権限およびAPI操作を示します。アクセスのレベルは、inspectからread、use、manageの順に累積します。表のセルのプラス記号(+)は、そのすぐ上のセルと比較して増分アクセスを示しますが、「追加なし」は増分アクセスを示しません。
| 動詞 | 権限 | 全部カバーされるAPI | 一部カバーされるAPI |
|---|---|---|---|
| inspect |
QUEUE_INSPECT |
|
なし |
| read |
INSPECT + QUEUE_READ |
INSPECT +
|
なし |
| use |
READ + QUEUE_UPDATE QUEUE_PRODUCE QUEUE_CONSUME |
READ +
|
なし |
| manage |
USE + QUEUE_CREATE QUEUE_DELETE QUEUE_MOVE |
USE +
|
なし |
| 動詞 | 権限 | 全部カバーされるAPI | 一部カバーされるAPI |
|---|---|---|---|
| inspect |
なし |
なし |
なし |
| read |
なし |
なし |
なし |
| use |
QUEUE_PRODUCE |
|
なし |
| manage |
なし |
なし |
なし |
| 動詞 | 権限 | 全部カバーされるAPI | 一部カバーされるAPI |
|---|---|---|---|
| inspect |
なし |
なし |
なし |
| read |
なし |
なし |
なし |
| use |
QUEUE_CONSUME |
|
なし |
| manage |
なし |
なし |
なし |
API操作ごとに必要な権限
次の表に、キューのAPI操作を、リソース・タイプ別にグループ化して論理的な順序で示します。
リソース・タイプは、queues、queue-pushおよびqueue-pullです。
権限の詳細は、権限を参照してください。
| API操作 | 操作の使用に必要な権限 |
|---|---|
ListQueues
|
QUEUE_INSPECT |
CreateQueue
|
QUEUE_CREATE |
GetQueue
|
QUEUE_READ |
DeleteQueue
|
QUEUE_DELETE |
MoveQueue
|
QUEUE_MOVE |
UpdateQueue
|
QUEUE_UPDATE |
ListWorkRequests
|
QUEUE_INSPECT |
GetWorkRequest
|
QUEUE_READ |
ListWorkRequestErrors
|
QUEUE_INSPECT |
ListWorkRequestLogs
|
QUEUE_INSPECT |
GetStats
|
QUEUE_READ |
ListChannels
|
QUEUE_READ |
PutMessages
|
QUEUE_PRODUCE |
GetMessages
|
QUEUE_CONSUME |
UpdateMessage
|
QUEUE_CONSUME |
DeleteMessage | QUEUE_CONSUME |
CreateConsumerGroup |
QUEUE_CONSUMER_GROUP_CREATE |
DeleteConsumerGroup | QUEUE_CONSUMER_GROUP_DELETE |
GetConsumerGroup | QUEUE_CONSUMER_GROUP_READ |
UpdateConsumerGroup | QUEUE_CONSUMER_GROUP_UPDATE |
ListConsumerGroups | QUEUE_CONSUMER_GROUP_INSPECT |
コンシューマ・グループのポリシー
異なるユーザーまたはアプリケーションがキューおよびコンシューマ・グループを使用できるように、権限を設定します。
キュー・ファンアウトおよびコンシューマ・グループで作業を行うために、様々なチームまたはアプリケーションに権限を付与する必要があります。いくつかの例を示します。
キューおよびコンシューマ・グループの完全管理を許可
これは、キューを作成し、ファンアウトを有効にし、すべてのコンシューマ・グループを管理する必要がある場合に使用します。
allow group QueueAdmins to manage queues in compartment <compartment-name>
allow group QueueAdmins to manage queue-consumer-groups in compartment <compartment-name>
付与される権限:
- QUEUE_CONSUMER_GROUP_CREATE
- QUEUE_CONSUMER_GROUP_UPDATE
- QUEUE_CONSUMER_GROUP_DELETE
- QUEUE_CONSUMER_GROUP_READ
- QUEUE_CONSUMER_GROUP_INSPECT
コンシューマ・グループへの読取り専用アクセスの許可
これは、コンシューマ・グループとその設定のみをユーザーが参照する場合に使用します。変更は許可されません。
allow group QueueAuditors to inspect queue-consumer-groups in compartment <compartment-name>
allow group QueueAuditors to read queue-consumer-groups in compartment <compartment-name>
付与される権限:
- QUEUE_CONSUMER_GROUP_INSPECT
- QUEUE_CONSUMER_GROUP_READ
コンシューマ・グループの管理を許可するがキューを許可しない
これは、コンシューマ・グループおよびフィルタを編成および設定するが、キュー自体を混乱させないようにするチームに使用します。
allow group FanoutOperators to manage queue-consumer-groups in compartment <compartment-name>
付与される権限:
- QUEUE_CONSUMER_GROUP_CREATE
- QUEUE_CONSUMER_GROUP_UPDATE
- QUEUE_CONSUMER_GROUP_DELETE
- QUEUE_CONSUMER_GROUP_READ
- QUEUE_CONSUMER_GROUP_INSPECT
プロデューサによるキューへのメッセージの送信を許可(コンシューマ・グループ・アクセスなし)
これは、メッセージをキューに送信(プッシュ)するだけで、グループの詳細を読み取らない、または表示しないアプリに使用します。
allow dynamic-group QueueProducers to use queue-push in compartment <compartment-name>
付与される権限:
- QUEUE_PRODUCE
コンシューマが特定のコンシューマ・グループから消費することを許可
これは、特定のコンシューマ・グループからのみメッセージをプルする必要があり、他のコンシューマ・グループが表示されないアプリケーションまたはチームに使用します。
allow dynamic-group AppConsumers to use queue-pull in compartment <compartment-name>
where target.consumer-group.id = '<consumer_group_ocid>'
付与される権限:
- QUEUE_CONSUME
コンシューマがコンパートメント内の任意のコンシューマ・グループから消費することを許可
これは、アプリケーションまたはサービスが同じコンパートメント内の任意のグループからメッセージをプルする必要がある場合に使用します。
allow dynamic-group SharedConsumers to use queue-pull in compartment <compartment-name>
付与される権限:
- QUEUE_CONSUME
オペレータによるキューの検査とコンシューマ・グループの完全管理を許可
これらのポリシーは、キューの詳細を表示する必要があり、コンシューマ・グループおよびフィルタを完全に編成する必要があるユーザーに使用します。
allow group FanoutOperators to inspect queues in compartment <compartment-name>
allow group FanoutOperators to manage queue-consumer-groups in compartment <compartment-name>
付与される権限:
- キューの検査
- QUEUE_CONSUMER_GROUP_CREATE
- QUEUE_CONSUMER_GROUP_UPDATE
- QUEUE_CONSUMER_GROUP_DELETE
- QUEUE_CONSUMER_GROUP_READ
- QUEUE_CONSUMER_GROUP_INSPECT
キュー所有者によるファンアウトの有効化およびコンシューマ・グループ管理の委任を許可
これは、キュー所有者がキューを管理し、アプリケーション・チームがコンシューマ・グループの設定を処理するチームに使用します。
キューの所有者:
allow group QueueOwners to manage queues in compartment <compartment-name>
アプリケーション・チーム:
allow group AppTeams to manage queue-consumer-groups in compartment <compartment-name>
付与される権限:
- QUEUE_CONSUMER_GROUP_CREATE
- QUEUE_CONSUMER_GROUP_UPDATE
- QUEUE_CONSUMER_GROUP_DELETE
- QUEUE_CONSUMER_GROUP_READ
- QUEUE_CONSUMER_GROUP_INSPECT
ベスト・プラクティス
- 各チームまたはアプリケーションに必要な権限のみを付与します。
target.consumer-group.idを使用して、グループから読み取ることができるユーザーを制限します。- 可能であれば、プロデューサ、コンシューマおよびファンアウト・マネージャのロールを分離します。
- 必要なキューへのフル・キュー管理アクセス権のみを付与します。
- 動的グループは、特別な権限を必要とするアプリケーションや自動サービスに役立ちます。
ポリシーの例
例を使用してキューIAMポリシーについて学習します。
管理者の場合、次のポリシーにより、指定したグループはキューおよび関連するキュー・サービス・リソースに対するすべての操作を実行できます:
Allow QueueManagers to manage queues in compartment <compartment_name>
次のポリシーを使用して、指定したグループがキューに対して生成またはキューから消費できるようにします:
Allow QueueProducers to use queue-push in compartment <compartment_name>
Allow QueueConsumers to use queue-pull in compartment <compartment_name>
次のポリシーを使用して、指定したグループがキューの詳細を検査および読取りできるようにします:
Allow QueueReaders to read queues in compartment <compartment_name>