Amazon web services 管理员无法在AWS KMS中加密/解密
我正在AWS中使用密钥管理服务KMS,目前正在进行设置 我创建了两个角色KmsUser和KmsAdmin,并将以下关键策略附加到我的CMK:Amazon web services 管理员无法在AWS KMS中加密/解密,amazon-web-services,amazon-iam,aws-kms,aws-policies,Amazon Web Services,Amazon Iam,Aws Kms,Aws Policies,我正在AWS中使用密钥管理服务KMS,目前正在进行设置 我创建了两个角色KmsUser和KmsAdmin,并将以下关键策略附加到我的CMK: { "Version": "2012-10-17", "Statement": [ { "Sid": "KMS KeyAdmin access", "Effect": "Allow", "Principal": {"AWS": [ "arn:aws:iam::1234567890:ro
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "KMS KeyAdmin access",
"Effect": "Allow",
"Principal": {"AWS": [
"arn:aws:iam::1234567890:role/KmsAdmin",
"arn:aws:iam::1234567890:user/myadmin"
]},
"Action": [
"kms:Create*",
"kms:Describe*",
"kms:Enable*",
"kms:List*",
"kms:Put*",
"kms:Update*",
"kms:Revoke*",
"kms:Disable*",
"kms:Get*",
"kms:Delete*",
"kms:TagResource",
"kms:UntagResource",
"kms:ScheduleKeyDeletion",
"kms:CancelKeyDeletion"
],
"Resource": "*"
},
{
"Sid": "KMS KeyUser access",
"Effect": "Allow",
"Principal": {"AWS": [
"arn:aws:iam::1234567890:role/KmsUser"
]},
"Action": [
"kms:Encrypt",
"kms:Decrypt",
"kms:ReEncrypt*",
"kms:GenerateDataKey*",
"kms:DescribeKey"
],
"Resource": "*"
}
]
}
问题是,现在如果我尝试将我的密钥用作附加了AdministratorAccess策略的myadmin用户,则CLI中会出现错误:
$aws kms encrypt-密钥id别名/测试密钥-明文fileb:///tmp/plaintext.dat
调用加密操作时发生错误AccessDeniedException:用户:arn:aws:iam::1234567890:用户/myadmin无权对资源执行:kms:加密:arn:aws:kms:eu-north-1:1234567890:密钥/99999999-9999-99999999
特别奇怪的是,报告告诉我,一切都应该按预期进行:
如果我手动将myadmin用户作为主要用户添加到密钥用户策略中,则一切正常。您需要在密钥策略中添加如下语句:
{
"Sid": "Enable IAM User Permissions",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::1234567890:root"
},
"Action": "kms:*",
"Resource": "*"
}
这允许帐户访问密钥,这是启用IAM访问密钥所必需的。成功了,谢谢。你知道为什么KMS与其他AWS服务相比需要明确的管理权限吗?那么这是策略模拟器中的一个bug吗?或者我遗漏了什么?这不是一个bug,模拟器只是在查看你提供的数据。它不知道关键政策是什么。它甚至不知道/不在乎这些资源是否真实。给出了关键政策如何运作的一个很好的概述。实际上,上述政策是针对职责分离的。密钥管理员不应该能够使用密钥加密或解密数据。所以管理员可以管理密钥,但不能访问数据。密钥用户可以加密或解密数据,但不能管理密钥。因此正确的答案是使用KmsUser角色进行解密/加密。