

# Permissões para GetFederationToken
<a name="id_credentials_temp_control-access_getfederationtoken"></a>

A operação `GetFederationToken` é chamada por um usuário do IAM e retorna credenciais temporárias para esse usuário. Essa operação *federa* o usuário. As permissões atribuídas a uma sessão de usuário federado do AWS STS são definidas em um de dois lugares: 
+ A política de sessão transmitida como um parâmetro da chamada de API `GetFederationToken`. (Isso é mais comum.)
+ Uma política com base em recursos que nomeia explicitamente o usuário federado do AWS STS no elemento `Principal` da política. (Isso é menos comum.)

As políticas de sessão são políticas avançadas que você transmite como parâmetros ao criar de forma programática uma sessão temporária. Quando você cria uma sessão de usuário federado do AWS STS e transmite as políticas de sessão, as permissões da sessão resultante são a interseção da política baseada em identidade do usuário e das políticas da sessão. Você não pode usar a política de sessão para conceder mais permissões do que as permitidas pela política baseada em identidade do usuário que está sendo federado.

Na maioria dos casos, se você não transmitir uma política com a chamada de API `GetFederationToken`, as credenciais de segurança temporárias não terão permissões. No entanto, uma política baseada em recurso pode fornecer permissões adicionais para a sessão. Você pode acessar um recurso com uma política baseada em recurso que especifica sua sessão como a entidade principal permitida. 

As figuras a seguir mostram uma representação visual de como as políticas interagem para determinar permissões para as credenciais de segurança temporárias retornadas por uma chamada de `GetFederationToken`.

![\[Usuário do IAMAs ilustrações a seguir mostram marcas de seleção para indicar que as permissões de sessão são a interseção entre a política baseada em identidade do usuário e as políticas de sessão. As permissões de sessão também podem ser a interseção entre a política baseada em identidade do usuário e as políticas baseadas em recurso.\]](http://docs.aws.amazon.com/pt_br/IAM/latest/UserGuide/images/getfederationtoken-permissions.diagram.png)


## Exemplo: atribuição de permissões usando GetFederationToken
<a name="permissions-get-federation-token-example"></a>

Você pode usar a ação de API `GetFederationToken` com diferentes tipos de políticas. Veja a seguir alguns exemplos.

### Política anexada ao usuário do IAM
<a name="permissions-get-federation-token-example-iam-user"></a>

Neste exemplo, você tem uma aplicação cliente baseada em navegador que conta com dois serviços da Web de backend. Um serviço de backend é o seu próprio servidor de autenticação que usa o seu próprio sistema de identidade para autenticar a aplicação cliente. O outro serviço de backend é um serviço do AWS que fornece algumas das funcionalidades da aplicação cliente. O aplicativo cliente é autenticado pelo seu servidor, e este cria ou recupera a política de permissões apropriada. Seu servidor chama a API `GetFederationToken` para obter as credenciais de segurança temporárias e retorna essas credenciais para o aplicativo cliente. O aplicativo cliente pode então fazer solicitações diretamente ao serviço da AWS com as credenciais de segurança temporárias. Essa arquitetura permite que o aplicativo cliente faça solicitações da AWS sem incorporação das credenciais da AWS de longo prazo.

Seu servidor de autenticação chama a API `GetFederationToken` com as credenciais de segurança de longo prazo de um usuário do IAM chamado `token-app`. No entanto, as credenciais do usuário do IAM de longo prazo permanecem no servidor e nunca são distribuídas para o cliente. A política do exemplo a seguir está anexada ao usuário `token-app` do IAM e define o mais amplo conjunto de permissões necessários para seus usuários federados do AWS STS (clientes). Observe que a permissão `sts:GetFederationToken` é necessária para o seu serviço de autenticação para obter credenciais de segurança temporárias para os usuários federados do AWS STS.

**Example Exemplo de política anexada ao usuário do IAM `token-app` que chama `GetFederationToken`**    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "sts:GetFederationToken",
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": "dynamodb:ListTables",
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": "sqs:ReceiveMessage",
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": "s3:ListBucket",
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": "sns:ListSubscriptions",
      "Resource": "*"
    }
  ]
}
```

A política anterior concede várias permissões ao usuário do IAM. No entanto, essa política sozinha não concede permissões ao usuário federado do AWS STS. Se esse usuário do IAM chamar `GetFederationToken` e não transmitir uma política como um parâmetro da chamada de API, o usuário federado do AWS STS resultante não terá permissões efetivas. 

### Política de sessão transmitida como um parâmetro
<a name="permissions-get-federation-token-example-passed-policy"></a>

A forma mais comum para garantir que o usuário federado do AWS STS tenha a atribuição da permissão apropriada é transmitir políticas de sessão na chamada de API `GetFederationToken`. Expandindo o exemplo anterior, imagine que ação `GetFederationToken` é chamada com as credenciais do usuário do IAM `token-app`. Por exemplo, imagine que a seguinte política de sessão seja transmitida como um parâmetro da chamada de API. O usuário federado do AWS STS resultante tem permissão para listar o conteúdo do bucket do Amazon S3 chamado `productionapp`. O usuário não pode executar as ações do `GetObject` `PutObject` e `DeleteObject` do Amazon S3 em itens no bucket `productionapp`.

Essas permissões são atribuídas ao usuário federado porque as permissões são a interseção das políticas de usuário do IAM e das políticas de sessão que você transmite.

O usuário federado do AWS STS não podia executar ações no Amazon SNS, Amazon SQS, Amazon DynamoDB ou em qualquer bucket do S3, exceto `productionapp`. Essas ações são negadas mesmo que essas permissões sejam concedidas ao usuário do IAM que está associado à chamada `GetFederationToken`.

**Example Exemplo de política de sessão passada como parâmetro de chamada de API `GetFederationToken`**    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": ["s3:ListBucket"],
      "Resource": ["arn:aws:s3:::productionapp"]
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:GetObject",
        "s3:PutObject",
        "s3:DeleteObject"
      ],
      "Resource": ["arn:aws:s3:::productionapp/*"]
    }
  ]
}
```

