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

在AWS CDK中编写Secret相关IAM策略时,如何优雅获取完整ARN?

AWS CDK中通过名称引用Secret并配置GetSecretValue权限的优雅方案

你可以用IAM标准通配符*替代硬编码的-??????,这更符合IAM策略规范,写法也更优雅:

import { PolicyDocument, PolicyStatement, Effect } from 'aws-cdk-lib/aws-iam';
import { CfnPermissionSet } from 'aws-cdk-lib/aws-sso';
import { Secret } from 'aws-cdk-lib/aws-secretsmanager';

const databaseSecretName = `database-host`;
const databaseSecret = Secret.fromSecretNameV2(
  this,
  'databaseSecret',
  databaseSecretName
);

const policy = new PolicyDocument({
  statements: [
    new PolicyStatement({
      actions: ['secretsmanager:GetSecretValue'],
      effect: Effect.ALLOW,
      // 使用标准通配符匹配带随机后缀的secret ARN
      resources: [`${databaseSecret.secretArn}-*`],
      sid: 'AllowDatabaseSecretReading',
    }),
  ],
});

new CfnPermissionSet(this, `PermissionSet`, {
  description: `blabla`,
  inlinePolicy: policy,
  instanceArn: prodIamIdentityCenterArn,
  managedPolicies: ['arn:aws:iam::aws:policy/ReadOnlyAccess'],
  name: this.name,
});

方案说明

  • Secrets Manager的secret ARN末尾会带有随机生成的后缀(比如-abc123),Secret.fromSecretNameV2返回的secretArn是不带该后缀的基础ARN。
  • 使用-*通配符可以精准匹配目标secret的完整ARN,相比硬编码的-??????,它能适配任意长度的随机后缀,更符合IAM策略的通用写法。

进阶方案:直接使用完整ARN引用

如果你的场景中能提前获取到secret的完整ARN(比如通过Stack输出、参数存储或环境变量),可以直接用Secret.fromSecretArn引用,无需拼接:

// 假设完整ARN从环境变量或其他可信来源获取
const databaseSecretFullArn = process.env.DATABASE_SECRET_ARN;
const databaseSecret = Secret.fromSecretArn(
  this,
  'databaseSecret',
  databaseSecretFullArn!
);

const policy = new PolicyDocument({
  statements: [
    new PolicyStatement({
      actions: ['secretsmanager:GetSecretValue'],
      effect: Effect.ALLOW,
      resources: [databaseSecret.secretArn],
      sid: 'AllowDatabaseSecretReading',
    }),
  ],
});

new CfnPermissionSet(this, `PermissionSet`, {
  description: `blabla`,
  inlinePolicy: policy,
  instanceArn: prodIamIdentityCenterArn,
  managedPolicies: ['arn:aws:iam::aws:policy/ReadOnlyAccess'],
  name: this.name,
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 22:27:14