翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
スクリプトを使用してポリシーを一括移行し、きめ細かなIAMアクションを使用する
注記
以下のようになります AWS Identity and Access Management (IAM) アクションは、2023 年 7 月に標準サポートが終了しました。
-
aws-portal
名前空間 -
purchase-orders:ViewPurchaseOrders
-
purchase-orders:ModifyPurchaseOrders
を使用している場合 AWS Organizationsでは、一括ポリシー移行スクリプトまたは一括ポリシー移行を使用して、支払者アカウントからポリシーを更新できます。古いアクションから詳細なアクションマッピングリファレンスを使用して、追加する必要があるIAMアクションを確認することもできます。
をお持ちの場合 AWS アカウント、、または は の一部です。 AWS Organizations 2023 年 3 月 6 日午前 11:00 (PDT) 以降に作成された詳細なアクションは、組織で既に有効になっています。
きめ細かなアクションと呼ばれる新しいアクションを使用するようにIAMポリシーを移行するには、 のスクリプトを使用できます。 AWS
サンプル
組織の支払者アカウントからこれらのスクリプトを実行して、古いIAMアクションを使用する組織内の以下の影響を受けるポリシーを特定します。
-
カスタマー管理IAMポリシー
-
ロール、グループ、およびユーザーのIAMインラインポリシー
-
サービスコントロールポリシー (SCPs) (支払者アカウントのみに適用)
-
許可セット
スクリプトは、ポリシーで使用されている既存のアクションに対応する の新しいアクションの提案を生成します。提案を確認し、スクリプトを使用して組織内の影響を受けるすべてのポリシーに新しいアクションを追加します。更新する必要はありません AWS マネージドポリシーまたは AWS マネージド SCPs (例: AWS Control Tower また、 AWS Organizations SCPs).
これらのスクリプトは以下の目的で使用します。
-
ポリシーの更新が効率化され、影響を受けるポリシーを支払いアカウントから簡単に管理できます。
-
ポリシーの更新に必要な時間が短縮されます。各メンバーアカウントにサインインしてポリシーを手動で更新する必要はありません。
-
複数の異なるメンバーアカウントの同一のポリシーをグループにまとめることができます。その場合、1 つずつ確認しなくても、すべての同じポリシーで同じ更新を確認することや適用することができます。
-
の後にユーザーアクセスが影響を受けないようにする AWS は、2023 年 7 月 6 日に古いIAMアクションを廃止します。
ポリシーとサービスコントロールポリシー (SCPs) の詳細については、以下のトピックを参照してください。
-
IAM ユーザーガイドのIAMポリシーの管理
-
のサービスコントロールポリシー (SCPs) AWS Organizations ユーザーガイド
-
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
サンプル
使用する環境をセットアップするには
-
からリポジトリのクローンを作成する AWS サンプル
ウェブサイト。コマンドラインウィンドウで、次のコマンドを実行できます。 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
– 古いアクションと新しいアクションの one-to-many マッピングが含まれます。スクリプトはこのファイルを使用して、古いアクションを含み、影響を受ける各ポリシーの新しいアクションを提案します。それぞれの古いアクションは、複数の詳細なアクションに対応しています。ファイルで提案された新しいアクションにより、ユーザーは同じ にアクセスできます。 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 を使用するための 認証情報 AWS Command Line Interface (AWS CLI)。 詳細については、「」を参照してください。 AWS SDK for Python (Boto3)
.
詳細については、README「.md
ステップ 2: を作成する CloudFormation StackSet
CloudFormation スタックセット を作成するには、次の手順に従います。このスタックセットは、組織内のすべてのメンバーアカウントのBillingConsolePolicyMigratorRole
IAMロールを作成します。
注記
このステップを完了する必要があるのは、管理アカウント (支払いアカウント) から 1 回だけです。
を作成するには CloudFormation StackSet
-
テキストエディタで
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"
メモ
各メンバーアカウントについて、スクリプトは AssumeRoleAPIオペレーションを呼び出して、
BillingConsolePolicyMigratorRole
IAMロールを引き受けるための一時的な認証情報を取得します。スクリプトは ListAccountsAPIオペレーションを呼び出して、すべてのメンバーアカウントを取得します。
また、スクリプトは IAMAPIオペレーションを呼び出して、ポリシーに対する読み取りおよび書き込みのアクセス許可を実行します。
ステップ 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
注記
このスクリプトで組織単位 (OUs) を指定することはできません。
スクリプトを実行すると、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
ブロックに関する情報を提供します。このセクションでは、、、、Effect
、 などの古いアクションPrincipal
NotPrincipal
NotAction
とIAM要素について説明します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ブロックを作成します。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
ファイル内の影響を受けるポリシーを推奨される新しいアクションで更新します。スクリプトは、 として識別される Sid
ブロックをポリシーに追加します。ここでBillingConsolePolicyMigrator
、#
#
は増分カウンター (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
ブロックも含まれます。