
Я пробую инструмент CloudBerry Drive, чтобы присоединить S3 buckets в качестве сетевого диска. У меня есть bucket и 2 папки внутри него, предполагая, что имя bucket — это environment, а 2 папки — dev и prod. У меня есть 3 группы пользователей, которые будут это использовать: Admin, Dev и Prod. Admin — должен иметь разрешения на чтение и запись для обеих папок. Dev — должен иметь доступ только на запись в папку dev. Prod — должен иметь доступ на чтение в папку dev и доступ на запись в папку prod.
Однако я запутался с разрешениями IAM. Администратор отлично работает с разрешениями полного доступа S3. Но другие 2 аккаунта не работают нормально.
Дев
{
"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 должен иметь доступ на чтение и запись к папке prod и доступ на чтение к папке dev. 3. Все это делается с помощью CloudBerry Drive для S3.
Примечание: я много гуглил и перепробовал почти все, включая некоторые политики, показывающие, как предоставить разрешение на запись определенной папке пользователя.
решение1
Извините за задержку с ответом: но в моем скрипте измените условие следующим образом:
"Condition":{"StringLike":{"s3:prefix":["home/David/*"]}}
Спасибо ceejayoz за то, что указал мне на эту ошибку.