### Políticas baseadas em recursos
<a name="permissions-get-federation-token-resource-based-policy"></a>

Alguns recursos da AWS oferecem suporte às políticas baseadas em recursos, e essas políticas fornecem outro mecanismo para conceder permissões diretamente ao usuário federado do AWS STS. Apenas alguns serviços da AWS oferecem suporte para políticas baseadas em recursos. Por exemplo, o Amazon S3 tem buckets, o Amazon SNS tem tópicos e o Amazon SQS tem filas às quais você pode anexar políticas. Para obter uma lista de todos os serviços que oferecem suporte às políticas baseadas em recurso, consulte [AWSServiços da que funcionam com o IAM](reference_aws-services-that-work-with-iam.md) e analise a coluna "Políticas baseadas em recurso" das tabelas. Você pode usar as políticas baseadas em recurso para atribuir permissões diretamente a um usuário federado do AWS STS. Faça isso ao especificar o nome do recurso da Amazon (ARN) do usuário federado do AWS STS no elemento `Principal` da política baseada em recurso. O exemplo a seguir ilustra isso e explora mais os exemplos anteriores, usando um bucket do S3 chamado `productionapp`. 

A seguinte política baseada em recurso é anexada a um bucket. Essa política do bucket permite que um usuário federado do AWS STS chamado Carol acesse o bucket. Quando a política de exemplo descrita anteriormente é anexada ao usuário do IAM `token-app`, o usuário federado do AWS STS chamado Carol tem permissão para executar as ações `s3:DeleteObject`, `s3:GetObject` e `s3:PutObject` no bucket chamado `productionapp`. Isso é verdadeiro mesmo quando nenhuma política de sessão é transmitida como um parâmetro da chamada de API `GetFederationToken`. Isso porque, nesse caso, a política baseada em recursos a seguir concedeu explicitamente permissões ao usuário federado do AWS STS chamado Carol. 

Lembre-se de que um usuário federado do AWS STS recebe permissões apenas quando essas permissões são concedidas explicitamente ao usuário do IAM ***e*** ao usuário federado do AWS STS. Elas também podem ser concedidas (dentro de uma conta) por uma política baseada em recurso que nomeie explicitamente o usuário federado do AWS STS no elemento `Principal` da política, como no exemplo a seguir.

**Example Exemplo de política de bucket que permite acesso ao usuário federado**    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": {
        "Principal": {
            "AWS": "arn:aws:sts::111122223333:federated-user/Carol"
        },
        "Effect": "Allow",
        "Action": [
            "s3:GetObject",
            "s3:PutObject",
            "s3:DeleteObject"
        ],
        "Resource": [
            "arn:aws:s3:::productionapp/*"
        ]
    }
}
```

Para obter mais informações sobre como as políticas são avaliadas, consulte [Lógica de avaliação da política](reference_policies_evaluation-logic.md).