Назад | Перейти на главную страницу

Пользователь IAM с разрешениями DeleteObject не может удалить из корзины S3

Ребята, я чего-то не понимаю. Бегун GitLab внизу не может удалять объекты в корзине вверху. У него должны быть разрешения на это, но вместо этого я получаю следующее:

Ошибка удаления: s3: //bucket.domain.com/file.png Произошла ошибка (AccessDenied) при вызове операции DeleteObject: Доступ запрещен

Политика сегмента разрешений S3:

   {
       "Version": "2012-10-17",
       "Statement": [
           {
               "Sid": "Stmt1412062044000",
               "Effect": "Allow",
               "Principal": {
                   "AWS": "arn:aws:iam::321570121925:root"
               },
               "Action": [
                   "s3:GetObject",
                   "s3:PutObject",
                   "s3:PutObjectAcl",
                   "s3:DeleteObject"
               ],
               "Resource": [
                   "arn:aws:s3:::bucket.domain.com/*",
                   "arn:aws:s3:::bucket.domain.com"
               ]
           },
           {
               "Sid": "Stmt1721016931TBA",
               "Effect": "Allow",
               "Principal": {
                   "AWS": "arn:aws:iam::321570121925:root"
               },
               "Action": [
                   "s3:ListBucket",
                   "s3:GetBucketLocation"
               ],
               "Resource": "arn:aws:s3:::bucket.domain.com"
           }
       ]
   }

Результат выполнения GitLab для "aws sts get-called-identity":

   {
       "Account": "321570121925", 
       "UserId": "AROAJZ6FNUZ33NL3XQVYK:i-0394709c2c1742643", 
       "Arn": "arn:aws:sts::321570121925:assumed-role/gitlab-runner-20180419190331730700000002/i-0394709c2c1742643"
   }

Я занимаюсь расследованиями часами, и для меня это не имеет смысла. Помогите, пожалуйста.

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

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

 "Principal": {
      "AWS": "arn:aws:iam::xxxxxxxxxxxx:root"
  },

В политике корзины это делегирует разрешение корню внешней учетной записи xxxxxxxxxxxx ... но эта учетная запись должна дополнительно делегировать разрешение своим пользователям / ролям с соответствующей политикой IAM.

Заметка

Чтобы выполнить определенную операцию с ресурсом, пользователю IAM необходимо разрешение как родительской учетной записи AWS, которой он принадлежит, так и учетной записи AWS, которой принадлежит ресурс.

https://docs.aws.amazon.com/AmazonS3/latest/dev/how-s3-evaluates-access-control.html

В упомянутом выше документе дается обширный обзор того, как S3 обрабатывает проверки привилегий.