【问题标题】:Use AWS EC2 tag to determine S3 access policy使用 AWS EC2 标签确定 S3 访问策略
【发布时间】:2018-11-05 01:17:11
【问题描述】:

我有多个 AWS EC2 实例,它们具有 ***-manager 形式的唯一名称标签(三个唯一字符,然后是 -manager)。

我有几个 S3 存储桶(以及其中的子文件夹),它们的名称中有类似的 3 字符 id,我需要根据 EC2 的要求限制对它们的访问。

我如何编写一个 AWS 策略来附加到每个执行以下操作的 EC2:

  1. 存储桶docker.***.mysite.com 应该只能由名称标签值为***-manager 的EC2 访问。行动就是一切,即*

  2. 文件夹downloads.mysite.com/***/ 只能由名称标签值为***-manager 的EC2 访问。动作是ListBucketGetObject,带有前缀限制。

  3. 文件夹downloads.mysite.com/common/应该可以被任何EC2访问

任何 EC2 都不应有权访问根 downloads.mysite.com/ 或了解任何相关信息(即,不能在 common 及其 *** 子文件夹之外执行任何 S3 操作。

注意:如果从 EC2 名称标签中提取 3 个字母的 id 以“传递”到策略的资源部分并不容易/不可能,我可以轻松地向每个只有 @987654334 的 EC2 添加一个新标签@ 作为它的值 - 但仍然必须以某种方式将其“传递”给策略定义中的资源。

【问题讨论】:

    标签: amazon-web-services amazon-s3 amazon-ec2


    【解决方案1】:

    我认为不可能为多种情况创建一个策略。

    最接近的方法是使用IAM Policy Elements: Variables - AWS Identity and Access Management,但这不允许使用任意值,也不能用于从 EC2 实例中检索标签。

    我认为您需要为每个引用特定 S3 存储桶的 EC2 实例创建单独的角色。

    【讨论】:

      【解决方案2】:

      似乎没有办法做到这一点,因为 IAM S3 策略无法回顾“调用者标签”。

      但可以做的是查找分配给 EC2 实例的 IAM 角色的标签。不幸的是,GetObject 操作的相关条件是 s3:ExistingObjectTag/<key>,它适用于 S3 对象而不是 S3 存储桶本身。

      使用上述方法的简化策略如下所示:

      {
          "Version": "2012-10-17",
          "Statement": [
              {
                  "Sid": "AllowListBucket",
                  "Action": [
                      "s3:ListBucket"
                  ],
                  "Effect": "Allow",
                  "Resource": [
                      "arn:aws:s3:::<S3_BUCKET_NAME>"
                  ]
              },
              {
                  "Sid": "AllowROcheckTag",
                  "Action": [
                      "s3:GetObject"
                  ],
                  "Effect": "Allow",
                  "Resource": "arn:aws:s3:::<S3_BUCKET_NAME>/*",
                  "Condition": {
                      "StringEquals": {
                          "s3:ExistingObjectTag/<TAG_ON_S3_OBJECT>": "aws:RequestTag/<TAG_ON_IAM_ROLE_ASSIGNED_TO_EC2>}"
                      }
                  }
              }
          ]
      }
      

      在上述情况下,它将是分配给 EC2 实例的 IAM 角色及其驱动对 S3 存储桶中对象的访问的标签。

      有关特定 S3 操作的允许条件的详细信息是 here

      【讨论】:

        猜你喜欢
        • 2021-03-28
        • 1970-01-01
        • 2021-06-12
        • 2019-07-07
        • 2017-11-12
        • 1970-01-01
        • 2020-06-01
        • 2018-08-09
        • 1970-01-01
        相关资源
        最近更新 更多