

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

# IAM ルートユーザーのアクティビティを監視する
<a name="monitor-iam-root-user-activity"></a>

*JJ Sung and Mostefa Brougui、Amazon Web Services*

## 概要
<a name="monitor-iam-root-user-activity-summary"></a>

各Amazon Web Services (AWS) アカウントにはルートユーザーが付いています。AWS Identity and Access Management (IAM) の「[セキュリティベストプラクティス](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html)」として、ルートユーザーのみが実行可能なタスクに使用することをお勧めします。リスト全文は *AWS アカウント管理参照ガイド*の「[ルートユーザー認証情報が必要なタスク](https://docs.aws.amazon.com/accounts/latest/reference/root-user-tasks.html)」からご確認ください。ルートユーザーはすべての AWS リソースと請求情報に完全にアクセスできるので、このアカウントを使用せず、ルートユーザーの認証情報が侵害されている可能性があるアクティビティをモニタリングすることをお勧めします。

このパターンを使用して、IAM ルートユーザーをモニタリングする「[イベント駆動型アーキテクチャ](https://aws.amazon.com/event-driven-architecture/)」を設定します。このパターンは、複数の AWS アカウント (*スポーク*アカウント) をモニタリングし、管理とレポートを 1 つのアカウント (*ハブ*アカウント) に集中させるハブアンドスポークソリューションを確立します。

IAM ルートユーザー認証情報が使用されると、Amazon CloudWatch と AWS CloudTrail は、それぞれログと証跡にアクティビティを記録します。スポークアカウントでは、Amazon EventBridge ルールによってハブアカウントの中央「[イベントバス](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-event-bus.html)」にイベントが送信されます。ハブアカウントでは、EventBridge ルールがイベントを AWS Lambda 関数に送信します。この関数は、ルートユーザーアクティビティを通知する Amazon Simple Notiﬁcation Service (Amazon SNS) トピックを使用します。

このパターンでは、AWS CloudFormation テンプレートにより、スポークアカウントにモニタリングサービスとイベント処理サービスをデプロイします。HashiCorp Terraform テンプレートにより、ハブアカウントにイベント管理サービスと通知サービスをデプロイします。

## 前提条件と制限
<a name="monitor-iam-root-user-activity-prereqs"></a>

**前提条件**

1. AWS 環境に AWS リソースをデプロイする権限。

1. CloudFormation スタックセットをデプロイするための権限。詳細については、「[スタックセットオペレーションの前提条件](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-prereqs.html)」(CloudFormation ドキュメント) を参照してください。

1. Terraform がインストール済みで、すぐに使用できます。詳細については、「ドキュメント」の「使用の開始」を参照してください。

1. 各スポークアカウントの既存の証跡。詳細については、「[AWS CloudTrail で開始する](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-tutorial.html)」 (CloudTrail ドキュメント) を参照してください。

1. 証跡は CloudWatch Logs にイベントを送信するように設定されています。詳細については、「[CloudWatch Logs へのイベント送信](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/send-cloudtrail-events-to-cloudwatch-logs.html)」(CloudTrail ドキュメント) を参照してください。

1. ハブアンドスポークアカウントは AWS Organizations によって管理される必要があります。

## アーキテクチャ
<a name="monitor-iam-root-user-activity-architecture"></a>

次の図は、実装の構成要素を示しています。

![\[スポークアカウントでのイベント、ハブアカウントでのメール通知の作成\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/175f356b-f9df-4d33-82fc-fe33b2c88b05/images/6147e5b5-616e-49a4-b330-dbb7e3381fe7.png)


1. IAM ルートユーザー認証情報が使用されると、CloudWatch と CloudTrail は、それぞれログと証跡にアクティビティを記録します。

1. スポークアカウントでは、EventBridge ルールがハブアカウントの中央「[イベントバス](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-event-bus.html)」にイベントを送信します。

1. ハブアカウントでは、EventBridge ルールがイベントを Lambda 関数に送信します。

1. Lambda 関数は、ルートユーザーのアクティビティを通知する Amazon SNS トピックを使用します。

## ツール
<a name="monitor-iam-root-user-activity-tools"></a>

**AWS サービス**
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) を使用すると、AWS リソースをセットアップし、迅速かつ一貫したプロビジョニングを行い、AWS アカウントとリージョン全体でライフサイクル全体にわたってリソースを管理できます。
+ 「[AWS CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html)」は、AWS アカウントのガバナンス、コンプライアンス、運用のリスクの監査をサポートします。
+ 「[Amazon CloudWatch Logs](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/WhatIsCloudWatchLogs.html)」は、すべてのシステム、アプリケーション、AWS からのログを一元管理できるため、ログを監視して安全にアーカイブできます。
+ 「[Amazon EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-what-is.html)」は、アプリケーションをさまざまなソースのリアルタイムデータに接続できるようにするサーバーレスイベントバスサービスです。たとえば、AWS Lambda 関数、API 宛先を使用する HTTP 呼び出しエンドポイント、または他の AWS アカウントのイベントバスなどです。
+ 「[AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html)」は、AWS リソースへのアクセスを安全に管理し、誰が認証され、使用する権限があるかを制御するのに役立ちます。
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) は、サーバーのプロビジョニングや管理を行うことなくコードを実行できるコンピューティングサービスです。必要に応じてコードを実行し、自動的にスケーリングするため、課金は実際に使用したコンピューティング時間に対してのみ発生します。
+ 「[Amazon Simple Notiﬁcation Service (Amazon SNS)](https://docs.aws.amazon.com/sns/latest/dg/welcome.html)」は、ウェブサーバーやメールアドレスなど、パブリッシャーとクライアント間のメッセージの交換を調整および管理するのに役立ちます。

ツールやサービス
+ 「[Terraform](https://www.terraform.io/docs)」は、設定ファイル形式のコードを使用してクラウドインフラストラクチャとリソースをプロビジョニングし管理するための CLI アプリケーションです。

**コードリポジトリ**

このパターンのソースコードとテンプレートは、「[GitHub リポジトリ](https://github.com/aws-samples/aws-iam-root-user-activity-monitor)」で利用できます。このパターンには次の 2 つのテンプレートがあります。
+ ハブアカウントにデプロイするリソースを含む Terraform テンプレート
+ スポークアカウントにスタックセットインスタンスとしてデプロイする CloudFormation テンプレート

リポジトリの全体構造は以下のようになっています。

```
.
 |__README.md
 |__spoke-stackset.yaml
 |__hub.tf
 |__root-activity-monitor-module
     |__main.tf  # contains Terraform code to deploy resources in the Hub account
     |__iam      # contains IAM policies JSON files
         |__ lambda-assume-policy.json          # contains trust policy of the IAM role used by the Lambda function
         |__ lambda-policy.json                 # contains the IAM policy attached to the IAM role used by the Lambda function
     |__outputs  # contains Lambda function zip code
```

*エピック* セクションでは、テンプレートをデプロイする手順の詳細について説明します。

## エピック
<a name="monitor-iam-root-user-activity-epics"></a>

### ハブアカウントにリソースをデプロイ
<a name="deploy-resources-to-the-hub-account"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| サンプルコードリポジトリを複製します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/monitor-iam-root-user-activity.html) | AWS 全般 | 
| Terraform テンプレートを更新します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/monitor-iam-root-user-activity.html) | AWS 全般 | 
| リソースを AWS ハブアカウントにデプロイします。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/monitor-iam-root-user-activity.html) | AWS 全般 | 

### スポークアカウントにリソースをデプロイ
<a name="deploy-resources-to-your-spoke-accounts"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| CloudFormation のテンプレートをデプロイします。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/monitor-iam-root-user-activity.html)詳細については、「[スタックセットの作成](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-getting-started-create.html)」(CloudFormation ドキュメント) を参照してください。 | AWS 全般 | 

