

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
<a name="users-policies-session"></a>

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](https://docs.aws.amazon.com/transfer/latest/APIReference/API_CreateUser.html#API_CreateUser_RequestSyntax) 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
<a name="example-session-policy"></a>

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 [HomeDirectory](https://docs.aws.amazon.com/transfer/latest/APIReference/API_CreateUser.html#TransferFamily-CreateUser-request-HomeDirectory)[Implementar seu método do API Gateway](authentication-api-gateway.md#authentication-api-method)e. Esses parâmetros têm as seguintes definições:
+ O parâmetro `transfer:HomeBucket` é substituído pelo primeiro componente do `HomeDirectory`.
+ O parâmetro `transfer:HomeFolder` é substituído pelas partes restantes do parâmetro `HomeDirectory`.
+ O parâmetro `transfer:HomeDirectory` tem a barra inicial (`/`) removida para que possa ser usado como parte do nome do recurso da Amazon (ARN) do S3 em uma instrução `Resource`.

**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:HomeBucket` está definido como `/home`.
+ `transfer:HomeFolder` está definido como `/bob/amazon/stuff/`.
+ `transfer:HomeDirectory` se torna `home/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](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_control-access_assumerole.html) 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-id server --user-name user --policy \
   "$(aws iam get-policy-version --policy-arn policy --version-id version --output json)"
```

## Substituições aninhadas para políticas de sessão
<a name="nested-variable-behavior"></a>

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, \$1`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}`