KMS リソースには、主にキーとエイリアスの2つのタイプがあります。 これら両方共にセットタイプと固有リソースに分けることができます。 リソースタイプが違うと、操作も異なります。 ユーザーのプライマリアカウントには、自分のリソースに対する完全な操作権限があります。 ただし、サブアカウントを持っている場合、RAM 認証を使用して、対応するリソースに対する操作を実行する権限をサブアカウントに付与する必要があります。

RAM を使用してサブアカウントを認証し CMK にアクセスする方法を学ぶ前に、RAM の概要RAM概要をよくお読みください。

RAM で認証できる KMS リソースタイプ

KMS リソースの ARN フォーマットは次のとおりです。

リソースタイプ ARN
Key set acs:kms:${region-id}:${resource-owner-id}:key
Key acs:kms:${region-id}:${resource-owner-id}:key/${key-uuid}
Alias set acs:kms:${region-id}:${resource-owner-id}:alias
Alias acs:kms:${region-id}:${resource-owner-id}:${fullaliasname}

RAM 認証のアクションと ARN

アクションセットタイプのリソース

API アクション ARN
CreateKey kms:CreateKey acs:kms:${region-id}:${resource-owner-id}:key
ListKeys kms:ListKeys acs:kms:${region-id}:${resource-owner-id}:key
ListAliases kms:ListAliases acs:kms:${region-id}:${resource-owner-id}:alias

特定のリソースに対するアクション

  • 特定のリソースの認証のために、アクションは通常 "kms:$ {apiname}" と書かれ、その ARN はリソースの ARN に対応します。 ただし、一部のエイリアス API には複数のリソースが含まれ、複数の ARN の認証が必要です。
  • ARN は、固有のリソースに対してワイルドカード文字をサポートします。
    • All key ARNs: acs:kms:${region-id}:${resource-owner-id}:key/*
    • All alias ARNs: acs:kms:${region-id}:${resource-owner-id}:alias/*

RAM 認証に関係のない API

DescribeRegions RAM 認証とは関係がありません。 サブアカウントは認証なしでこの API にアクセスでき、認証が RAM で拒否されても影響を受けません。

KMS の一般的な RAM 認証ポリシーの例

  • すべての KMS リソースへのアクセスを許可する
    {
      "Version": "1",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": [
            "kms:*"
          ],
          "Resource": [
            "acs:kms:*:${your user id}:*"
          ]
        }
      ]
    }
    					
  • 一部のリージョンのみのリソースへのアクセスを許可する
    {
      "Version": "1",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": [
            "kms:*"
          ],
          "Resource": [
            "acs:kms:cn-hangzhou:${your user id}:*",
            "acs:kms:ap-southeast-1:${your user id}:*"
          ]
        }
      ]
    }
    					
  • 表示キー、エイリアス、およびキー使用権限へのアクセスを許可する
    {
      "Version": "1",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": [
            "kms:List*",
            "kms:DescribeKey",
            "kms:Encrypt","kms:Decrypt","kms:GenerateDataKey"
          ],
          "Resource": [
            "acs:kms:*:${your user id}:*"
          ]
        }
      ]
    }
    					
  • キーの削除を許可する
    {
      "Version": "1",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": [
            "kms:ScheduleKeyDeletion"
          ],
          "Resource": [
            "acs:kms:*:${your user id}:key/*"
          ]
        }
      ]
    }