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

CDKv2升级后trustAccountIdentities属性不存在及部署权限问题

CDK v1 升级 v2 问题解决方案

问题1:TS2345 错误(trustAccountIdentities 属性不存在)

CDK v2 已移除 kms.KeyProps 中的 trustAccountIdentities 参数,这是 v1 到 v2 的破坏性变更。原参数作用是让当前 AWS 账号下所有 IAM 身份默认获得该 KMS 密钥的访问权限,v2 中需通过显式授权实现相同效果:

替换原代码里的 trustAccountIdentities: true,改用以下方式:

const MyKmsKey = new kms.Key(this, (mykey).toLowerCase(), {
  enableKeyRotation: true,
  enabled: true,
  removalPolicy: cdk.RemovalPolicy.DESTROY
});
// 授予当前账号管理员级 KMS 访问权限,等价于原 trustAccountIdentities: true 的效果
MyKmsKey.grantAdministratorAccess(new iam.AccountPrincipal(this.account));
MyKmsKey.addAlias(mykey);

如果需要更精细的权限控制,可手动添加密钥策略:

MyKmsKey.addToResourcePolicy(new iam.PolicyStatement({
  effect: iam.Effect.ALLOW,
  principals: [new iam.AccountPrincipal(this.account)],
  actions: [
    "kms:Encrypt",
    "kms:Decrypt",
    "kms:ReEncrypt*",
    "kms:GenerateDataKey*",
    "kms:DescribeKey"
  ],
  resources: ["*"]
}));

问题2:部署时 iam:PassRole 权限拒绝

注释 trustAccountIdentities 后编译通过,但部署角色缺少 iam:PassRole 权限且存在显式拒绝,需从两方面处理:

  • 补充部署角色权限:给部署角色添加允许 iam:PassRole 的策略,指定需要传递的角色 ARN(建议缩小资源范围,避免通配符):
    {
      "Effect": "Allow",
      "Action": "iam:PassRole",
      "Resource": "arn:aws:iam::YOUR_ACCOUNT_ID:role/目标角色名称"
    }
    
  • 排查显式拒绝规则:检查组织级 SCP、IAM 身份策略或权限边界中是否存在限制 iam:PassRole 的 Deny 语句,如有需调整策略,允许部署角色对目标角色执行该操作。

另外,也需确保问题1中 KMS 密钥的权限配置完整,避免因密钥访问权限不足触发额外的角色传递需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 12:15:04