### (オプション) 通知をテスト
<a name="optional-test-the-notifications"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| ルートユーザーの認証情報を使用します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/monitor-iam-root-user-activity.html) | AWS 全般 | 

## 関連リソース
<a name="monitor-iam-root-user-activity-resources"></a>
+ 「[セキュリティのベストプラクティス](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html)」(IAM ドキュメント)
+ 「[StackSets での作業](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/what-is-cfnstacksets.html)」(CloudFormation ドキュメント)
+ 「[はじめに](https://learn.hashicorp.com/collections/terraform/aws-get-started)」(Terraform ドキュメント)

## 追加情報
<a name="monitor-iam-root-user-activity-additional"></a>

「[Amazon GuardDuty](https://docs.aws.amazon.com/guardduty/latest/ug/what-is-guardduty.html)」は、継続的なセキュリティ監視サービスで、ログを分析処理し、AWS 環境における予期せぬ不正な可能性のあるアクティビティを特定します。このソリューションに代わる方法として、GuardDuty を有効にすると、root ユーザーの認証情報が使用された場合に警告が表示されます。GuardDuty の検出結果は `Policy:IAMUser/RootCredentialUsage` であり、重要度はデフォルトで **[低]** です。詳しくは「[Managing Amazon GuardDuty findings](https://docs.aws.amazon.com/guardduty/latest/ug/findings_management.html)」をご確認ください。