Com scripts, migre suas políticas em massa para usar ações do IAM refinadas - AWS Faturamento

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

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

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ços (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 SCPs AWS gerenciados (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 AWS a retirada das ações antigas do IAM em 6 de julho de 2023.

Para obter mais informações sobre políticas de controle de serviços (SCPs), consulte os seguintes tópicos:

Visão geral

Siga este tópico para concluir as seguintes etapas:

Pré-requisitos

Para começar, faça o seguinte:

  • Baixe e instale o Python 3

  • 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

Para começar, faça download dos arquivos necessários no website de Exemplos da AWS. Em seguida, você executa comandos para configurar seu ambiente.

Para configurar seu ambiente
  1. Clone o repositório do website Exemplos da AWS. 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
  2. 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.

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

    python3 -m venv venv
    source venv/bin/activate
  4. Execute o comando a seguir para instalar a AWS SDK for 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 ter mais informações, consulte AWS SDK for Python (Boto3).

Para obter mais informações, consulte o arquivoREADME.md.

Etapa 2: criar o CloudFormation StackSet

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 arquivo billing_console_policy_migrator_role.json e substitua cada instância de <management_account> pelo ID da conta do pagador (por exemplo, 123456789012).

  2. Salve o arquivo.

  3. Faça login na conta AWS Management Console como pagador.

  4. 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 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 AssumeRoleAPI para obter credenciais temporárias para assumir a função do BillingConsolePolicyMigratorRole IAM.

  • Os scripts chamam a operação da ListAccountsAPI 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

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

Não é possível especificar unidades organizacionais (UOs) 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 EffectPrincipalNotPrincipalNotAction 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.

exemplo 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).

nota

Para ter mais informações, consulte Exemplos de política do IAM.

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

exemplo Exemplo: detailed_affected_policies.json
[{ "Account": "111111111111", "PolicyType": "CustomerManagedPolicy", "PolicyName": "AwsPortalviewAccount", "PolicyIdentifier": "arn:aws:iam::111111111111:policy/AwsPortalviewAccount", "PolicyDocument": { "Version": "2012-10-17", "Statement": [{ "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "aws-portal:ViewAccount" ], "Resource": "*" }] } }, { "Account": "222222222222", "PolicyType": "CustomerManagedPolicy", "PolicyName": "AwsPortalviewAccount", "PolicyIdentifier": "arn:aws:iam::222222222222:policy/AwsPortalviewAccount", "PolicyDocument": { "Version": "2012-10-17", "Statement": [{ "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "aws-portal:ViewAccount" ], "Resource": "*" }] } }, { "Account": "111111111111", "PolicyType": "CustomerManagedPolicy", "PolicyName": "AwsPortalModifyAccount", "PolicyIdentifier": "arn:aws:iam::111111111111:policy/AwsPortalModifyAccount", "PolicyDocument": { "Version": "2012-10-17", "Statement": [{ "Sid": "VisualEditor0", "Effect": "Deny", "Action": [ "aws-portal:ModifyAccount" ], "Resource": "*" }] } }, { "Account": "222222222222", "PolicyType": "CustomerManagedPolicy", "PolicyName": "AwsPortalModifyAccount", "PolicyIdentifier": "arn:aws:iam::222222222222:policy/AwsPortalModifyAccount", "PolicyDocument": { "Version": "2012-10-17", "Statement": [{ "Sid": "VisualEditor0", "Effect": "Deny", "Action": [ "aws-portal:ModifyAccount" ], "Resource": "*" }] } } ]

Etapa 4: revisar as alterações sugeridas

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.

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

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

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

Exemplo 1: atualizar o arquivo action_mapping_config.json

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

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

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

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.

  2. 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 bloco Sid às políticas, identificado como BillingConsolePolicyMigrator#, em que # 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.

exemplo Exemplo: política com blocos Sid anexados

