Utilisez des scripts pour migrer vos politiques en masse afin d'utiliser des actions précises IAM - AWS Facturation

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Utilisez des scripts pour migrer vos politiques en masse afin d'utiliser des actions précises IAM

Note

Les AWS Identity and Access Management (IAM) actions suivantes ont atteint la fin du support standard en juillet 2023 :

  • Espace de noms aws-portal

  • purchase-orders:ViewPurchaseOrders

  • purchase-orders:ModifyPurchaseOrders

Si vous en utilisez AWS Organizations, vous pouvez utiliser les scripts de migration de politiques par lots ou le migrateur de politiques par lots pour mettre à jour les politiques depuis votre compte payeur. Vous pouvez également utiliser l'ancienne référence de mappage d'actions granulaire pour vérifier les IAM actions qui doivent être ajoutées.

Si vous avez AWS Organizations créé ou participez à une création le 6 mars 2023 à 11 h (PDT) ou après cette date, les actions détaillées sont déjà en vigueur dans votre organisation. Compte AWS

Pour faciliter la migration de vos IAM politiques afin d'utiliser de nouvelles actions, appelées actions détaillées, vous pouvez utiliser les scripts du site Web AWS Samples.

Vous exécutez ces scripts depuis le compte payeur de votre organisation pour identifier les politiques concernées suivantes dans votre organisation qui utilisent les anciennes IAM actions :

  • IAMPolitiques gérées par le client

  • Politiques intégrées relatives aux rôles, aux groupes et IAM aux utilisateurs

  • Politiques de contrôle des services (SCPs) (s'applique uniquement au compte du payeur)

  • Jeux d'autorisations

Les scripts génèrent des suggestions de nouvelles actions qui correspondent aux actions existantes utilisées dans la politique. Vous passez ensuite en revue les suggestions et utilisez les scripts pour ajouter les nouvelles actions à toutes les stratégies concernées de votre organisation. Il n'est pas nécessaire de mettre à jour les politiques AWS AWS gérées ou gérées SCPs (par exemple, AWS Control Tower et AWS Organizations SCPs).

Ces scripts sont utilisés pour :

  • Simplifiez les mises à jour des politiques pour vous aider à gérer les stratégies concernées depuis le compte payeur.

  • Réduisez la durée de mise à jour des politiques. Vous n'avez pas besoin de vous connecter à chaque compte membre et de mettre à jour manuellement les politiques.

  • Regroupez des politiques identiques provenant de différents comptes membres. Vous pouvez ensuite vérifier et appliquer les mêmes mises à jour à toutes les politiques identiques, au lieu de les examiner une par une.

  • Assurez-vous que l'accès des utilisateurs reste inchangé après le AWS retrait des anciennes IAM actions le 6 juillet 2023.

Pour plus d'informations sur les politiques et les politiques de contrôle des services (SCPs), consultez les rubriques suivantes :

Présentation

Suivez cette rubrique pour effectuer les étapes suivantes :

Prérequis

Pour commencer, vous devez réaliser l'action suivante :

  • Télécharger et installer Python 3

  • Connectez-vous à votre compte payeur et vérifiez que vous disposez d'un IAM mandant disposant des IAM autorisations suivantes :

    "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"
Astuce

Pour commencer, nous vous recommandons d'utiliser un sous-ensemble d'un compte, tel qu'un compte de test, afin de vérifier que les modifications suggérées sont attendues.

Vous pouvez ensuite réexécuter les scripts pour les autres comptes de votre organisation.

Étape 1 : configuration de votre environnement

Pour commencer, téléchargez les fichiers requis sur le site Web AWS Samples. Exécutez ensuite des commandes pour configurer votre environnement.

Configuration de votre environnement
  1. Clonez le référentiel depuis le site Web AWS Samples. Dans une fenêtre de ligne de commande, vous pouvez utiliser la commande suivante :

    git clone https://github.com/aws-samples/bulk-policy-migrator-scripts-for-account-cost-billing-consoles.git
  2. Accédez au répertoire où vous avez téléchargé les fichiers. Vous pouvez utiliser la commande suivante :

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

    Le référentiel contient les scripts et les ressources suivants :

    • billing_console_policy_migrator_role.json— Le CloudFormation modèle qui crée le BillingConsolePolicyMigratorRole IAM rôle dans les comptes des membres de votre organisation. Ce rôle permet aux scripts d'endosser le rôle, puis de lire et de mettre à jour les stratégies concernées.

    • action_mapping_config.json— Contient le one-to-many mappage des anciennes actions avec les nouvelles actions. Les scripts utilisent ce fichier pour suggérer les nouvelles actions pour chaque politique affectée qui contient les anciennes actions.

      Chaque ancienne action correspond à plusieurs actions détaillées. Les nouvelles actions proposées dans le fichier permettent aux utilisateurs d'y accéder Services AWS avant la migration.

    • identify_affected_policies.py : analyse et identifie les stratégies concernées au sein de votre organisation. Ce script génère un fichier affected_policies_and_suggestions.json qui répertorie les stratégies concernées ainsi que les nouvelles actions suggérées.

      Les politiques concernées qui utilisent le même ensemble d'anciennes actions sont regroupées dans le JSON fichier, afin que vous puissiez consulter ou mettre à jour les nouvelles actions suggérées.

    • update_affected_policies.py : met à jour les stratégies concernées dans votre organisation. Le script saisit le fichier affected_policies_and_suggestions.json, puis ajoute les nouvelles actions suggérées aux politiques.

    • rollback_affected_policies.py : (Facultatif) annule les modifications apportées aux stratégies concernées. Ce script supprime les nouvelles actions détaillées des stratégies concernées.

  3. Exécutez les commandes suivantes pour configurer et activer l'environnement virtuel.

    python3 -m venv venv
    source venv/bin/activate
  4. Exécutez la commande suivante pour installer la AWS SDK for Python (Boto3) dépendance.

    pip install -r requirements.txt
    Note

    Vous devez configurer vos AWS informations d'identification pour utiliser le AWS Command Line Interface (AWS CLI). Pour de plus amples informations, veuillez consulter AWS SDK for Python (Boto3).

Pour plus d'informations, consultez le fichier README.md.

Étape 2 : Création du CloudFormation StackSet

Suivez cette procédure pour créer un ensemble de CloudFormation piles. Cet ensemble de piles crée ensuite le BillingConsolePolicyMigratorRole IAM rôle de tous les comptes membres de votre organisation.

Note

Vous devez effectuer cette étape une seule fois depuis le compte de gestion (compte payeur).

Pour créer le CloudFormation StackSet
  1. Dans un éditeur de texte, ouvrez le billing_console_policy_migrator_role.json fichier et remplacez chaque instance de <management_account> avec l'identifiant du compte payeur (par exemple, 123456789012).

  2. Enregistrez le fichier.

  3. Connectez-vous au AWS Management Console compte payeur.

  4. Dans la CloudFormation console, créez un ensemble de piles avec le billing_console_policy_migrator_role.json fichier que vous avez mis à jour.

    Pour plus d'informations, consultez la section Création d'un ensemble de piles sur la AWS CloudFormation console dans le Guide de AWS CloudFormation l'utilisateur.

Après avoir CloudFormation créé le stack set, chaque compte membre de votre organisation a un BillingConsolePolicyMigratorRole IAM rôle.

Le IAM rôle contient les autorisations suivantes :

"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"
Remarques
  • Pour chaque compte membre, les scripts appellent l'AssumeRoleAPIopération pour obtenir des informations d'identification temporaires afin d'assumer le BillingConsolePolicyMigratorRole IAM rôle.

  • Les scripts appellent l'ListAccountsAPIopération pour obtenir tous les comptes des membres.

  • Les scripts appellent également IAM API des opérations pour appliquer les autorisations de lecture et d'écriture aux politiques.

Étape 3 : identification des stratégies concernées

Après avoir créé l'ensemble de piles et téléchargé les fichiers, exécutez le script identify_affected_policies.py. Ce script assume le BillingConsolePolicyMigratorRole IAM rôle de chaque compte membre, puis identifie les politiques concernées.

Pour identifier les stratégies concernées
  1. Accédez au répertoire où vous avez téléchargé les scripts.

    cd policy_migration_scripts/scripts
  2. Exécutez le script identify_affected_policies.py.

Vous pouvez utiliser les paramètres d'entrée suivants :

  • Comptes AWS que vous souhaitez que le script scanne. Pour spécifier des comptes, utilisez les paramètres d'entrée suivants :

    • --all : analyse tous les comptes membres de votre organisation.

      python3 identify_affected_policies.py --all
    • --accounts : analyse un sous-ensemble des comptes membres de votre organisation.

      python3 identify_affected_policies.py --accounts 111122223333, 444455556666, 777788889999
    • --exclude-accounts : exclut des membres comptes spécifiques de votre organisation.

      python3 identify_affected_policies.py --all --exclude-accounts 111111111111, 222222222222, 333333333333
  • –-action-mapping-config-file : (Facultatif) spécifiez le chemin d'accès au fichier action_mapping_config.json. Le script utilise ce fichier pour générer des suggestions de mises à jour pour les stratégies concernées. Si vous ne spécifiez pas le chemin, le script utilise le fichier action_mapping_config.json du dossier.

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

Vous ne pouvez pas spécifier d'unités organisationnelles (OUs) avec ce script.

Après avoir exécuté le script, il crée deux JSON fichiers dans un Affected_Policies_<Timestamp> dossier :

  • affected_policies_and_suggestions.json

  • detailed_affected_policies.json

affected_policies_and_suggestions.json

Répertorie les stratégies concernées avec les nouvelles actions suggérées. Les stratégies concernées qui utilisent le même ensemble d'anciennes actions sont regroupées dans le fichier.

Ce fichier comprend les sections suivantes :

  • Des métadonnées qui fournissent une vue d'ensemble des comptes que vous avez spécifiés dans le script, notamment :

    • Les comptes analysés et le paramètre d'entrée utilisé pour le script identify_affected_policies.py

    • Le nombre de comptes concernés

    • Le nombre de stratégies concernées

    • Le nombre de groupes de politiques similaires

  • Groupes de politiques similaires : inclut la liste des comptes et les détails des politiques, y compris les sections suivantes :

    • ImpactedPolicies : spécifie quelles politiques sont concernées et incluses dans le groupe

    • ImpactedPolicyStatements : fournit des informations sur les blocs Sid qui utilisent actuellement les anciennes actions de la politique concernée. Cette section inclut les anciennes actions et IAM éléments, tels que EffectPrincipal,NotPrincipal,NotAction, etCondition.

  • SuggestedPolicyStatementsToAppend : fournit les nouvelles actions suggérées qui sont ajoutées en tant que nouveau bloc SID.

    Lorsque vous mettez à jour les politiques, ce bloc est ajouté à la fin des politiques.

Exemple de fichier affected_policies_and_suggestions.json

Ce fichier regroupe les politiques similaires en fonction des critères suivants :

  • Anciennes actions utilisées : politiques qui comportent les mêmes anciennes actions dans tous les blocs SID.

  • Détails correspondants — Outre les actions concernées, les politiques comportent des IAM éléments identiques, tels que :

    • Effect (Allow/Deny)

    • Principal (à qui l'accès est autorisé ou refusé)

    • NotAction (quelles sont les actions non autorisées)

    • NotPrincipal (à qui l'accès est explicitement refusé)

    • Resource(à quelles AWS ressources s'applique la politique)

    • Condition (toutes les conditions spécifiques en vertu desquelles la politique s'applique)

Note

Pour de plus amples informations, veuillez consulter IAMexemples de politiques.

Exemple affected_policies_and_suggestions.json exemple
[{ "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

Contient la définition de toutes les stratégies concernées que le script identify_affected_policies.py a identifiées pour les comptes membres.

Le fichier regroupe des politiques similaires. Vous pouvez utiliser ce fichier comme référence, afin de pouvoir consulter et gérer les modifications des politiques sans avoir à vous connecter à chaque compte membre pour consulter les mises à jour de chaque politique et de chaque compte individuellement.

Vous pouvez rechercher le nom de la politique dans le fichier (par exemple, YourCustomerManagedReadOnlyAccessBillingUser), puis consulter les définitions des politiques concernées.

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

Étape 4 : examen des modifications suggérées

Une fois que le script a créé le fichier affected_policies_and_suggestions.json, examinez-le et apportez les modifications nécessaires.

Pour examiner les stratégies concernées
  1. Dans un éditeur de texte, ouvrez le fichier affected_policies_and_suggestions.json.

  2. Dans la section AccountsScanned, vérifiez que le nombre de groupes similaires identifiés dans les comptes analysés est attendu.

  3. Examinez les actions détaillées suggérées qui seront ajoutées aux stratégies concernées.

  4. Mettez à jour votre fichier selon vos besoins, puis enregistrez-le.

Exemple 1 : mise à jour du fichier action_mapping_config.json

Vous pouvez mettre à jour les mappages suggérés dans le action_mapping_config.json. Après avoir mis à jour le fichier, vous pouvez réexécuter le script identify_affected_policies.py. Ce script génère des suggestions mises à jour pour les stratégies concernées.

Vous pouvez créer plusieurs versions du fichier action_mapping_config.json pour modifier les politiques de différents comptes dotés d'autorisations différentes. Par exemple, vous pouvez créer un fichier nommé action_mapping_config_testing.json pour migrer les autorisations de vos comptes de test, et un nommé action_mapping_config_production.json pour vos comptes de production.

Exemple 2 : mise à jour du fichier affected_policies_and_suggestions.json

Pour apporter des modifications aux remplacements suggérés pour un groupe de politiques concernées spécifique, vous pouvez directement modifier la section des remplacements suggérés dans le fichier affected_policies_and_suggestions.json.

Toutes les modifications que vous apportez à cette section s'appliquent à toutes les politiques du groupe de politiques concernées.

Exemple 3 : personnalisation d'une politique spécifique

Si vous trouvez qu'une politique au sein d'un groupe de politiques concernées nécessite des modifications différentes des mises à jour suggérées, vous pouvez procéder comme suit :

  • Excluez des comptes spécifiques du script identify_affected_policies.py. Vous pouvez ensuite examiner ces comptes exclus séparément.

  • Mettez à jour les blocs Sid concernés en supprimant les politiques et les comptes concernés qui nécessitent des autorisations différentes. Créez un JSON bloc qui inclut uniquement les comptes spécifiques ou qui les exclut de l'exécution de la politique concernée par la mise à jour en cours.

    Lorsque vous réexécutez le script identify_affected_policies.py, seuls les comptes concernés apparaissent dans le bloc mis à jour. Vous pouvez ensuite affiner les suggestions de remplacement pour ce bloc spécifique Sid.

Étape 5 : mise à jour des stratégies concernées

Après avoir examiné et affiné les suggestions de remplacement, exécutez le script update_affected_policies.py. Le script prend le fichier affected_policies_and_suggestions.json comme entrée. Ce script a pour BillingConsolePolicyMigratorRole IAM rôle de mettre à jour les politiques concernées répertoriées dans le affected_policies_and_suggestions.json fichier.

Pour mettre à jour les politiques concernées
  1. Si vous ne l'avez pas déjà fait, ouvrez une fenêtre de ligne de commande pour l' AWS CLI.

  2. Saisissez la commande suivante pour exécuter le script update_affected_policies.py. Vous pouvez saisir le paramètre d'entrée suivant :

  • Le chemin de répertoire du fichier affected_policies_and_suggestions.json qui contient une liste des stratégies concernées à mettre à jour. Ce fichier est le résultat de l'étape précédente.

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

Le script update_affected_policies.py met à jour les stratégies concernées dans le fichier affected_policies_and_suggestions.json avec les nouvelles actions suggérées. Le script ajoute un Sid bloc aux politiques, identifié comme suit : BillingConsolePolicyMigrator## correspond à un compteur incrémental (par exemple, 1, 2, 3).

Par exemple, si plusieurs blocs Sid de la politique concernée utilisent d'anciennes actions, le script ajoute plusieurs blocs Sid, qui apparaissent comme BillingConsolePolicyMigrator#, en correspondance à chaque bloc Sid.

Important
  • Le script ne supprime pas les anciennes IAM actions des politiques, ni ne modifie les Sid blocs existants dans les politiques. Au lieu de cela, il crée des blocs Sid et les ajoute à la fin de la politique. Ces nouveaux Sid blocs contiennent les nouvelles actions suggérées dans le JSON fichier. Cela garantit que les autorisations des politiques d'origine ne sont pas modifiées.

  • Nous vous déconseillons de modifier le nom des blocs Sid BillingConsolePolicyMigrator# au cas où vous auriez besoin d'annuler vos modifications.

Exemple : politique avec blocs Sid ajoutés

Consultez les blocs Sid ajoutés dans les blocs BillingConsolePolicyMigrator1 et 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": "*" } ] }

Le script génère un rapport d'état qui contient les opérations infructueuses et génère le JSON fichier localement.

Exemple : rapport d'état
[{ "Account": "111111111111", "PolicyType": "Customer Managed Policy" "PolicyName": "AwsPortalViewPaymentMethods", "PolicyIdentifier": "identifier", "Status": "FAILURE", // FAILURE or SKIPPED "ErrorMessage": "Error message details" }]
Important
  • Si vous réexécutez les scripts identify_affected_policies.py et update_affected_policies.py, ils ignorent toutes les politiques contenant le bloc Sid BillingConsolePolicyMigratorRole#. Les scripts supposent que ces politiques ont déjà été analysées et mises à jour et qu'elles ne nécessitent aucune mise à jour supplémentaire. Cela empêche le script de dupliquer les mêmes actions dans la politique.

  • Après avoir mis à jour les politiques concernées, vous pouvez utiliser les nouvelles IAM en utilisant l'outil des politiques concernées. Si vous identifiez des problèmes, vous pouvez utiliser l'outil pour revenir aux actions précédentes. Vous pouvez également utiliser un script pour annuler les mises à jour de votre politique.

    Pour plus d'informations, consultez le billet Comment utiliser l'outil relatif aux politiques concernées de blog sur les modifications apportées à la AWS facturation, à la gestion des coûts et aux autorisations des consoles de compte.

  • Pour gérer vos mises à jour, vous pouvez :

    • exécuter les scripts pour chaque compte individuellement ;

    • exécuter le script par lots pour des comptes similaires, tels que les comptes de test, d'assurance qualité et de production ;

    • exécuter le script pour tous les comptes ;

    • opter pour un mélange entre la mise à jour de certains comptes par lots et la mise à jour individuelle d'autres comptes.

Étape 6 : annulation de vos modifications (Facultatif)

Le script rollback_affected_policies.py annule les modifications appliquées à chaque politique concernée pour les comptes spécifiés. Le script supprime tous les blocs Sid ajoutés par le script update_affected_policies.py. Ces blocs Sid ont le format BillingConsolePolicyMigratorRole#.

Pour annuler vos modifications
  1. Si vous ne l'avez pas déjà fait, ouvrez une fenêtre de ligne de commande pour l' AWS CLI.

  2. Saisissez la commande suivante pour exécuter le script rollback_affected_policies.py. Vous pouvez saisir les paramètres d'entrée suivants :

  • --accounts

    • Spécifie une liste séparée par des virgules des éléments Compte AWS IDs que vous souhaitez inclure dans le rollback.

    • L'exemple suivant analyse les politiques spécifiées Comptes AWS et supprime toutes les instructions associées au BillingConsolePolicyMigrator# Sid bloc.

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

    • Inclut tout Compte AWS IDs le personnel de votre organisation.

    • L'exemple suivant analyse toutes les politiques de votre organisation et supprime toutes les instructions contenant le bloc Sid BillingConsolePolicyMigratorRole#.

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

    • Spécifie une liste séparée par des virgules des Compte AWS IDs éléments que vous souhaitez exclure de la restauration.

      Vous ne pouvez utiliser ce paramètre que si vous spécifiez également le paramètre --all.

    • L'exemple suivant analyse les politiques de tous les Comptes AWS membres de votre organisation, à l'exception des comptes spécifiés.

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

IAMexemples de politiques

Les politiques sont considérées comme similaires si leurs caractéristiques suivantes sont identiques :

  • Actions affectées sur tous les blocs Sid.

  • Détails dans les IAM éléments suivants :

    • Effect (Allow/Deny)

    • Principal (à qui l'accès est autorisé ou refusé)

    • NotAction (quelles sont les actions non autorisées)

    • NotPrincipal (à qui l'accès est explicitement refusé)

    • Resource(à quelles AWS ressources s'applique la politique)

    • Condition (toutes les conditions spécifiques en vertu desquelles la politique s'applique)

Les exemples suivants montrent des politiques qui IAM peuvent être considérées comme similaires ou non en fonction des différences entre elles.

Exemple 1 : les politiques sont considérées comme similaires

Chaque type de politique est différent, mais les deux politiques contiennent un bloc Sid avec la même Action concernée.

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": "*" }] }
Exemple 2 : les politiques sont considérées comme similaires

Les deux politiques contiennent un seul bloc Sid avec la même Action concernée. La politique 2 contient des actions supplémentaires, mais celles-ci ne sont pas affectées.

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": "*" }] }
Exemple 3 : les politiques ne sont pas considérées comme similaires

Les deux politiques contiennent un seul bloc Sid avec la même Action concernée. Toutefois, la politique 2 contient un élément Condition qui n'est pas présent dans la politique 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" } } }] }
Exemple 4 : les politiques sont considérées comme similaires

La politique 1 comporte un seul bloc Sid avec une Action concernée. La politique 2 comporte plusieurs blocs Sid, mais l'Action concernée n'apparaît que dans un seul bloc.

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": "*" } ] }
Exemple 5 : les politiques ne sont pas considérées comme similaires

La politique 1 comporte un seul bloc Sid avec une Action concernée. La politique 2 comporte plusieurs blocs Sid et l'Action concernée apparaît dans plusieurs blocs.

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": "*" } ] }
Exemple 6 : les politiques sont considérées comme similaires

Les deux politiques comportent plusieurs blocs Sid, avec la même Action concernée dans chaque bloc 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": "*" } ] }
Exemple 7

Les deux politiques suivantes ne sont pas considérées comme similaires.

La politique 1 comporte un seul bloc Sid avec une Action concernée. La politique 2 comporte un bloc Sid avec la même Action concernée. Cependant, la politique 2 contient également un autre bloc Sid avec différentes actions.

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