如何在cloudformation中管理KMS密钥

0

【以下的问题经过翻译处理】 我正在尝试通过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密

1 Antwort
0

【以下的回答经过翻译处理】 从CloudTrail或CloudFormation的错误信息中无法明显发现问题,但通过在KMS权限中将*添加到资源,问题得以解决。在查看CloudTrail日志时,发现了一个未知KMS密钥ID的DescribeKey项执行失败。经过查找,在KMS控制台中找到了该密钥,原来是用于aws/secretsmanager的密钥。

显然,如果选择ManageMasterUserPassword:true选项,则不仅需要为secretsmanager:CreateSecret添加IAM权限,还需要在aws/secretsmanager KMS密钥ID arn上添加kms:DescribeKey权限。

profile picture
EXPERTE
beantwortet vor 10 Monaten

Du bist nicht angemeldet. Anmelden um eine Antwort zu veröffentlichen.

Eine gute Antwort beantwortet die Frage klar, gibt konstruktives Feedback und fördert die berufliche Weiterentwicklung des Fragenstellers.

Richtlinien für die Beantwortung von Fragen