【问题标题】:Refer AWS Account number inside IAM policy在 IAM 政策中参考 AWS 帐号
【发布时间】:2020-06-02 05:14:05
【问题描述】:

为了自动化,我希望我的 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

【问题讨论】:

  • 您尝试使用包含帐户 ID 的 ARN 的具体上下文是什么,其中帐户 ID 作为变量是有意义的,而且 - 重要的是,我怀疑 - 应该解析到哪个帐户ID?拥有该策略的帐户还是正在针对该策略测试其访问权限的委托人的帐户?虽然对此没有策略变量,但可能有一个正确的解决方案来解决您实际尝试完成的任务。
  • @Michael-sqlbot 稍后测试策略的帐户。我计划将政策单独上传到相应的帐户。还有其他解决方案吗?
  • 与其他账户建立信任关系。信任关系,而不是策略,包括另一个帐号。
  • 我没有看到你已经完全回答了我关于特定上下文的问题。澄清一下:您将在什么条件密钥或资源 ARN 中测试帐号,执行何种操作?
  • 有趣的是,一年后,我发现自己处于同样的位置,受到同样的限制。我的想法是调查 Cloud Development Kit 是否可以提供工具来解决这些缺点,并作为最后一个选择,通过部署管道按需呈现模板。

标签: amazon-web-services amazon-iam


【解决方案1】:

AWS IAM 策略变量不允许引用 AWS 账户名称。因此,没有其他方法可以在 IAM 策略中动态引用帐号。

【讨论】:

    【解决方案2】:

    我找到的获取帐号的最佳方式是通过 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();
    

    【讨论】:

      猜你喜欢
      • 2020-05-24
      • 1970-01-01
      • 1970-01-01
      • 2021-11-14
      • 2018-08-04
      • 2020-01-27
      • 2021-07-20
      • 2020-02-15
      相关资源
      最近更新 更多