Я пробую использовать инструмент 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 за указание на эту ошибку.