Я использую Amazon S3 для хранения данных клиента.Существует несколько клиентов, и у каждого клиента есть собственная папка в папке «/ Users /» со своими именами.Клиенты имеют права на чтение и запись.
Чтобы динамически назначать разрешения каждому клиенту, я создаю стандартную политику, которую я назначаю во время создания пользователя (приведенная ниже политика работает нормально).
Теперь у клиентов есть свои пользователи, которые имеют доступ к этим данным.Но они должны иметь разрешение только для чтения для папки, принадлежащей их клиенту Не для других папок .
Я создал политику, которая имеет разрешение на чтение и запись:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowUserToSeeBucketListInTheConsole",
"Action": [
"s3:ListAllMyBuckets"
],
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::*"
]
},
{
"Sid": "AllowRootAndHomeListingOfCompanyBucket",
"Action": [
"s3:*"
],
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::bucket-name"
],
"Condition": {
"StringEquals": {
"s3:prefix": [
"",
"Users/",
"Users/${aws:username}"
],
"s3:delimiter": [
"/"
]
}
}
},
{
"Sid": "AllowListingOfUserFolder",
"Action": [
"s3:*"
],
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::bucket-name"
],
"Condition": {
"StringLike": {
"s3:prefix": [
"",
"Users/",
"Users/${aws:username}/*"
]
}
}
},
{
"Sid": "AllowAllS3ActionsInUserFolder",
"Effect": "Allow",
"Action": [
"s3:GetObject"
"s3:PutObject"
],
"Resource": [
"arn:aws:s3:::bucket-name/Users/${aws:username}/*"
]
}
]
}
Предположим, ${aws:username}
- это та же папка, которая принадлежит клиенту.
Если я создаю вторую политику с такой же, как указано выше, просто с правами только для чтения, тогда читаю-только имя пользователя пользователя должно отличаться (потому что имя пользователя не может быть одинаковым), поэтому, если у второго пользователя другое имя, он не сможет получить доступ к этой папке.
Вопросы:
- Как создать пользователя и назначить разрешение только на чтение для папки, которая принадлежит его клиенту?(Пользователь с именем папки уже существует с разрешениями на чтение и запись)
- Как и
${aws:username}
, есть ли что-то, что мы можем назначить во время создания пользователя и использовать в политике как переменную?