翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
スクリプトを使用して詳細な IAM の アクションを使用するポリシーを一括移行する
注記
次の AWS Identity and Access Management (IAM) アクションは、2023 年 7 月に標準サポートが終了しました。
-
aws-portal
名前空間 -
purchase-orders:ViewPurchaseOrders
-
purchase-orders:ModifyPurchaseOrders
を使用している場合は AWS Organizations、一括ポリシーマイグレータースクリプトまたは一括ポリシーマイグレーターを使用して、支払者アカウントからポリシーを更新できます。また、従来のアクションから詳細なアクションへのマッピングのリファレンスを使用して、追加する必要のある IAM アクションを検証することもできます。
2023 年 3 月 6 日午前 11 時 (PDT) 以降に AWS Organizations 作成された を持っている AWS アカウントか、 の一部である場合、きめ細かなアクションは組織で既に有効になっています。
IAM ポリシーを移行して詳細なアクションとして知られる新しいアクションを使用するために、AWS
サンプル
これらのスクリプトを組織の支払いアカウントから実行して、組織内で古い IAM アクションを使用し、影響を受ける以下のポリシーを特定します。
-
カスタマーマネージド IAM ポリシー
-
ロール、グループ、ユーザーの IAM インラインポリシー
-
サービスコントロールポリシー (支払人のアカウントのみに適用)
-
権限セット
スクリプトは、ポリシーで使用されている既存のアクションに対応する の新しいアクションの提案を生成します。提案を確認し、スクリプトを使用して組織内の影響を受けるすべてのポリシーに新しいアクションを追加します。管理ポリシーや AWS 管理 SCPs ( AWS Control Tower や AWS Organizations SCPs など) を更新 AWS する必要はありません。
これらのスクリプトは以下の目的で使用します。
-
ポリシーの更新が効率化され、影響を受けるポリシーを支払いアカウントから簡単に管理できます。
-
ポリシーの更新に必要な時間が短縮されます。各メンバーアカウントにサインインしてポリシーを手動で更新する必要はありません。
-
複数の異なるメンバーアカウントの同一のポリシーをグループにまとめることができます。その場合、1 つずつ確認しなくても、すべての同じポリシーで同じ更新を確認することや適用することができます。
-
が 2023 年 7 月 AWS 6 日に古い IAM アクションを廃止した後も、ユーザーアクセスが影響を受けないようにしてください。
ポリシーとサービスコントロールポリシーの詳細については、 以下のトピックを参照してください。
-
「IAM ユーザーガイド」の「IAM ポリシーを管理する」
-
「AWS Organizations ユーザーガイド」の「サービスコントロールポリシー (SCP)」
-
「IAM Identity Center ユーザーガイド」の「カスタム権限」
概要
このトピックに従って、次のステップを完了します。
トピック
前提条件
開始するには、以下を実行する必要があります。
-
Python 3
をダウンロードしてインストールします。 -
支払いアカウントへのサインイン、および次の IAM 権限を持つ 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"
ヒント
最初に、テストアカウントなどのアカウントのサブセットを使用して、提案された変更が予期された通りに行われることを確認することをお勧めします。
その後、組織内の残りのアカウントに対してスクリプトを再度実行できます。
ステップ1: 環境の構築
開始するには、AWS
Samples
使用する環境をセットアップするには
-
AWS Samples
ウェブサイトからリポジトリを複製します。コマンドラインウィンドウで、次のコマンドを実行できます。 git clone https://github.com/aws-samples/bulk-policy-migrator-scripts-for-account-cost-billing-consoles.git
-
ファイルをダウンロードしたディレクトリに移動します。以下のコマンドを使用できます。
cd bulk-policy-migrator-scripts-for-account-cost-billing-consoles
リポジトリには、以下のスクリプトとリソースがあります。
-
billing_console_policy_migrator_role.json
–
IAM ロールを組織のメンバーアカウントに作成する CloudFormation テンプレート。スクリプトはこのロールを継承し、影響を受けるポリシーを読み取って更新することができます。BillingConsolePolicyMigratorRole
-
action_mapping_config.json
— 古いアクションと新しいアクションの 1 対多のマッピングが含まれます。スクリプトはこのファイルを使用して、古いアクションを含み、影響を受ける各ポリシーの新しいアクションを提案します。それぞれの古いアクションは、複数の詳細なアクションに対応しています。ファイルで提案された新しいアクションにより、ユーザーは移行 AWS のサービス 前に同じ にアクセスできます。
-
identify_affected_policies.py
– 組織内の影響を受けるポリシーをスキャンして特定します。このスクリプトは、影響を受けるポリシーと提案された新しいアクションをリストするaffected_policies_and_suggestions.json
ファイルを生成します。古いアクションの同じセットを使用し、影響を受けるポリシーは JSON ファイルにグループ化されるため、提案された新しいアクションを確認または更新できます。
-
update_affected_policies.py
– 組織内の影響を受けるポリシーを更新します。スクリプトはaffected_policies_and_suggestions.json
ファイルを入力し、提案された新しいアクションをポリシーに追加します。 -
rollback_affected_policies.py
– (オプション) 影響を受けるポリシーに加えられた変更を元に戻します。このスクリプトは、影響を受けるポリシーから新しい詳細アクションを削除します。
-
-
仮想環境をセットアップして有効化するには、次のコマンドを実行します。
python3 -m venv venv
source venv/bin/activate
-
次のコマンドを実行して、 AWS SDK for Python (Boto3) 依存関係をインストールします。
pip install -r requirements.txt
注記
AWS Command Line Interface () を使用するように AWS 認証情報を設定する必要がありますAWS CLI。詳細については、「AWS SDK for Python (Boto3)
」を参照してください。
詳細については、README.md
ステップ 2: CloudFormation スタックセットを作成する
次の手順に従って CloudFormation スタックセットを作成します。このスタックセットは、組織内のすべてのメンバーアカウントの BillingConsolePolicyMigratorRole
IAM ロールを作成します。
注記
このステップを完了する必要があるのは、管理アカウント (支払いアカウント) から 1 回だけです。
CloudFormation スタックセットを作成するには
-
テキストエディタで
billing_console_policy_migrator_role.json
ファイルを開き、
の各インスタンスを支払いアカウントのアカウント ID (<management_account>
123456789012
など) に置き換えます。 -
ファイルを保存します。
-
支払者アカウント AWS Management Console として にサインインします。
-
CloudFormation コンソールで、更新した
billing_console_policy_migrator_role.json
ファイルでスタックセットを作成します。詳細については、「 AWS CloudFormation ユーザーガイド」のAWS CloudFormation 「コンソールでのスタックセットの作成」を参照してください。
CloudFormation がスタックセットを作成した後、組織内の各メンバーアカウントに BillingConsolePolicyMigratorRole
IAM ロールが割り当てられます。
IAM ロールには以下のアクセス許可が含まれます。
"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"
メモ
各メンバーアカウントに対して、スクリプトは AssumeRole API オペレーションを呼び出して、
BillingConsolePolicyMigratorRole
IAM ロールを継承するための一時的な認証情報を取得します。スクリプトは ListAccounts API オペレーションを呼び出して、すべてのメンバーアカウントを取得します。
また、スクリプトは IAM API オペレーションを呼び出して、ポリシーへの読み取りアクセス許可と書き込みアクセス許可を実行します。
ステップ 3: 影響を受けるポリシーを特定する
スタックセットを作成してファイルをダウンロードしたら、identify_affected_policies.py
スクリプトを実行します。このスクリプトは、各メンバーアカウントの BillingConsolePolicyMigratorRole
IAM ロールを継承し、影響を受けるポリシーを特定します。
影響を受けるポリシーを特定するには
-
スクリプトをダウンロードしたディレクトリに移動します。
cd policy_migration_scripts/scripts
-
identify_affected_policies.py
スクリプトを実行します。
次の入力パラメータを使用できます。
-
AWS アカウント スクリプトでスキャンする 。アカウントを指定するには、次の入力パラメータを使用します。
-
--all
– 組織内のすべてのメンバーアカウントをスキャンします。python3
identify_affected_policies.py
--all -
--accounts
– 組織内のメンバーアカウントのサブセットをスキャンします。python3
identify_affected_policies.py
--accounts 111122223333, 444455556666, 777788889999 -
--exclude-accounts
– 組織内の特定のメンバーアカウントを除外します。python3
identify_affected_policies.py
--all --exclude-accounts 111111111111, 222222222222, 333333333333
-
-
–-action-mapping-config-file
– (オプション)action_mapping_config.json
ファイルへのパスを指定します。スクリプトは、このファイルを使用して影響を受けるポリシーの推奨される更新を生成します。パスを指定しない場合、スクリプトはフォルダー内のaction_mapping_config.json
ファイルを使用します。python3
identify_affected_policies.py
–-action-mapping-config-file c:\Users\username\Desktop\Scripts\action_mapping_config.json
–-all
注記
このスクリプトで組織単位 (OU) を指定することはできません。
スクリプトを実行すると、Affected_Policies_
フォルダーに 2 つの JSON ファイルが作成されます。<Timestamp>
-
affected_policies_and_suggestions.json
-
detailed_affected_policies.json
affected_policies_and_suggestions.json
-
影響を受けるポリシーと推奨される新しいアクションを一覧表示します。古いアクションの同じセットを使用し、影響を受けるポリシーは、ファイルにグループ化されます。
このファイルには次のセクションが含まれます。
-
スクリプトで指定したアカウントの概要を提供するメタデータ。これには以下が含まれます。
-
スキャンされたアカウントと
identify_affected_policies.py
スクリプトで使用された入力パラメータ -
影響を受けるアカウントの数
-
影響を受けるポリシーの数
-
類似ポリシーグループの数
-
-
類似ポリシーグループ — アカウントのリストとポリシーの詳細 (次のセクションを含む) が含まれます。
-
ImpactedPolicies
– 影響を受けるポリシーとグループに含めるポリシーを指定します -
ImpactedPolicyStatements
– 影響を受けるポリシー内で古いアクションを現在使用しているSid
ブロックに関する情報を提供します。このセクションには古いアクションと IAM 要素 (Effect
、Principal
、NotPrincipal
、NotAction
、Condition
など) が含まれます。
-
-
SuggestedPolicyStatementsToAppend
– 新しいSID
ブロックとして追加される新しい推奨アクションを提供します。ポリシーを更新すると、このブロックがポリシーの最後に追加されます。
例
affected_policies_and_suggestions.json
ファイルの例このファイルには、以下の基準に基づいて類似するポリシーがグループ化されています。
-
同じ古いアクションが使用されている — すべての
SID
ブロックに同じ古いアクションがあるポリシー。 -
マッチングの詳細 — 影響を受けるアクションに加えて、ポリシーには次のような同一の IAM 要素があります。
-
Effect
(Allow
/Deny
) -
Principal
(アクセスを許可または拒否されるユーザー) -
NotAction
(許可されていないアクション) -
NotPrincipal
(アクセスが明示的に拒否されるユーザー) -
Resource
(ポリシーが適用される AWS リソース) -
Condition
(ポリシーが適用される特定の条件)
-
注記
詳細については、「IAM ポリシーの例」を参照してください。
例
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
-
メンバーアカウントに対して
identify_affected_policies.py
スクリプトが識別した影響を受けるすべてのアカウントの定義が含まれます。ファイルには類似するポリシーがグループ化されています。このファイルを参照として使用すると、各メンバーアカウントにサインインして各ポリシーとアカウントの更新をここに確認する必要なく、ポリシーの変更を確認および管理できます。
ファイルでポリシー名 (
など) を検索して、影響を受けるポリシー定義を確認できます。YourCustomerManagedReadOnlyAccessBillingUser
例:
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": "*" }] } } ]
ステップ 4: 推奨された変更を確認する
スクリプトによって作成された affected_policies_and_suggestions.json
ファイルを確認して変更を加えます。
影響を受けるポリシーを確認するには
-
テキストエディタで、
affected_policies_and_suggestions.json
ファイルを開きます。 -
AccountsScanned
セクションで、スキャンされたアカウント全体で識別された類似グループの数が予期されることを確認します。 -
影響を受けるポリシーに追加される推奨詳細アクションを確認します。
-
必要に応じてファイルを更新して保存します。
例 1: action_mapping_config.json
ファイルを更新する
action_mapping_config.json
の推奨マッピングは更新できます。ファイルを更新した後、identify_affected_policies.py
スクリプトを再実行します。このスクリプトは、絵協を受けるポリシーの更新された候補を生成します。
action_mapping_config.json
ファイルの複数のバージョンを作成して、さまざまなアクセス許可を持つさまざまなアカウントのポリシーを変更できます。例えば、テストアカウントのアクセス許可を移行する action_mapping_config_testing.json
という名前のファイルを作成し、本番稼働用アカウント用の action_mapping_config_production.json
を作成します。
例 2: affected_policies_and_suggestions.json
ファイルを更新する
affected_policies_and_suggestions.json
ファイル内の推奨される変更セクションを直接編集して、影響を受ける特定のポリシーグループの推奨される変更を変更できます。
このセクションで行った変更は、影響を受ける特定のポリシーグループ内のすべてのポリシーに適用されます。
例 3: 特定のポリシーをカスタマイズする
影響を受けるポリシーグループ内のポリシーで、推奨される更新とは異なる変更が必要であることがわかった場合は、次のことを行うことができます。
-
identify_affected_policies.py
スクリプトから特定のアカウントを除外します。その後、除外されたアカウントを個別に確認できます。 -
別のアクセス許可が必要な影響を受けるポリシーとアカウントを削除することによって、影響を受ける
Sid
ブロックを更新します。特定のアカウントのみを含む JSON ブロック、または現在の更新の影響を受けるポリシー実行から除外する JSON ブロックを作成します。identify_affected_policies.py
スクリプトを再実行すると、更新されたブロックに関連アカウントのみが表示されます。その後、その特定のSid
ブロックに推奨される変更を絞り込むことができます。
ステップ 5: 影響を受けるポリシーを更新する
推奨される変更を確認して修正した後、update_affected_policies.py
スクリプトを実行します。スクリプトは入力として affected_policies_and_suggestions.json
ファイルを取ります。このスクリプトは、affected_policies_and_suggestions.json
ファイルにリストされている影響を受けるポリシーを更新する BillingConsolePolicyMigratorRole
IAM ロールを継承します。
影響を受けるポリシーを更新するには
-
まだ開いていない場合は、 AWS CLI のコマンドラインウィンドウを開きます。
-
次のコマンドを入力して
update_affected_policies.py
スクリプトを実行します。次の入力パラメータを入力できます。
-
更新対象となる影響を受けるポリシーのリストを含む
affected_policies_and_suggestions.json
ファイルのディレクトリパス。このファイルは前のステップの出力です。
python3
update_affected_policies.py
--affected-policies-directory Affected_Policies_<Timestamp>
update_affected_policies.py
スクリプトは、affected_policies_and_suggestions.json
ファイル内の影響を受けるポリシーを推奨される新しいアクションで更新します。スクリプトは BillingConsolePolicyMigrator
として識別されるポリシーに #
Sid
ブロックを追加します。ここで、#
は増分カウンタ (1、2、3 など) に対応します。
例えば、古いアクションを使用し、影響を受けるポリシー内に複数の Sid
ブロックがある場合、スクリプトは、各 Sid
ブロックに対応する複数の Sid
ブロック (BillingConsolePolicyMigrator
として表示) を追加します。#
重要
-
このスクリプトは、ポリシーから古い IAM アクションを削除することや、ポリシー内の既存の
Sid
ブロックを変更することはありません。代わりに、Sid
ブロックを作成してポリシーの最後に追加します。これらの新しいSid
ブロックには、JSON ファイルの推奨される新しいアクションが含まれています。元のポリシーのアクセス許可は変更されません。 -
変更を元に戻す必要がある場合に備えて、
BillingConsolePolicyMigrator
#
Sid
ブロックの名前を変更しないことを推奨します。
例: Sid
ブロックが追加されたポリシー
BillingConsolePolicyMigrator1
ブロックと BillingConsolePolicyMigrator2
ブロックに追加された Sid
ブロックを確認します。
{ "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": "*" } ] }
スクリプトは、失敗したオペレーションを含むステータスレポートを生成し、JSON ファイルをローカルに出力します。
例: ステータスレポート
[{ "Account": "111111111111", "PolicyType": "Customer Managed Policy" "PolicyName": "AwsPortalViewPaymentMethods", "PolicyIdentifier": "identifier", "Status": "FAILURE", // FAILURE or SKIPPED "ErrorMessage": "Error message details" }]
重要
-
identify_affected_policies.py
スクリプトとupdate_affected_policies.py
スクリプトを再実行すると、BillingConsolePolicyMigratorRole
#
Sid
ブロックを含むすべてのポリシーがスキップされます。スクリプトでは、これらのポリシーが以前にスキャンおよび更新されていること、および追加の更新は必要ないことが想定されています。これにより、スクリプトがポリシー内の同じアクションを複製することが防止されます。 -
影響を受けるポリシーを更新した後、影響を受けるポリシーツールを使用して新しい IAM を使用できます。問題が見つかった場合は、ツールを使用して前のアクションに戻すことができます。スクリプトを使用してポリシーの更新を元に戻すこともできます。
詳細については、影響を受けるポリシーツールの使用方法「」およびAWS 「請求、コスト管理、アカウントコンソールのアクセス許可の変更
」ブログ記事を参照してください。 -
更新を管理するには、次の方法があります。
-
各アカウントにスクリプトを個別に実行します。
-
類似アカウント (テストアカウント、QA アカウント、本番稼働用アカウントなど) にスクリプトをバッチで実行します。
-
すべてのアカウントにスクリプトを実行します。
-
一部のアカウントをバッチで更新し、その他のアカウントを個々に更新します。
-
ステップ 6: 変更を元に戻す (オプション)
rollback_affected_policies.py
スクリプトは、指定されたアカウントに関して影響を受ける各ポリシーに適用された変更を元に戻します。スクリプトは、update_affected_policies.py
スクリプトが追加したすべての Sid
ブロックを削除します。これらの Sid
ブロックは
の形式です。BillingConsolePolicyMigratorRole
#
変更を元に戻すには
-
まだ開いていない場合は、 AWS CLI のコマンドラインウィンドウを開きます。
-
次のコマンドを入力して
rollback_affected_policies.py
スクリプトを実行します。次の入力パラメータを入力できます。
-
--accounts
-
ロールバックに含める AWS アカウント IDs のカンマ区切りリストを指定します。
-
次の の例では、指定された のポリシーをスキャンし AWS アカウント、
BillingConsolePolicyMigrator
#
Sid
ブロックを含むステートメントを削除します。python3
rollback_affected_policies.py
–-accounts 111122223333, 555555555555, 666666666666
-
-
--all
-
組織内の AWS アカウント IDsが含まれます。
-
次の例では、組織内のすべてのポリシーがスキャンされ、
BillingConsolePolicyMigratorRole
#
Sid
ブロックを含むすべてのステートメントが削除されます。
python3
rollback_affected_policies.py
–-all -
-
--exclude-accounts
-
ロールバックから除外する AWS アカウント IDs のカンマ区切りリストを指定します。
このパラメータは、
--all
パラメータも指定する場合にのみ使用できます。 -
次の の例では、指定されたアカウントを除く、組織 AWS アカウント 内のすべての のポリシーをスキャンします。
python3
rollback_affected_policies.py
--all --exclude-accounts 777777777777, 888888888888, 999999999999
-
IAM ポリシーの例
ポリシーは、以下が同一の場合に類似しているとみなされます。
-
すべての
Sid
ブロックで影響を受けるアクション。 -
以下の IAM 要素の詳細:
-
Effect
(Allow
/Deny
) -
Principal
(アクセスを許可または拒否されるユーザー) -
NotAction
(許可されていないアクション) -
NotPrincipal
(アクセスが明示的に拒否されるユーザー) -
Resource
(ポリシーが適用される AWS リソース) -
Condition
(ポリシーが適用される特定の条件)
-
以下の例は、IAM が相違点に基づいて類似していると見なす可能性があるポリシー、またはそうでないポリシーを示しています。
例 1: ポリシーが類似していると見なされる場合
各ポリシータイプは異なりますが、どちらのポリシーにも影響を受ける同じAction
を含む 1 つの Sid
ブロックがあります。
例 2: ポリシーが類似していると見なされる場合
どちらのポリシーにも、影響を受ける同じ Action
を含む 1 つの Sid
ブロックが含まれます。ポリシー 2 には追加のアクションが含まれていますが、これらのアクションは影響を受けません。
例 3: ポリシーが類似していると見なされない場合
どちらのポリシーにも、影響を受ける同じ Action
を含む 1 つの Sid
ブロックが含まれます。ただし、Policy 2 には Policy 1 に存在しない Condition
要素が含まれています。
例 4: ポリシーが類似していると見なされる場合
Policy 1 には、影響を受ける Sid
を含む 1 つの Action
ブロックがあります。Policy 2 には複数の Sid
ブロックがありますが、影響を受ける Action
は 1 つのブロックにしかありません。
例 5: ポリシーが類似していると見なされない場合
Policy 1 には、影響を受ける Sid
を含む 1 つの Action
ブロックがあります。Policy 2 には複数の Sid
ブロックがあり、影響を受ける Action
は複数のブロックにあります。
例 6: ポリシーが類似していると見なされる場合
どちらのポリシーにも複数の Sid
ブロックがあり、各 Sid
ブロックに影響を受ける同じ Action
があります。
例 7
次の 2 つのポリシーは、類似していると見なされません。
Policy 1 には、影響を受ける Sid
を含む 1 つの Action
ブロックがあります。Policy 2 には、影響を受ける同じ Action
を含む 1 つの Sid
ブロックがあります。ただし、Policy 2 にはアクションが異なる別の Sid
ブロックも含まれます。