すべてのプロダクト
Search
ドキュメントセンター

ApsaraMQ for RabbitMQ:ApsaraMQ for RabbitMQ カスタムポリシーのリファレンス

最終更新日:Nov 09, 2025

システムポリシーが要件を満たさない場合は、カスタムポリシーを作成して最小権限を実現できます。カスタムポリシーは、詳細な権限コントロールを提供し、リソースのセキュリティを向上させます。このトピックでは、ApsaraMQ for RabbitMQ のカスタムポリシーのシナリオと例について説明します。

カスタムポリシーとは

Resource Access Management (RAM) ポリシーは、システムポリシーとカスタムポリシーに分類されます。カスタムポリシーを維持する必要があります。

  • カスタムポリシーを作成した後、ポリシーで指定された権限をプリンシパルに付与できるように、RAM ユーザー、ユーザーグループ、または RAM ロールにアタッチする必要があります。

  • プリンシパルにアタッチされていない RAM ポリシーは削除できます。RAM ポリシーがプリンシパルにアタッチされている場合は、RAM ポリシーを削除する前に、プリンシパルから RAM ポリシーをデタッチする必要があります。

  • カスタムポリシーはバージョンコントロールをサポートしています。RAM が提供するバージョン管理メカニズムに基づいて、カスタムポリシーのバージョンを管理できます。

リファレンス

カスタム権限付与ポリシー

ApsaraMQ for RabbitMQ は、次のカスタムポリシーをサポートしています。

クライアント API 権限

クライアント API

アクション

リソース

説明

exchange.declare (passive=false)

amqp:CreateExchange

