为了自动化,我希望我的IAM策略是通用的。
我知道${aws:username}
提取了应用它的策略的用户名。
是否可以在IAM策略中使用arn:aws:iam::1234567890:user/${aws:username}
之类的内容对AWS账号arn:aws:iam::${aws:accountnumber}:user/${aws:username}
执行相同的操作。
编辑: 允许的变量列在下面链接的文档中。 https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_variables.html
答案 0 :(得分:2)
AWS IAM策略变量不允许引用AWS账户名称。因此,除了在IAM策略中动态引用帐号之外别无选择。
答案 1 :(得分:0)
获取我找到的帐号的最好方法是通过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();