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

ApsaraMQ for RocketMQ:ApsaraMQ for RocketMQのカスタムポリシー

最終更新日:Jul 09, 2024

システムポリシーが要件を満たしていない場合は、最小権限の原則を実装するようにカスタムポリシーを構成できます。 カスタムポリシーを使用して、権限に対するきめ細かい制御を実装し、リソースアクセスのセキュリティを強化できます。 このトピックでは、ApsaraMQ for RocketMQのカスタムポリシーが使用されるシナリオについて説明します。 このトピックでは、サンプルのカスタムポリシーも提供します。

カスタムポリシーとは何ですか?

RAM (Resource Access Management) ポリシーは、システムポリシーとカスタムポリシーに分類されます。 ビジネス要件に基づいてカスタムポリシーを管理できます。

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

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

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

関連ドキュメント

サンプルカスタムポリシー

重要

サンプルコードを使用する場合は、コードをコピーした後にすべてのコメントを削除します。 コメントには、2つのスラッシュ (//) と、2つのスラッシュ (//) に続く説明が含まれます。

  • 例1: インスタンスのトピックまたはグループに対する権限を付与します。

    RAMユーザーに、特定のトピックまたはグループにメッセージを発行したり、メッセージをサブスクライブしたりする権限を付与できます。 権限を付与するには、次の例に基づいてポリシーを構成します。

    • 名前空間を含むインスタンス:

      {
              "Version":"1",
              "Statement":[
                  {    // Grant the following permission on the instance. Before you grant permissions on a topic or a group, you must first grant the following permission on the corresponding instance. This example is applicable to instances that contain namespaces. 
                      "Effect":"Allow",
                      "Action":[
                          "mq:QueryInstanceBaseInfo"
                      ],
                      "Resource":[
                          "acs:mq:*:*:{instanceId}"
                      ]
                  },
                  {   // Grant the permissions that are required to publish messages to and subscribe to messages from a specific topic. 
                      "Effect":"Allow",
                      "Action":[
                          "mq:PUB",    
                          "mq:SUB"
                      ],
                      "Resource":[
                          "acs:mq:*:*:{instanceId}%{topic}"
                      ]
                  },
                  {     // Grant the required permissions on a specific group. 
                      "Effect":"Allow",
                      "Action":[
                          "mq:SUB"
                      ],
                      "Resource":[
                          "acs:mq:*:*:{instanceId}%{groupId}"
                      ]
                  }
              ]
          }                    
    • 名前空間を含まないインスタンス:

      {
          "Version":"1",
          "Statement":[
              {    // Grant the following permission on the instance. Before you grant permissions on a topic or a group, you must first grant the following permission on the corresponding instance. This example is applicable to instances that do not contain namespaces. 
                  "Effect":"Allow",
                  "Action":[
                      "mq:QueryInstanceBaseInfo"
                  ],
                  "Resource":[
                      "acs:mq:*:*:{instanceId}"
                  ]
              },
              {   // Grant the permissions that are required to publish messages to and subscribe to messages from a specific topic. 
                  "Effect":"Allow",
                  "Action":[
                      "mq:PUB",    
                      "mq:SUB"
                  ],
                  "Resource":[
                      "acs:mq:*:*:{topic}"
                  ]
              },
              {    // Grant the required permissions on a specific group. 
                  "Effect":"Allow",
                  "Action":[
                      "mq:SUB"
                  ],
                  "Resource":[
                      "acs:mq:*:*:{groupId}"
                  ]
              }
          ]
      }                    
  • 例2: インスタンスのすべてのリソースに対するすべての権限を付与します。 この例は、名前空間を含むインスタンスにのみ適用できます。

    インスタンスのすべてのリソースにすべての権限を付与するには、次の例に基づいてポリシーを設定します。

    {   // This example is applicable only to instances that contain namespaces. 
        "Version": "1",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "mq:*"
                ],
                "Resource": [
                    "acs:mq:*:*:{instanceId}*" // Grant all permissions on the instance. Replace {instanceId} with your instance ID. 
                ]
            }
        ]
    }          

権限付与情報

カスタムポリシーを使用するには、ビジネスの権限管理要件とApsaraMQ for RocketMQに関する権限情報を理解する必要があります。 詳細については、「RAM権限付与」をご参照ください。