概要 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は、アイレット株式会社が提供するクラウド支援サービスです。クラウドの導入・構築から運用・保守、技術的な問い合わせまでトータルサポート!
            
         
        
     
    
        アイレットでは、様々な職種で一緒に働ける仲間を募集しています。
        
            インフラエンジニア、開発エンジニア、クリエイティブ職、営業職など、様々な職種で一緒に働ける仲間を募集しています。アイレットのこと、社員インタビュー、募集職種、福利厚生など、アイレット公式サイト採用情報をご覧ください。