Можете ли вы использовать теги для доступа к S3 Buckets? - PullRequest
1 голос
/ 18 января 2020

Я просто попытался добавить теги к некоторым сегментам, а затем создал встроенную политику ролей IAM, которая предоставила бы этой роли доступ к сегментам S3, однако это не сработало. Я попробовал оба iam:ResourceTag/tagName и s3:ResourceTag/tagName как условные, но ни одно из них не сработало.

Поскольку все выглядело просто отлично, я начал думать, что AWS, возможно, еще не реализовал это для S3. Это тот случай? Я попытался просмотреть документацию и действительно не нашел ничего об этом использовании тегов, работающих с S3.

Например, роль HumanResources должна быть для всех сегментов, помеченных HR, Recruitment et c. но никаких других ведер.

Ответы [ 2 ]

1 голос
/ 19 января 2020

Да, вы можете, но вам нужно будет это сделать для каждой политики ресурсов S3.

Здесь приведена политика S3 для предоставления доступа к корзине только пользователям IAM и ролям с отделом тегов, установленным на «hr».

Чтобы гарантировать, что сотрудник отдела кадров имеет доступ только к этим сегментам, вам необходимо удалить весь доступ S3 из их политик доступа пользователей / ролей IAM.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "DenyObjectOthers",
      "Effect": "Deny",
      "Principal": "*",
      "Action": [
        "s3:AbortMultipartUpload",
        "s3:ListMultipartUploadParts",
        "s3:DeleteObject*",
        "s3:PutObject*",
        "s3:GetObject*",
        "s3:RestoreObject*"
      ],
      "Resource": [
        "arn:aws:s3:::BUCKET_NAME/*"
      ],
      "Condition": {
        "StringNotLike": {
          "aws:PrincipalTag/department": [
            "hr"
          ]
        }
      }
    },
    {
      "Sid": "DenyListOthers",
      "Effect": "Deny",
      "Principal": "*",
      "Action": [
        "s3:ListBucket*"
      ],
      "Resource": [
        "arn:aws:s3:::BUCKET_NAME"
      ],
      "Condition": {
        "StringNotLike": {
          "aws:PrincipalTag/department": [
            "hr"
          ]
        }
      }
    },
    {
      "Sid": "AllowObject",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::AWS_ACCOUNT_NUMBER:root"
      },
      "Action": [
        "s3:AbortMultipartUpload",
        "s3:ListMultipartUploadParts",
        "s3:DeleteObject*",
        "s3:PutObject*",
        "s3:GetObject*",
        "s3:RestoreObject*"
      ],
      "Resource": [
        "arn:aws:s3:::BUCKET_NAME/*"
      ],
      "Condition": {
        "StringLike": {
          "aws:PrincipalTag/department": [
            "hr"
          ]
        }
      }
    },
    {
      "Sid": "AllowList",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::AWS_ACCOUNT_NUMBER:root"
      },
      "Action": [
        "s3:ListBucket*"
      ],
      "Resource": [
        "arn:aws:s3:::BUCKET_NAME"
      ],
      "Condition": {
        "StringLike": {
          "aws:PrincipalTag/department": [
            "hr"
          ]
        }
      }
    }
  ]
}

Предыдущий неправильный ответ От: Элементы политики IAM: переменные и теги - AWS Управление идентификацией и доступом

    "Resource": ["arn:aws:s3:::bucket/${aws:PrincipalTag/department}"]

Также обязательно укажите версию на 2012-10-17.

1 голос
/ 18 января 2020

При просмотре действий, ресурсов и ключей условий для Amazon S3 - AWS Идентификация и управление доступом , похоже, нет возможности указать тег корзины в политике IAM.

Одной из альтернатив является использование подстановочного знака в имени сегмента. Например, вы можете предоставить разрешение на доступ:

acme-hr-1

Вы можете предоставить разрешения на основе имени сегмента acme-hr-*.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...