

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

# `AWSSupport-ContainS3Resource`
<a name="automation-awssupport-contains3resource"></a>

 **説明** 

 `AWSSupport-ContainS3Resource` ランブックは、記事[「Support Automation Workflow (SAW) Runbook: Contain a compromised AWS Amazon S3 Bucket」で説明されている手順の自動化ソリューションを提供します。](https://repost.aws/articles/ARhGc0hDqKRIKAVCbmF1GmuQ)

**重要**  
このランブックは、Amazon S3 バケットポリシー、タグ、パブリックアクセス設定の変更など、昇格された権限を必要とするさまざまなオペレーションを実行します。これらのアクションは、特権のエスカレーションや、ターゲットの Amazon S3 バケットに依存する他のワークロードに影響を与える可能性があります。`AutomationAssumeRole` パラメータで指定されたロールに付与されたアクセス許可を確認し、それらが意図したユースケースに適していることを確認する必要があります。IAM アクセス許可の詳細については、次の AWS ドキュメントを参照してください: [https://docs.aws.amazon.com//IAM/latest/UserGuide/access_controlling.html](https://docs.aws.amazon.com//IAM/latest/UserGuide/access_controlling.html) [https://docs.aws.amazon.com//systems-manager/latest/userguide/automation-setup-iam.html](https://docs.aws.amazon.com//systems-manager/latest/userguide/automation-setup-iam.html)。
このランブックは、ワークロードの可用性の低下や中断を引き起こす可能性のある変更アクションを実行します。具体的には、 `Contain` アクションは、 `SecureRoles`パラメータで指定されたロールを除き、指定された Amazon S3 バケットへのすべてのアクセスをブロックします。これは、ターゲットの Amazon S3 バケットに依存するアプリケーションまたはサービスに影響を与える可能性があります。
`Contain` アクション中に、このランブックは追加の Amazon S3 バケット ( `BackupS3BucketName`パラメータで指定) を作成し、元のバケットの設定のバックアップがまだ存在しない場合は保存することがあります。
`Action` パラメータが に設定されている場合`Restore`、このランブックはバケットに保存されているバックアップに基づいて Amazon S3 バケットの設定を元の状態に復元しようとします`BackupS3BucketName`。ただし、復元プロセスが失敗し、Amazon S3 バケットが整合性のない状態になるリスクがあります。ランブックには、このような障害が発生した場合の手動復元の手順が記載されていますが、復元プロセス中に発生する可能性のある問題に対処する準備を整えておく必要があります。
本番環境で実行する前に、ランブックを徹底的に確認し、その潜在的な影響を理解し、非本番環境でテストすることをお勧めします。

 **動作の仕組み** 

このランブックは、リソースタイプとアクションに基づいて動作が異なります。
+ Amazon S3 汎用バケット`Containment`の場合: オートメーションは、バケットへのパブリックアクセスをブロックし、ACL 設定を無効にし、バケット所有者オブジェクトの所有権を強制し、リストされた許可 IAM ロールを除くすべての Amazon S3 アクションを拒否する制限付きバケットポリシーをバケットに配置します。
+ Amazon S3 汎用オブジェクト の場合`Containment`: オートメーションは、バケットへのパブリックアクセスをブロックし、ACL 設定を無効にし、バケット所有者オブジェクトの所有権を強制し、リストされた許可 IAM ロールを除くすべての Amazon S3 アクションを拒否する制限付きバケットポリシーをオブジェクトに配置します。
+ Amazon S3 Directory Bucket の場合`Containment`: オートメーションは、リストされた許可 IAM ロールを除くすべての Amazon S3 アクションを拒否する制限付きバケットポリシーをバケットに配置します。
+ Amazon S3 汎用バケットの場合`Restore`: 自動化は、ブロックパブリックアクセス設定、バケット ACL 設定、バケット所有者オブジェクトの所有権、バケットポリシーを、封じ込め前の初期設定に復元します。
+ Amazon S3 汎用オブジェクト の場合`Restore`: 自動化は、ブロックパブリックアクセス設定、バケット ACL 設定、オブジェクト ACL 設定、バケット所有者オブジェクトの所有権、バケットポリシーを格納前の初期設定に復元します。
+ Amazon S3 Directory Bucket の場合`Restore`: 自動化は、格納前にバケットポリシーを初期設定に復元します。

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

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

 オートメーション 

 **[所有者]** 

 Amazon 

 **プラットフォーム** 

 / 

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

 `AutomationAssumeRole` パラメータでは、ランブックを正常に使用するために、次のアクションが必要です。
+ s3:CreateBucket
+ s3:DeleteBucketPolicy
+ s3:DeleteObjectTagging
+ s3:GetAccountPublicAccessBlock
+ s3:GetBucketAcl
+ s3:GetBucketLocation
+ s3:GetBucketOwnershipControls
+ s3:GetBucketPolicy
+ s3:GetBucketPolicyStatus
+ s3:GetBucketTagging
+ s3:GetEncryptionConfiguration
+ s3:GetObject
+ s3:GetObjectAcl
+ s3:GetObjectTagging
+ s3:GetReplicationConfiguration
+ s3:ListBucket
+ s3:PutAccountPublicAccessBlock
+ s3:PutBucketACL
+ s3:PutBucketOwnershipControls
+ s3:PutBucketPolicy
+ s3:PutBucketPublicAccessBlock
+ s3:PutBucketTagging
+ s3:PutBucketVersioning
+ s3:PutObject
+ s3:PutObjectAcl
+ s3express:CreateSession
+ s3express:DeleteBucketPolicy
+ s3express:GetBucketPolicy
+ s3express:PutBucketPolicy
+ ssm:DescribeAutomationExecutions

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

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "S3Permissions",
            "Effect": "Allow",
            "Action": [
                "s3:CreateBucket",
                "s3:DeleteBucketPolicy",
                "s3:DeleteObjectTagging",
                "s3:GetAccountPublicAccessBlock",
                "s3:GetBucketAcl",
                "s3:GetBucketLocation",
                "s3:GetBucketOwnershipControls",
                "s3:GetBucketPolicy",
                "s3:GetBucketPolicyStatus",
                "s3:GetBucketTagging",
                "s3:GetEncryptionConfiguration",
                "s3:GetObject",
                "s3:GetObjectAcl",
                "s3:GetObjectTagging",
                "s3:GetReplicationConfiguration",
                "s3:ListBucket",
                "s3:PutAccountPublicAccessBlock",
                "s3:PutBucketACL",
                "s3:PutBucketOwnershipControls",
                "s3:PutBucketPolicy",
                "s3:PutBucketPublicAccessBlock",
                "s3:PutBucketTagging",
                "s3:PutBucketVersioning",
                "s3:PutObject",
                "s3:PutObjectAcl"
            ],
            "Resource": "*"
        },
        {
            "Sid": "S3ExpressPermissions",
            "Effect": "Allow",
            "Action": [
                "s3express:CreateSession",
                "s3express:DeleteBucketPolicy",
                "s3express:GetBucketPolicy",
                "s3express:PutBucketPolicy"
            ],
            "Resource": "*"
        },
        {
            "Sid": "SSMPermissions",
            "Effect": "Allow",
            "Action": [
                "ssm:DescribeAutomationExecutions"
            ],
            "Resource": "*"
        }
    ]
}
```

------

 **指示** 

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

1. ドキュメントの Systems Manager [https://console.aws.amazon.com/systems-manager/documents/AWSSupport-ContainS3Resource/description](https://console.aws.amazon.com/systems-manager/documents/AWSSupport-ContainS3Resource/description)で に移動します。

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

1. 入力パラメータには、次のように入力します。
   + **BucketName (必須):**
     + 説明: (必須) Amazon S3 バケットの名前。
     + 型: `AWS::S3::Bucket::Name`
   + **アクション (必須):**
     + 説明: (必須) Amazon S3 リソースを`Contain`分離するか`Restore`、リソース設定を以前のバックアップから元の状態に復元しようとします。
     + タイプ: 文字列
     + 許可される値: `Contain|Restore`
   + **DryRun (オプション):**
     + 説明: (オプション) true に設定すると、オートメーションはターゲット Amazon S3 リソースを変更せず、変更しようとした内容を出力します。デフォルト値: true。
     + タイプ: ブール値
     + 許可される値: `true|false`
   + **BucketKeyName (オプション):**
     + 説明: (オプション) 格納または復元する Amazon S3 オブジェクトのキー。オブジェクトレベルの格納中に使用されます。
     + タイプ: 文字列
     + 許可されたパターン: `^[a-zA-Z0-9\\.\\-_\\\\!*'()/]{0,1024}$`
   + **BucketRestrictAccess (条件付き):**
     + 説明: (条件付き) 封じ込めアクションを実行した後にターゲット Amazon S3 リソースへのアクセスを許可する IAM ユーザーまたはロールの ARN。`Action` を `Contain` に設定した場合、このパラメータは必須です。
     + タイプ: StringList
     + 許可されたパターン: `^$|^arn:(aws|aws-cn|aws-us-gov|aws-iso(-[a-z])?):iam::[0-9]{12}:(role|user)\\/[\\w+\\/=,.@-]+$`
   + **TagIdentifier (オプション):**
     + 説明: (オプション) 格納ワークフロー中にこのランブックによって作成または変更されたリソースに追加される Key=BatchId,Value=78925 形式のタグ。
     + タイプ: 文字列
     + 許可されたパターン: `^$|^[Kk][Ee][Yy]=[\\+\\-\\=\\.\\_\\:\\/@a-zA-Z0-9]{1,128},[Vv][Aa][Ll][Uu][Ee]=[\\+\\-\\=\\.\\_\\:\\/@a-zA-Z0-9]{0,128}$`
   + **BackupS3BucketName (条件付き):**
     + 説明: (条件付き) が に設定されている場合にターゲットリソース設定をバックアップする Amazon S3 バケット`Action`、`Contain`または `Action`が に設定されている場合に から設定を復元する Amazon S3 バケット`Restore`。
     + 型: `AWS::S3::Bucket::Name`
   + **BackupS3KeyName (条件付き):**
     + 説明: (条件付き) `Action`が に設定されている場合`Restore`、オートメーションがターゲットリソース設定の復元を試みるために使用する Amazon S3 キーを指定します。
     + タイプ: 文字列
     + 許可されたパターン: `^[a-zA-Z0-9\\.\\-_\\\\!*'()/]{0,1024}$`

     
   + **BackupS3BucketAccess (条件付き):**
     + 説明: (条件付き) 封じ込めアクションを実行した後にバックアップ Amazon S3 バケットへのアクセスを許可する IAM ユーザーまたはロールの ARN。このパラメータは、 `Action`が の場合に必要です`Contain`。
     + タイプ: StringList
     + 許可されたパターン: `^$|^arn:(aws|aws-cn|aws-us-gov|aws-iso(-[a-z])?):iam::[0-9]{12}:(role|user)\\/[\\w+\\/=,.@-]+$`
   + **AutomationAssumeRole（オプション):**
     + 説明: (オプション) Systems Manager Automation がユーザーに代わってアクションを実行できるようにする IAM ロールの Amazon リソースネーム (ARN)。
     + 型: `AWS::IAM::Role::Arn`

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

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

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

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

     ターゲット Amazon S3 バケットが存在し、アクセス可能かどうかを確認します。
   + **backupBucketPreChecks**

     バックアップ Amazon S3 バケットがオブジェクトへのパブリック読み取りまたは書き込みアクセスを許可する可能性があるかどうかを確認します。
   + **backupTargetBucketMetadata**

     ターゲット Amazon S3 バケットの現在の設定を記述し、指定されたバックアップ Amazon S3 バケットにバックアップをアップロードします。
   + **containBucket**

     バケットレベルのオペレーションを実行して、ターゲット Amazon S3 バケットを含めます。
   + **BranchOnActionAndMode**

     入力パラメータ Action と DryRun に基づいてオートメーションを分岐します。
   + **RestoreInstanceConfiguration**

     バックアップから Amazon S3 バケット設定を復元します。
   + **containFinalOutput**

     コンテナアクティビティを読み取り可能な形式で統合します。
   + **ReportContain**

     封じ込めアクションのドライランの詳細を出力します。
   + **ReportRestore**

     復元アクションのドライランの詳細を出力します。
   + **ReportRestoreFailure**

     復元ワークフローの失敗シナリオ中に Amazon S3 バケットの元の設定を復元する手順について説明します。
   + **ReportContainmentFailure**

     封じ込めワークフローの失敗シナリオ中に Amazon S3 バケットの元の設定を復元する手順について説明します。
   + **FinalOutput**

     封じ込めアクションの詳細を出力します。

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

     が False に`DryRun`設定されている場合、このランブックによって実行される封じ込めアクションの詳細を出力します。
   + **RestoreFinalOutput.Output**

     が False に`DryRun`設定されている場合、このランブックによって実行される復元アクションの詳細を出力します。
   + **ContainS3ResourceDryRun.Output**

     が True に`DryRun`設定されている場合、このランブックによって実行される封じ込めアクションの詳細を出力します。
   + **RestoreS3ResourceDryRun.Output**

     が True に`DryRun`設定されている場合、このランブックによって実行される復元アクションの詳細を出力します。
   + **ReportContainmentFailure.Output**

     封じ込めワークフローの失敗シナリオ中に、ターゲット Amazon S3 リソースの元の設定を復元する手順について説明します。
   + **ReportRestoreFailure.Output**

     復元ワークフローの失敗シナリオ中に、ターゲット Amazon S3 リソースの元の設定を復元する手順について説明します。

**リファレンス**

Systems Manager Automation
+ [このオートメーションを実行する (コンソール)](https://console.aws.amazon.com/systems-manager/documents/AWSSupport-ContainS3Resource/description)
+ [オートメーションを実行する](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/)