翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Terraform を使用してエンタープライズ規模で集中ロギングを設定する
Aarti Rajput、Yashwant Patel、Nishtha Yadav、Amazon Web Services
概要
一元化されたログ記録は、組織のクラウドインフラストラクチャにとって不可欠です。これは、組織の運用、セキュリティ、コンプライアンスを可視化するためです。組織が複数のアカウントにまたがって AWS 環境をスケールするにつれて、構造化ログ管理戦略は、セキュリティオペレーションの実行、監査要件を満たすこと、運用上の優秀性を達成するための基本となります。
このパターンは、複数の AWS アカウント および サービスからのログを一元化するためのスケーラブルで安全なフレームワークを提供し、複雑な AWS デプロイ全体でエンタープライズ規模のログ記録管理を可能にします。このソリューションは、一貫した反復可能なデプロイを確保し、手動設定を最小限に抑える HashiCorp のInfrastructure as Code (IaC) ツールである Terraform を使用して自動化されています。Amazon CloudWatch Logs、Amazon Data Firehose、Amazon Simple Storage Service (Amazon S3) を組み合わせることで、以下を実現する堅牢なログ集約と分析パイプラインを実装できます。
での組織全体のログ管理の一元化 AWS Organizations
組み込みのセキュリティコントロールを使用した自動ログ収集
スケーラブルなログ処理と耐久性のあるストレージ
コンプライアンスレポートと監査証跡の簡素化
リアルタイムの運用上のインサイトとモニタリング
このソリューションは、CloudWatch Logs を介して Amazon Elastic Kubernetes Service (Amazon EKS) コンテナ、 AWS Lambda 関数、Amazon Relational Database Service (Amazon RDS) データベースインスタンスからログを収集します。CloudWatch サブスクリプションフィルターを使用して、これらのログを専用のログ記録アカウントに自動的に転送します。Firehose は、長期保存のために Amazon S3 への高スループットログストリーミングパイプラインを管理します。Amazon Simple Queue Service (Amazon SQS) は、オブジェクトの作成時に Amazon S3 イベント通知を受信するように設定されています。これにより、次のような分析サービスとの統合が可能になります。
ログ検索、視覚化、リアルタイム分析のための Amazon OpenSearch Service
SQL ベースのクエリ用の Amazon Athena
大規模な処理のための Amazon EMR
カスタム変換用の Lambda
ダッシュボード用の Amazon QuickSight
すべてのデータは AWS Key Management Service (AWS KMS) を使用して暗号化され、インフラストラクチャ全体が Terraform を使用して環境間で一貫した設定でデプロイされます。
この一元的なログ記録アプローチにより、組織はセキュリティ体制を改善し、コンプライアンス要件を維持し、 AWS インフラストラクチャ全体の運用効率を最適化できます。
前提条件と制限
前提条件
を使用して構築された組織のランディングゾーン AWS Control Tower
Account Factory for Terraform (AFT)、必要なアカウントでデプロイおよび設定
インフラストラクチャをプロビジョニングするための Terraform
クロスアカウントアクセス用の AWS Identity and Access Management (IAM) ロールとポリシー
アカウント AWS Control Tower、AFT、およびアプリケーションアカウントを設定する手順については、「エピック」セクションを参照してください。
必要なアカウント
の組織には、次のアカウントを含める AWS Organizations 必要があります。
アプリケーションアカウント – AWS のサービス (Amazon EKS、Lambda、Amazon RDS) が実行され、ログを生成する 1 つ以上のソースアカウント
ログアーカイブアカウント – 一元化されたログストレージと管理専用のアカウント
製品バージョン
アーキテクチャ
次の図は、複数のアプリケーションアカウントから専用のログアーカイブアカウントにログを収集、処理、保存するためのスケーラブルなソリューションを提供する一 AWS 元的なログ記録アーキテクチャを示しています。このアーキテクチャは AWS のサービス、Amazon RDS、Amazon EKS、Lambda などの からのログを効率的に処理し、合理化されたプロセスを通じてログアーカイブアカウントのリージョン S3 バケットにルーティングします。