acs:amqp:$region:$accountid:/instances/$instanceId/vhosts/$vhostName/exchanges/*

Exchange を宣言し、Exchange が存在するかどうかを確認します。

  • 指定された Exchange が存在しない場合、Exchange が作成され、成功メッセージが返されます。

  • 指定された Exchange が存在する場合、システムは Exchange に関する情報が正しいかどうかを確認します。情報が正しい場合は、成功メッセージが返されます。情報が正しくない場合は、エラーが報告されます。

exchange.declare (passive=true)

amqp:GetExchange

acs:amqp:$region:$accountid:/instances/$instanceId/vhosts/$vhostName/exchanges/$exchangeName

Exchange を宣言し、Exchange が存在するかどうかを確認します。

  • 指定された Exchange が存在しない場合、エラーが報告されます。

  • 指定された Exchange が存在する場合、成功メッセージが返されます。

exchange.bind

amqp:GetExchange (ソース Exchange)

acs:amqp:$region:$accountid:/instances/$instanceId/vhosts/$vhostName/exchanges/$exchangeName (ソース Exchange)

ソース Exchange を宛先 Exchange にバインドします。

amqp:CreateExchange (宛先 Exchange)

acs:amqp:$region:$accountid:/instances/$instanceId/vhosts/$vhostName/exchanges/* (宛先 Exchange)

exchange.unbind

amqp:GetExchange (ソース Exchange)

acs:amqp:$region:$accountid:/instances/$instanceId/vhosts/$vhostName/exchanges/$exchangeName (ソース Exchange)

ソース Exchange を宛先 Exchange からアンバインドします。

amqp:CreateExchange (宛先 Exchange)

acs:amqp:$region:$accountid:/instances/$instanceId/vhosts/$vhostName/exchanges/* (宛先 Exchange)

queue.declare (passive=false)

amqp:CreateQueue

acs:amqp:$region:$accountid:/instances/$instanceId/vhosts/$vhostName/queues/*

キューを宣言し、キューが存在するかどうかを確認します。

  • 指定されたキューが存在しない場合、キューが作成されます。

  • 指定されたキューが存在する場合、システムはキューに関する情報が正しいかどうかを確認します。情報が正しい場合は、成功メッセージが返されます。情報が正しくない場合は、エラーが報告されます。

queue.declare (passive=true)

amqp:GetQueue

acs:amqp:$region:$accountid:/instances/$instanceId/vhosts/$vhostName/queues/$queueName

キューを宣言し、キューが存在するかどうかを確認します。

  • 指定されたキューが存在しない場合、エラーが報告されます。

  • 指定されたキューが存在する場合、成功メッセージが返されます。

queue.declare (with dead-letter exchange)

amqp:CreateQueue

acs:amqp:$region:$accountid:/instances/$instanceId/vhosts/$vhostName/queues/*

デッドレター Exchange にバインドされているキューを宣言します。

amqp:GetQueue

acs:amqp:$region:$accountid:/vhosts/$vhostName/queues/$queueName

amqp:CreateExchange (デッドレター Exchange)

acs:amqp:$region:$accountid:/instances/$instanceName/vhosts/$vhostName/exchanges/$exchangeName (デッドレター Exchange)

queue.bind

amqp:CreateQueue

acs:amqp:$region:$accountid:/instances/$instanceId/vhosts/$vhostName/queues/*

キューを Exchange にバインドします。

amqp:GetExchange

acs:amqp:$region:$accountid:/instances/$instanceName/vhosts/$vhostName/exchanges/$exchangeName

queue.unbind

amqp:CreateQueue

acs:amqp:$region:$accountid:/instances/$instanceId/vhosts/$vhostName/queues/*

キューを Exchange からアンバインドします。

amqp:GetExchange

acs:amqp:$region:$accountid:/instances/$instanceName/vhosts/$vhostName/exchanges/$exchangeName

BasicRecover

amqp:BasicRecover

acs:amqp:$region:$accountid:/instances/$instanceId/vhosts/$vhostName/queues/*

コンシューマーによって確認応答 (Ack) されていないメッセージを再配信します。

BasicCancel

amqp:BasicCancel

acs:amqp:$region:$accountid:/instances/$instanceId/vhosts/$vhostName/queues/$queueName/messages/*

サブスクリプションをキャンセルします。

BasicPublish

amqp:BasicPublish

acs:amqp:$region:$accountid:/instances/$instanceId/vhosts/$vhostName/exchanges/$exchangeName/messages/*

メッセージをパブリッシュします。

BasicConsume

amqp:BasicConsume

acs:amqp:$region:$accountid:/instances/$instanceId/vhosts/$vhostName/queues/$queueName/messages/*

コンシューマーを開始します。

BasicAck

amqp:BasicAck

acs:amqp:$region:$accountid:/instances/$instanceId/vhosts/$vhostName/queues/$queueName/messages/*

1 つ以上のメッセージを確認応答します。

BasicNack

amqp:BasicNack

acs:amqp:$region:$accountid:/instances/$instanceId/vhosts/$vhostName/queues/$queueName/messages/*

1 つ以上のメッセージを拒否します。

BasicReject

amqp:BasicReject

acs:amqp:$region:$accountid:/instances/$instanceId/vhosts/$vhostName/queues/$queueName/messages/*

メッセージを拒否します。

BasicGet

amqp:BasicGet

acs:amqp:$region:$accountid:/instances/$instanceId/vhosts/$vhostName/queues/$queueName/messages/*

キュー内のメッセージに直接アクセスします。

コンソール OpenAPI と機能権限

コンソール OpenAPI/機能

アクション

リソース

説明

ListInstances

amqp:ListInstance

acs:amqp:$region:$accountid:/instances/*

インスタンスのリストを照会します。

CreateInstance

amqp:CreateInstance

acs:amqp:$region:$accountid:/instances/*

インスタンスを作成します。

CreateInstance API 操作のポリシーは、次の条件キーをサポートしています。詳細については、「条件」をご参照ください。

  • amqp:InstanceType: 作成できるインスタンスのエディション。有効な値:

    • enterprise: Enterprise Edition

    • vip: Platinum Edition

  • amqp:SupportEIP: インターネットアクセスをサポートするかどうかを指定します。有効な値:

    • true: インターネットアクセスをサポートします。

    • false: インターネットアクセスをサポートしません。

DeleteInstance

amqp:DeleteInstance

acs:amqp:$region:$accountid:/instances/$instanceId

インスタンスを削除します。

GetInstance

amqp:GetInstance

acs:amqp:$region:$accountid:/instances/$instanceId

インスタンスを表示します。

ListVhost

amqp:ListVhost

acs:amqp:$region:$accountid:/instances/$instanceId/vhosts/*

vhost のリストを照会します。

CreateVhost

amqp:CreateVhost

acs:amqp:$region:$accountid:/instances/$instanceId/vhosts/*

vhost を作成します。

DeleteVhost

amqp:DeleteVhost

acs:amqp:$region:$accountid:/instances/$instanceId/vhosts/$vhostName

vhost を削除します。この操作には、amqp:GetInstance API 権限も必要です。

amqp:GetInstance

acs:amqp:$region:$accountid:/instances/$instanceId

ListExchange

amqp:ListExchange

acs:amqp:$region:$accountid:/instances/$instanceId/vhosts/$vhostName/exchanges/*

Exchange のリストを照会します。この操作には、amqp:GetInstance API 権限も必要です。

amqp:GetInstance

acs:amqp:$region:$accountid:/instances/$instanceId

CreateExchange

amqp:CreateExchange

acs:amqp:$region:$accountid:/instances/$instanceId/vhosts/$vhostName/exchanges/*

Exchange を作成します。

DeleteExchange

amqp:DeleteExchange

acs:amqp:$region:$accountid:/instances/$instanceId/vhosts/$vhostName/exchanges/$exchangeName

Exchange を削除します。

ListQueue

amqp:ListQueue

acs:amqp:$region:$accountid:/instances/$instanceId/vhosts/$vhostName/queues/*

キューのリストを照会します。この操作には、amqp:GetInstance API 権限も必要です。

amqp:GetInstance

acs:amqp:$region:$accountid:/instances/$instanceId

CreateQueue

amqp:CreateQueue

acs:amqp:$region:$accountid:/instances/$instanceId/vhosts/$vhostName/queues/*

キューを作成します。

DeleteQueue

amqp:DeleteQueue

acs:amqp:$region:$accountid:/instances/$instanceId/vhosts/$vhostName/queues/$queueName

キューを削除します。

QueuePurge

amqp:QueuePurge

acs:amqp:$region:$accountid:/instances/$instanceId/vhosts/$vhostName/queues/$queueName/messages/*

キューをパージします。

ListStaticAccounts

amqp:ListStaticAccounts

acs:amqp:$region:$accountid:/instances/$instanceId/staticAccount/*

ユーザー名とパスワードを表示します。この操作には、amqp:GetInstance API 権限も必要です。

amqp:GetInstance

acs:amqp:$region:$accountid:/instances/$instanceId

FetchStaticAccount

amqp:FetchStaticAccount

acs:amqp:$region:$accountid:/instances/$instanceId/staticAccount/*

ユーザー名とパスワードを作成します。この操作には、amqp:GetInstance API 権限も必要です。

amqp:GetInstance

acs:amqp:$region:$accountid:/instances/$instanceId

DeleteStaticAccount

amqp:DeleteStaticAccount

acs:amqp:$region:$accountid:/instances/$instanceId/staticAccount/*

ユーザー名とパスワードを削除します。

キューによるメッセージの照会

amqp:BasicGet

acs:amqp:$region:$accountid:/instances/$instanceId/vhosts/$vhostName/queues/$queueName/messages/*

キュー内のメッセージにアクセスします。

メッセージ ID によるメッセージの照会

amqp:BasicGet

acs:amqp:$region:$accountid:/instances/$instanceId/vhosts/$vhostName/queues/$queueName/messages/*

キュー内のメッセージにアクセスします。

メッセージの再送信

  • amqp:BasicGet

  • amqp:BasicPublish

acs:amqp:$region:$accountid:/instances/$instanceId/vhosts/$vhostName/queues/$queueName/messages/*

メッセージを再送信します。

メッセージの送信

amqp:BasicPublish

acs:amqp:$region:$accountid:/instances/$instanceId/vhosts/$vhostName/queues/$queueName/messages/*

メッセージを送信します。

カスタムポリシーの例

重要

カスタムポリシーを作成するときは、次の例のパラメーター変数を実際の値に置き換えてください。

  • $region: リソースが存在するリージョンの ID。詳細については、「エンドポイント」をご参照ください。

  • $accountid: 権限付与オブジェクトの Alibaba Cloud アカウントの ID。

  • $instanceId: ApsaraMQ for RabbitMQ インスタンスの ID。

  • $vhostName: vhost の名前。

  • $queueName: キューの名前。

  • $exchangeName: Exchange の名前。

  • 例 1: vhost でメッセージを送受信する権限を付与する

    {
        "Version":"1",
        "Statement":[
            {
                "Action":[
                    "amqp:GetInstance",
                    "amqp:ListVhost",
                    "amqp:GetVhost"
                ],
                "Resource":[
                    "acs:amqp:*:*:/instances/$instanceId",
                    "acs:amqp:*:*:/instances/$instanceId/vhosts/$vhostName",
                    "acs:amqp:*:*:/instances/$instanceId/vhosts/*"
                ],
                "Effect":"Allow"
            },
            {
                "Action":[
                    "amqp:ListExchange",
                    "amqp:CreateExchange",
                    "amqp:DeleteExchange",
                    "amqp:ListQueue",
                    "amqp:DeleteQueue",
                    "amqp:CreateQueue",
                    "amqp:BasicRecover",
                    "amqp:BasicCancel",
                    "amqp:BasicPublish",
                    "amqp:BasicConsume",
                    "amqp:BasicAck",
                    "amqp:BasicNack",
                    "amqp:BasicReject",
                    "amqp:QueuePurge",
                    "amqp:BasicGet",
                    "amqp:GetExchange",
                    "amqp:GetQueue"
                ],
                "Resource":"acs:amqp:*:*:/instances/$instanceId/vhosts/$vhostName/*",
                "Effect":"Allow"
            },
            {
                "Action":[
                    "amqp:ListStaticAccounts",
                    "amqp:FetchStaticAccount",
                    "amqp:DeleteStaticAccount"
                ],
                "Resource":"acs:amqp:*:*:/instances/$instanceId/staticAccount/*",
                "Effect":"Allow"
            }
        ]
    }
  • 例 2: メッセージをパブリッシュする権限を付与する

    {
        "Version": "1",
        "Statement": [
            {
                "Action": [
                    "amqp:GetInstance"
                ],
                "Resource": [
                    "acs:amqp:*:*:/instances/$instanceId",
                    "acs:amqp:*:*:/instances/$instanceId/vhosts/$vhostName"
                ],
                "Effect": "Allow"
            },
            {
                "Action": [
                    "amqp:CreateExchange",
                    "amqp:CreateQueue",
                    "amqp:BasicRecover",
                    "amqp:BasicPublish",
                    "amqp:BasicAck",
                    "amqp:BasicNack",
                    "amqp:GetExchange",
                    "amqp:GetQueue"
                ],
                "Resource": "acs:amqp:*:*:/instances/$instanceId/vhosts/$vhostName/*",
                "Effect": "Allow"
            }
        ]
    }
  • 例 3: メッセージをサブスクライブする権限を付与する

    {
        "Version": "1",
        "Statement": [
            {
                "Action": [
                    "amqp:GetInstance",
                    "amqp:GetVhost"
                ],
                "Resource": [
                    "acs:amqp:*:*:/instances/$instanceId",
                    "acs:amqp:*:*:/instances/$instanceId/vhosts/$vhostName"
                ],
                "Effect": "Allow"
            },
            {
                "Action": [
                    "amqp:CreateExchange",
                    "amqp:CreateQueue",
                    "amqp:BasicRecover",
                    "amqp:BasicCancel",
                    "amqp:BasicConsume",
                    "amqp:BasicAck",
                    "amqp:BasicNack",
                    "amqp:BasicReject",
                    "amqp:QueuePurge",
                    "amqp:BasicGet",
                    "amqp:GetExchange",
                    "amqp:GetQueue"
                ],
                "Resource": "acs:amqp:*:*:/instances/$instanceId/vhosts/$vhostName/*",
                "Effect": "Allow"
            }
        ]
    }
  • 例 4: メッセージをパブリッシュおよびサブスクライブする権限を付与する

    {
        "Version": "1",
        "Statement": [
            {
                "Action": [
                    "amqp:GetInstance",
                    "amqp:GetVhost"
                ],
                "Resource": [
                    "acs:amqp:*:*:/instances/$instanceId",
                    "acs:amqp:*:*:/instances/$instanceId/vhosts/$vhostName"
                ],
                "Effect": "Allow"
            },
            {
                "Action": [
                    "amqp:ListExchange",
                    "amqp:CreateExchange",
                    "amqp:DeleteExchange",
                    "amqp:ListQueue",
                    "amqp:DeleteQueue",
                    "amqp:CreateQueue",
                    "amqp:BasicRecover",
                    "amqp:BasicCancel",
                    "amqp:BasicPublish",
                    "amqp:BasicConsume",
                    "amqp:BasicAck",
                    "amqp:BasicNack",
                    "amqp:BasicReject",
                    "amqp:QueuePurge",
                    "amqp:BasicGet",
                    "amqp:GetExchange",
                    "amqp:GetQueue"
                ],
                "Resource": "acs:amqp:*:*:/instances/$instanceId/vhosts/$vhostName/*",
                "Effect": "Allow"
            }
        ]
    }
  • 例 5: ユーザー名とパスワードを管理する権限を付与する

    {
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "amqp:ListStaticAccounts",
                    "amqp:FetchStaticAccount",
                    "amqp:DeleteStaticAccount"
                ],
                "Resource": "acs:amqp:*:*:/instances/$instanceId/staticAccount/*"
            },
            {
                "Effect": "Allow",
                "Action": "amqp:GetInstance",
                "Resource": "acs:amqp:*:*:/instances/$instanceId"
            }
        ],
        "Version": "1"
    }
  • 例 6: RAM ユーザーにインスタンスを作成する権限を付与する

    {
        "Version": "1",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": "amqp:CreateInstance",
                "Resource": "acs:amqp:*:$accountid:/instances/*"
            }
        ]
    }
  • 例 7: RAM ユーザーにインターネットアクセスをサポートしない Platinum Edition インスタンスのみを作成する権限を付与する

    {
        "Version": "1",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": "amqp:CreateInstance",
                "Resource": "acs:amqp:*:$accountid:/instances/*",
                "Condition": {
                    "StringEquals": {
                        "amqp:InstanceType": [
                            "vip"
                        ],
                        "amqp:SupportEIP": [
                            "false"
                        ]
                    }
                }
            }
        ]
    }
  • 例 8: RAM ユーザーに単一インスタンスのすべての権限を付与する

    {
        "Version": "1",
        "Statement": [
            {
                "Action": "amqp:ListInstance",
                "Resource": "acs:amqp:*:*:/instances/*",
                "Effect": "Allow"
            },
            {
                "Action": "amqp:*",
                "Resource": [
                    "acs:amqp:*:*:/instances/$instanceId",
                    "acs:amqp:*:*:/instances/$instanceId/vhosts/*"
                ],
                "Effect": "Allow"
            },
            {
                "Action": [
                    "amqp:ListStaticAccounts",
                    "amqp:FetchStaticAccount",
                    "amqp:DeleteStaticAccount"
                ],
                "Resource": "acs:amqp:*:*:/instances/$instanceId/staticAccount/*",
                "Effect": "Allow"
            }
        ]
    }