

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á.

# Com scripts, migre suas políticas em massa para usar ações do IAM refinadas
<a name="migrate-iam-permissions"></a>

**nota**  
As seguintes ações AWS Identity and Access Management (IAM) chegaram ao fim do suporte padrão em julho de 2023:  
Namespace do `aws-portal`
`purchase-orders:ViewPurchaseOrders`
`purchase-orders:ModifyPurchaseOrders`
Se você estiver usando AWS Organizations, poderá usar os [scripts do migrador de políticas em massa ou o migrador](#migrate-iam-permissions) de políticas em massa para atualizar as políticas da sua conta de pagador. Você também poderá usar a [referência de mapeamento de ações antigas para granulares](migrate-granularaccess-iam-mapping-reference.md) para verificar as ações do IAM que precisam ser adicionadas.  
Se você tem uma Conta da AWS ou faz parte de uma AWS Organizations criada em ou após 6 de março de 2023, às 11h (PDT), as ações refinadas já estão em vigor em sua organização.

Para ajudar a migrar suas políticas do IAM a fim de usar ações refinadas, conhecidas como novas ações, você pode usar scripts do site [Exemplos da AWS](https://github.com/aws-samples/bulk-policy-migrator-scripts-for-account-cost-billing-consoles). 

Você executa esses scripts na conta do pagador de sua organização para identificar as seguintes políticas afetadas em sua organização que usam as ações antigas do IAM:
+ políticas do IAM gerenciadas pelo cliente;
+ políticas do IAM em linha para perfil, grupo e usuário;
+ Políticas de controle de serviço (SCPs) (aplica-se somente à conta do pagador)
+ Conjuntos de permissões

Os scripts geram sugestões para novas ações que correspondem a ações existentes usadas na política. Em seguida, você analisa as sugestões e usa os scripts para adicionar as novas ações em todas as políticas afetadas em sua organização. Você não precisa atualizar políticas AWS gerenciadas ou AWS gerenciadas SCPs (por exemplo, AWS Control Tower e AWS Organizations SCPs).

Você usa esses scripts para: 
+ Simplifique as atualizações da política para ajudar você a gerenciar as políticas afetadas com base na conta do pagador.
+ Reduza o tempo necessário para atualizar as políticas. Não é necessário fazer login em cada conta de membro e atualizar manualmente as políticas.
+ Agrupe políticas idênticas de diferentes contas de membros. Em seguida, você pode revisar e aplicar as mesmas atualizações em todas as políticas idênticas, em vez de revisá-las uma por uma.
+ Certifique-se de que o acesso do usuário permaneça inalterado após a AWS desativação das ações antigas do IAM em 6 de julho de 2023.

Para obter mais informações sobre políticas e políticas de controle de serviços (SCPs), consulte os tópicos a seguir: 
+ [Como gerenciar políticas do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage.html) no *Guia do usuário do IAM*
+ [Políticas de controle de serviço (SCPs)](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html) no *Guia AWS Organizations do usuário*
+ [Permissões personalizadas](https://docs.aws.amazon.com/singlesignon/latest/userguide/permissionsetcustom.html) no *Guia do usuário do Centro de Identidade do IAM*

## Visão geral do
<a name="overview-bulk-migrate-policies"></a>

Siga este tópico para concluir as seguintes etapas:

**Topics**
+ [Visão geral do](#overview-bulk-migrate-policies)
+ [Pré-requisitos](#prerequisites-running-the-scripts)
+ [Etapa 1: configurar o ambiente](#set-up-your-environment-and-download-the-scripts)
+ [Etapa 2: criar o CloudFormation StackSet](#create-the-cloudformation-stack)
+ [Etapa 3: identificar as políticas afetadas](#identify-the-affected-policies)
+ [Etapa 4: revisar as alterações sugeridas](#review-the-affected-policies)
+ [Etapa 5: atualizar as políticas afetadas](#update-the-affected-policies)
+ [Etapa 6: reverter suas alterações (opcional)](#revert-changes)
+ [Exemplos de política do IAM](#examples-of-similar-policies)

## Pré-requisitos
<a name="prerequisites-running-the-scripts"></a>

Para começar, faça o seguinte:
+ Baixe e instale o [Python 3](https://www.python.org/downloads/)
+ Faça login na sua conta de pagador e verifique se você tem uma entidade principal do IAM com as seguintes permissões do IAM:

  ```
  "iam:GetAccountAuthorizationDetails",
  "iam:GetPolicy",
  "iam:GetPolicyVersion",
  "iam:GetUserPolicy",
  "iam:GetGroupPolicy",
  "iam:GetRole",
  "iam:GetRolePolicy",
  "iam:CreatePolicyVersion",
  "iam:DeletePolicyVersion",
  "iam:ListAttachedRolePolicies",
  "iam:ListPolicyVersions",
  "iam:PutUserPolicy",
  "iam:PutGroupPolicy",
  "iam:PutRolePolicy",
  "iam:SetDefaultPolicyVersion",
  "organizations:ListAccounts",
  "organizations:ListPolicies",
  "organizations:DescribePolicy",
  "organizations:UpdatePolicy",
  "organizations:DescribeOrganization",
  "sso:DescribePermissionSet",
  "sso:DescribePermissionSetProvisioningStatus",
  "sso:GetInlinePolicyForPermissionSet",
  "sso:ListInstances",
  "sso:ListPermissionSets",
  "sso:ProvisionPermissionSet",
  "sso:PutInlinePolicyToPermissionSet",
  "sts:AssumeRole"
  ```

**dica**  
Para começar, recomendamos que você use um subconjunto de uma conta, como uma conta de teste, para verificar se as alterações sugeridas são esperadas.  
Em seguida, você pode executar novamente os scripts para as contas restantes em sua organização.

## Etapa 1: configurar o ambiente
<a name="set-up-your-environment-and-download-the-scripts"></a>

Para começar, faça download dos arquivos necessários no website de [Exemplos da AWS](https://github.com/aws-samples/bulk-policy-migrator-scripts-for-account-cost-billing-consoles). Em seguida, você executa comandos para configurar seu ambiente.

**Para configurar seu ambiente**

1. Clone o repositório do website [Exemplos da AWS](https://github.com/aws-samples/bulk-policy-migrator-scripts-for-account-cost-billing-consoles). Em uma janela da linha de comando, você pode usar o seguinte comando:

   ```
   git clone https://github.com/aws-samples/bulk-policy-migrator-scripts-for-account-cost-billing-consoles.git
   ```

1. Navegue até o diretório em que você fez o download dos arquivos. É possível usar o seguinte comando:

   ```
   cd bulk-policy-migrator-scripts-for-account-cost-billing-consoles
   ```

   No repositório, você pode encontrar os seguintes scripts e recursos:
   + `billing_console_policy_migrator_role.json`— O CloudFormation modelo que cria a função `BillingConsolePolicyMigratorRole` do IAM nas contas dos membros da sua organização. Essa função permite que os scripts assumam o perfil e, em seguida, leiam e atualizem as políticas afetadas.
   + `action_mapping_config.json`— Contém o one-to-many mapeamento das ações antigas para as novas ações. Os scripts usam esse arquivo para sugerir as novas ações para cada política afetada que contém as ações antigas. 

     Cada ação antiga corresponde a várias ações refinadas. As novas ações sugeridas no arquivo fornecem aos usuários acesso às mesmas Serviços da AWS antes da migração. 
   + `identify_affected_policies.py`: verifica e identifica as políticas afetadas em sua organização. Esse script gera um arquivo `affected_policies_and_suggestions.json` que lista as políticas afetadas junto com as novas ações sugeridas. 

     As políticas afetadas que usam o mesmo conjunto de ações antigas são agrupadas no arquivo JSON, para que você possa revisar ou atualizar as novas ações sugeridas.
   + `update_affected_policies.py`: atualiza as políticas afetadas em sua organização. O script insere o arquivo `affected_policies_and_suggestions.json` e, em seguida, adiciona as novas ações sugeridas às políticas.
   + `rollback_affected_policies.py`: (opcional) reverte as alterações feitas nas políticas afetadas. Esse script remove as novas ações refinadas das políticas afetadas.

1. Para ativar o ambiente virtual, execute os comandos a seguir.

   ```
   python3 -m venv venv
   ```

   ```
   source venv/bin/activate
   ```

1. Execute o comando a seguir para instalar a AWS SDK para Python (Boto3) dependência.

   ```
   pip install -r requirements.txt
   ```
**nota**  
Você deve configurar suas AWS credenciais para usar o AWS Command Line Interface (AWS CLI). Para obter mais informações, consulte [AWS SDK para Python (Boto3)](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/credentials.html).

Para obter mais informações, consulte o arquivo[README.md](https://github.com/aws-samples/bulk-policy-migrator-scripts-for-account-cost-billing-consoles#readme).

## Etapa 2: criar o CloudFormation StackSet
<a name="create-the-cloudformation-stack"></a>

Siga este procedimento para criar um *conjunto de CloudFormation pilhas*. Este conjunto de pilhas cria o perfil do IAM `BillingConsolePolicyMigratorRole` para todas as contas-membro de sua organização.

**nota**  
Você só precisa concluir esta etapa uma vez na conta de gerenciamento (conta de pagador).

**Para criar o CloudFormation StackSet**

1. Em um editor de texto, abra o `billing_console_policy_migrator_role.json` arquivo e substitua cada instância pelo ID da conta pagante (por exemplo,*123456789012*). *`<management_account>`*

1. Salve o arquivo.

1. Faça login na conta Console de gerenciamento da AWS como pagador.

1. No CloudFormation console, crie um conjunto de pilhas com o `billing_console_policy_migrator_role.json` arquivo que você atualizou. 

   Para obter mais informações, consulte [Criação de um conjunto de pilhas no AWS CloudFormation console](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-getting-started-create.html) no *Guia do AWS CloudFormation usuário*.

Depois de CloudFormation criar o conjunto de pilhas, cada conta membro em sua organização tem uma função `BillingConsolePolicyMigratorRole` do IAM. 

O perfil do IAM deve incluir as seguintes permissões:

```
"iam:GetAccountAuthorizationDetails",
"iam:GetPolicy",
"iam:GetPolicyVersion",
"iam:GetUserPolicy",
"iam:GetGroupPolicy",
"iam:GetRolePolicy",
"iam:CreatePolicyVersion",
"iam:DeletePolicyVersion",
"iam:ListPolicyVersions",
"iam:PutUserPolicy",
"iam:PutGroupPolicy",
"iam:PutRolePolicy",
"iam:SetDefaultPolicyVersion"
```

**Observações**  
Para cada conta membro, os scripts chamam a operação da [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html)API para obter credenciais temporárias para assumir a função do `BillingConsolePolicyMigratorRole` IAM. 
Os scripts chamam a operação da [ListAccounts](https://docs.aws.amazon.com/organizations/latest/APIReference/API_ListAccounts.html)API para obter todas as contas dos membros. 
Os scripts também chamam as operações da API do IAM para executar as permissões de leitura e gravação nas políticas.

## Etapa 3: identificar as políticas afetadas
<a name="identify-the-affected-policies"></a>

Depois de criar o conjunto de pilhas e baixar os arquivos, execute o script `identify_affected_policies.py`. Esse script assume o perfil `BillingConsolePolicyMigratorRole` do IAM para cada conta de membro e, em seguida, identifica as políticas afetadas.

**Para identificar as políticas afetadas**

1. Navegue até o diretório em que você fez o download dos scripts.

   ```
   cd policy_migration_scripts/scripts
   ```

1. Execute o script `identify_affected_policies.py`. 

Você também pode usar os seguintes parâmetros de entrada: 
+ Contas da AWS que você deseja que o script escaneie. Para especificar contas, use os seguintes parâmetros de entrada:
  +  `--all`: verifica todas as contas-membro de sua organização. 

    ```
    python3 identify_affected_policies.py --all
    ```
  +  `--accounts`: verifica um subconjunto das contas-membro de sua organização. 

    ```
    python3 identify_affected_policies.py --accounts 111122223333, 444455556666, 777788889999
    ```
  + `--exclude-accounts`: exclui todas as contas-membro de sua organização. 

    ```
    python3 identify_affected_policies.py --all --exclude-accounts 111111111111, 222222222222, 333333333333
    ```
+ ` –-action-mapping-config-file`: (opcional) especifique o caminho para o arquivo `action_mapping_config.json`. O script usa esse arquivo para gerar sugestões de atualizações para as políticas afetadas. Se você não especificar o caminho, o script usará o arquivo `action_mapping_config.json` na pasta. 

  ```
  python3 identify_affected_policies.py –-action-mapping-config-file c:\Users\username\Desktop\Scripts\action_mapping_config.json –-all
  ```

**nota**  
Você não pode especificar unidades organizacionais (OUs) com esse script.

Depois que você executar o script, ele criará dois arquivos JSON em uma pasta `Affected_Policies_<Timestamp>`:
+ `affected_policies_and_suggestions.json`
+ `detailed_affected_policies.json`

**`affected_policies_and_suggestions.json`**  
 Lista as políticas afetadas com as novas ações sugeridas. As políticas afetadas que usam o mesmo conjunto de ações antigas são agrupadas no arquivo.  
Esse arquivo contém as seguintes seções:  
+ Metadados que fornecem uma visão geral das contas que você especificou no script, incluindo:
  + Contas verificadas e o parâmetro de entrada usado para o script `identify_affected_policies.py`
  + Número de contas afetadas
  + Número de políticas afetadas
  + Número de grupos de políticas semelhantes
+ Grupos de políticas semelhantes: inclui a lista de contas e detalhes da política, incluindo as seguintes seções:
  + `ImpactedPolicies`: especifica quais políticas são afetadas e incluídas no grupo

     
  + `ImpactedPolicyStatements`: fornece informações sobre os blocos `Sid` que atualmente usam as ações antigas na política afetada. Essa seção inclui as ações antigas e os elementos do IAM, como `Effect`, `Principal`, `NotPrincipal`, `NotAction` e `Condition`.
+ `SuggestedPolicyStatementsToAppend`: fornece as novas ações sugeridas que são adicionadas como novo bloco `SID`. 

  Quando você atualiza as políticas, esse bloco é anexado ao final das políticas.

**Example Exemplo de arquivo `affected_policies_and_suggestions.json`**  
Esse arquivo agrupa políticas semelhantes com base nos seguintes critérios:  
+ Mesmas ações antigas usadas: políticas que têm as mesmas ações antigas em todos os blocos `SID`.
+ Detalhes correspondentes: além das ações afetadas, as políticas têm elementos do IAM idênticos, como:
  + `Effect` (`Allow`/`Deny`)
  + `Principal` (a quem é permitido ou negado o acesso);
  + `NotAction` (quais ações não são permitidas)
  + `NotPrincipal` (a quem é explicitamente negado o acesso);
  + `Resource`(a quais AWS recursos a política se aplica)
  + `Condition` (quaisquer condições específicas sob as quais a política se aplica). 
Para obter mais informações, consulte [Exemplos de política do IAM](#examples-of-similar-policies).

**Example Exemplo `affected_policies_and_suggestions.json`**  

```
[{
        "AccountsScanned": [
            "111111111111",
            "222222222222"
        ],
        "TotalAffectedAccounts": 2,
        "TotalAffectedPolicies": 2,
        "TotalSimilarPolicyGroups": 2
    },
    {
        "GroupName": "Group1",
        "ImpactedPolicies": [{
                "Account": "111111111111",
                "PolicyType": "UserInlinePolicy",
                "PolicyName": "Inline-Test-Policy-Allow",
                "PolicyIdentifier": "1111111_1-user:Inline-Test-Policy-Allow"
            },
            {
                "Account": "222222222222",
                "PolicyType": "UserInlinePolicy",
                "PolicyName": "Inline-Test-Policy-Allow",
                "PolicyIdentifier": "222222_1-group:Inline-Test-Policy-Allow"
            }
        ],
        "ImpactedPolicyStatements": [
            [{
                "Sid": "VisualEditor0",
                "Effect": "Allow",
                "Action": [
                    "aws-portal:ViewAccounts"
                ],
                "Resource": "*"
            }]
        ],
        "SuggestedPolicyStatementsToAppend": [{
            "Sid": "BillingConsolePolicyMigrator0",
            "Effect": "Allow",
            "Action": [
                "account:GetAccountInformation",
                "account:GetAlternateContact",
                "account:GetChallengeQuestions",
                "account:GetContactInformation",
                "billing:GetContractInformation",
                "billing:GetIAMAccessPreference",
                "billing:GetSellerOfRecord",
                "payments:ListPaymentPreferences"
            ],
            "Resource": "*"
        }]
    },
    {
        "GroupName": "Group2",
        "ImpactedPolicies": [{
                "Account": "111111111111",
                "PolicyType": "UserInlinePolicy",
                "PolicyName": "Inline-Test-Policy-deny",
                "PolicyIdentifier": "1111111_2-user:Inline-Test-Policy-deny"
            },
            {
                "Account": "222222222222",
                "PolicyType": "UserInlinePolicy",
                "PolicyName": "Inline-Test-Policy-deny",
                "PolicyIdentifier": "222222_2-group:Inline-Test-Policy-deny"
            }
        ],
        "ImpactedPolicyStatements": [
            [{
                "Sid": "VisualEditor0",
                "Effect": "deny",
                "Action": [
                    "aws-portal:ModifyAccount"
                ],
                "Resource": "*"
            }]
        ],
        "SuggestedPolicyStatementsToAppend": [{
            "Sid": "BillingConsolePolicyMigrator1",
            "Effect": "Deny",
            "Action": [
                "account:CloseAccount",
                "account:DeleteAlternateContact",
                "account:PutAlternateContact",
                "account:PutChallengeQuestions",
                "account:PutContactInformation",
                "billing:PutContractInformation",
                "billing:UpdateIAMAccessPreference",
                "payments:UpdatePaymentPreferences"
            ],
            "Resource": "*"
        }]
    }
]
```

**`detailed_affected_policies.json`**  
Contém a definição de todas as políticas afetadas que o script `identify_affected_policies.py` identificou para as contas dos membros.  
O arquivo agrupa políticas semelhantes. Você pode usar esse arquivo como referência para que possa revisar e gerenciar as alterações da política sem precisar fazer login na conta de cada membro, a fim de revisar as atualizações de cada política e conta individualmente.  
Você pode pesquisar no arquivo o nome da política (por exemplo, `YourCustomerManagedReadOnlyAccessBillingUser`) e, em seguida, revisar as definições da política afetada.   

**Example Exemplo: `detailed_affected_policies.json`**  

## Etapa 4: revisar as alterações sugeridas
<a name="review-the-affected-policies"></a>

Depois que o script criar o arquivo `affected_policies_and_suggestions.json`, revise-o e faça as alterações.

**Para revisar as políticas afetadas**

1. Em um editor de texto, abra o arquivo `affected_policies_and_suggestions.json`.

1. Na seção `AccountsScanned`, verifique se o número de grupos semelhantes identificados nas contas verificadas é esperado.

1. Analise as ações refinadas sugeridas que serão adicionadas às políticas afetadas.

1. Atualize seu arquivo conforme necessário e salve-o.

### Exemplo 1: atualizar o arquivo `action_mapping_config.json`
<a name="example-1-update-action-mapping-config-file"></a>

Você pode atualizar os mapeamentos sugeridos no `action_mapping_config.json`. Depois de atualizar o arquivo, você pode executar novamente o script `identify_affected_policies.py`. Esse script gera sugestões de atualização para as políticas afetadas.

Você pode criar várias versões do arquivo `action_mapping_config.json` para alterar as políticas de contas diferentes com permissões diferentes. Por exemplo, você pode criar um arquivo chamado `action_mapping_config_testing.json` para migrar permissões para suas contas de teste e `action_mapping_config_production.json` para suas contas de produção.

### Exemplo 2: atualizar o arquivo `affected_policies_and_suggestions.json`
<a name="example-2-make-changes-to-affected-policy-groups"></a>

Para fazer alterações nas substituições sugeridas para um grupo de políticas afetado específico, você pode editar diretamente a seção de substituições sugeridas no arquivo `affected_policies_and_suggestions.json`. 

Todas as alterações feitas nesta seção serão aplicadas a todas as políticas desse grupo específico de políticas afetadas.

### Exemplo 3: personalizar uma política específica
<a name="example-3-customize-a-specific-policy"></a>

Se você achar que uma política dentro de um grupo de políticas afetadas precisa de alterações diferentes das atualizações sugeridas, você pode fazer o seguinte:
+ Exclua contas específicas do script `identify_affected_policies.py`. Em seguida, você pode revisar essas contas excluídas separadamente.
+ Atualize os blocos `Sid` afetados removendo as políticas e contas afetadas que precisam de permissões diferentes. Crie um bloco JSON que inclua somente as contas específicas ou as exclua da execução atual da política afetada pela atualização. 

  Quando você executa novamente o script `identify_affected_policies.py`, somente as contas relevantes aparecem no bloco atualizado. Em seguida, você pode refinar as substituições sugeridas para esse bloco `Sid` específico.

## Etapa 5: atualizar as políticas afetadas
<a name="update-the-affected-policies"></a>

Depois de revisar e refinar as substituições sugeridas, execute o  script `update_affected_policies.py`. O script usa o arquivo `affected_policies_and_suggestions.json` como entrada. Esse script assume o perfil `BillingConsolePolicyMigratorRole` do IAM para atualizar as políticas afetadas listadas no arquivo `affected_policies_and_suggestions.json`. 

**Para atualizar as políticas afetadas**

1. Caso ainda não tenha feito isso, abra uma janela de linha de comando para a  AWS CLI.

1. Insira o comando a seguir para executar o script `update_affected_policies.py`. Você pode usar o seguinte parâmetro de entrada:
+ O caminho do diretório do arquivo `affected_policies_and_suggestions.json` que contém uma lista das políticas afetadas a serem atualizadas. Esse arquivo é um resultado da etapa anterior.

```
python3 update_affected_policies.py --affected-policies-directory Affected_Policies_<Timestamp>
```

O script `update_affected_policies.py` atualiza as políticas afetadas no arquivo `affected_policies_and_suggestions.json` com as novas ações sugeridas. O script adiciona um `Sid` bloco às políticas, identificado como`BillingConsolePolicyMigrator#`, onde *\$1* corresponde a um contador incremental (por exemplo, 1, 2, 3). 

Por exemplo, se houver vários blocos `Sid` na política afetada que usam ações antigas, o script adicionará vários blocos `Sid` que aparecerão como `BillingConsolePolicyMigrator#` para corresponder a cada bloco `Sid`.

**Importante**  
O script não remove ações antigas do IAM das políticas nem altera os blocos `Sid` existentes nas políticas. Em vez disso, ele cria blocos `Sid` e os anexa ao final da política. Esses novos blocos `Sid` têm as novas ações sugeridas do arquivo JSON. Isso garante que as permissões das políticas originais não sejam alteradas.
Recomendamos que você não altere o nome dos blocos `BillingConsolePolicyMigrator#` `Sid` caso precise reverter suas alterações.

**Example Exemplo: política com blocos `Sid` anexados**  
Veja os blocos `Sid` anexados aos blocos `BillingConsolePolicyMigrator1` e `BillingConsolePolicyMigrator2`.

O script gera um relatório de status que contém operações malsucedidas e gera o arquivo JSON localmente.

**Example Exemplo: relatório de status**  

```
[{
    "Account": "111111111111",
    "PolicyType": "Customer Managed Policy"
    "PolicyName": "AwsPortalViewPaymentMethods",
    "PolicyIdentifier": "identifier",
    "Status": "FAILURE", // FAILURE or SKIPPED	
    "ErrorMessage": "Error message details"
}]
```

**Importante**  
Se você executar novamente os scripts `identify_affected_policies.py` e `update_affected_policies.py`, eles ignorarão todas as políticas que contêm o bloco `BillingConsolePolicyMigratorRole#` `Sid`. Os scripts presumem que essas políticas foram verificadas e atualizadas anteriormente e que não exigem atualizações adicionais. Isso evita que o script duplique as mesmas ações na política.
Depois de atualizar as políticas afetadas, você poderá usar o novo IAM usando a ferramenta de políticas afetadas. Se você identificar algum problema, poderá usar a ferramenta para voltar às ações anteriores. Você também pode usar um script para reverter suas atualizações de política.  
Para obter mais informações, consulte [Como usar a ferramenta Políticas afetadas](migrate-security-iam-tool.md) a postagem do blog [Alterações no AWS faturamento, no gerenciamento de custos e nas permissões dos consoles de contas](https://aws.amazon.com/blogs/aws-cloud-financial-management/changes-to-aws-billing-cost-management-and-account-consoles-permissions/).
Para gerenciar suas atualizações, você pode:  
Execute os scripts para cada conta individualmente.
Execute o script em lotes para contas semelhantes, como contas de teste, de controle de qualidade e de produção.
Execute o script para todas as contas.
Escolha uma combinação entre atualizar algumas contas em lotes e depois atualizar outras individualmente.

## Etapa 6: reverter suas alterações (opcional)
<a name="revert-changes"></a>

O script `rollback_affected_policies.py` reverte as alterações aplicadas a cada política afetada para as contas especificadas. O script remove todos os blocos `Sid` que o script `update_affected_policies.py` anexou. Esses blocos `Sid` têm o formato `BillingConsolePolicyMigratorRole#`.

**Para reverter suas alterações**

1. Caso ainda não tenha feito isso, abra uma janela de linha de comando para a  AWS CLI.

1. Insira o comando a seguir para executar o script `rollback_affected_policies.py`. Você pode usar os seguintes parâmetros de entrada:
+ `--accounts` 
  + Especifica uma lista separada por vírgulas dos Conta da AWS IDs que você deseja incluir na reversão. 
  + O exemplo a seguir verifica as políticas especificadas Contas da AWS e remove todas as instruções com o `BillingConsolePolicyMigrator#` `Sid` bloco. 

    ```
    python3 rollback_affected_policies.py –-accounts 111122223333, 555555555555, 666666666666
    ```
+ `--all`
  + Inclui tudo Conta da AWS IDs em sua organização. 
  + O exemplo a seguir verifica as políticas em sua organização e remove todas as instruções com o bloco `BillingConsolePolicyMigratorRole#` `Sid`.

  ```
  python3 rollback_affected_policies.py –-all
  ```
+ `--exclude-accounts`
  + Especifica uma lista separada por vírgulas dos Conta da AWS IDs que você deseja excluir da reversão. 

    Você só pode especificar esse parâmetro quando também especificar o parâmetro `--all`. 
  + O exemplo a seguir verifica as políticas de todos Contas da AWS em sua organização, exceto das contas especificadas.

    ```
    python3 rollback_affected_policies.py --all --exclude-accounts 777777777777, 888888888888, 999999999999
    ```

## Exemplos de política do IAM
<a name="examples-of-similar-policies"></a>

As políticas são consideradas semelhantes se tiverem os(as) mesmos(as): 
+  Ações afetadas em todos os blocos de `Sid`. 
+  Detalhes nos seguintes elementos do IAM:
  + `Effect` (`Allow`/`Deny`)
  + `Principal` (a quem é permitido ou negado o acesso);
  + `NotAction` (quais ações não são permitidas)
  + `NotPrincipal` (a quem é explicitamente negado o acesso);
  + `Resource`(a quais AWS recursos a política se aplica)
  + `Condition` (quaisquer condições específicas sob as quais a política se aplica).

Os exemplos a seguir mostram políticas que o IAM pode considerar semelhantes, ou não, com base nas diferenças entre elas. 

**Example Exemplo 1: as políticas são consideradas semelhantes**  
Cada tipo de política é diferente, mas ambas as políticas contêm um bloco `Sid` com a mesma `Action` afetada.     
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
        "Sid": "VisualEditor0",
        "Effect": "Allow",
        "Action": [
            "aws-portal:ViewAccount",
            "aws-portal:*Billing"
        ],
        "Resource": "*"
    }]
}
```  
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
        "Sid": "VisualEditor0",
        "Effect": "Allow",
        "Action": [
            "aws-portal:ViewAccount",
            "aws-portal:*Billing"
        ],
        "Resource": "*"
    }]
}
```

**Example Exemplo 2: as políticas são consideradas semelhantes**  
Ambas as políticas contêm um bloco `Sid` com a mesma `Action` afetada. A política 2 contém ações adicionais, mas essas ações não são afetadas.    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
        "Sid": "VisualEditor0",
        "Effect": "Allow",
        "Action": [
            "aws-portal:ViewAccount",
            "aws-portal:*Billing"
        ],
        "Resource": "*"
    }]
}
```  
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
        "Sid": "VisualEditor0",
        "Effect": "Allow",
        "Action": [
            "aws-portal:ViewAccount",
            "aws-portal:*Billing",
            "athena:*"
        ],
        "Resource": "*"
    }]
}
```

**Example Exemplo 3: as políticas não são consideradas semelhantes**  
Ambas as políticas contêm um bloco `Sid` com a mesma `Action` afetada. No entanto, a política 2 contém um elemento `Condition` que não está presente na política 1.    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
        "Sid": "VisualEditor0",
        "Effect": "Allow",
        "Action": [
            "aws-portal:ViewAccount",
            "aws-portal:*Billing"
        ],
        "Resource": "*"
    }]
}
```  
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
        "Sid": "VisualEditor0",
        "Effect": "Allow",
        "Action": [
            "aws-portal:ViewAccount",
            "aws-portal:*Billing",
            "athena:*"
        ],
        "Resource": "*",
        "Condition": {
            "BoolIfExists": {
                "aws:MultiFactorAuthPresent": "true"
            }
        }
    }]
}
```

**Example Exemplo 4: as políticas são consideradas semelhantes**  
A política 1 tem um único bloco `Sid` com uma `Action` afetada. A política 2 tem vários blocos `Sid`, mas a `Action` afetada aparece em apenas um bloco.    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
        "Sid": "VisualEditor0",
        "Effect": "Allow",
        "Action": [
            "aws-portal:View*"
        ],
        "Resource": "*"
    }]
}
```  
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "aws-portal:View*"
            ],
            "Resource": "*"
        },
        {
            "Sid": "VisualEditor1",
            "Effect": "Allow",
            "Action": [
                "cloudtrail:Get*"
            ],
            "Resource": "*"
        }
    ]
}
```

**Example Exemplo 5: as políticas não são consideradas semelhantes**  
A política 1 tem um único bloco `Sid` com uma `Action` afetada. A política 2 tem vários blocos `Sid`, mas a `Action` afetada aparece em vários blocos.    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
        "Sid": "VisualEditor0",
        "Effect": "Allow",
        "Action": [
            "aws-portal:View*"
        ],
        "Resource": "*"
    }]
}
```  
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "aws-portal:View*"
            ],
            "Resource": "*"
        },
        {
            "Sid": "VisualEditor1",
            "Effect": "Deny",
            "Action": [
                "aws-portal:Modify*"
            ],
            "Resource": "*"
        }
    ]
}
```

**Example Exemplo 6: as políticas são consideradas semelhantes**  
Ambas as políticas têm vários blocos `Sid`, com a mesma `Action` afetada em cada bloco `Sid`.    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "aws-portal:*Account",
                "iam:Get*"
            ],
            "Resource": "*"
        },
        {
            "Sid": "VisualEditor1",
            "Effect": "Deny",
            "Action": [
                "aws-portal:Modify*",
                "iam:Update*"
            ],
            "Resource": "*"
        }
    ]
}
```  
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "aws-portal:*Account",
                "athena:Get*"
            ],
            "Resource": "*"
        },
        {
            "Sid": "VisualEditor1",
            "Effect": "Deny",
            "Action": [
                "aws-portal:Modify*",
                "athena:Update*"
            ],
            "Resource": "*"
        }
    ]
}
```

**Example Exemplo 7**  
As duas políticas a seguir não são consideradas semelhantes.  
A política 1 tem um único bloco `Sid` com uma `Action` afetada. A política 2 tem um único bloco `Sid` com a mesma `Action` afetada. No entanto, a política 2 também contém outro bloco `Sid` com ações diferentes.     
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "aws-portal:*Account",
                "iam:Get*"
            ],
            "Resource": "*"
        },
        {
            "Sid": "VisualEditor1",
            "Effect": "Deny",
            "Action": [
                "aws-portal:Modify*",
                "iam:Update*"
            ],
            "Resource": "*"
        }
    ]
}
```  
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "aws-portal:*Account",
                "athena:Get*"
            ],
            "Resource": "*"
        },
        {
            "Sid": "VisualEditor1",
            "Effect": "Deny",
            "Action": [
                "aws-portal:*Billing",
                "athena:Update*"
            ],
            "Resource": "*"
        }
    ]
}
```