概要 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 スタックセットのアクセス許可に必要なロールとなります。詳細は、以下ドキュメントを参照ください。
AWS 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 のサービスに移動し、有効化されたことを確認します。
お客様のご要望に柔軟に対応いたします。まずはお気軽にご相談ください。
cloudpackは、アイレット株式会社が提供するクラウド支援サービスです。クラウドの導入・構築から運用・保守、技術的な問い合わせまでトータルサポート!
アイレットでは、様々な職種で一緒に働ける仲間を募集しています。
インフラエンジニア、開発エンジニア、クリエイティブ職、営業職など、様々な職種で一緒に働ける仲間を募集しています。アイレットのこと、社員インタビュー、募集職種、福利厚生など、アイレット公式サイト採用情報をご覧ください。