システムポリシーが要件を満たしていない場合は、最小権限の原則を実装するようにカスタムポリシーを構成できます。 カスタムポリシーを使用して、権限に対するきめ細かい制御を実装し、リソースアクセスのセキュリティを強化できます。 このトピックでは、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権限付与」をご参照ください。