Ребята, я чего-то не понимаю. Бегун 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 обрабатывает проверки привилегий.