

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# `AWSSupport-ContainIAMPrincipal`
<a name="awssupport-contain-iam-principal"></a>

 **説明** 

セキュリティインシデントが発生した場合、または AWS Identity and Access Management (IAM) ユーザー/ロールまたは AWS アイデンティティセンター (IDC) ユーザーの侵害が疑われる場合は、調査のために設定を保持しながら、影響を受ける ID を迅速に分離することが重要です。`AWSSupport-ContainIAMPrincipal` ランブックは、侵害された IAM または IDC ID を含めるための構造化された可逆的なアプローチを提供し、 AWS リソースへのアクセスを効果的にブロックし、侵害の拡散を防止します。

この自動化されたプロセスにより、アイデンティティの設定を永続的に変更することなく調査が可能になり、適切であると判断された場合に通常のアクセスを復元できます。封じ込めプロセスは、IAM 内のユーザーまたはロール、または IDC 内のユーザーを維持し、すべてのネットワークアクティビティから効果的に分離します。この分離により、含まれている ID リソースが Amazon Virtual Private Cloud 内のリソースと通信したり、インターネットリソースにアクセスしたりできなくなります。封じ込めは元に戻すように設計されており、適切であると判断された場合は通常のアクセスを復元できます。

 **動作の仕組み** 

`AWSSupport-ContainIAMPrincipal` ランブックは、IAM ユーザー、ロール、および Identity Center ユーザー向けの包括的な封じ込めプロセスを実装します。`Contain` モードで実行すると、まずすべての入力パラメータを検証し、指定された Amazon S3 バケットでセキュリティチェックを実行します。次に、ターゲット IAM プリンシパルに関する詳細情報を収集し、プリンシパルタイプに基づいて適切な封じ込め対策を適用します。IAM ユーザーの場合、アクセスキーを無効にし、コンソールアクセスを削除して、拒否ポリシーをアタッチします。IAM ロールの場合、封じ込め前に作成されたセッションのアクセス許可を取り消す拒否ポリシーがアタッチされます。Identity Center ユーザーの場合、アクセス許可セット、グループメンバーシップを削除し、拒否ポリシーを適用します。このプロセス全体を通して、ランブックは元の設定を Amazon S3 バケットにバックアップし、復元の可能性に備えます。`Restore` モードで実行すると、バックアップされた設定を使用してプリンシパルをコンテナ前の状態に戻そうとします。ランブックには、変更を適用せずにプレビューする`DryRun`オプションが含まれており、成功したオペレーションシナリオと失敗シナリオの両方に関する包括的なレポートを提供します。

