You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python CDK创建授予kms:CreateKey权限的策略如何指定账户级KMS ARN?

实现方案

核心逻辑是通过CDK内置的栈动态属性自动获取当前部署环境的分区、区域、账号ID,拼接符合要求的KMS资源ARN,无需硬编码配置也无需使用全局通配符。

  • 第一步:导入依赖的CDK模块
from aws_cdk import Stack, aws_iam as iam
from constructs import Construct
  • 第二步:拼接符合规范的KMS资源ARN
    无需手动写死分区、区域、账号参数,调用Stack.of(self)的内置属性会在部署时自动填充对应环境的值:
kms_resource_arn = f"arn:{Stack.of(self).partition}:kms:{Stack.of(self).region}:{Stack.of(self).account}:*"
  • 第三步:创建包含对应权限的IAM策略
    示例为给指定IAM主体授予kms:CreateKey权限:
# 替换为你实际需要授权的主体,支持IAM用户、角色、服务主体等
target_principal = iam.Role.from_role_arn(self, "TargetRole", "arn:aws:iam::123456789012:role/你的目标角色ARN")

# 定义权限语句
create_key_policy = iam.PolicyStatement(
    effect=iam.Effect.ALLOW,
    actions=["kms:CreateKey"],
    resources=[kms_resource_arn],
    principals=[target_principal]
)

# 将权限附加到对应主体
target_principal.add_to_policy(create_key_policy)

如果你需要跨区域/跨账号授权,只需把拼接ARN时的region、account参数替换为指定的固定值即可,依旧不需要使用全局*通配符。

内容的提问来源于stack exchange,提问作者Tarik Ayoub

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.11 02:09:03