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

Key Management Service:カスタム権限ポリシーの例

最終更新日:Apr 01, 2026

Key Management Service (KMS) 用のサンプル RAM 権限ポリシーです。ご利用のユースケースに合致するポリシーをコピーし、プレースホルダーを置き換えてから、対象の RAM ユーザー、ユーザグループ、または RAM ロールにアタッチしてください。

重要

${region} および ${account} を、実際のリージョン ID および Alibaba Cloud アカウント ID に置き換えてください。また、ビジネス要件に応じて、リソースの範囲を絞り込んでください。

ポリシーの選択

ユースケースポリシー
キーのフルライフサイクル管理(作成、ローテーション、削除、タグ付け)キーの管理
読み取り専用のキー在庫およびメタデータキーのクエリ
暗号化、復号、およびデータキーの生成対称暗号操作
非対称キーによる暗号化および復号非対称暗号化および復号
非対称キーによる署名および検証非対称署名および検証
特定のタグが付与されたキーへのアクセス許可タグベースの暗号アクセス
シークレットのフルライフサイクル管理(作成、ローテーション、削除、タグ付け)シークレットの管理
読み取り専用のシークレット在庫およびメタデータシークレットのクエリ
特定のシークレット値の取得シークレット値の取得
KMS インスタンスの作成を特定のリージョンに制限リージョン別インスタンス作成制限
特定の IP アドレスからのみアクセスを許可IP アドレスベースのアクセス制御

すべての KMS リソースへのアクセスを許可するポリシー

重要

データセキュリティを確保するため、すべての Key Management Service (KMS) リソースへのアクセスを許可するポリシーの設定は推奨しません。kms:** に対して許可すると、最小権限の原則に反し、認証情報が悪用された場合の影響範囲(blast radius)が拡大します。代わりに、以下の範囲限定型ポリシーのいずれかをご利用ください。

{
  "Version": "1",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "kms:*"
      ],
      "Resource": [
        "*"
      ]
    }
  ]
}

特定の CIDR ブロックまたは IP アドレスからのみすべての KMS リソースへのアクセスを許可するポリシー

acs:SourceIp 条件キーを使用すると、KMS の API 呼び出しを特定の IP 範囲からのリクエストに制限できます。この例では、CIDR ブロック 192.168.0.0/16 および IP アドレス 172.16.215.218 からの任意の KMS 操作呼び出しが許可されます。

{
  "Version": "1",
  "Statement": [{
    "Effect": "Allow",
    "Action": [
      "kms:*"
    ],
    "Resource": [
      "*"
    ],
    "Condition": {
      "IpAddress": {
        "acs:SourceIp": [
          "192.168.0.0/16",
          "172.16.215.218"
        ]
      }
    }
  }]
}
説明

ソース IP を変更可能な主体(たとえばプロキシや VPN を使用する場合)は、この制限をバイパスできます。より強固なコントロールを実現するには、IP アドレスベースの条件とリソース範囲の絞り込みを併用してください。

KMS におけるキー管理を許可するポリシー

このポリシーは、キーの一覧表示、説明、作成、有効化、無効化、更新、削除、タグ付け、キーマテリアルのインポート、およびキー削除のスケジューリングといった、完全なキー管理権限を付与します。リソース範囲は、ご利用のアカウント内のキーおよびエイリアスを対象とします。

{
  "Version": "1",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "kms:List*",
        "kms:Describe*"
      ],
      "Resource": [
        "acs:kms:${region}:${account}:key",
        "acs:kms:${region}:${account}:key/*"
      ]
    }
  ]
}

キーの一覧およびキーのメタデータをクエリするポリシー

このポリシーは、キー在庫への読み取り専用アクセスに使用します。プリンシパルはキーの一覧表示およびそのメタデータの閲覧が可能ですが、暗号操作の実行や変更はできません。

{
  "Version": "1",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "kms:List*",
        "kms:Describe*"
      ],
      "Resource": [
        "acs:kms:${region}:${account}:key",
        "acs:kms:${region}:${account}:key/*"
      ]
    }
  ]
}

キーを使用したデータの暗号化、復号、およびデータキーの生成を許可するポリシー

このポリシーは、エンベロープ暗号化を実行するアプリケーションのサービスアカウントに適しています。kms:Encrypt および kms:Decrypt は直接暗号化・復号に使用され、kms:GenerateDataKey はクライアント側暗号化で使用するデータキーの取得に使用されます。

{
  "Version": "1",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "kms:Encrypt",
        "kms:Decrypt",
        "kms:GenerateDataKey"
      ],
      "Resource": [
        "acs:kms:${region}:${account}:key/*",
        "acs:kms:${region}:${account}:alias/*"
      ]
    }
  ]
}
説明

