As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Criar uma política de sessão de um bucket do Amazon S3
Uma política de sessão é uma política AWS Identity and Access Management (IAM) que restringe os usuários a determinadas partes de um bucket do Amazon S3. Ela faz isso avaliando o acesso em tempo real.
nota
As políticas de sessão são usadas somente com o Amazon S3. Para o Amazon EFS, você usa permissões de arquivo POSIX para limitar o acesso.
Use uma política de sessão quando você precisar fornecer o mesmo acesso a determinada parte do seu bucket do Amazon S3 a um grupo de usuários. Por exemplo, um grupo de usuários pode precisar acessar somente o diretório home. Esse grupo de usuários compartilha o mesmo perfil do IAM.
nota
O tamanho máximo de uma política de sessão é 2.048 caracteres. Para obter mais detalhes, consulte o parâmetro de solicitação de política para a CreateUser ação na referência da API.
Para criar uma política de sessão, use as seguintes variáveis de política na sua política do IAM:
-
${transfer:HomeBucket} -
${transfer:HomeDirectory} -
${transfer:HomeFolder} -
${transfer:UserName}
Importante
Você não pode usar as variáveis anteriores em políticas gerenciadas. Você também não pode usá-las como variáveis de política em uma definição de perfil do IAM. Crie essas variáveis em uma política do IAM e as forneça diretamente ao configurar o seu usuário. Além disso, você não pode usar a variável ${aws:Username} nesta política de sessão. Essa variável refere-se a um nome de usuário do IAM, e não ao nome de usuário exigido pelo AWS Transfer Family.
Exemplo de política de sessão
O código a seguir mostra um exemplo de política de sessão.
-
{ "Version":"2012-10-17", "Statement": [ { "Sid": "AllowListingOfUserFolder", "Action": [ "s3:ListBucket" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::${transfer:HomeBucket}" ], "Condition": { "StringLike": { "s3:prefix": [ "${transfer:HomeFolder}/*", "${transfer:HomeFolder}" ] } } }, { "Sid": "HomeDirObjectAccess", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:DeleteObjectVersion", "s3:DeleteObject", "s3:GetObjectVersion", "s3:GetObjectACL", "s3:PutObjectACL" ], "Resource": "arn:aws:s3:::${transfer:HomeDirectory}/*" } ] }
nota
O exemplo de política anterior pressupõe que os usuários tenham seus diretórios pessoais configurados para incluir uma barra final, para indicar que é um diretório. Se, por outro lado, você definir um HomeDirectory de usuário sem a barra final, então deve incluí-lo como parte de sua política.
No exemplo anterior da política, observe o uso dos parâmetros de política transfer:HomeFolder, transfer:HomeBucket, e transfer:HomeDirectory. Esses parâmetros são definidos para o HomeDirectory que está configurado para o usuário, conforme descrito em HomeDirectoryImplementar seu método do API Gatewaye. Esses parâmetros têm as seguintes definições:
O parâmetro
transfer:HomeBucketé substituído pelo primeiro componente doHomeDirectory.O parâmetro
transfer:HomeFolderé substituído pelas partes restantes do parâmetroHomeDirectory.O parâmetro
transfer:HomeDirectorytem a barra inicial (/) removida para que possa ser usado como parte do nome do recurso da Amazon (ARN) do S3 em uma instruçãoResource.
nota
Se você estiver usando diretórios lógicos, ou seja, o homeDirectoryType do usuário é LOGICAL, esses parâmetros de política (HomeBucket,HomeDirectory, e HomeFolder) não serão compatíveis.
Por exemplo, suponha que o parâmetro HomeDirectory configurado para o usuário do Transfer Family seja /home/bob/amazon/stuff/.
transfer:HomeBucketestá definido como/home.transfer:HomeFolderestá definido como/bob/amazon/stuff/.transfer:HomeDirectoryse tornahome/bob/amazon/stuff/.
O primeiro "Sid" permite que o usuário liste todos os diretórios a partir de /home/bob/amazon/stuff/.
O segundo "Sid" limita o acesso put e get do usuário ao mesmo caminho,/home/bob/amazon/stuff/.
Com a política anterior vigente, ao fazer login, o usuário poderá acessar somente objetos em seu diretório inicial. No momento da conexão, AWS Transfer Family substitui essas variáveis pelos valores apropriados para o usuário. Isso facilita a aplicação das mesmas políticas para vários usuários. Essa abordagem reduz a sobrecarga de gerenciamento de perfil e política do IAM para gerenciar o acesso dos usuários ao seu bucket do Amazon S3.
Você também pode usar uma política de sessão para personalizar o acesso de cada um dos usuários com base em suas necessidades comerciais. Para obter mais informações, consulte Permissões para AssumeRole, AssumeRoleWith SAML e AssumeRoleWithWebIdentity no Guia do usuário do IAM.
nota
AWS Transfer Family armazena o JSON da política, em vez do Amazon Resource Name (ARN) da política. Portanto, ao alterar a política no console do IAM, você precisa retornar ao AWS Transfer Family console e atualizar seus usuários com o conteúdo mais recente da política. É possível atualizar o usuário na guia Informações da política na seção de Configuração do usuário.
Se você estiver usando o AWS CLI, você pode usar o comando a seguir para atualizar a política.
aws transfer update-user --server-idserver--user-nameuser--policy \ "$(aws iam get-policy-version --policy-arnpolicy--version-idversion--output json)"
Substituições aninhadas para políticas de sessão
As substituições aninhadas não são realizadas nas políticas de sessão do Transfer Family. As políticas de sessão podem usar variáveis aninhadas, como${transfer:HomeDirectory}. Quando a política é processada, a variável externa (por exemplo,${transfer:HomeDirectory}) pode ser substituída por um valor que contém outra variável (por exemplo, {amzn-s3-demo-bucket:/$(transfer:UserName}). No entanto, a variável aninhada não é posteriormente substituída pelo nome de usuário real (por exemplo, johndoe).
Isso significa que, ao criar políticas de sessão para o Transfer Family, você precisa considerar esse comportamento e garantir que a estrutura da política e o uso de variáveis sejam projetados adequadamente. As variáveis aninhadas podem não ser resolvidas conforme o esperado e a política pode não conceder as permissões pretendidas. É importante testar e validar minuciosamente as políticas da sessão para garantir que funcionem conforme o esperado. Esse comportamento é uma consideração importante ao implementar controle de acesso e permissões para seu ambiente Transfer Family.
Uma solução para esse problema é usar o nome real do bucket Amazon S3 em sua política de sessão. Então, por exemplo, em vez de especificar ${transfer:HomeDirectory} em sua política de sessão, use o seguinte, onde amzn-s3-demo-bucket é seu bucket real:. ${amzn-s3-demo-bucket/transfer:UserName}