このトピックでは、サンプルのカスタムポリシーについて説明します。
説明
${region}
と ${account}
を実際のリージョンとAlibaba Cloudアカウントに置き換えます。 ビジネス要件に基づいてリソースの範囲を絞り込むこともできます。
すべてのKMSリソースにアクセスできるポリシー
重要
データのセキュリティを確保するために、すべてのKey Management Service (KMS) リソースへのアクセスを許可するポリシーを構成しないことを推奨します。
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"kms:*"
],
"Resource": [
"*"
]
}
]
}
特定のCIDRブロックまたはIPアドレスがすべてのKMSリソースにアクセスできるようにするポリシー
次のサンプルコードでは、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"
]
}
}
}]
}
KMSでキーを管理できるポリシー
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"kms:List*",
"kms:Describe*",
"kms:Create*",
"kms:Enable*",
"kms:Disable*",
"kms:Get*",
"kms:Set*",
"kms:Update*",
"kms:Delete*",
"kms:Cancel*",
"kms:TagResource",
"kms:UntagResource",
"kms:TagResources",
"kms:UntagResources",
"kms:ImportKeyMaterial",
"kms:ScheduleKeyDeletion"
],
"Resource": [
"acs:kms:${region}:${account}:key",
"acs:kms:${region}:${account}:key/*",
"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}:key",
"acs:kms:${region}:${account}:key/*"
]
}
]
}
キーを使用してデータの暗号化、データの復号化、データキーの生成を可能にするポリシー
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"kms:Encrypt",
"kms:Decrypt",
"kms:GenerateDataKey"
],
"Resource": [
"acs:kms:${region}:${account}:key/*",
"acs:kms:${region}:${account}:alias/*"
]
}
]
}
説明
暗号化操作でキーを識別するためにキーエイリアスを使用する場合は、リソース要素でエイリアスを設定する必要があります。
特定のタグを持つキーを使用してエンベロープ暗号化、復号化、およびデータキー生成を実装できるポリシー
次のサンプルコードでは、タグキーがProject
、タグ値がApollo
のキーが使用されています。
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"kms:Encrypt",
"kms:Decrypt",
"kms:GenerateDataKey"
],
"Resource": [
"acs:kms:${region}:${account}:key/*"
],
"Condition": {
"StringEqualsIgnoreCase": {
"kms:tag/Project": [
"Apollo"
]
}
}
}
]
}
暗号化と復号化に非対称キーを使用できるようにするポリシー
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"kms:AsymmetricEncrypt",
"kms:AsymmetricDecrypt",
],
"Resource": [
"acs:kms:${region}:${account}:key/*",
"acs:kms:${region}:${account}:alias/*"
]
}
]
}
説明
暗号化操作でキーを識別するためにキーエイリアスを使用する場合は、リソース要素でエイリアスを設定する必要があります。
署名と検証に非対称キーを使用できるポリシー
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"kms:AsymmetricSign",
"kms:AsymmetricVerify"
],
"Resource": [
"acs:kms:${region}:${account}:key/*",
"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 secretが使用され、キーIDがkeyId-exampleであるキーを使用してシークレットが暗号化されています。
{
"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"
}
]
}