暗号操作においてキーをエイリアスで識別する場合は、ポリシーにエイリアスリソース(acs:kms:${region}:${account}:alias/*)を含めてください。これを含めないと、基盤となるキーへのアクセスが許可されていても、エイリアスを用いた呼び出しは拒否されます。

特定のタグが付与されたキーを使用したエンベロープ暗号化、復号、およびデータキー生成を許可するポリシー

StringEqualsIgnoreCase 条件を kms:tag/Project に適用することで、Project=Apollo というタグが付与されたキーのみを対象とした暗号操作を制限できます。これにより、個別のキー ARN を列挙するのではなく、キーへのアクセス制御をタグ付けによって実現できます。

{
    "Version": "1",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "kms:Encrypt",
                "kms:Decrypt",
                "kms:GenerateDataKey"
            ],
            "Resource": [
                "acs:kms:${region}:${account}:key/*"
            ],
            "Condition": {
                "StringEqualsIgnoreCase": {
                    "kms:tag/Project": [
                        "Apollo"
                    ]
                }
            }
        }
    ]
}
重要

キーのタグを追加、変更、または削除できる権限を持つプリンシパルは、本ポリシーに基づくアクセス範囲を事実上拡大または制限できます。タグ管理権限(kms:TagResourcekms:TagResourceskms:UntagResourcekms:UntagResources)は、信頼された管理者のみに付与してください。

非対称キーを使用した暗号化および復号を許可するポリシー

このポリシーは、キーおよびエイリアスに対する kms:AsymmetricEncrypt および kms:AsymmetricDecrypt を許可します。非対称暗号化および復号操作を実行するサービスアカウントに使用します。

{
  "Version": "1",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "kms:AsymmetricEncrypt",
        "kms:AsymmetricDecrypt"
      ],
      "Resource": [
        "acs:kms:${region}:${account}:key/*",
        "acs:kms:${region}:${account}:alias/*"
      ]
    }
  ]
}
説明

暗号操作においてキーをエイリアスで識別する場合は、ポリシーにエイリアスリソース(acs:kms:${region}:${account}:alias/*)を含めてください。これを含めないと、基盤となるキーへのアクセスが許可されていても、エイリアスを用いた呼び出しは拒否されます。

非対称キーを使用した署名および検証を許可するポリシー

このポリシーは、キーおよびエイリアスに対する kms:AsymmetricSign および kms:AsymmetricVerify を許可します。非対称キーを用いてデータの署名または検証を行うサービスアカウントに使用します。

{
  "Version": "1",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "kms:AsymmetricSign",
        "kms:AsymmetricVerify"
      ],
      "Resource": [
        "acs:kms:${region}:${account}:key/*",
        "acs:kms:${region}:${account}:alias/*"
      ]
    }
  ]
}
説明

暗号操作においてキーをエイリアスで識別する場合は、ポリシーにエイリアスリソース(acs:kms:${region}:${account}:alias/*)を含めてください。これを含めないと、基盤となるキーへのアクセスが許可されていても、エイリアスを用いた呼び出しは拒否されます。

KMS におけるシークレット管理を許可するポリシー

このポリシーは、シークレットの一覧表示、説明、作成、更新、ローテーション、復元、削除、およびタグ付けといった、完全なシークレット管理権限を付与します。リソース範囲は、シークレットおよび関連するエイリアスを対象とします。

{
    "Version": "1",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "kms:List*",
                "kms:Describe*",
                "kms:PutSecretValue",
                "kms:Update*",
                "kms:DeleteSecret",
                "kms:RestoreSecret",
                "kms:RotateSecret",
                "kms:TagResource",
                "kms:UntagResource",
                "kms:TagResources",
                "kms:UntagResources"
            ],
            "Resource": [
                "acs:kms:${region}:${account}:secret",
                "acs:kms:${region}:${account}:secret/*",
                "acs:kms:${region}:${account}:alias",
                "acs:kms:${region}:${account}:alias/*"
            ]
        }
    ]
}

シークレットの一覧およびシークレットのメタデータをクエリするポリシー

このポリシーは、シークレット在庫への読み取り専用アクセスに使用します。プリンシパルはシークレットの一覧表示およびそのメタデータの閲覧が可能ですが、シークレット値の読み取りや変更はできません。

{
    "Version": "1",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "kms:List*",
                "kms:Describe*"
            ],
            "Resource": [
                "acs:kms:${region}:${account}:secret",
                "acs:kms:${region}:${account}:secret/*",
                "acs:kms:${region}:${account}:alias",
                "acs:kms:${region}:${account}:alias/*"
            ]
        }
    ]
}

シークレット値の取得を許可するポリシー

このポリシーは、単一の指定されたシークレット(example-secret)およびその暗号化に使用される特定のキー(keyId-example)へのアクセスを許可します。両方のステートメントが必要です:kms:GetSecretValue はシークレット値の取得に使用され、kms:Decrypt は関連する暗号化キーの復号に使用されます。

{
    "Version": "1",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "kms:GetSecretValue",
            "Resource": "acs:kms:${region}:${account}:secret/example-secret"
        },
        {
            "Effect": "Allow",
            "Action": "kms:Decrypt",
            "Resource": "acs:kms:${region}:${account}:key/keyId-example"
        }
    ]
}

KMS インスタンスの作成を指定リージョンに制限するポリシー

このポリシーは、KMS インスタンスの作成をシンガポール(ap-southeast-1)およびマレーシア(クアラルンプール)(ap-southeast-3)以外のリージョンでは禁止します。このポリシーは、すでに AliyunKMSFullAccess 権限を保持している RAM ユーザー、RAM ユーザグループ、および RAM ロールにのみ適用されます。このポリシーのアタッチ手順については、「RAM ユーザーへの権限付与」「RAM ユーザグループへの権限付与」および「RAM ロールへの権限付与」をご参照ください。

{
  "Version": "1",
  "Statement": [
    {
      "Effect": "Deny",
      "Action": [
        "bss:CreateInstance",
        "bss:ModifyInstance"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "bssapi:ProductCode": [
            "kms"
          ]
        },
        "StringNotLike": {
          "Resource": [
            "acs:kms:ap-southeast-1:*:*",
            "acs:kms:ap-southeast-3:*:*"
          ]
        }
      }
    },
    {
      "Effect": "Deny",
      "Action": "kms:CreateInstance",
      "Resource": "*"
    }
  ]
}