Я пробую использовать инструмент 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.
Примечание: я много гуглил и пробовал почти все, включая некоторые политики, которые показывают, как предоставить разрешение на запись в конкретную папку пользователя.
Приносим свои извинения за написание отложенного ответа: Но в моем сценарии измените условие следующим образом:
"Condition":{"StringLike":{"s3:prefix":["home/David/*"]}}
Спасибо ceejayoz за указание мне на эту ошибку.