Как управлять сотнями ролей AWS IAM?

У нас есть 3 ведра и много папок.

В настоящее время есть 3 роли для управления этими сегментами, поэтому уровень доступа может поддерживаться.

Клиент хочет установить ограничения на предоставление доступа только к определенным папкам.

Если мы создадим несколько ролей для определенных папок, мы получим сотни разных ролей.

Эти роли IAM будут использоваться хранилищем Hashi Corp для предоставления доступа.

Есть ли лучший способ управления и масштабирования ролей AWS IAM?

Существуют ли какие-либо рекомендации по управлению несколькими ролями?


person K.Pil    schedule 10.08.2018    source источник
comment
Взгляните на условия политики и переменные политики, чтобы убедиться, что они обеспечивают необходимую вам гибкость.   -  person jarmod    schedule 10.08.2018


Ответы (1)


Вы можете использовать префиксы в политиках IAM для управления ролями IAM или пользователями IAM.

Здесь есть отличная статья о разрешениях уровня пользователя IAM для корзин S3: https://aws.amazon.com/blogs/security/writing-iam-policies-grant-access-to-user-specific-folders.-in-an-amazon-s3-bucket/

Но подведем итог, если вы хотите перейти к разрешениям на уровне пользователя, у вас в конечном итоге будет одна сущность IAM для каждого пользователя. Политики будут выглядеть следующим образом

{
  "Version":"2012-10-17",
  "Statement": [
    {
      "Sid": "AllowGroupToSeeBucketListInTheConsole",
      "Action": ["s3:ListAllMyBuckets", "s3:GetBucketLocation"],
      "Effect": "Allow",
      "Resource": ["arn:aws:s3:::*"]
    },
    {
      "Sid": "AllowRootAndHomeListingOfCompanyBucket",
      "Action": ["s3:ListBucket"],
      "Effect": "Allow",
      "Resource": ["arn:aws:s3:::my-company"],
      "Condition":{"StringEquals":{"s3:prefix":["","home/"],"s3:delimiter":["/"]}}
    },
    {
      "Sid": "AllowListingOfUserFolder",
      "Action": ["s3:ListBucket"],
      "Effect": "Allow",
      "Resource": ["arn:aws:s3:::my-company"],
      "Condition":{"StringLike":{"s3:prefix":
                  [
                       "home/${aws:username}/*"
                       "home/${aws:username}"
                  ]
               }
        }
    },
    {
       "Sid": "AllowAllS3ActionsInUserFolder",
       "Action":["s3:*"],
       "Effect":"Allow",
       "Resource": ["arn:aws:s3:::my-company/home/${aws:username}/*"]
    }
  ]
}

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

{
  "Version":"2012-10-17",
  "Statement": [
  ...
    {
       "Sid": "AllowAllS3ActionsInUserFolder",
       "Action":["s3:*"],
       "Effect":"Allow",
       "Resource": [
         "arn:aws:s3:::my-folder-1/${aws:username}/*",
         "arn:aws:s3:::my-folder-2/${aws:username}/*"
       ]
    }
    ...
  ]
}

Помните, что в политиках IAM вы можете перечислить несколько ресурсов (папок) и действий (файловые операции, такие как создание, список и т. д.) для одного оператора и нескольких операторов (либо allow, либо deny в комбинациях действий с ресурсами).

person Cheruvian    schedule 10.08.2018