授予KMS不允许加密

问题描述 投票:0回答:1

我正在尝试将通知推送到使用 KMS 密钥加密的 SNS 主题。推送由角色 R1 发送。 角色 R1 具有以下权限:

{
"Statement": [
    {
        "Action": "sns:Publish",
        "Effect": "Allow",
        "Resource": [
            "arn:..sns..:topicA",
            "arn:..sns..:topicB",
        ],
        "Sid": ""
    },
    {
        "Action": "kms:GenerateDataKey",
        "Effect": "Allow",
        "Resource": [
            "arn:aws:kms:...:key/keyTopicA",
            "arn:aws:kms:...:key/keyTopicB"
        ],
        "Sid": ""
    }
],
"Version": "2012-10-17"

}

我的密钥 A 和 B 具有以下密钥策略

{
"Version": "2012-10-17",
"Statement": [
    {
        "Sid": "Enable IAM policies",
        "Effect": "Allow",
        "Principal": {
            "AWS": "arn:aws:iam::<AccountID>:root"
        },
        "Action": "kms:*",
        "Resource": "*"
    }
]

}

所以没有 KeyPolicy 明确允许我的角色,权限是通过以下授权完成的:

{
   "Grants":[
      {
         "KeyId":"arn:aws:kms:...:key/keyTopicA",
         "GrantId":"<GrantID>",
         "Name":"grantA",
         "GranteePrincipal":"arn:aws:iam::...:role/R1",
         "IssuingAccount":"arn:aws:iam::...:root",
         "Operations":[
            "GenerateDataKey"
         ]
      }
   ]
}

KeyTopicB 也一样

现在,当我尝试推送通知时,出现以下错误:

密文指的是一个不存在的客户主密钥,本地区不存在,或者不允许您访问。 (服务:AWSKMS;状态代码:400;错误代码:AccessDeniedException;

我认为这可能是另一种可能性(错误的密钥/区域),但如果我修改密钥策略以明确添加我的角色 R1,那么这项工作一切都很好。我很困惑为什么用 Grant 做这件事不起作用。我是否遗漏了有关 Grant 工作原理的信息?

amazon-kms
1个回答
-1
投票

KMS(密钥管理服务)是亚马逊网络服务(AWS)提供的一项服务,允许用户管理其数据的加密密钥。 KMS 不允许用户直接加密数据,而是为用户提供一个安全的平台来存储和管理他们的加密密钥。

© www.soinside.com 2019 - 2024. All rights reserved.