【以下的问题经过翻译处理】 我正在尝试通过cloudformation使用客户管理的KMS密钥创建RDS数据库。该密钥已启用。
当执行cloudformation时,我遇到了以下错误:
指定的KMS密钥[null]不存在,未启用或当前用户无法访问。请指定不同的密钥或使用不同用户访问该密钥。 (服务:Rds,状态代码:400,请求ID:XXXX)”(请求令牌:XXXX,处理程序错误代码:InvalidRequest)
以下是我使用的相关cloudformation,用于指定要使用的客户管理密钥:
RDSInstance:
Type:AWS :: RDS :: DBInstance
Properties:
KmsKeyId:!Ref RDSEncryptionKmsKey
StorageEncrypted:true
我可以通过AWS控制台成功使用此密钥创建RDS实例,而不为该实例分配任何角色或授予任何特殊的IAM权限,因此这似乎仅是cloudformation问题。
我已经授予了CloudFormation角色kms:\ *权限,以确保这不是权限问题。 CloudTrail返回的特定错误是'KMSKeyNotAccessibleFault'。
这是非常奇怪的部分,我不确定这是否是AWS中的错误。这里的CloudFormation角色IAM权限可以工作,并导致数据库被创建:
行动:
-'kms:DescribeKey'
-'kms:CreateGrant'
资源:
-'*'
这个CloudFormation角色IAM权限无法正常工作,并导致“ KMSKeyNotAccessibleFault”:
Action:
- 'kms:DescribeKey'
- 'kms:CreateGrant'
Resource:
-!Sub'arn:aws:kms:*:$ {AWS :: AccountId}:key / mrk-XXX'
但我知道正在使用正确的密钥,因为如果在资源部分中只使用'\ *',它将使用正确的KMS密