

# Versionamento de políticas do IAM
<a name="access_policies_managed-versioning"></a>

Quando você faz alterações em uma política gerenciada pelo cliente do IAM, e quando a AWS faz alterações em uma política gerenciada pela AWS, a política alterada não substitui a política existente. Em vez disso, o IAM cria uma nova* versão* da política gerenciada. O IAM armazena até cinco versões de suas políticas gerenciadas pelo cliente. O IAM não oferece suporte ao versionamento para políticas em linha. 

O diagrama a seguir ilustra o versionamento de uma política gerenciada pelo cliente. Neste exemplo, as versões de 1 a 4 foram salvas. Você pode ter até cinco versões de políticas gerenciadas salvas no IAM. Quando você edita uma política que cria uma sexta versão salva, você pode escolher qual versão mais antiga não deve mais ser salva. Você pode reverter para qualquer uma das outras quatro versões salvas a qualquer momento.

![\[As alterações nas políticas gerenciadas tornam-se novas versões da política\]](http://docs.aws.amazon.com/pt_br/IAM/latest/UserGuide/images/policies-managed-policies-versions-overview.diagram.png)


Uma versão de política é diferente de um elemento de política `Version`. O elemento de política `Version` é usado em uma política e define a versão da linguagem da política. Para saber mais sobre o elemento de política `Version`, consulte [Elementos de política JSON do IAM: Version](reference_policies_elements_version.md).

Você pode usar versões para acompanhar alterações em uma política gerenciada. Por exemplo, você pode alterar uma política gerenciada e, em seguida, descobrir que a alteração teve efeitos indesejados. Nesse caso, é possível reverter para uma versão anterior da política gerenciada definindo a versão anterior como a versão *padrão*. 

Os tópicos a seguir explicam como usar o versionamento para políticas gerenciadas.

**Topics**
+ [Limites de versões](#version-limits)
+ [Usar versões para reverter alterações](#versions-roll-back)
+ [Permissões para definir a versão padrão de uma política](#policy-version-permissions)
+ [Definir a versão padrão de políticas gerenciadas pelo cliente](#default-version)

## Limites de versões
<a name="version-limits"></a>

Uma política gerenciada pode ter até cinco versões. Se precisar fazer alterações na política gerenciada além das cinco versões da AWS Command Line Interface ou da API do AWS, primeiro você deve excluir uma ou mais versões existentes. Se você usar o Console de gerenciamento da AWS, não será necessário excluir uma versão antes de editar sua política. Quando você salva uma sexta versão, uma caixa de diálogo é exibida solicitando que você exclua uma ou mais versões não padrão da sua política. Visualize o documento de política JSON de cada versão para ajudá-lo a decidir. Para obter detalhes sobre essa caixa de diálogo, consulte [Editar políticas do IAM](access_policies_manage-edit.md).

Você pode excluir qualquer versão da política gerenciada que desejar, exceto para a versão padrão. Quando você exclui uma versão, os identificadores de versão das versões restantes não são alterados. Como resultado, os identificadores da versão talvez não sejam sequenciais. Por exemplo, se você excluir versões v2 e v4 de uma política gerenciada e adicionar duas novas versões, os identificadores das versões restantes podem ser v1, v3, v5, v6 e v7. 

## Usar versões para reverter alterações
<a name="versions-roll-back"></a>

Você pode definir a versão padrão de uma política gerenciada pelo cliente para reverter suas alterações. Por exemplo, considere os seguintes cenários:

Você cria uma política gerenciada pelo cliente que permite que os usuários administrem um determinado bucket do Amazon S3 usando o Console de gerenciamento da AWS. Após a criação, a política gerenciada pelo cliente tem apenas uma versão, identificada como v1, portanto, essa versão é automaticamente definida como a padrão. A política funciona como previsto. 

Posteriormente, você atualiza a política para adicionar permissão para administrar um segundo bucket do Amazon S3. O IAM cria uma nova versão da política, identificada como v2, que contém as alterações. Você define a versão v2 como padrão, e pouco tempo depois seus usuários relatam que eles não têm permissão para usar o console do Amazon S3. Nesse caso, você pode reverter para a versão v1 da política, que funciona como previsto. Para fazer isso, defina a versão v1 como a versão padrão. Seus usuários agora podem usar o console do Amazon S3 para administrar o bucket original. 

Depois de determinar o erro na versão v2 da política, atualize a política novamente para adicionar permissão para administrar o segundo bucket do Amazon S3. O IAM cria outra nova versão da política, identificada como v3. Você define a versão v3 como padrão, e essa versão funciona como previsto. Nesse ponto, exclua a versão v2 da política.

## Permissões para definir a versão padrão de uma política
<a name="policy-version-permissions"></a>

As permissões que são necessárias para definir a versão padrão de uma política correspondem às operações de API da AWS para a tarefa. Você pode usar as operações `CreatePolicyVersion` ou `SetDefaultPolicyVersion` de API para definir a versão padrão de uma política. Para permitir que algum usuário defina a versão padrão de uma política existente, você pode permitir acesso a ação `iam:CreatePolicyVersion` ou a `iam:SetDefaultPolicyVersion`. A ação `iam:CreatePolicyVersion` permite criar uma nova versão da política e definir essa versão como padrão. A ação `iam:SetDefaultPolicyVersion` permite definir qualquer versão existente da política como padrão.

**Importante**  
Para impedir que um usuário faça alterações na versão padrão de uma política, você deve negar `iam:CreatePolicyVersion` e `iam:SetDefaultPolicyVersion`.

Você pode usar a seguinte política para negar a um usuário acesso para alterar uma política existente gerenciada pelo cliente:

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Deny",
            "Action": [
                "iam:CreatePolicyVersion",
                "iam:SetDefaultPolicyVersion"
            ],
            "Resource": "arn:aws:iam::*:policy/POLICY-NAME"
        }
    ]
}
```

------

## Definir a versão padrão de políticas gerenciadas pelo cliente
<a name="default-version"></a>

Uma das versões de uma política gerenciada é definida como a versão *padrão*. A versão padrão da política é a versão operacional, ou seja, é a versão que está em vigor para todas as entidades principais (usuários do IAM, grupos do IAM e perfis do IAM) às quais a política gerenciada está anexada. 

Quando você cria uma política gerenciada pelo cliente, a política começa com uma única versão identificada como v1. Para políticas gerenciadas com apenas uma única versão, essa versão é automaticamente definida como padrão. Para políticas gerenciadas pelo cliente com mais de uma versão, você escolhe qual versão definir como padrão. Para políticas gerenciadas pela AWS, a versão padrão é definida pela AWS. Os diagramas a seguir ilustram esse conceito. 

![\[Política gerenciada com uma única versão, que é a versão padrão\]](http://docs.aws.amazon.com/pt_br/IAM/latest/UserGuide/images/policies-managed-policies-versions-default-one.diagram.png)




![\[Política gerenciada pelo cliente com três versões, na qual a versão v2 é a versão padrão.\]](http://docs.aws.amazon.com/pt_br/IAM/latest/UserGuide/images/policies-managed-policies-versions-default-multiple.diagram.png)


É possível definir a versão padrão de uma política gerenciada pelo cliente para aplicar essa versão a todas as identidades (usuário, grupo de usuários e função) do IAM em que a política está anexada. Não é possível definir a versão padrão para uma política gerenciada pela AWS ou em linha.

**Para definir a versão padrão de uma política gerenciada pelo cliente (console)**

1. Faça login no Console de gerenciamento da AWS e abra o console do IAM, em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. No painel de navegação, selecione **Políticas**.

1. Na lista de políticas, escolha o nome da política para a qual deseja definir a versão padrão. Você pode usar a caixa de pesquisa para filtrar a lista de políticas.

1. Escolha a guia **Versões da política**. Marque a caixa de seleção ao lado da versão que você deseja definir como a versão padrão e, em seguida, selecione **Definir como padrão**.

Para saber como definir a versão padrão de uma política gerenciada pelo cliente desde a AWS Command Line Interface ou da API da AWS, consulte [Editar políticas do IAM (AWS CLI)](access_policies_manage-edit-cli.md). 