Veja os blocos Sid anexados aos blocos BillingConsolePolicyMigrator1 e BillingConsolePolicyMigrator2.

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "ce:*", "aws-portal:ViewAccount" ], "Resource": "*", "Principal": { "AWS": "arn:aws:iam::111111111111:BillingRole" }, "Condition": { "BoolIfExists": { "aws:MultiFactorAuthPresent": "true" } } }, { "Sid": "BillingConsolePolicyMigrator1", "Effect": "Allow", "Action": [ "account:GetAccountInformation", "account:GetAlternateContact", "account:GetChallengeQuestions", "account:GetContactInformation", "billing:GetContractInformation", "billing:GetIAMAccessPreference", "billing:GetSellerOfRecord", "payments:ListPaymentPreferences" ], "Resource": "*", "Principal": { "AWS": "arn:aws:iam::111111111111:BillingRole" }, "Condition": { "BoolIfExists": { "aws:MultiFactorAuthPresent": "true" } } }, { "Sid": "BillingConsolePolicyMigrator2", "Effect": "Deny", "Action": [ "account:CloseAccount", "account:DeleteAlternateContact", "account:PutAlternateContact", "account:PutChallengeQuestions", "account:PutContactInformation", "billing:PutContractInformation", "billing:UpdateIAMAccessPreference", "payments:UpdatePaymentPreferences" ], "Resource": "*" } ] }

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

exemplo 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 a postagem do blog Alterações no AWS faturamento, no gerenciamento de custos e nas permissões dos consoles de contas.

  • 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)

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.

  2. 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írgula das 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 todas as Conta da AWS IDs da 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 das 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

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.

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

Policy 1: Group inline IAM policy
{ "Version": "2012-10-17", "Statement": [{ "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "aws-portal:ViewAccount", "aws-portal:*Billing" ], "Resource": "*" }] }
Policy 2: Customer managed IAM policy
{ "Version": "2012-10-17", "Statement": [{ "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "aws-portal:ViewAccount", "aws-portal:*Billing" ], "Resource": "*" }] }
exemplo 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.

Policy 1
{ "Version": "2012-10-17", "Statement": [{ "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "aws-portal:ViewAccount", "aws-portal:*Billing" ], "Resource": "*" }] }
Policy 2
{ "Version": "2012-10-17", "Statement": [{ "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "aws-portal:ViewAccount", "aws-portal:*Billing", "athena:*" ], "Resource": "*" }] }
exemplo 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.

Policy 1
{ "Version": "2012-10-17", "Statement": [{ "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "aws-portal:ViewAccount", "aws-portal:*Billing" ], "Resource": "*" }] }
Policy 2
{ "Version": "2012-10-17", "Statement": [{ "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "aws-portal:ViewAccount", "aws-portal:*Billing", "athena:*" ], "Resource": "*", "Condition": { "BoolIfExists": { "aws:MultiFactorAuthPresent": "true" } } }] }
exemplo 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.

Policy 1
{ "Version": "2012-10-17", "Statement": [{ "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "aws-portal:View*" ], "Resource": "*" }] }}
Policy 2
{ "Version": "2012-10-17", "Statement": [{ "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "aws-portal:View*" ], "Resource": "*" }, { "Sid": "VisualEditor1", "Effect": "Allow", "Action": [ "cloudtrail:Get*" ], "Resource": "*" } ] }
exemplo 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.

Policy 1
{ "Version": "2012-10-17", "Statement": [{ "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "aws-portal:View*" ], "Resource": "*" }] }
Policy 2
{ "Version": "2012-10-17", "Statement": [{ "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "aws-portal:View*" ], "Resource": "*" }, { "Sid": "VisualEditor1", "Effect": "Deny", "Action": [ "aws-portal:Modify*" ], "Resource": "*" } ] }
exemplo 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.

Policy 1
{ "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": "*" } ] }
Policy 2
{ "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": "*" } ] }
exemplo 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.

Policy 1
{ "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": "*" } ] }
Policy 2
{ "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": "*" } ] }