Amazon Web Services ブログ
S3 Same-Region Replication によるログの集約
はじめに
ログをセキュアな専用の場所に集約することは、SIEM (セキュリティ情報イベント管理) といった極めて重要な操作を効率化します。より多くのお客様がマルチアカウント戦略を導入している中、一元的なログ記録は運用上の優秀性 (オペレーショナルエクセレンス) を推進する主要要素となっています。そのメリットを考慮して、エンタープライズのお客様はしばしば複雑なサードパーティーツールと使って一元的なログ集約ソリューションを構築します。Amazon S3 Same-Region Replication (SRR) の発表に伴い、お客様はログ集約を含めた数多くのユースケースにこの機能を使用できるようになります。S3 SRR は S3 レプリケーションの機能で、同じ AWS リージョン内にあるバケット間でデータを自動的にレプリケートします。SRR は、特定のバケットまたはプレフィックスにアップロードされた新しいオブジェクトをレプリケートするように設定できます。また、SRR は特定のタグが付けられた新しいオブジェクトを、ユーザーが選択するレプリケーション先にレプリケートすることもできます。お客様は、単一のアカウントまたは複数のアカウントによって所有されている異なる S3 バケットからのログを、今後の処理のために一元化された 1 つのバケットに集約するように SRR を使用することも可能です。
このブログ記事では、S3 SRR を使ってマルチアカウントランドスケープでホストされている VPC からの VPC フローログを収集することによって、ログ集約のデモを行っていきます。今回のセットアップでは、このチュートリアル用に 2 つの AWS アカウント (アカウント A とアカウント B) を使用しますが、シングルアカウントシナリオでのデータ集約にも同じ原則が当てはまります。このセットアップでは、VPC フローログを生成するアカウントをアカウント A、集約されたログバケットをホストするアカウントをアカウント B と呼びます。
前提条件
S3 Same-Region Replication をセットアップするためのステップバイステップガイドを掘り下げていく前に、前提条件を確認しましょう。
アカウント A の前提条件
- VPC フローログは、前もって作成された S3 バケットにログを発行するように設定できます。既存の S3 バケットを使用、または S3 バケットを作成する方法ページにある手順に従って専用バケットを作成することができます。今回の例には、「Source-bucket-for-replication」という名前の S3 バケットを使用しています。
- S3 バケットのバージョニングを有効または停止する方法ページにある手順に従って、この S3 バケットのバージョニングを有効化します。
- バケットの準備ができたら、Amazon S3 へのフローログの発行ページにある手順に従って VPC フローログを有効化します。フローログの発行先として source-bucket-for-replication を選択します。
-
- 注意: VPC フローログの有効化は、上記のバケットへのログの発行を delivery.logs.amazon.com に許可するバケットポリシーを追加します。
アカウント B の前提条件
- アカウント B に S3 バケットを作成します。この S3 バケットは、アカウント A からの VPC フローログだけでなく、アカウント B からの VPC フローログも保持する中心的なバケットです。この例では、「destination-bucket-for-replication」という名前の S3 バケットを使用しています。
- 上記の手順に従って、この S3 バケットのバージョニングを有効化します。
- 上記の手順に従って、アカウント B の VPC フローログを有効化します。フローログの発行先として destination-bucket-for-replication を選択します。
S3 Same-Region Replication セットアップ
これらの手順に従って S3 SRR をセットアップしてください。
アカウント A
1.AWS マネジメントコンソールから「source-bucket-for-replication」バケットに移動し、[アクセス権限] タブでバケットポリシーを確認します。アタッチされたバケットポリシーは、このバケットを VPC フローログの発行先としてポイントすることによるものです。
![[アクセス権限] タブでバケットポリシーを確認します](https://d2908q01vomqb2.cloudfront.net/e1822db470e60d090affd0956d743cb0e7cdf113/2020/01/06/Verify-the-bucket-policy-from-the-Permissions-tab.png)
2.[管理] タブに移動し、[レプリケーション] オプションを選択します。 [ルールの追加] を選択してレプリケーションルールを追加します。
![[管理] タブに移動して [レプリケーション] オプションを選択します](https://d2908q01vomqb2.cloudfront.net/e1822db470e60d090affd0956d743cb0e7cdf113/2020/01/06/Navigate-to-the-Management-tab-and-select-the-Replication-option.png)
3. レプリケーションルールダイアログボックスで [すべてのコンテンツ] オプションを選択し、[次へ] を選択します。[すべてのコンテンツ] オプションを選択することで、バケットにアップロードされたすべてのオブジェクトがレプリケートされます。
![レプリケーションルールダイアログボックスで [すべてのコンテンツ] オプションを選択し、[次へ] を選択します](https://d2908q01vomqb2.cloudfront.net/e1822db470e60d090affd0956d743cb0e7cdf113/2020/01/06/In-the-Replication-Rule-dialog-box-select-Entire-bucket-option-and-choose-Next..png)
注意: [プレフィックスまたはタグ] オプションを使用すると、同じプレフィックスまたは同じタグのオブジェクトをレプリケートできます。
4. 送信先バケットの下で [バケットの選択] オプションをドロップダウンし、[別のアカウントのバケット] オプションを選択します。AWS アカウント ID と送信先バケットの名前を入力して、[保存] を選択します。
![AWS アカウント ID と送信先バケットの名前を入力して [保存] を選択します](https://d2908q01vomqb2.cloudfront.net/e1822db470e60d090affd0956d743cb0e7cdf113/2020/01/06/Provide-the-AWS-Account-ID-and-the-name-of-the-destination-bucket-and-choose-Save.png)
5.バケットオブジェクトに適切な送信先 [オプション] を選択して、[次へ] を選択します。
![送信先バケットオブジェクトに対するオプションを適切に選択して [次へ] を選択します](https://d2908q01vomqb2.cloudfront.net/e1822db470e60d090affd0956d743cb0e7cdf113/2020/01/06/Select-the-options-for-destination-bucket-objects-appropriately-and-choose-Next..png)
6. [IAM ロール] には、既存のロールを選択、または「source-bucket-for-replication」バケットから「destination-bucket-for-replication」バケットにオブジェクトをレプリケートするために十分なアクセス許可を S3 に提供する IMA ロールを作成することができます。例えば、[新しいロールの作成] を選択してルール名を入力します。
![[新しいロールの作成] を選択してルール名を入力します](https://d2908q01vomqb2.cloudfront.net/e1822db470e60d090affd0956d743cb0e7cdf113/2020/01/06/Choose-create-new-role-and-provide-the-Rule-name.png)
7.[コピー] をクリックして生成されたバケットポリシーをコピーします。このバケットポリシーは、アカウント B の「destination-bucket-for-replication」バケットに追加する必要があります。[次へ] を選択します。次のページに提供される詳細情報を確認して、[保存] をクリックします。
![次のページに提供される詳細情報を確認して [保存] をクリックします](https://d2908q01vomqb2.cloudfront.net/e1822db470e60d090affd0956d743cb0e7cdf113/2020/01/06/Review-the-provided-details-on-the-next-page-and-click-Save.png)
アカウント B
1.S3 コンソールに移動して、destination-bucket-for-replication バケットを選択します。
2.[アクセス権限] タブに移動して、[バケットポリシー] を選択します。 アカウント A セットアップのステップ 5 で取得したバケットポリシーを貼り付け、[保存] を選択します。
![[アクセス権限] タブにある [バケットポリシー] に移動して、[バケットポリシー] を選択します。アカウント A セットアップのステップ 5 で取得したバケットポリシーを貼り付け、[保存] を選択します](https://d2908q01vomqb2.cloudfront.net/e1822db470e60d090affd0956d743cb0e7cdf113/2020/01/06/Navigate-to-the-Bucket-Policy-under-Permissions-tab-and-choose-Bucket-Policy.-Paste-the-bucket-policy-you-got-from-Step-5-of-the-Account-A-setup-and-choose-Save.jpg)
3.[管理] タブで [レプリケーション] を選択し、[アクション] メニューをドロップダウンします。以下にあるように、メニューから [オブジェクトの受信…] を選択します。
![[管理] タブで [レプリケーション] を選択し、[アクション] ボタンをドロップダウンします。メニューから [オブジェクトの受信] を選択します。](https://d2908q01vomqb2.cloudfront.net/e1822db470e60d090affd0956d743cb0e7cdf113/2020/01/06/Under-the-Management-tab-choose-Replication-and-drop-down-the-Actions-button.-Select-Receive-Objects-from-the-menu..png)
4.オブジェクトの受信ダイアログボックスでソースアカウントのアカウント ID を入力し、[完了] を選択します。
![オブジェクトの受信ダイアログボックスでソースアカウントのアカウント ID を入力し、[完了] を選択します。](https://d2908q01vomqb2.cloudfront.net/e1822db470e60d090affd0956d743cb0e7cdf113/2020/01/06/On-the-Receive-Objects-dialog-box-provide-the-account-ID-of-the-source-account-and-choose-Done..jpg)
5.このアクションによって「destination-bucket-for-replication」バケットのバケットポリシーが更新され、このバケットにオブジェクトをレプリケートするためのソースバケットアカウントのルートへのアクセス権が提供されます。
6.バケットの [概要] タブに移動し、このバケットにソースアカウントからのログが表示されるのを観察します。両方のアカウントからのログは、「AWSLogs」フォルダに保存されます。
![バケットの [概要] タブに移動し、このバケットにソースアカウントからのログが表示されるのを観察します。](https://d2908q01vomqb2.cloudfront.net/e1822db470e60d090affd0956d743cb0e7cdf113/2020/01/06/Navigate-to-the-bucket-Overview-tab-and-observe-the-logs-from-the-source-account-show-up-in-this-bucket..png)
AWS CLI と SDK のサポート
AWS CLI と SDK を使用して S3 レプリケーションをセットアップするには、このステップバイステップチュートリアルに従ってください。
クリーンアップ
VPC フローログと SRR の設定を削除する必要がある場合は、これらの手順に従ってください。
- アカウント A とアカウント B の両方で、有効化された VPC フローログを削除します。これは、アカウント A から VPC フローログを削除する例です。アカウント B でも同じ手順に従ってください。

- アカウント A で、SRR ルールを削除するために「source-bucket-for-replication」バケットの [管理] タブに移動します。[レプリケーション]、[rule-to-replicate-VPC-Flow-Logs] レプリケーションルールと選択して、このルールを削除します。
![[レプリケーション]、[rule-to-replicate-VPC-Flow-Logs] レプリケーションルールと選択して、このルールを削除します。](https://d2908q01vomqb2.cloudfront.net/e1822db470e60d090affd0956d743cb0e7cdf113/2020/01/06/Choose-Replication-select-the-rule-to-replicate-VPC-Flow-Logs-replication-rule-and-delete-the-rule..jpg)
- 上記の手順はルールを削除しますが、データはそのまま保持されるため、不必要な料金が生じないように、各バケットの [概要] タブに移動して、データをクリーンアップするようにしてください。
まとめ
この記事では、ログ集約のために S3 SRR を使用する方法を検討しました。お客様が同じ AWS リージョン内の S3 バケットにアップロードされた S3 オブジェクトの同一コピーを作成できるようにする S3 SRR では、レプリカデータのリージョン内での処理、またはテスト環境と開発環境間におけるライブレプリケーションの設定などのその他多くのユースケースにこの機能を拡張することができます。SRR は、同じ AWS リージョン内のオブジェクトのコピーをオリジナルとして保持することによって、データ主権およびコンプライアンス要件への対応に役立てることもできます。詳細については S3 レプリケーションドキュメントを参照してください。また、皆さんの経験もお聞かせください。