gpt4 book ai didi

amazon-web-services - CloudFormation 拒绝以最小权限创建 AWS::KMS::Key

转载 作者:行者123 更新时间:2023-12-03 07:18:40 62 4
gpt4 key购买 nike

努力将最小权限原则应用于我正在创建的 CMK,目标是创建一个可通过 StackSets 供整个组织使用的 CloudFormation 模板。因此,我想要一个可用于帐户中一般加密任务的 key ( kms:Encryptkms:Decrypt 等),但不能由帐户中的主体修改(特别是 kms:PutKeyPolicy 但不仅如此) .

我有一个从手工制作的 key 中提取出来的工作策略。 CloudFormation 模板工作正常,StackSet 启动资源创建。

但是当我不以任何条件限制帐户主体时,这会消除最小权限原则。 CreateKey PutKeyPolicy API 调用都有一个选项 BypassPolicyLockoutSafetyCheck对于我们这些白痴到认为自己更了解的人来说!除了 CloudFormation 不会公开 AWS::KMS::Key 的内容:(

因此,除非我基本上将关键策略保持开放状态,否则我会在堆栈中收到以下错误:

Resource handler returned message: "The new key policy will not allow you to update the key policy in the future. (Service: Kms, Status Code: 400, Request ID: xxxx, Extended Request ID: null)" (RequestToken: xxxx, HandlerErrorCode: InvalidRequest)

我已经为主体尝试了多种选项,其中 Condition 删除(如下) key 已创建,但没有高兴。

- Sid: AllowUpdatesByCloudFormation
Effect: Allow
Principal:
AWS: !Sub "arn:aws:iam::${AWS::AccountId}:root"
Action:
- kms:Describe*
- kms:List*
- kms:PutKeyPolicy
- kms:CreateAlias
- kms:UpdateAlias
- kms:UpdateKeyDescription
- kms:EnableKey
- kms:DisableKey
- kms:EnableKeyRotation
- kms:DisableKeyRotation
- kms:GetKey*
- kms:DeleteAlias
- kms:TagResource
- kms:UntagResource
- kms:ScheduleKeyDeletion
- kms:CancelKeyDeletion
Resource: '*'
# Condition:
# StringEquals:
# "aws:PrincipalAccount": !Sub ${AWS::AccountId}
# "kms:ViaService": !Sub "cloudformation.${AWS::Region}.amazonaws.com"

我尝试过不同的主要设置,包括 AWS: "*"还有一些不同的Service Condition 上的选项和不同设置。我尝试过在服务名称中包含或不包含区域。我肯定漏掉了一些东西,但我已经花了几个小时来思考这个问题。

网络搜索、AWS 论坛搜索一无所获,所以我希望 StackOverflow 的好心人能够指导我 - future 我也会寻求同样的帮助:)

似乎无法链接到 AWS KMS API 页面上的表部分以获取 CreateKey or PutKeyPolicy 上的条件键。但我不认为我错过了这些技巧?

提前致谢 - 罗伯特。

最佳答案

尝试授予 root 用户所有 kms 权限 - (kms:*)授予 root 所有访问权限时,最小权限原则仍然适用。

这将启用 IAM 用户权限。

向每个角色、用户或用户组添加其他策略。添加 key 管理策略。添加使用策略。您可以在此处微调您的访问权限。

尝试使用这个关键策略并对其进行调整。这是我在 cfn 堆栈中用于 RDS 加密的 key 。(是的!我知道策略应该应用于用户组,而不是直接应用于最佳实践的用户......但这是在我可以从“aCloud guru”访问的沙箱环境内)

  KeyPolicy:
Id: key-consolepolicy-3
Version: "2012-10-17"
Statement:
- Sid: Enable IAM User Permissions
Effect: Allow
Principal:
AWS: !Sub "arn:aws:iam::${AWS::AccountId}:root"
Action: kms:*
Resource: '*'
- Sid: Allow access for Key Administrators
Effect: Allow
Principal:
AWS:
- !Sub "arn:aws:iam::${AWS::AccountId}:role/admin"
- !Sub "arn:aws:iam::${AWS::AccountId}:user/cloud_user"
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: Allow use of the key
Effect: Allow
Principal:
AWS: !Sub "arn:aws:iam::${AWS::AccountId}:role/aws-service-role/rds.amazonaws.com/AWSServiceRoleForRDS"
Action:
- kms:Encrypt
- kms:Decrypt
- kms:ReEncrypt*
- kms:GenerateDataKey*
- kms:DescribeKey
Resource: '*'
- Sid: Allow attachment of persistent resources
Effect: Allow
Principal:
AWS: !Sub "arn:aws:iam::${AWS::AccountId}:role/aws-service-role/rds.amazonaws.com/AWSServiceRoleForRDS"
Action:
- kms:CreateGrant
- kms:ListGrants
- kms:RevokeGrant
Resource: '*'
Condition:
Bool:
kms:GrantIsForAWSResource: "true"

关于amazon-web-services - CloudFormation 拒绝以最小权限创建 AWS::KMS::Key,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68673068/

62 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com