【发布时间】:2019-03-25 05:30:21
【问题描述】:
我想使用 CloudFormation 创建一个 KMS 密钥。我希望能够为执行 cloudformation YAML 文件的用户(我称他们为“cloudformation-runner”)提供对他们创建的密钥的管理访问权限。
我可以设置 IAM 策略以向该用户(“cloudformation-runner”)提供对 KMS 管理 API 的访问权限。但是,为了让用户能够更新/删除刚刚创建的密钥,我还需要指定一个 KeyPolicy 让他们这样做。为此,如何在 CloudFormation 脚本中获取当前用户名(“cloudformation-runner”)?
这是我的 KMS 密钥模板的外观,如何让当前用户成为主体?
MyKey:
Type: AWS::KMS::Key
Properties:
Description: "..."
KeyPolicy:
Version: "2012-10-17"
Id: "MyId"
Statement:
-
Sid: "Allow administration of the key"
Effect: "Allow"
Principal:
AWS:
- # TODO: Get Current User
Action:
- "kms:Create*"
- "kms:Describe*"
- "kms:Enable*"
- "kms:List*"
- "kms:Put*"
- "kms:Update*"
- "kms:Revoke*"
- "kms:Disable*"
- "kms:Get*"
- "kms:Delete*"
- "kms:ScheduleKeyDeletion"
- "kms:CancelKeyDeletion"
Resource: "*"
我可以为 IAM 用户手动硬编码 ARN。但是,这会降低模板的可移植性——因为人们需要手动更新此文件中的用户名。
【问题讨论】:
标签: amazon-web-services amazon-cloudformation amazon-iam aws-kms