翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
一元化されたロギングと複数アカウントのセキュリティガードレール
作成者: Ankush Verma (AWS) と Tracy (Pierce) Hickey (AWS)
環境:本稼働 | テクノロジー: セキュリティ、アイデンティティ、コンプライアンス、管理とガバナンス | AWS サービス: AWS CloudFormation; AWS Config ; Amazon CloudWatch; AWS CodePipeline; Amazon GuardDuty; AWS Lambda ; Amazon Macie ; AWS Security Hub; Amazon S3 |
[概要]
このパターンで説明されたアプローチは、AWS Organizations で複数のAmazon Web Services (AWS) アカウントがあり、現在、AWS Control Tower、ランディングゾーン、またはアカウント自動販売機のサービスを使用して、アカウントにベースラインガードレールを設定する際に課題に直面しているお客様に適しています。
このパターンでは、効率的なマルチアカウントアーキテクチャを使用して、一元化されたロギングと標準化されたセキュリティコントロールをうまく構造化された方法で設定する方法を示しています。この設定は、AWS CloudFormation テンプレート、AWS CodePipeline、および自動化スクリプトを活用して、組織に属するすべてのアカウントにデプロイされます。
マルチアカウントアーキテクチャには、以下のアカウントが含まれます:
集中ログ記録アカウント – すべての Virtual Private Cloud (VPC) フローログ、AWS CloudTrail ログ、AWS Config ログ、および他のすべてのアカウントの Amazon CloudWatch Logs (サブスクリプションを使用) のすべてのログが保存されるアカウント。
親セキュリティアカウント — 複数のアカウントにわたり管理する、以下のセキュリティサービスの親アカウントとして機能するアカウント。
Amazon GuardDuty
AWS Security Hub
Amazon Macie
Amazon Detective
子アカウント — 組織内の他のアカウント。これらのアカウントは、一元化されたロギングアカウントにすべての有用なログを保存します。子アカウントは、セキュリティサービスのメンバーとして親セキュリティアカウントに加わります。
CloudFormation テンプレート (添付) を起動すると、集中型ログ記録アカウントに 3 つの Amazon Simple Storage Service (Amazon S3) バケットがプロビジョニングされます。1 つのバケットを使用して、すべてのアカウントのすべての AWS 関連ログ (VPC フローログのログ CloudTrailや AWS Config など) を保存します。2 つ目のバケットは、すべてのアカウントの CloudFormation テンプレートを保存するためのものです。3番目のバケットは、Amazon S3アクセスログを保存するためのものです。
別の CloudFormation テンプレートは、AWS を使用するパイプラインを作成します CodeCommit。更新したコードが CodeCommit リポジトリにプッシュされると、すべてのアカウントでリソースの起動とセキュリティサービスの設定が処理されます。 CodeCommit リポジトリにアップロードされるファイルのファイル構造の詳細については、README.md ファイル (添付) を参照してください。
前提条件と制限
前提条件
すべてのアカウントが同じ組織に加わっている AWS Organizations の組織 ID。
Amazon Simple Notification Service (Amazon SNS) 通知を受信する有効な E メールアドレス。
各アカウントで Amazon Simple Storage Service (Amazon S3) バケットの確認されたクォータ。デフォルトでは、各アカウントには 100 個の S3 バケットがあります。追加のバケットが必要な場合、このソリューションをデプロイする前にクォータ引き上げをリクエストします。
制約事項
すべてのアカウントは、同じ組織に属している必要があります。AWS Organizations を使用していない場合、S3 バケットポリシーなどの特定のポリシーを変更して、各アカウントの AWS 識別とアクセス管理(IAM) ロールからのアクセスを許可する必要があります。
注: ソリューションをデプロイしている間は、Amazon SNS サブスクリプションを確認する必要があります。確認メッセージは、デプロイプロセス中に指定した Eメールアドレスに送信されます。これにより、このメールアドレス宛にいくつかの E メールアラートメッセージの送信が開始されます。理由は、にこれらのアラームは、アカウントで IAM ロールポリシーが作成または変更されるたび起動されるためです。デプロイプロセス中は、これらのアラートメッセージを無視できます。
アーキテクチャ
ターゲットテクノロジースタック
Amazon CloudWatch アラームとログ
AWS CodeCommit リポジトリ
AWS CodePipeline
AWS Config
Amazon Detective
Amazon GuardDuty
IAM ロールおよび許可
Amazon Macie
S3 バケット
AWS Security Hub
Amazon SNS
ターゲットアーキテクチャ
セキュリティサービスの、親セキュリティアカウントの子アカウントとして登録されているその他のアカウント
親アカウントを含むすべての子アカウントのSecurity Findings
リソース
更新されたコードが各アカウントと AWS リージョンの CodeCommit リポジトリにプッシュされると、次のリソースが自動的にプロビジョニングされます。
CloudFormation スタック 1 - 親スタックのログ記録
- ネストスタック 1 — 標準の IAM ロールとポリシー
- ネストスタック 2 — アカウント内の AWS Config セットアップ
- ネストされたスタック 3 - CloudWatch アラーム
- SecurityGroupChangesAlarm
- UnauthorizedAttemptAlarm
- RootActivityAlarm
- NetworkAclChangesAlarm
- IAMUserManagementAlarm
- IAMPolicyChangesAlarm
- CloudTrailChangeAlarm
- IAMCreateAccessKeyAlarm
- CloudTrail ログからメトリクスを作成し、アラームに使用するメトリクスフィルター
- SNS トピック
CloudFormation スタック 2 - 親ガードレールスタック
- ネストスタック 1 — アカウントパスワードポリシーを設定するための AWS Lambda 関数
- ネストスタック 2 — 基本的な AWS Config ルール
- CIS-SecurityGroupsMustRestrictSshTraffic
- セキュリティグループルール評価用の Lambda 関数 OpenSecurityGroupRuleCheck と共に
- check-ec2-for-required-tag
- check-for-unrestricted-ports
CloudFormation スタック 3 - CloudWatch ログのエクスポート
- Amazon Kinesis サブスクリプションを使用した CloudWatch ロググループから Amazon S3 へのログのエクスポート Amazon S3 Amazon Kinesis
ツール
AWS CloudFormation – AWS CloudFormation はテンプレートを使用して、すべての AWS リージョンとアカウントのアプリケーションに必要なすべてのリソースを自動的かつ安全な方法でモデル化およびプロビジョニングします。
Amazon CloudWatch – Amazon は、AWS リソースと AWS で実行しているアプリケーションをリアルタイムで CloudWatch モニタリングします。 CloudWatch を使用してメトリクスを収集および追跡できます。メトリクスとは、リソースやアプリケーションに関して測定できる変数です。
AWS CodeCommit – AWS CodeCommit は、AWS によってホストされるバージョン管理サービスです。を使用して CodeCommit 、アセット (ドキュメント、ソースコード、バイナリファイルなど) をクラウドにプライベートに保存および管理できます。
AWS CodePipeline – AWS CodePipeline は、ソフトウェアのリリースに必要なステップをモデル化、視覚化、および自動化するために使用できる継続的な配信サービスです。
「AWS Config」 — AWS Config は、 AWS アカウントにおける AWS リソースの設定を詳細に表示します。これには、リソース間の関係と設定の履歴が含まれるため、時間の経過と共に設定と関係がどのように変わるかを確認できます。
「Amazon Detective」 — Amazon Detective を使用して、セキュリティに関する検出結果や疑わしいアクティビティの根本原因を簡単に分析、調査、および迅速に特定できます。Detective は、AWS リソースからログデータを自動的に収集します。次に、機械学習、統計分析、グラフ理論を使用して、セキュリティ調査をより迅速かつ効率的に可視化、および実行することを支援します。
Amazon GuardDuty – Amazon GuardDuty は、フローログ、 CloudTrail 管理イベントログ、 CloudTrail データイベントログ、ドメインネームシステム (DNS) ログを分析して処理する継続的なセキュリティモニタリングサービスです。悪意のある IP アドレスやドメインのリストなどの脅威インテリジェンスフィード、および機械学習を使用して、AWS 環境内の予期しない、潜在的に未許可である、悪意のあるアクティビティを識別します。
「AWS 識別とアクセス管理」 — AWS 識別とアクセス管理(IAM)は、AWS リソースへのアクセスをセキュアに制御するためのウェブサービスです。IAM を使用して、誰を認証 (サインイン) し、誰にリソースの使用を認可する (アクセス許可を付与する) かを制御します。
「Amazon Macie」 — Macie は、組織が Simple Storage Service (Amazon S3) に保存している個人を特定できる情報 (PII) や財務データなどの機密データを寄り良く把握できるよう、そのようなデータの検出を自動化します。
「Amazon S3」 — Amazon Simple Storage Service (Amazon S3) は、拡張性の高いオブジェクトストレージサービスで、ウェブサイト、モバイルアプリケーション、バックアップ、データレイクなど、幅広いストレージソリューションに使用できます。
「AWS Security Hub」 — AWS Security Hubでは、AWS のセキュリティ状態を包括的に把握し、セキュリティ業界標準およびベストプラクティスに照らして環境をチェックするのに役立ちます。
Amazon SNS – Amazon Simple Notification Service (Amazon SNS) は、パブリッシャーからサブスクライバー (または生産者から消費者) へのメッセージ配信を提供するマネージドサービスです。
エピック
タスク | 説明 | 必要なスキル |
---|---|---|
Childaccount_IAM_role_All_Accounts.yaml CloudFormation テンプレートを起動して、us-east-1 リージョンに IAM ロールを作成します。 | 必要な IAM ロールと許可を作成するには、us-east-1 リージョンの各アカウント (一元化ログアカウント、親セキュリティアカウント、および組織内のその他すべての AWS アカウント) で、このテンプレートを 1 つずつ手動で起動する必要があります。 | クラウドアーキテクト |
テンプレートパラメータで、IAM ロール名を指定します。 | 親セキュリティアカウントの が CodeBuild他のすべての子アカウントで引き受けることができる IAM ロールを指定します。デフォルトのロール名は | クラウドアーキテクト |
パラメータに、親セキュリティアカウントのアカウント ID を指定します。 | 親セキュリティアカウントは、 が CodeBuild 実行されるアカウントです。 | クラウドアーキテクト |
タスク | 説明 | 必要なスキル |
---|---|---|
集中ログ記録アカウントで、us-east-1 で S3Buckets-Centralized -LoggingAccount.yaml CloudFormation テンプレートを起動します。 | 集中型ロギングアカウントに S3 バケットを作成するには、 | クラウドアーキテクト |
テンプレートパラメータで、AWS ログストレージの S3 バケットの名前を指定します。 |
| クラウドアーキテクト |
アクセスログ S3 バケットの名前を提供します。 |
| クラウドアーキテクト |
テンプレートを保存する S3 バケットの名前を指定します。 |
| クラウドアーキテクト |
組織 ID を提供します。 | 組織内の S3 バケットへのアクセスを提供するには、 | クラウドアーキテクト |
タスク | 説明 | 必要なスキル |
---|---|---|
security-guard-rails-codepipeline-Centralized-SecurityAccount.yml CloudFormation テンプレートを起動します。 | CI/CD パイプラインをデプロイするには、us-east-1 の親セキュリティアカウントで | クラウドアーキテクト |
テンプレートを集中ロギングアカウントに格納する S3 バケットの名前を指定します。 | ステップ 2 で | クラウドアーキテクト |
子アカウントで使用される IAM ロール名を指定します。 | ステップ 1 の | クラウドアーキテクト |
CodePipeline 失敗通知を受信するための有効な E メールアドレスを指定します。 | CodePipeline 障害通知やその他の CloudWatch アラーム関連の通知を受信するために使用する E メールアドレスを入力します。 | クラウドアーキテクト |
タスク | 説明 | 必要なスキル |
---|---|---|
アカウントリスト.json を修正します。 | パッケージの最上位にある | クラウドアーキテクト |
accounts.csv の変更 | パッケージの最上位にある | クラウドアーキテクト |
パラメータ.config を変更します。 |
他のパラメータについては、デフォルト値をそのまま使用できます。例えば、 | クラウドアーキテクト |
タスク | 説明 | 必要なスキル |
---|---|---|
ステップ 3 で作成した CodeCommit リポジトリにアクセスします。 | CI/CD インフラストラクチャ CloudFormation スタックの出力セクション (ステップ 3 で起動) で、 CodeCommit リポジトリ URL の名前を書き留めます。リポジトリへのアクセスを作成して、ファイルをそのリポジトリにプッシュして、インフラストラクチャをすべてのターゲットアカウントにデプロイできるようにします。詳細については、「AWS のセットアップ CodeCommit」を参照してください。 | クラウドアーキテクト |
ファイルを CodeCommit リポジトリにプッシュします。 | ローカルマシンで Git をインストールします。次に、Git コマンドを実行して空のリポジトリをクローンし、ラップトップからリポジトリフォルダにファイルをコピーし、アーティファクトをリポジトリにプッシュします。パッケージの | クラウドアーキテクト |
タスク | 説明 | 必要なスキル |
---|---|---|
CodePipeline および のステータスを確認します CodeBuild。 | アーティファクトを CodeCommit リポジトリにプッシュしたら、ステップ 3 で作成した CodePipeline パイプラインが開始されたことを確認します。次に、 CodeBuild ログをチェックしてステータスまたはエラーを確認します。 | クラウドアーキテクト |
関連リソース
添付ファイル
このドキュメントに関連する追加コンテンツにアクセスするには、次のファイルを解凍してください。「attachment.zip」