请参阅 IAM 策略中的 AWS 账号



为了自动化,我希望我的 IAM 策略是通用的。

我知道${aws:username}获取应用它的策略的用户名。

是否可以在 IAM 策略中使用类似arn:aws:iam::${aws:accountnumber}:user/${aws:username}对 AWS 账号arn:aws:iam::1234567890:user/${aws:username}执行相同的操作。

编辑: 允许的变量列在下面链接的文档中。 https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_variables.html

AWSIAM 策略变量不允许引用 AWS 账户名称。因此,除了在 IAM 策略中动态引用帐号外,别无选择。

获取我找到的帐号的最佳方法是通过 STS。这是我用来获取与AssumeRole凭据一起使用的帐号的Java代码,

String awsRegion = Regions.US_EAST_1;
AWSCredentials cred = new BasicAWSCredentials("access_key_id", "secret_key_id");
// AWSCredentials cred = BasicSessionCredentials(sessionCredentials.getAccessKeyId(),sessionCredentials.getSecretAccessKey(), sessionCredentials.getSessionToken());
AWSSecurityTokenService stsClient = AWSSecurityTokenServiceClientBuilder.standard()
.withCredentials(new AWSStaticCredentialsProvider(cred))
.withRegion(awsRegion)
.build();
String awsAccountNumber = stsClient.getCallerIdentity(new GetCallerIdentityRequest())
.getAccount();

在 AWS CDK 文档中,我们找到了以下预定义变量:

  • Aws.accountId
  • Aws.region
  • Aws.stackName

因此,您可以在云形成中使用以下变量:

  • ${AWS::Region}
  • ${AWS::AccountId}
  • ${AWS::StackName}

相关内容

  • 没有找到相关文章

最新更新