

# Solicitações de sessões de acesso direto (FAS) e avaliação de permissões
<a name="fas-requests-and-permission-evaluation"></a>

Ao criar, atualizar e excluir pilhas do CloudFormation, os usuários têm a opção de especificar um ARN de perfil do IAM. Se nenhum perfil for fornecido, o CloudFormation usará seu mecanismo de serviço padrão para interagir com outros serviços da AWS. Nesse cenário, o chamador deve ter as permissões necessárias para os recursos sendo gerenciados. Alternativamente, quando um usuário fornecer seu próprio perfil do IAM, o CloudFormation assumirá esse perfil para realizar interações de serviço em nome dele.

Quer o usuário usuário forneça ou não um perfil do IAM, o CloudFormation gerará um novo token de FAS com escopo reduzido para cada operação de recurso. Portanto, [as chaves de condição relacionadas a FAS](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_forward_access_sessions.html#access_fas_policy_conditions), incluindo `aws:ViaAWSService`, são preenchidas em ambos os cenários.

O uso de FAS afeta o modo como as políticas do IAM são avaliadas durante as operações do CloudFormation. Ao criar uma pilha com um modelo que inclui recursos afetados pelas chaves de condição relacionadas a FAS, podem ocorrer negações de permissão.

**Exemplo de política do IAM**  
Considere a política do IAM a seguir. O `Statement2` impedirá consistentemente a criação de um recurso `AWS::KMS::Key` no CloudFormation. A restrição será aplicada de modo consistente, seja ou não fornecido o perfil do IAM durante a operação da pilha. Isso ocorre porque a chave de condição `aws:ViaAWSService` é sempre definida como `true` devido ao uso de FAS. 

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "Statement1",
            "Effect": "Allow",
            "Action": [
                "kms:CreateKey"
            ],
            "Resource": [
                "*"
            ]
        },
        {
            "Sid": "Statement2",
            "Effect": "Deny",
            "Action": [
                "kms:CreateKey"
            ],
            "Resource": [
                "*"
            ],
            "Condition": {
                "Bool": {
                    "aws:ViaAWSService": "true"
                }
            }
        }
    ]
}
```

------

**Exemplo de modelo de pilha**  
Por exemplo, quando um usuário cria uma pilha com o exemplo de modelo a seguir, `aws:ViaAWSService` é definido como `true`, e as permissões do perfil serão substituídas pela política de FAS. A criação da pilha será afetada pelo `Statement2` da política do IAM, que nega a ação `CreateKey`. Isso resulta em um erro de permissão negada. 

```
Resources:
  myPrimaryKey:
    Type: AWS::KMS::Key
    Properties:
      Description: An example multi-Region primary key
      KeyPolicy:
        Version: '2012-10-17'
        Id: key-default-1
        Statement:
          - Sid: Enable IAM User Permissions
            Effect: Allow
            Principal:
              AWS: !Join
                - ''
                - - 'arn:aws:iam::'
                  - !Ref AWS::AccountId
                  - ':root'
            Action: kms:*
            Resource: '*'
```

Para obter mais informações sobre FAS, consulte [Sessões de acesso direto](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_forward_access_sessions.html) no *Guia do usuário do IAM*.

**nota**  
A maioria dos recursos adere a esse comportamento. Porém, se você tiver um sucesso ou uma falha inesperada ao criar, atualizar ou excluir um recurso, e a política do IAM incluir chaves de condição relacionadas a FAS, provavelmente o recurso em questão pertencerá a um pequeno subconjunto de recursos que não seguem esse padrão.