【问题标题】:AWS IAM Policy restrict access to resources based on parent CloudformationAWS IAM 策略根据父 Cloudformation 限制对资源的访问
【发布时间】:2021-02-15 18:16:16
【问题描述】:

在我们的 AWS 账户下,我们有多个产品,每个产品都有自己的 Cloudformation 堆栈。整个产品堆栈是 Dynamo/Serverless/Cognito。

最近我们的一位客户聘请了外部承包商来开发特定产品。

我们是否可以限制他们在我们的帐户中访问部署在 cloudformation 下的所有资源?


我通过使用环境(prod/master)和产品标签标记 cloudformation 下的资源尝试了以下操作:

{
  "PolicyDocument": {
    "Version": "2012-10-17",
    "Statement": [
      {
        "Effect": "Allow",
        "Action": "*",
        "Resource": "*",
        "Condition": {
          "ForAllValues:StringEquals": {
            "aws:ResourceTag/Product": "productName",
            "aws:ResourceTag/Environment": "productEnviroment"
          }
        }
      }
    ]
  }

这不起作用,似乎可以访问所有内容。扭转这一点并拒绝除标记之外的所有内容,然后直接应用特定操作似乎也不起作用。

【问题讨论】:

    标签: amazon-web-services amazon-cloudformation amazon-iam


    【解决方案1】:

    您可以创建组织单位并向它们添加帐户,这些帐户只能访问这些 OU 中的资源。它是分层的,因此您的 root 帐户可以访问所有内容,依此类推。

    组织 -> OU1 -> OU2 -> OU3

    不幸的是,没有 CloudFormation for Organizations,而是 CLI is pretty straightforward

    如果你想自动化这个,我会做一些类似的事情:

    1. 在根/父 OU 下创建组织单位
    2. 创建帐户(在根目录下创建)
    3. 将帐户从根移动到 OU
    4. 为帐户生成访问密钥/创建 IAM 并生成访问密钥(不幸的是,这是一项“一次性”手动任务)
    5. 使用 AWS 凭证部署您希望保留在该组织单位内的 CloudFormation 堆栈

    【讨论】:

      猜你喜欢
      • 2018-11-02
      • 2017-06-09
      • 1970-01-01
      • 2021-10-23
      • 2019-07-07
      • 2018-04-13
      • 2015-08-15
      • 2019-02-19
      • 1970-01-01
      相关资源
      最近更新 更多