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

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

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

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

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/*"
    }
  ]
}

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

Прод

{
"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"
    }
  ]
}

Благодаря этому я должен иметь возможность R / W в папку 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.

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

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

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

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