Amazon S3: permite que usuários federados acessem seus respectivos diretórios base do S3 de forma programática e no console
Este exemplo mostra como você pode criar uma política baseada em identidade que permita que usuários federados acessem seu próprio objeto de bucket do diretório inicial no S3. O diretório inicial é um bucket que inclui uma pasta home
e pastas para usuários federados individuais. Esta política define permissões para acesso programático e do console. Para usar esta política, substitua o texto do espaço reservado em itálico
na política de exemplo por suas próprias informações. Em seguida, siga as instruções em criar uma política ou editar uma política.
A variável ${aws:userid}
nessa política resulta em role-id:specified-name
. A parte role-id
do ID do usuário federado é um identificador exclusivo atribuído à função do usuário federado durante a criação. Para ter mais informações, consulte Identificadores exclusivos. O specified-name
é o parâmetro RoleSessionName passado para a solicitação AssumeRoleWithWebIdentity
quando o usuário federado assumiu sua função.
Você pode visualizar o ID da função usando o comando da AWS CLI aws iam get-role --role-name
. Por exemplo, imagine que você especifique o nome amigável specified-name
John
, e a CLI retorne o ID da função AROAXXT2NJT7D3SIQN7Z6
. Nesse caso, o ID do usuário federado é AROAXXT2NJT7D3SIQN7Z6:John
. Esta política permite que o usuário federado John acesse o bucket do Amazon S3 com o prefixo AROAXXT2NJT7D3SIQN7Z6:John
.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "S3ConsoleAccess", "Effect": "Allow", "Action": [ "s3:GetAccountPublicAccessBlock", "s3:GetBucketAcl", "s3:GetBucketLocation", "s3:GetBucketPolicyStatus", "s3:GetBucketPublicAccessBlock", "s3:ListAccessPoints", "s3:ListAllMyBuckets" ], "Resource": "*" }, { "Sid": "ListObjectsInBucket", "Effect": "Allow", "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::
amzn-s3-demo-bucket
", "Condition": { "StringLike": { "s3:prefix": [ "", "home/", "home/${aws:userid}/*" ] } } }, { "Effect": "Allow", "Action": "s3:*", "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket
/home/${aws:userid}", "arn:aws:s3:::amzn-s3-demo-bucket
/home/${aws:userid}/*" ] } ] }