ワークフローには 5 つのプロセスが含まれます。
ログフロープロセス
ログフロープロセスはアプリケーションアカウントで始まり、 は、Amazon RDS からの一般ログ、エラーログ、監査ログ、スロークエリログ、Amazon EKS からのコントロールプレーンログ、Lambda からの関数の実行ログとエラーログなど、さまざまなタイプのログ AWS のサービス を生成します。
CloudWatch は最初の収集ポイントとして機能します。これらのログは、各アプリケーションアカウント内のロググループレベルで収集されます。
CloudWatch では、サブスクリプションフィルターによって、中央アカウントに転送するログが決まります。これらのフィルターを使用すると、ログ転送をきめ細かく制御できるため、正確なログパターンや完全なログストリームを指定して一元化できます。
クロスアカウントログ転送
ログはログアーカイブアカウントに移動します。CloudWatch サブスクリプションフィルターは、クロスアカウント転送を容易にし、リージョンコンテキストを保持します。
このアーキテクチャは、最適なパフォーマンスとスケーラビリティを確保するために、さまざまなログソースを効率的に処理するための複数の並列ストリームを確立します。
ログアーカイブアカウントのログ処理
ログアーカイブアカウントでは、Firehose は受信ログストリームを処理します。
各リージョンは、必要に応じてログを変換、変換、または強化できる専用の Firehose 配信ストリームを維持します。
これらの Firehose ストリームは、データの主権要件を維持するために、ソースアプリケーションアカウント (図のリージョン A) と同じリージョンにある Log Archive アカウントの S3 バケットに処理されたログを配信します。
通知と追加のワークフロー
ログが送信先 S3 バケットに到達すると、アーキテクチャは Amazon SQS を使用して通知システムを実装します。
リージョン SQS キューは非同期処理を有効にし、保存されたログに基づいて追加のワークフロー、分析、またはアラートシステムをトリガーできます。
AWS KMS セキュリティ用
アーキテクチャには、セキュリティ AWS KMS のために が組み込まれています。 は S3 バケットの暗号化キー AWS KMS を提供します。これにより、保存されているすべてのログが保管時の暗号化を維持し、データレジデンシー要件を満たすように暗号化リージョンを維持します。
ツール
AWS のサービス
Amazon CloudWatch は、ログ、メトリクス、イベントの形式でモニタリングおよび運用データを収集するモニタリングおよびオブザーバビリティサービスです。AWS サーバーとオンプレミスサーバーで実行される AWS リソース、アプリケーション、サービスの統合ビューを提供します。
CloudWatch Logs サブスクリプションフィルターは、受信ログイベントのパターンに一致し、一致するログイベントを指定された AWS リソースに配信して、さらなる処理または分析を行う式です。
AWS Control Tower Account Factory for Terraform (AFT) は、アカウントのプロビジョニングとカスタマイズに役立つ Terraform パイプラインを設定します AWS Control Tower。AFT は Terraform ベースのアカウントプロビジョニングを提供し、アカウントを管理できるようにします AWS Control Tower。
Amazon Data Firehose は、Amazon S3、Amazon Redshift、Amazon OpenSearch Service などの送信先にリアルタイムのストリーミングデータを配信します。データのスループットに合わせて自動的にスケーリングされるため、継続的な管理は必要ありません。
Amazon Elastic Kubernetes Service (Amazon EKS) は、Kubernetes を使用してコンテナ化されたアプリケーションのデプロイ、管理、スケーリングを容易にするマネージドコンテナオーケストレーションサービスです。Kubernetes コントロールプレーンノードの可用性とスケーラビリティを自動的に管理します。
AWS Key Management Service (AWS KMS) は、データを暗号化するための暗号化キーを作成および制御します。 は、他の と AWS KMS 統合 AWS のサービス して、これらのサービスで保存するデータを保護します。
AWS Lambda は、サーバーのプロビジョニングや管理を行わずにコードを実行できるようにするサーバーレスコンピューティングサービスです。各トリガーに応じてコードを実行してアプリケーションを自動的にスケーリングし、使用したコンピューティング時間に対してのみ課金されます。
Amazon Relational Database Service (Amazon RDS) は、クラウドでリレーショナルデータベースを簡単にセットアップ、運用、スケーリングできるマネージドリレーショナルデータベースサービスです。時間のかかる管理タスクを自動化しながら、コスト効率とサイズ変更が可能な容量を提供します。
Amazon Simple Queue Service (Amazon SQS) は、マイクロサービス、分散システム、サーバーレスアプリケーションの分離とスケーリングを可能にするメッセージキューイングサービスです。メッセージ指向ミドルウェアの管理と運用の複雑さを排除します。
Amazon Simple Storage Service (Amazon S3) は、スケーラビリティ、データの可用性、セキュリティ、パフォーマンスを提供するクラウドベースのオブジェクトストレージサービスです。ウェブ上の任意の場所から任意の量のデータを保存および取得できます。
その他のツール
「Terraform
」は、HashiCorpのinfrastructure as code (IaC) ツールで、クラウドとオンプレミスのリソースの作成と管理を支援します。
Code
このパターンのコードは、GitHub 集中ロギング
ベストプラクティス
の 1 つの組織 AWS アカウント で複数の を使用します AWS Organizations。この手法により、アカウント間で一元管理と標準化されたログ記録が可能になります。
バージョニング、ライフサイクルポリシー、クロスリージョンレプリケーションを使用して S3 バケットを設定します。セキュリティとコンプライアンスのための暗号化とアクセスのログ記録を実装します。
標準のタイムスタンプとフィールドで JSON 形式を使用して、一般的なログ記録標準を実装します。追跡と分析を容易にするために、一貫したプレフィックス構造と相関 IDs を使用します。
AWS KMS 暗号化と最小特権アクセスを使用してセキュリティコントロールを有効にします。セキュリティを強化するために、 AWS CloudTrail モニタリングと定期的なキーローテーションを維持します。
配信追跡用の CloudWatch メトリクスとアラートを設定します。自動通知を使用してコストとパフォーマンスをモニタリングします。
コンプライアンス要件を満たすように Amazon S3 保持ポリシーを設定し、Amazon S3 サーバーアクセスログ記録を有効にして、S3 バケットに対して行われたすべてのリクエストを追跡します。S3 バケットポリシーとライフサイクルルールのドキュメントを維持します。アクセスログ、バケットのアクセス許可、ストレージ設定を定期的に見直して、コンプライアンスとセキュリティのベストプラクティスを確保します。
エピック
| タスク | 説明 | 必要なスキル |
|---|---|---|
AFT を使用して AWS Control Tower 環境をセットアップします。 |
| AWS 管理者 |
組織のリソース共有を有効にします。 |
| AWS 管理者 |
アプリケーションアカウントを検証またはプロビジョニングします。 | ユースケース用に新しいアプリケーションアカウントをプロビジョニングするには、AFT を使用してアカウントを作成します。詳細については、 AWS Control Tower ドキュメントの「AFT を使用して新しいアカウントをプロビジョニングする」を参照してください。 | AWS 管理者 |
| タスク | 説明 | 必要なスキル |
|---|---|---|
|
| DevOps エンジニア |
アプリケーションアカウントを設定するための入力パラメータを確認して編集します。 | このステップでは、CloudWatch ロググループ、CloudWatch サブスクリプションフィルター、IAM ロールとポリシー、Amazon RDS、Amazon EKS、Lambda 関数の設定詳細など、アプリケーションアカウントにリソースを作成するための設定ファイルを設定します。
| DevOps エンジニア |
| タスク | 説明 | 必要なスキル |
|---|---|---|
|
| DevOps エンジニア |
Log Archive アカウントを設定するための入力パラメータを確認して編集します。 | このステップでは、Firehose 配信ストリーム、S3 バケット、SQS キュー、IAM ロールとポリシーなど、ログアーカイブアカウントにリソースを作成するための設定ファイルを設定します。
| DevOps エンジニア |
| タスク | 説明 | 必要なスキル |
|---|---|---|
オプション 1 - AFT から Terraform 設定ファイルをデプロイします。 | AFT では、設定変更を含むコードを GitHub Terraform (
注記別のブランチ ( など | DevOps エンジニア |
オプション 2 - Terraform 設定ファイルを手動でデプロイします。 | AFT を使用していない場合、またはソリューションを手動でデプロイする場合は、
| DevOps エンジニア |
| タスク | 説明 | 必要なスキル |
|---|---|---|
サブスクリプションフィルターを検証します。 | サブスクリプションフィルターがアプリケーションアカウントのロググループからログアーカイブアカウントにログを正しく転送することを検証するには:
| DevOps エンジニア |
Firehose ストリームを確認します。 | Log Archive アカウントの Firehose ストリームがアプリケーションログを正常に処理することを検証するには:
| DevOps エンジニア |
一元化された S3 バケットを検証します。 | 一元化された S3 バケットがログを正しく受信して整理することを検証するには:
| DevOps エンジニア |
SQS キューを検証します。 | SQS キューが新しいログファイルの通知を受信することを確認するには:
| DevOps エンジニア |
| タスク | 説明 | 必要なスキル |
|---|---|---|
オプション 1 - AFT から Terraform 設定ファイルを廃止します。 | Terraform 設定ファイルを削除して変更をプッシュすると、AFT は自動的にリソース削除プロセスを開始します。
| DevOps エンジニア |
オプション 2 – Terraform リソースを手動でクリーンアップします。 | AFT を使用していない場合、またはリソースを手動でクリーンアップする場合は、
| DevOps エンジニア |
トラブルシューティング
| 問題 | ソリューション |
|---|---|
CloudWatch Logs の送信先が作成されていないか、非アクティブです。 | 以下を確認してください。
|
サブスクリプションフィルターが失敗したか、保留中のステータスのままです。 | 以下をチェックしてください:
|
Firehose 配信ストリームには受信レコードが表示されません。 | 以下について確認します。
|
関連リソース
Terraform インフラストラクチャのセットアップ
(Terraform ドキュメント) Account AWS Control Tower Factory for Terraform (AFT) をデプロイする (AWS Control Tower ドキュメント)
IAM チュートリアル: IAM ロール AWS アカウント を使用して 全体でアクセスを委任する (IAMdocumentation)