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}/*"
]
}
]
}