Политика пользователя IAM для RW в определенные папки

Я пробую использовать инструмент CloudBerry Drive, чтобы подключить сегменты S3 в качестве сетевого диска. У меня есть ведро и 2 папки внутри него, предполагая, что имя ведра как среда и 2 папки как dev и prod. У меня есть 3 группы пользователей, которые будут использовать это - Admin, Dev и Prod. Администратор - должен иметь права чтения / записи для обеих папок. Dev - должен иметь доступ на запись только к папке dev. Prod - должен иметь доступ на чтение к папке dev и доступ на запись к папке prod.

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

Dev

{
"Version": "2012-10-17",
"Statement": [
    {
        "Sid": "VisualEditor0",
        "Effect": "Allow",
        "Action": [
            "s3:PutObject",
            "s3:DeleteObjectVersion",
            "s3:RestoreObject",
            "s3:PutObjectVersionTagging",
            "s3:PutObjectTagging",
            "s3:DeleteObject"
        ],
        "Resource": "arn:aws:s3:::environment/dev/*"
    }
  ]
}

После этого я смогу выполнить чтение / запись в папку dev, что я не могу сделать. Используя CloudBerry Drive, я могу скопировать и вставить файл, но не загружаюсь на S3. Кроме того, здесь перечислены файлы в S3 (что требуется), но нет доступа к ним (ошибка прилагается).

Prod

{
"Version": "2012-10-17",
"Statement": [
    {
        "Sid": "VisualEditor0",
        "Effect": "Allow",
        "Action": [
            "s3:DeleteObjectTagging",
            "s3:DeleteObjectVersion",
            "s3:GetObjectVersionTagging",
            "s3:ReplicateTags",
            "s3:RestoreObject",
            "s3:PutObjectVersionTagging",
            "s3:DeleteObjectVersionTagging",
            "s3:ListMultipartUploadParts",
            "s3:ReplicateObject",
            "s3:GetObjectVersionTorrent",
            "s3:PutObject",
            "s3:GetObjectAcl",
            "s3:GetObject",
            "s3:ObjectOwnerOverrideToBucketOwner",
            "s3:GetObjectTorrent",
            "s3:AbortMultipartUpload",
            "s3:GetObjectVersionAcl",
            "s3:GetObjectTagging",
            "s3:PutObjectTagging",
            "s3:GetObjectVersionForReplication",
            "s3:DeleteObject",
            "s3:ReplicateDelete",
            "s3:GetObjectVersion"
        ],
        "Resource": "arn:aws:s3:::environment/Prod"
    }
  ]
}

Благодаря этому я смогу выполнить чтение / запись в папку prod, которую я не могу сделать. Используя CloudBerry Drive, я могу скопировать и вставить файл, но не загружаюсь на S3.

{
"Version": "2012-10-17",
"Statement": [
    {
        "Sid": "VisualEditor0",
        "Effect": "Allow",
        "Action": [
            "s3:GetObjectVersionTorrent",
            "s3:GetObjectAcl",
            "s3:GetObject",
            "s3:GetObjectTorrent",
            "s3:GetObjectVersionTagging",
            "s3:GetObjectVersionAcl",
            "s3:GetObjectTagging",
            "s3:GetObjectVersionForReplication",
            "s3:GetObjectVersion",
            "s3:ListMultipartUploadParts"
        ],
        "Resource": [
            "arn:aws:s3:::environment"
        ],
        "Condition": {
            "StringLike": {
                "s3:prefix": [
                    "dev/*"
                ]
            }
        }
    }
  ]
}

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

Надеюсь, я понимаю свое требование: 1. Пользователь dev должен иметь доступ для чтения и записи только к папке dev. 2. Пользователь prod должен иметь доступ R / W к папке prod и доступ R к папке dev 3. Все это делается с помощью CloudBerry Drive для S3.

Примечание: я много гуглил и пробовал почти все, включая некоторые политики, которые показывают, как предоставить разрешение на запись в конкретную папку пользователя. enter image description here

0
задан 14 February 2018 в 15:25
1 ответ

Приносим свои извинения за написание отложенного ответа: Но в моем сценарии измените условие следующим образом:

"Condition":{"StringLike":{"s3:prefix":["home/David/*"]}}

Спасибо ceejayoz за указание мне на эту ошибку.

1
ответ дан 4 December 2019 в 16:01

Теги

Похожие вопросы