**重要**  
**昇格された権限の使用:** この SSM ドキュメントは、IAM および IDC ID ポリシーの変更や隔離設定の適用など、昇格された権限を必要とするさまざまなオペレーションを実行します。これらのアクションは、特権のエスカレーションや、ターゲット ID に依存する他のワークロードに影響を与える可能性があります。`AutomationAssumeRole` パラメータで指定されたロールに付与されたアクセス許可を確認し、それらが意図したユースケースに適していることを確認する必要があります。IAM アクセス許可の詳細については、次の AWS ドキュメントを参照してください。  
[Identity and Access Management (IAM) のアクセス許可](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_permissions.html)
[AWS Systems Manager Automation のアクセス許可](https://docs.aws.amazon.com/systems-manager/latest/userguide/automation-permissions.html)
**ワークロードの可用性低下のリスク:** この Systems Manager ドキュメントは、ワークロードの可用性の低下や中断を引き起こす可能性のある分離アクションを実行します。セキュリティイベント中に実行されると、指定された IAM および IDC ID から AWS API アクセス許可を取り消すことで、影響を受けるリソースへのアクセスが制限され、API コールやアクションが行われ AWS なくなります。これは、これらの ID に依存するアプリケーションまたはサービスに影響を与える可能性があります。
**追加リソースの作成:** オートメーションドキュメントは、実行パラメータに応じて、Amazon Simple Storage Service (Amazon S3) バケットやそこに保存されている Amazon S3 オブジェクトなどの追加リソースを条件付きで作成することがあります。これらのリソースには、 AWS 使用量に基づいて追加料金が発生します。
**復元リスク:** *Action* パラメータが に設定されている場合`Restore`、この SSM ドキュメントは IAM または IDC ID 設定を元の状態に復元しようとします。ただし、復元プロセスが失敗し、IAM または IDC アイデンティティが一貫性のない状態になるリスクがあります。ドキュメントには、このような障害が発生した場合の手動復元の手順が記載されていますが、復元プロセス中に発生する可能性のある問題に対処する準備を整えておく必要があります。
本番環境で実行する前に、ランブックを徹底的に確認し、その潜在的な影響を理解し、非本番環境でテストすることをお勧めします。

 [このオートメーションを実行する (コンソール)](https://console.aws.amazon.com/systems-manager/automation/execute/AWSSupport-ContainIAMPrincipal) 

**ドキュメントタイプ**

オートメーション

**[所有者]**

Amazon

**[Platforms]** (プラットフォーム)

/

 **必要な IAM アクセス許可** 

ランブックを正常に使用するには、 `AutomationAssumeRole`パラメータに次のアクセス許可が必要です。
+ s3:GetBucketLocation
+ s3:GetBucket
+ s3:ListBucket
+ s3:GetBucketPublicAccessBlocks
+ s3:GetAccountPublicAccessBlocks
+ s3:GetBucketPolicyStatus
+ s3:GetBucketAcl
+ s3:GetObject
+ s3:CreateBucket
+ s3:PutObject
+ iam:GetUser
+ iam:GetUserPolicy
+ iam:GetRole
+ iam:ListUserPolicies
+ iam:ListAttachedUserPolicies
+ iam:ListAccessKeys
+ iam:ListMfaDevices
+ iam:ListVirtualMFADevices
+ iam:GetLoginProfile
+ iam:GetPolicy
+ iam:GetRolePolicy
+ iam:ListPolicies
+ iam:ListAttachedRolePolicies
+ iam:ListRolePolicies
+ iam:UpdateAccessKey
+ iam:CreateAccessKey
+ iam:DeleteLoginProfile
+ iam:DeleteAccessKey
+ iam:PutUserPolicy
+ iam:DeleteUserPolicy
+ iam:DeactivateMFADevice
+ iam:AttachRolePolicy
+ iam:AttachUserPolicy
+ iam:DeleteRolePolicy
+ iam:TagMFADevice
+ iam:PutRolePolicy
+ iam:TagPolicy
+ iam:TagRole
+ iam:TagUser
+ iam:UntagUser
+ iam:UntagRole
+ organizations:ListAccounts
+ sso:ListPermissionSetsProvisionedToAccount
+ sso:GetInlinePolicyForPermissionSet
+ sso:ListInstances
+ sso-directory:SearchUsers
+ sso:ListPermissionSets
+ sso:ListAccountAssignments
+ sso-directory:DescribeUser
+ identitystore:ListUsers
+ identitystore:ListGroups
+ identitystore:IsMemberInGroups
+ identitystore:ListGroupMemberships
+ secretsmanager:CreateSecret
+ secretsmanager:DeleteSecret
+ sso:DeleteAccountAssignment
+ sso:PutInlinePolicyToPermissionSet
+ sso:CreateAccountAssignment
+ sso:DeleteInlinePolicyFromPermissionSet
+ sso:TagResource
+ sso:UntagResource
+ identitystore:DeleteGroupMembership
+ identitystore:CreateGroupMembership

 に必要なアクセス許可を付与する IAM ポリシーの例を次に示します`AutomationAssumeRole`。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "S3Permissions",
            "Effect": "Allow",
            "Action": [
                "s3:GetBucketLocation",
                "s3:ListBucket",
                "s3:GetBucketPublicAccessBlock",
                "s3:GetBucketPolicyStatus",
                "s3:GetBucketAcl",
                "s3:GetObject",
                "s3:CreateBucket",
                "s3:PutObject"
            ],
            "Resource": "*"
        },
        {
            "Sid": "IAMPermissions",
            "Effect": "Allow",
            "Action": [
                "iam:GetUser",
                "iam:GetUserPolicy",
                "iam:GetRole",
                "iam:ListUserPolicies",
                "iam:ListAttachedUserPolicies",
                "iam:ListAccessKeys",
                "iam:ListMfaDevices",
                "iam:ListVirtualMFADevices",
                "iam:GetLoginProfile",
                "iam:GetPolicy",
                "iam:GetRolePolicy",
                "iam:ListPolicies",
                "iam:ListAttachedRolePolicies",
                "iam:ListRolePolicies",
                "iam:UpdateAccessKey",
                "iam:CreateAccessKey",
                "iam:DeleteLoginProfile",
                "iam:DeleteAccessKey",
                "iam:PutUserPolicy",
                "iam:DeleteUserPolicy",
                "iam:DeactivateMFADevice",
                "iam:AttachRolePolicy",
                "iam:AttachUserPolicy",
                "iam:DeleteRolePolicy",
                "iam:TagMFADevice",
                "iam:PutRolePolicy",
                "iam:TagPolicy",
                "iam:TagRole",
                "iam:TagUser",
                "iam:UntagUser",
                "iam:UntagRole"
            ],
            "Resource": "*"
        },
        {
            "Sid": "OrganizationsPermissions",
            "Effect": "Allow",
            "Action": [
                "organizations:ListAccounts"
            ],
            "Resource": "*"
        },
        {
            "Sid": "SSOPermissions",
            "Effect": "Allow",
            "Action": [
                "sso:ListPermissionSetsProvisionedToAccount",
                "sso:GetInlinePolicyForPermissionSet",
                "sso:ListInstances",
                "sso-directory:SearchUsers",
                "sso:ListPermissionSets",
                "sso:ListAccountAssignments",
                "sso-directory:DescribeUser",
                "sso:DeleteAccountAssignment",
                "sso:PutInlinePolicyToPermissionSet",
                "sso:CreateAccountAssignment",
                "sso:DeleteInlinePolicyFromPermissionSet",
                "sso:TagResource",
                "sso:UntagResource"
            ],
            "Resource": "*"
        },
        {
            "Sid": "IdentityStorePermissions",
            "Effect": "Allow",
            "Action": [
                "identitystore:ListUsers",
                "identitystore:ListGroups",
                "identitystore:IsMemberInGroups",
                "identitystore:ListGroupMemberships",
                "identitystore:DeleteGroupMembership",
                "identitystore:CreateGroupMembership"
            ],
            "Resource": "*"
        },
        {
            "Sid": "SecretsManagerPermissions",
            "Effect": "Allow",
            "Action": [
                "secretsmanager:CreateSecret",
                "secretsmanager:DeleteSecret"
            ],
            "Resource": "*"
        }
    ]
}
```

------

 **指示** 

次の手順に従って自動化を設定します。

1.  AWS Systems Manager コンソールで [AWSSupport-ContainIAMPrincipal](https://console.aws.amazon.com/systems-manager/documents/AWSSupport-ContainIAMPrincipal/description) に移動します。

1. [**Execute automation**] (オートメーションを実行) を選択します。

1. 入力パラメータには、次のように入力します。
   + **AutomationAssumeRole（オプション):**
     + 説明: (オプション) Systems Manager Automation がユーザーに代わってアクションを実行できるようにする AWS Identity and Access Management (IAM) ロールの Amazon リソースネーム (ARN)。ロールが指定されていない場合、Systems Manager Automation は、このランブックを開始するユーザーのアクセス許可を使用します。
     + 型: `AWS::IAM::Role::Arn`
   + **PrincipalType (必須):**
     + 説明: (必須) IAM AWS プリンシパルタイプ: IAM ユーザー、IAM ロール、または Identity Center ユーザー。
     + タイプ: 文字列
     + 使用できる値: `IAM user|IAM role|Identity Center user`
   + **PrincipalName (必須):**
     + 説明: (必須) IAM プリンシパルの名前。Identity Center ユーザーの場合は、ユーザー名を入力します。
     + タイプ: 文字列
     + 許可されたパターン: `^[a-zA-Z0-9\\.\\-_\\\\!*'()/+=,@]{1,1024}$`
   + **アクション (必須):**
     + 説明: (必須) ターゲット IAM プリンシパルを`Contain`分離`Restore`するか、IAM プリンシパルを以前のバックアップから元の設定に復元しようとします。
     + タイプ: 文字列
     + 使用できる値: `Contain|Restore`
   + **DryRun (オプション):**
     + 説明: (オプション) に設定すると`true`、オートメーションはターゲット IAM プリンシパルに変更を加えません。代わりに、変更を試みた内容が出力され、各ステップの詳細が表示されます。デフォルト値: `true`。
     + タイプ: ブール値
     + 使用できる値: `true|false`
   + **ActivateDisabledKeys (条件付き):**
     + 説明: (条件付き) 入力パラメータ Action が に設定`Restore`され、PrincipalType が IAM ユーザーに設定されている場合、このオプションは、このオートメーションが非アクティブ化された場合に関連付けられたアクセスキーをアクティブ化しようとするかどうかを決定します。侵害されたアクセスキーの整合性は検証できないことに注意してください。 AWS では、侵害されたキーを再アクティブ化することを強くお勧めします。代わりに、新しいキーを生成することをお勧めします。デフォルト値: `false`。
     + タイプ: ブール値
     + 使用できる値: `true|false`
   + **BackupS3BucketName (条件付き):**
     + 説明: (条件付き) アクションが に設定されているときに IAM プリンシパル設定をバックアップする Amazon S3 バケット、`Contain`またはアクションが に設定されているときに から設定を復元する Amazon S3 バケット`Restore`。指定されたアクションが `Contain`で、ランブックがバケットにアクセスできない場合、または値が指定されていない場合、アカウントに という名前の新しいバケットが作成されます`awssupport-containiamprincipal-<random-string>`。DryRun が に設定されている場合、`true`このパラメータは必須です。
     + 型: `AWS::S3::Bucket::Name`
   + **BackupS3KeyName (条件付き):**
     + 説明: (条件付き) Action が に設定されている場合`Restore`、オートメーションが IAM プリンシパル設定の復元を試みるために使用する Amazon S3 キーを指定します。Amazon S3 キーは通常、 の形式に従います`{year}/{month}/{day}/{hour}/{minute}/{automation_execution_id}.json`。キーは、前の封じ込め自動化実行の出力から取得できます。
     + タイプ: 文字列
     + 許可されたパターン: `^[a-zA-Z0-9\\.\\-_\\\\!*'()/]{0,1024}$`
   + **BackupS3BucketAccess (条件付き):**
     + 説明: (条件付き) 封じ込めアクションを実行した後にバックアップ Amazon S3 バケットへのアクセスを許可する IAM ユーザーまたはロールの ARN。このパラメータは、アクションが の場合に必要です`Contain`。AutomationAssumeRole、または自動化が実行されているコンテキストのユーザーが存在しない場合は、自動的にリストに追加されます。
     + タイプ: StringList
     + 許可されたパターン: `^$|^arn:(aws|aws-cn|aws-us-gov|aws-iso(-[a-z])?):iam::[0-9]{12}:(role|user)\\/[\\w+\\/=,.@-]+$`
   + **TagIdentifier (オプション):**
     + 説明: (オプション) 次の形式を使用して、IAM プリンシパルに任意のタグを付けます。 `Key=<EXAMPLE_KEY>,Value=<EXAMPLE_VALUE>`このオプションを使用すると、このランブックの対象となる IAM プリンシパルを追跡できます。**注:** タグキーと値は大文字と小文字が区別されます。
     + タイプ: 文字列
     + 許可されたパターン: `^$|^[Kk][Ee][Yy]=[\\+\\-\\=\\.\\_\\:\\/@a-zA-Z0-9]{1,128},[Vv][Aa][Ll][Uu][Ee]=[\\+\\-\\=\\.\\_\\:\\/@a-zA-Z0-9]{0,128}$`

1. [実行] を選択します。

1. 自動化が開始されます。

1. ドキュメントは以下のステップを実行します。
   + **ValidateRequiredInputs**

     `Action` 指定された に基づいて、必要なオートメーション入力パラメータを検証します。
   + **CheckBackupS3BucketName**

     ターゲット Amazon S3 バケットがオブジェクトへの`write`パブリックアクセスを許可`read`している可能性があるかどうかを確認します。封じ込めワークフローの場合、バケットが存在しない場合、新しい Amazon S3 `BackupS3BucketName`バケットが作成されます。
   + **BranchOnAction**

     指定された の値に基づいてオートメーションを分岐します`Action`。
   + **BranchOnPrincipalTypeAndDryRun**

     IAM プリンシパルのタイプ (IAM ユーザー、IAM ロール、または Identity Center ユーザー) と、 `DryRun` モードで実行されているかどうかに基づいてオートメーションを分岐します。
   + **BranchOnPrincipalTypeForContain**

     `Contain` アクションベースのオートメーションと、入力で指定された IAM プリンシパルタイプ (IAM ユーザー、IAM ロール、または Identity Center ユーザー) を分岐します。
   + **GetIAMUser**

     ターゲット IAM ユーザーの作成時刻とユーザー名を取得します。
   + **GetIAMUserDetails**

     インラインポリシー、 管理ポリシー、アクセスキー、MFA デバイス、ログインプロファイルなど、ターゲット IAM ユーザーの設定を取得して保存します。
   + **UpdateS3KeyForUser**

     ステップ の出力からオートメーション 'S3Key' 変数を更新します`GetIAMUserDetails`。
   + **GetIAMRole**

     ターゲット IAM ロールの作成時刻、ロール名、パスを取得します。
   + **GetIAMRoleDetails**

     ロールにアタッチされたインラインポリシーや管理ポリシーなど、ターゲット IAM ロールの設定を取得して保存します。
   + **UpdateS3KeyForRole**

     ステップ の出力からオートメーション 'S3Key' 変数を更新します`GetIAMRoleDetails`。
   + **GetIdentityStoreId**

      AWS アカウントに関連付けられた AWS IAM Identity Center インスタンスの ID を取得します。
   + **GetIDCUser**

     Identity Store ID を使用して、ターゲット Identity Center ユーザーのユーザー ID を取得します。
   + **GatherIDCUserDetails**

     アカウント割り当て、関連するアクセス許可セット、インラインポリシーなど、ターゲット Identity Center ユーザーの設定を取得して保存します。
   + **UpdateS3KeyForIDCUser**

     ステップ の出力からオートメーション 'S3Key' 変数を更新します`GatherIDCUserDetails`。
   + **BranchOnIdentityContain**

     アクションの値`DryRun`と IAM プリンシパルタイプに基づいてオートメーションを分岐します`Contain`。
   + **BranchOnDisableAccessKeys**

     IAM ユーザーが無効化する必要があるアクセスキーを持っているかどうかに基づいて自動化を分岐します。
   + **DisableAccessKeys**

     アクティブな IAM ユーザーアクセスキーを無効にします。
   + **BranchOnDisableConsoleAccess**

     IAM ユーザーが AWS マネジメントコンソールへのアクセスを有効にしているかどうかに基づいて分岐します。
   + **DisableConsoleAccess**

     IAM ユーザーの AWS マネジメントコンソールへのパスワードベースのアクセスを削除します。
   + **AttachInlineDenyPolicyToUser**

     古いセッショントークンのアクセス許可を取り消す拒否ポリシーを IAM ユーザーにアタッチします。
   + **AttachInlineDenyPolicyToRole**

     古いセッショントークンのアクセス許可を取り消す拒否ポリシーを IAM ロールにアタッチします。
   + **RemovePermissionSets**

     Identity Center ユーザーに関連付けられたアクセス許可セットを削除します。
   + **RemoveIDCUserFromIDCGroups**

     Identity Center グループから Identity Center ユーザーを削除します。
   + **AttachInlineDenyPolicyToPermissionSet**

     Identity Center ユーザーに関連付けられたアクセス許可セットに拒否ポリシーをアタッチします。
   + **BranchOnReactivateKeys**

     復元プロセス中に `ActivateDisabledKeys`パラメータに基づいてオートメーションを分岐します。
   + **DetachInlineDenyPolicy**

     封じ込めプロセス中に IAM ロールにアタッチされた拒否ポリシーを削除します。
   + **DetachInlineDenyPolicyFromPermissionSet**

     封じ込めプロセス中にアクセス許可セットにアタッチされた拒否ポリシーを削除します。
   + **ReportContain**

     `DryRun` が に設定されている場合に実行される封じ込めアクションに関する詳細情報を出力します`True`。
   + **ReportRestore**

     `DryRun` が に設定されている場合に実行される復元アクションに関する詳細情報を出力します`True`。
   + **ReportContainFailure**

     封じ込めワークフローの失敗シナリオ中に IAM プリンシパルの元の設定を手動で復元する包括的な手順について説明します。
   + **ReportRestoreFailure**

     復元ワークフローの失敗シナリオ中に IAM プリンシパルの元の設定の復元を手動で完了する詳細な手順を示します。

1. 実行が完了したら、出力セクションで実行の詳細な結果を確認します。
   + **ContainIAMPrincipal.Output**

     Action が Contain に設定され、DryRun が False に設定されている場合に実行される封じ込めアクションに関する詳細情報を提供します。バックアップの場所、適用された拒否ポリシー、および変更された設定に関する情報が含まれます。
   + **RestoreIAMPrincipal.Output**

     Action が Restore に設定され、DryRun が False に設定されている場合に実行される復元アクションに関する詳細情報を提供します。復元された設定と復元中に発生した問題に関する情報が含まれます。
   + **ReportContain.Output**

     Action が Contain に設定され、DryRun が True に設定されている場合に実行される封じ込めアクションに関する詳細情報を出力します。現在の設定と封じ込め後の設定の比較が含まれます。
   + **ReportRestore.Output**

     Action が Restore に設定され、DryRun が True に設定されている場合に実行される復元アクションに関する詳細情報を出力します。復元される現在の設定と元の設定を表示します。
   + **ReportContainFailure.Output**

     封じ込めワークフローの失敗シナリオ中に IAM プリンシパルの元の設定を手動で復元する包括的な手順について説明します。
   + **ReportRestoreFailure.Output**

     復元ワークフローの失敗シナリオ中に IAM プリンシパルの元の設定の復元を手動で完了する詳細な手順を示します。

 **[出力] ** 

実行が完了したら、出力セクションで詳細な結果を確認します。
+ **ContainIAMPrincipal.Output**

  Action が Contain に設定され、DryRun が False に設定されている場合に実行される封じ込めアクションに関する詳細情報を提供します。バックアップの場所、適用された拒否ポリシー、および変更された設定に関する情報が含まれます。
+ **RestoreIAMPrincipal.Output**

  Action が Restore に設定され、DryRun が False に設定されている場合に実行される復元アクションに関する詳細情報を提供します。復元された設定と復元中に発生した問題に関する情報が含まれます。
+ **ReportContain.Output**

  Action が Contain に設定され、DryRun が True に設定されている場合に実行される封じ込めアクションに関する詳細情報を出力します。現在の設定と封じ込め後の設定の比較が含まれます。
+ **ReportRestore.Output**

  Action が Restore に設定され、DryRun が True に設定されている場合に実行される復元アクションに関する詳細情報を出力します。復元される現在の設定と元の設定を表示します。
+ **ReportContainFailure.Output**

  封じ込めワークフローの失敗シナリオ中に IAM プリンシパルの元の設定を手動で復元する包括的な手順について説明します。
+ **ReportRestoreFailure.Output**

  復元ワークフローの失敗シナリオ中に IAM プリンシパルの元の設定の復元を手動で完了する詳細な手順を示します。

 **リファレンス** 

Systems Manager Automation
+ [このオートメーションを実行する (コンソール)](https://console.aws.amazon.com/systems-manager/automation/execute/AWSSupport-ContainIAMPrincipal)
+ [シンプルなオートメーションワークフローを実行する](https://docs.aws.amazon.com//systems-manager/latest/userguide/automation-working-executing.html)
+ [自動化のセットアップ](https://docs.aws.amazon.com//systems-manager/latest/userguide/automation-setup.html)
+ [オートメーションワークフローのサポート](https://aws.amazon.com/premiumsupport/technology/saw/)