Amazon S3: permite que usuários federados acessem seus respectivos diretórios base do S3 de forma programática e no console - AWS Identity and Access Management

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 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 specified-name. Por exemplo, imagine que você especifique o nome amigável 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": [ { "Effect": "Allow", "Action": [ "s3:ListAllMyBuckets", "s3:GetBucketLocation" ], "Resource": "*" }, { "Effect": "Allow", "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::bucket-name", "Condition": { "StringLike": { "s3:prefix": [ "", "home/", "home/${aws:userid}/*" ] } } }, { "Effect": "Allow", "Action": "s3:*", "Resource": [ "arn:aws:s3:::bucket-name/home/${aws:userid}", "arn:aws:s3:::bucket-name/home/${aws:userid}/*" ] } ] }