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

如何为AWS CDK Pipeline跨账号执行角色添加共享资源访问权限

方案整体思路

你需要在Shared账号中创建独立的CDK权限栈,统一配置Dev、Production账号的cfn-exec-role对Shared账号下资源的访问策略,全流程通过代码实现,完全符合基础设施即代码规范。

具体操作步骤
  • 步骤1:定义账号基础常量
    提前在代码中定义三个账号的ID、区域、CDK引导前缀等固定参数,示例(CDK TypeScript版本,其他语言逻辑一致):
// 替换为实际的账号ID
const SHARED_ACCOUNT_ID = '123456789012';
const DEV_ACCOUNT_ID = '123456789013';
const PROD_ACCOUNT_ID = '123456789014';
const DEFAULT_REGION = 'us-east-1';
// CDK默认引导前缀,自定义过前缀请替换为实际值
const CDK_BOOTSTRAP_PREFIX = 'hnb659fds';
  • 步骤2:导入Dev/Prod账号的执行角色作为授权主体
    CDK跨账号引导生成的cfn-exec-roleARN格式固定,可直接构造ARN并导入为IAM主体:
// 构造两个环境cfn-exec-role的ARN
const devCfnExecRoleArn = `arn:aws:iam::${DEV_ACCOUNT_ID}:role/cdk-${CDK_BOOTSTRAP_PREFIX}-cfn-exec-role-${DEV_ACCOUNT_ID}-${DEFAULT_REGION}`;
const prodCfnExecRoleArn = `arn:aws:iam::${PROD_ACCOUNT_ID}:role/cdk-${CDK_BOOTSTRAP_PREFIX}-cfn-exec-role-${PROD_ACCOUNT_ID}-${DEFAULT_REGION}`;

// 转换为IAM可识别的授权主体
const devExecPrincipal = new iam.ArnPrincipal(devCfnExecRoleArn);
const prodExecPrincipal = new iam.ArnPrincipal(prodCfnExecRoleArn);
  • 步骤3:为主体绑定对应资源的访问权限
    按照业务需要给两个账号的执行角色配置共享资源权限,以下为不同资源的配置示例:
  1. Route53托管区权限配置
// 导入Shared账号下已有的域名托管区
const domainHostedZone = route53.HostedZone.fromHostedZoneAttributes(this, 'MainDomainZone', {
  hostedZoneId: '实际托管区ID',
  zoneName: 'domainname.com'
});
// 授予修改DNS记录的权限
domainHostedZone.grant(devExecPrincipal, 'route53:ChangeResourceRecordSets');
domainHostedZone.grant(prodExecPrincipal, 'route53:ChangeResourceRecordSets');
  1. S3存储桶权限配置
// 导入Shared账号下的共享存储桶
const sharedBucket = s3.Bucket.fromBucketName(this, 'SharedDataBucket', '实际桶名称');
// 授予读权限,需要写权限可替换为grantReadWrite
sharedBucket.grantRead(devExecPrincipal);
sharedBucket.grantRead(prodExecPrincipal);
  1. ACM证书权限配置
// 导入Shared账号下的证书,注意跨区域证书要对应实际所在区域的ARN
const sharedCert = acm.Certificate.fromCertificateArn(this, 'SharedWildcardCert', '实际证书ARN');
// 授予证书查询、关联权限
sharedCert.grant(devExecPrincipal, 'acm:DescribeCertificate', 'acm:ListCertificates', 'acm:AssociateCertificate');
sharedCert.grant(prodExecPrincipal, 'acm:DescribeCertificate', 'acm:ListCertificates', 'acm:AssociateCertificate');
  • 步骤4:调整部署顺序
    优先部署Shared账号下的权限栈,确保权限配置生效后再部署Dev、Production环境的业务栈,避免权限不生效导致部署报错。
注意事项
  • 权限配置遵循最小权限原则,仅授予业务必需的操作权限,避免过度授权带来的安全风险
  • 如果使用自定义CDK引导前缀,需要将代码中的默认前缀hnb659fds替换为实际的自定义前缀
  • 跨区域访问资源时(比如CloudFront关联的ACM证书必须存放在us-east-1区域),注意构造ARN时的区域参数要和资源实际所在区域保持一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 14:24:03