

# Controle do acesso com políticas do IAM
<a name="id_roles_providers_outbound_policies"></a>

O IAM fornece vários tipos de políticas para controlar o acesso ao recurso de federação de identidades de saída. Você pode usar [políticas baseadas em identidade](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_identity-vs-resource.html) para controlar quais entidades principais do IAM podem solicitar tokens e aplicar propriedades específicas de tokens, como público, vida útil e algoritmos de assinatura. As [políticas de controle de serviços](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html) (SCPs) permitem que você aplique restrições em toda a organização à geração de tokens em todas as contas no seu AWS Organizations. As [políticas de controle de recursos](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_rcps.html) (RCPs) controlam o acesso no nível do recurso. Você também pode usar [políticas de endpoint da VPC](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-access.html) para restringir quais entidades principais podem acessar a API `GetWebIdentityToken` do AWS STS por meio de seus endpoints da VPC, adicionando controles em nível de rede à sua postura de segurança. Esta seção explica como implementar controles de acesso refinados usando esses tipos de política e chaves de condição.

Para solicitar tokens de identidade, uma entidade principal do IAM deve ter a permissão `sts:GetWebIdentityToken`. Conceda essa permissão por meio de políticas de identidade anexadas aos usuários ou perfis do IAM. Para permitir que tags (pares de chave/valor) sejam transmitidas para a chamada de GetWebIdentityToken, a entidade principal do IAM deve ter a permissão `sts:TagGetWebIdentityToken`.
+ Use a chave de condição [sts:IdentityTokenAudience](reference_policies_iam-condition-keys.md#ck_identitytokenaudience) para limitar quais serviços externos podem receber tokens.
+ Use a chave de condição [sts:DurationSeconds](reference_policies_iam-condition-keys.md#ck_durationseconds) para aplicar a vida útil máxima do token.
+ Use a chave de condição [sts:SigningAlgorithm](reference_policies_iam-condition-keys.md#ck_signingalgorithm) para exigir algoritmos criptográficos específicos.
+ Use a chave de condição [aws:RequestTag](reference_policies_condition-keys.md#condition-keys-requesttag) para comparar o par de chave/valor da tag que foi transmitido na solicitação com o par de tags especificado na política.
+ Use a chave de condição [aws:RequestTag](reference_policies_condition-keys.md#condition-keys-tagkeys) para comparar as chaves de tags em uma solicitação com as chaves especificadas na política.

Consulte as chaves de condição do [IAM e AWS STS](reference_policies_iam-condition-keys.md) para saber mais sobre as chaves de condição disponíveis nas políticas do IAM.

Esse exemplo de política de identidade combina várias chaves de condição:

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowTokenGenerationWithRestrictions",
            "Effect": "Allow",
            "Action": "sts:GetWebIdentityToken",
            "Resource": "*",
            "Condition": {
                "ForAnyValue:StringEquals": {
                    "sts:IdentityTokenAudience": [
                        "https://api1.example.com",
                        "https://api2.example.com"
                    ]
                },
                "NumericLessThanEquals": {
                    "sts:DurationSeconds": 300
                },
                "StringEquals": {
                    "sts:SigningAlgorithm": "ES384"
                }
            }
        }
    ]
}
```

## Práticas recomendadas
<a name="outbound-best-practices"></a>

Siga essas recomendações para federar com segurança suas identidades da AWS em serviços externos.
+ **Use tokens com vida útil curta:** solicite tokens com a vida útil mais curta que atenda às suas necessidades operacionais.
+ **Implemente o acesso com privilégio mínimo e restrinja as propriedades do token com as políticas do IAM:** conceda a permissão `sts:GetWebIdentityToken` somente às entidades principais do IAM que a exijam. Use chaves de condição para especificar algoritmos de assinatura, públicos permitidos de tokens e vida útil máxima de tokens, conforme necessário.
+ **Valide reivindicações em serviços externos:** por questões de segurança, sempre valide as reivindicações relevantes, como subject (“sub”), audience (“aud”) etc. para garantir que elas correspondam aos valores esperados. Valide as reivindicações personalizadas sempre que possível para permitir decisões de autorização detalhadas em serviços externos.