概要
Amazon GuardDuty とは
- Amazon GuardDutyは、CloudTrail イベントログ、VPC フローログ、DNS ログなどアクティビティや通信ログを分析して、AWS環境内の脅威を検知・可視化するマネージドサービスです。セキュリティの対応では、発見的統制と呼ばれる区分のサービスになります。
- ユースケースとしては、マルウェアの検出、不正アクセスの検出、アカウント乗っ取りの検出、異常なネットワークアクティビティの検出、データベースの不正アクセスの検出などを行います。
- これにより、セキュリティ脅威に対する早期警告や対策が可能となります。
- GuardDutyは有効化するだけで利用できるため、手間をかけずに導入できます。稼働中のシステムにも影響を与えません。
- GuardDuty の利用料はデータ量に応じて変動します。30 日間トライアル期間に1 日あたりの平均コストが表示されるため、導入時の目安を知ることが出来ます。
Amazon GuardDuty 注意事項
- GuardDuty が誤検知することや過剰に検知する可能性はあります。必要に応じて、正しいアクティビティかを判断することも必要です。Malware Protection における誤検出があった場合は、AWS Support チームに誤検出結果を知らせることが可能です。
- 分析されたCloudTrail イベントログ、VPC フローログ、DNS ログのデータ量によって変動するため、30 日間トライアル期間に、想定されるコストの確認が必要です。
- Amazon GuardDuty を有効化する際の注意事項として、GuardDuty はリージョン別のサービスであるため、リージョン毎に有効化する必要があります。今回は、CloudFormation のStackSets を使用して、複数リージョンあるいは全リージョンを有効化します。
Amazon GuardDuty を全リージョン有効化する手順(StackSets)
- Amazon GuardDuty を全リージョン有効化する手順をご紹介します。GuardDuty を有効化する際、コンソールから複数リージョンあるいは全リージョンの作業はわずらわしく感じます。その様な時は、CloudFormation のStackSets が非常に便利です。
事前にIAM ロールを作成する
- AWSコンソールから、CloudFormation を開きます。
- 画面右上の「スタックの作成」から「新しいリソースを使用 (標準)」を選択します。「テンプレートの準備完了」を選択します。
- 「テンプレートの指定」から「テンプレートファイルのアップロード」を選択、「ファイルの選択」を選択し、CFnテンプレートファイルを選択します。
- 今回は、2つのIAM ロールを作成します。以下ドキュメントに記載されているCloudFormation スタックセットのアクセス許可に必要なロールとなります。詳細は、以下ドキュメントを参照ください。
- 以下1つ目のIAM ロールのYaml になります。
- スタック名は、「AWSCloudFormationStackSetAdministrationRole」とします。
- AWSCloudFormationStackSetAdministrationRole.yml
AWSTemplateFormatVersion: 2010-09-09 Description: Configure the AWSCloudFormationStackSetAdministrationRole to enable use of AWS CloudFormation StackSets. Resources: AdministrationRole: Type: AWS::IAM::Role Properties: RoleName: AWSCloudFormationStackSetAdministrationRole AssumeRolePolicyDocument: Version: 2012-10-17 Statement: - Effect: Allow Principal: Service: cloudformation.amazonaws.com Action: - sts:AssumeRole Path: / Policies: - PolicyName: AssumeRole-AWSCloudFormationStackSetExecutionRole PolicyDocument: Version: 2012-10-17 Statement: - Effect: Allow Action: - sts:AssumeRole Resource: - "arn:*:iam::*:role/AWSCloudFormationStackSetExecutionRole"
- その他の設定は、特に変更しません。
- 「送信」を押し、IAM ロールのリソースが作成されたことを確認します。
- 以下2つ目のIAM ロールのYaml になります。
- スタック名は、「AWSCloudFormationStackSetExecutionRole」とします。
- AWSCloudFormationStackSetExecutionRole.yml
AWSTemplateFormatVersion: 2010-09-09 Description: Configure the AWSCloudFormationStackSetExecutionRole to enable use of your account as a target account in AWS CloudFormation StackSets. Parameters: AdministratorAccountId: Type: String Description: AWS Account Id of the administrator account (the account in which StackSets will be created). MaxLength: 12 MinLength: 12 Resources: ExecutionRole: Type: AWS::IAM::Role Properties: RoleName: AWSCloudFormationStackSetExecutionRole AssumeRolePolicyDocument: Version: 2012-10-17 Statement: - Effect: Allow Principal: AWS: - !Ref AdministratorAccountId Action: - sts:AssumeRole Path: / ManagedPolicyArns: - !Sub arn:${AWS::Partition}:iam::aws:policy/AdministratorAccess
- パラメータのAdministratorAccountId は、自分のアカウント番号を記載します。
- その他の設定は、特に変更しません。
- 「送信」を押し、IAM ロールのリソースが作成されたことを確認します。
- IAM から2つのIAM ロールが作成されたことを確認します。
StackSet を作成する
- 左ペインから「StackSets」を選択します。
- 「StackSet の作成」を押します。
- アクセス許可に先ほど作成したIAM ロールを選択します。
- IAM 管理ロール: AWSCloudFormationStackSetAdministrationRole
- IAM 実行ロール: AWSCloudFormationStackSetExecutionRole
- 「テンプレートの準備完了」を選択します。
- 「テンプレートの指定」から「テンプレートファイルのアップロード」を選択、「ファイルの選択」を選択し、CFnテンプレートファイルを選択します。
- 以下の GuardDuty 有効化のYaml を選択します。
- スタック名は、「SetUpGuardDuty」とします。
- SetupGuardDuty.yml
AWSTemplateFormatVersion: 2010-09-09 Description: GuardDuty Resources: GuardDuty: Type: AWS::GuardDuty::Detector Properties: Enable: true
- アカウントの アカウント番号にデプロイするアカウント番号を指定します。
- リージョンの指定にて、「すべてのリージョンを追加」を押下します。
- その他の設定は、特に変更しません。「送信」を押します。
- CREATE のオペレーションを選択し、スタックインスタンスに記載の全リージョンでステータスが「SUCCEEDED」に変わったことを確認します。
- 最後に、GuardDuty のサービスに移動し、有効化されたことを確認します。