Usa gli script per migrare in blocco le tue policy per utilizzare azioni IAM granulari - AWS Fatturazione

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Usa gli script per migrare in blocco le tue policy per utilizzare azioni IAM granulari

Nota

Le seguenti azioni AWS Identity and Access Management (IAM) hanno raggiunto la fine del supporto standard a luglio 2023:

  • Spazio dei nomi aws-portal

  • purchase-orders:ViewPurchaseOrders

  • purchase-orders:ModifyPurchaseOrders

Se utilizzi AWS Organizations, puoi utilizzare gli script Bulk Policy Migrator o Bulk Policy Migrator per aggiornare le politiche dal tuo account di pagamento. Puoi anche utilizzare il riferimento alla mappatura dalle vecchie operazioni alle operazioni granulari per verificare le operazioni IAM da aggiungere.

Se ne hai AWS Organizations creato uno Account AWS o ne fai parte a partire dal 6 marzo 2023 alle 11:00 (PDT), le azioni dettagliate sono già in vigore nella tua organizzazione.

Per facilitare la migrazione delle policy IAM in modo da utilizzare nuove azioni, note come azioni granulari, puoi utilizzare gli script del sito Web  AWS  Samples.

Esegui questi script dal conto pagatore della tua organizzazione per identificare le seguenti policy interessate nella tua organizzazione che utilizzano le vecchie azioni IAM:

  • Policy IAM gestite dal cliente

  • Policy IAM in linea per ruoli, gruppi e utenti

  • Politiche di controllo del servizio (SCPs) (si applicano solo all'account del pagatore)

  • Set di autorizzazioni

Gli script generano suggerimenti per nuove azioni che corrispondono alle azioni esistenti utilizzate nella policy. Quindi esamini i suggerimenti e usi gli script per aggiungere le nuove azioni a tutte le policy interessate della tua organizzazione. Non è necessario aggiornare le politiche AWS gestite o AWS gestite SCPs (ad esempio, AWS Control Tower e AWS Organizations SCPs).

Utilizzare questi script per:

  • Semplificano gli aggiornamenti delle policy per aiutarti a gestire quelle interessate dall'account del pagatore.

  • Riducono il tempo necessario per aggiornare le policy. Non è necessario accedere a ciascun account membro e aggiornare manualmente le policy.

  • Raggruppano policy identiche di account membri diversi. Puoi quindi esaminare e applicare gli stessi aggiornamenti a tutte le policy identiche, anziché esaminarli singolarmente.

  • Assicurati che l'accesso degli utenti rimanga inalterato dopo il AWS ritiro delle vecchie azioni IAM il 6 luglio 2023.

Per ulteriori informazioni sulle politiche e sulle politiche di controllo dei servizi (SCPs), consulta i seguenti argomenti:

Panoramica

Segui questo argomento per completare i passaggi seguenti:

Prerequisiti

Per iniziare, devi effettuare quanto segue:

  • Scarica e installa Python 3

  • Accedi al tuo account pagatore e verifica di disporre di un principale IAM con le seguenti autorizzazioni 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"
Suggerimento

Per iniziare, ti consigliamo di usare un sottoinsieme di account, come gli account di prova, per verificare che le modifiche suggerite siano previste.

Puoi quindi eseguire ancora gli script per gli account rimanenti della tua organizzazione.

Fase 1: configurazione dell'ambiente

Per iniziare, scarica i file richiesti dal sito Web  AWS  Samples. Quindi esegui i comandi per configurare il tuo ambiente.

Come configurare l'ambiente
  1. Clona il repository dal sito Web  AWS  Samples In una finestra a riga di comando, puoi usare il seguente comando:

    git clone https://github.com/aws-samples/bulk-policy-migrator-scripts-for-account-cost-billing-consoles.git
  2. Passare alla directory in cui hai scaricato i file. Utilizzare il seguente comando:

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

    Nel repository, puoi trovare i seguenti script e risorse:

    • billing_console_policy_migrator_role.json— Il CloudFormation modello che crea il ruolo BillingConsolePolicyMigratorRole IAM negli account dei membri dell'organizzazione. Questo ruolo consente agli script di assumere il ruolo e quindi di leggere e aggiornare le policy interessate.

    • action_mapping_config.json— Contiene la one-to-many mappatura delle vecchie azioni con le nuove azioni. Gli script utilizzano questo file per suggerire le nuove azioni per ogni policy interessata che contiene le vecchie azioni.

      Ogni vecchia azione corrisponde a più azioni granulari. Le nuove azioni suggerite nel file consentono agli utenti di accedervi Servizi AWS prima della migrazione.

    • identify_affected_policies.py — Scansiona e identifica le policy interessate nella tua organizzazione. Questo script genera un file affected_policies_and_suggestions.json che elenca le policy interessate insieme alle nuove azioni suggerite.

      Le policy interessate che utilizzano lo stesso set di vecchie azioni sono raggruppate nel file JSON, in modo da poter rivedere o aggiornare le nuove azioni suggerite.

    • update_affected_policies.py — Aggiorna le policy interessate nella tua organizzazione. Lo script immette il file affected_policies_and_suggestions.json e quindi aggiunge le nuove azioni suggerite alle policy.

    • rollback_affected_policies.py — (Facoltativo) Annulla le modifiche apportate alle policy interessate. Questo script rimuove le nuove azioni granulari dalle policy interessate.

  3. Per configurare e attivare l'ambiente virtuale, esegui i comandi seguenti.

    python3 -m venv venv
    source venv/bin/activate
  4. Esegui il comando seguente per installare la AWS SDK for Python (Boto3) dipendenza.

    pip install -r requirements.txt
    Nota

    È necessario configurare AWS le credenziali per utilizzare AWS Command Line Interface ()AWS CLI. Per ulteriori informazioni, consulta AWS SDK for Python (Boto3).

Per ulteriori informazioni, consulta il file README.md.

Fase 2: Creare il CloudFormation StackSet

Segui questa procedura per creare un set di CloudFormation stack. Questo set di stack crea quindi il ruolo IAM BillingConsolePolicyMigratorRole per tutti gli account membri nell'organizzazione.

Nota

È necessario completare questo passaggio solo una volta dall'account di gestione (account pagatore).

Per creare il CloudFormation StackSet
  1. In un editor di testo, apri il billing_console_policy_migrator_role.json file e sostituisci ogni istanza di <management_account> con l'ID dell'account del pagatore (ad esempio,123456789012).

  2. Salvare il file.

  3. Accedi all'account AWS Management Console come pagatore.

  4. Nella CloudFormation console, crea uno stack set con il billing_console_policy_migrator_role.json file che hai aggiornato.

    Per ulteriori informazioni, consulta Creazione di un set di stack sulla AWS CloudFormation console nella Guida per l'AWS CloudFormation utente.

Dopo aver CloudFormation creato lo stack set, ogni account membro dell'organizzazione ha un ruolo BillingConsolePolicyMigratorRole IAM.

Il ruolo IAM contiene le seguenti autorizzazioni:

"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"
Note
  • Per ogni account membro, gli script richiamano l'operazione AssumeRoleAPI per ottenere credenziali temporanee per assumere il BillingConsolePolicyMigratorRole ruolo IAM.

  • Gli script richiamano l'operazione ListAccountsAPI per ottenere tutti gli account dei membri.

  • Gli script richiamano anche le operazioni dell'API IAM per eseguire le autorizzazioni di lettura e scrittura delle policy.

Fase 3: Identifica le policy interessate

Dopo aver creato il set di stack e scaricato i file, esegui lo script identify_affected_policies.py. Questo script assume il ruolo IAM BillingConsolePolicyMigratorRole per ogni account membro e quindi identifica le policy interessate.

Per identificare le policy interessate
  1. Passa alla directory in cui hai scaricato gli script.

    cd policy_migration_scripts/scripts
  2. Eseguire lo script identify_affected_policies.py.

Puoi inoltre utilizzare i seguenti parametri di input:

  • Account AWS che vuoi che lo script scansioni. Per specificare gli account, utilizza i seguenti parametri di input:

    • --all — Esamina tutti gli account membri nell'organizzazione.

      python3 identify_affected_policies.py --all
    • --accounts — Esamina un sottoinsieme di account membri nell'organizzazione.

      python3 identify_affected_policies.py --accounts 111122223333, 444455556666, 777788889999
    • --exclude-accounts — Sono esclusi gli account membri specifici nell'organizzazione.

      python3 identify_affected_policies.py --all --exclude-accounts 111111111111, 222222222222, 333333333333
  • –-action-mapping-config-file — (Facoltativo) Specificare il percorso del file action_mapping_config.json. Lo script utilizza questo file per generare aggiornamenti suggeriti per le policy interessate. Se non specifichi il percorso, lo script utilizza il file action_mapping_config.json nella cartella.

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

Non è possibile specificare unità organizzative (OUs) con questo script.

Dopo aver eseguito lo script, crea due file JSON in una Affected_Policies_<Timestamp> cartella:

  • affected_policies_and_suggestions.json

  • detailed_affected_policies.json

affected_policies_and_suggestions.json

Elenca le policy interessate con le nuove azioni suggerite. Le policy interessate che utilizzano lo stesso set di vecchie azioni vengono raggruppate nel file.

Questo file contiene le sezioni seguenti:

  • Metadati che forniscono una panoramica degli account specificati nello script, tra cui:

    • Account scansionati e parametro di input utilizzato per lo script identify_affected_policies.py

    • Numero di account interessati

    • Numero di policy interessate

    • Numero di gruppi di policy simili

  • Gruppi di policy simili: include l'elenco degli account e dei dettagli delle policy, incluse le seguenti sezioni:

    • ImpactedPolicies — Specifica quali policy sono interessate e incluse nel gruppo

    • ImpactedPolicyStatements — Fornisce informazioni sui blocchi Sid che attualmente utilizzano le vecchie azioni nella policy interessata. Questa sezione include le azioni e gli elementi IAM precedenti, come EffectPrincipalNotPrincipalNotAction e Condition.

  • SuggestedPolicyStatementsToAppend — Fornisce le nuove azioni suggerite che vengono aggiunte come nuovo blocco SID.

    Quando si aggiornano le policy, questo blocco viene aggiunto alla fine delle policy.

Esempio di file affected_policies_and_suggestions.json

Questo file raggruppa policy simili in base ai seguenti criteri:

  • Vengono utilizzate le stesse azioni precedenti: policy con le stesse vecchie azioni in tutti i blocchi SID.

  • Dettagli corrispondenti: oltre alle azioni interessate, le policy hanno elementi IAM identici, come:

    • Effect (Allow/Deny)

    • Principal (a chi è consentito o negato l'accesso)

    • NotAction (quali azioni non sono consentite)

    • NotPrincipal (a chi viene negato esplicitamente l'accesso)

    • Resource(a quali AWS risorse si applica la politica)

    • Condition (eventuali condizioni specifiche in base alle quali si applica la policy)

Nota

Per ulteriori informazioni, consulta Esempi di policy IAM.

Esempio 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

Contiene la definizione di tutte le policy interessate identificate dallo script identify_affected_policies.py per gli account membri.

Il file raggruppa policy simili. Puoi utilizzare questo file come riferimento, in modo da poter rivedere e gestire le modifiche alle policy senza dover accedere a ciascun account membro per rivedere gli aggiornamenti di ogni policy e account singolarmente.

È possibile cercare nel file il nome della policy (ad esempio, YourCustomerManagedReadOnlyAccessBillingUser) e quindi rivedere le definizioni delle policy interessate.

Esempio: 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": "*" }] } } ]

Fase 4: Esamina le modifiche suggerite

Dopo che lo script ha creato il file affected_policies_and_suggestions.json, esaminalo e apporta le modifiche.

Per esaminare le policy interessate
  1. In un editor di testo, aprire il file affected_policies_and_suggestions.json.

  2. Nella sezione AccountsScanned, verifica che sia previsto il numero di gruppi simili identificati negli account scansionati.

  3. Esamina le azioni granulari suggerite che verranno aggiunte alle policy interessate.

  4. Aggiorna il file in base alle esigenze e quindi salvalo.

Esempio 1: aggiorna il file action_mapping_config.json

È possibile aggiornare le mappature suggerite in action_mapping_config.json. Dopo aver aggiornato il file, è possibile eseguire nuovamente lo script identify_affected_policies.py. Questo script genera suggerimenti aggiornati per le policy interessate.

Puoi creare più versioni del file action_mapping_config.json per modificare le policy per diversi account con autorizzazioni diverse. Ad esempio, potresti creare un file denominato action_mapping_config_testing.json per migrare le autorizzazioni per i tuoi account di prova e action_mapping_config_production.json per i tuoi account di produzione.

Esempio 2: aggiorna il file affected_policies_and_suggestions.json

Per apportare modifiche alle sostituzioni suggerite per uno specifico gruppo di policy interessato, puoi modificare direttamente la sezione delle sostituzioni suggerite all'interno del file affected_policies_and_suggestions.json.

Tutte le modifiche apportate in questa sezione vengono applicate a tutte le policy all'interno di quello specifico gruppo di policy interessato.

Esempio 3: personalizza una policy specifica

Se trovi che una policy all'interno di un gruppo di policy interessato richiede modifiche diverse rispetto agli aggiornamenti suggeriti, puoi procedere come segue:

  • Escludi account specifici dallo script identify_affected_policies.py. Puoi quindi rivedere separatamente gli account esclusi.

  • Aggiorna i blocchi Sid interessati rimuovendo le policy e gli account interessati che richiedono autorizzazioni diverse. Crea un blocco JSON che includa solo gli account specifici o li escluda dall'esecuzione della policy interessata dall'aggiornamento corrente.

    Quando esegui nuovamente lo script identify_affected_policies.py, nel blocco aggiornato vengono visualizzati solo gli account pertinenti. Quindi puoi perfezionare le sostituzioni suggerite per quel blocco Sid specifico.

Fase 5: aggiorna le policy interessate

Dopo aver esaminato e perfezionato le sostituzioni suggerite, esegui lo script update_affected_policies.py. Lo script accetta il file affected_policies_and_suggestions.json come input. Questo script assume il ruolo IAM BillingConsolePolicyMigratorRole per aggiornare le policy interessate elencate nel file affected_policies_and_suggestions.json.

Per aggiornare le policy interessate
  1. Se non l'hai già fatto, apri una finestra della riga di comando per  AWS CLI.

  2. Inserisci il comando seguente per eseguire lo script update_affected_policies.py. Puoi inserire il seguente parametro di input:

  • Il percorso della directory del file affected_policies_and_suggestions.json che contiene un elenco delle policy interessate da aggiornare. Questo file è un output del passaggio precedente.

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

Lo script update_affected_policies.py aggiorna le policy interessate all'interno del file affected_policies_and_suggestions.json con le nuove azioni suggerite. Lo script aggiunge un Sid blocco alle politiche, identificato comeBillingConsolePolicyMigrator#, dove # corrisponde a un contatore incrementale (ad esempio, 1, 2, 3).

Ad esempio, se nella policy interessata sono presenti più blocchi Sid che utilizzano azioni obsolete, lo script aggiunge più blocchi Sid che sembrano corrispondere a BillingConsolePolicyMigrator# a ciascun blocco Sid.

Importante
  • Lo script non rimuove le vecchie azioni IAM dalle policy né modifica i blocchi Sid esistenti nelle policy. Invece, crea blocchi Sid e li aggiunge alla fine della policy. Questi nuovi blocchi Sid contengono le nuove azioni suggerite dal file JSON. Ciò garantisce che le autorizzazioni delle policy originali non vengano modificate.

  • Ti consigliamo di non modificare il nome dei blocchi BillingConsolePolicyMigrator# Sid nel caso in cui sia necessario annullare le modifiche.

Esempio: policy con blocchi Sid aggiunti

Guarda i blocchi Sid aggiunti nei blocchi BillingConsolePolicyMigrator1BillingConsolePolicyMigrator2.

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

Lo script genera un rapporto sullo stato che contiene operazioni non riuscite e restituisce il file JSON localmente.

Esempio: rapporto sullo stato
[{ "Account": "111111111111", "PolicyType": "Customer Managed Policy" "PolicyName": "AwsPortalViewPaymentMethods", "PolicyIdentifier": "identifier", "Status": "FAILURE", // FAILURE or SKIPPED "ErrorMessage": "Error message details" }]
Importante
  • Se esegui nuovamente gli script identify_affected_policies.py e update_affected_policies.py, questi ignorano tutte le policy che contengono il blocco BillingConsolePolicyMigratorRole#Sid. Gli script presuppongono che tali policy siano state precedentemente scansionate e aggiornate e che non richiedano aggiornamenti aggiuntivi. Questo impedisce allo script di duplicare le stesse azioni nella policy.

  • Dopo aver aggiornato le policy interessate, puoi utilizzare il nuovo IAM utilizzando lo strumento per le policy interessate. Se riscontri problemi, puoi utilizzare lo strumento per tornare alle azioni precedenti. Puoi anche utilizzare uno script per ripristinare gli aggiornamenti delle policy.

    Per ulteriori informazioni, consulta il Come utilizzare lo strumento policy interessate post sul blog Modifiche alle autorizzazioni di AWS fatturazione, gestione dei costi e console dell'account.

  • Per gestire gli aggiornamenti, è possibile:

    • Esegui gli script per ogni account singolarmente.

    • Esegui lo script in batch per account simili (come account di test, controllo qualità e produzione).

    • Esegui lo script per tutti gli account.

    • Scegli una combinazione tra l'aggiornamento di alcuni account in batch e l'aggiornamento di altri singolarmente.

Fase 6: annulla le modifiche (facoltativo)

Lo script rollback_affected_policies.py ripristina le modifiche applicate a ciascuna policy interessata per gli account specificati. Lo script rimuove tutti i blocchi Sid che lo script update_affected_policies.py ha aggiunto. Questi blocchi Sid hanno il formato BillingConsolePolicyMigratorRole#.

Per annullare le modifiche
  1. Se non l'hai già fatto, apri una finestra della riga di comando per  AWS CLI.

  2. Inserisci il comando seguente per eseguire lo script rollback_affected_policies.py. Puoi inserire i seguenti parametri di input:

  • --accounts

    • Specificate un elenco separato da virgole dei file Account AWS IDs che desiderate includere nel rollback.

    • L'esempio seguente analizza le politiche specificate Account AWS e rimuove tutte le istruzioni con il blocco. BillingConsolePolicyMigrator# Sid

      python3 rollback_affected_policies.py –-accounts 111122223333, 555555555555, 666666666666
  • --all

    • Include tutto ciò che Account AWS IDs fa parte dell'organizzazione.

    • L'esempio seguente analizza tutte le policy nell'organizzazione e rimuove tutte le istruzioni con il blocco BillingConsolePolicyMigratorRole# Sid.

    python3 rollback_affected_policies.py –-all
  • --exclude-accounts

    • Specificate un elenco separato da virgole degli elementi Account AWS IDs che desiderate escludere dal rollback.

      Puoi utilizzare questo parametro solo quando specifichi il parametro --all.

    • L'esempio seguente analizza le politiche per tutti gli utenti dell'organizzazione, ad Account AWS eccezione degli account specificati.

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

Esempi di policy IAM

Le policy sono considerate simili se hanno simili:

  • Azioni interessate in tutti i blocchi Sid.

  • Dettagli nei seguenti elementi IAM:

    • Effect (Allow/Deny)

    • Principal (a chi è consentito o negato l'accesso)

    • NotAction (quali azioni non sono consentite)

    • NotPrincipal (a chi viene negato esplicitamente l'accesso)

    • Resource(a quali AWS risorse si applica la politica)

    • Condition (eventuali condizioni specifiche in base alle quali si applica la policy)

Gli esempi seguenti mostrano policy che IAM potrebbe considerare simili o meno in base alle differenze.

Esempio 1: le policy sono considerate simili

Ogni tipo di policy è diverso, ma entrambe contengono un blocco Sid con la stessa Action interessata.

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": "*" }] }
Esempio 2: le policy sono considerate simili

Entrambe le policy contengono un blocco Sid con la stessa Action interessata. La policy 2 contiene azioni aggiuntive, ma queste azioni non sono interessate.

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": "*" }] }
Esempio 3: le policy non sono considerate simili

Entrambe le policy contengono un blocco Sid con la stessa Action interessata. Tuttavia, la policy 2 contiene un elemento Condition che non è presente nella policy 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" } } }] }
Esempio 4: le policy sono considerate simili

La Policy 1 prevede un singolo blocco Sid con una Action interessata. La Policy 2 ha più Sid blocchi, ma la Action interessata viene visualizzata in un solo blocco.

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": "*" } ] }
Esempio 5: le policy non sono considerate simili

La Policy 1 prevede un singolo blocco Sid con una Action interessata. La Policy 2 ha più Sid blocchi e la Action interessata viene visualizzata in più blocchi.

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": "*" } ] }
Esempio 6: le policy sono considerate simili

Entrambe le policy hanno più Sid blocchi, con la stessa Action interessata in ogni blocco 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": "*" } ] }
Esempio 7

Le due policy seguenti non sono considerate simili.

La Policy 1 prevede un singolo blocco Sid con una Action interessata. La Policy 2 presenta un blocco Sid con la stessa Action interessata. Tuttavia, la policy 2 contiene anche un altro blocco Sid con azioni diverse.

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": "*" } ] }