Cookie の設定を選択する

当社は、当社のサイトおよびサービスを提供するために必要な必須 Cookie および類似のツールを使用しています。当社は、パフォーマンス Cookie を使用して匿名の統計情報を収集することで、お客様が当社のサイトをどのように利用しているかを把握し、改善に役立てています。必須 Cookie は無効化できませんが、[カスタマイズ] または [拒否] をクリックしてパフォーマンス Cookie を拒否することはできます。

お客様が同意した場合、AWS および承認された第三者は、Cookie を使用して便利なサイト機能を提供したり、お客様の選択を記憶したり、関連する広告を含む関連コンテンツを表示したりします。すべての必須ではない Cookie を受け入れるか拒否するには、[受け入れる] または [拒否] をクリックしてください。より詳細な選択を行うには、[カスタマイズ] をクリックしてください。

AWS CloudFormation テンプレートを使用して Amazon GuardDuty を条件付きで有効にする - AWS 規範ガイダンス

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

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

AWS CloudFormation テンプレートを使用して Amazon GuardDuty を条件付きで有効にする

作成者: Ram Kandaswamy (AWS)

概要

AWS CloudFormation テンプレートを使用して、Amazon Web Services (AWS) アカウントで Amazon GuardDuty を有効にできます。デフォルトでは、CloudFormation を使用して GuardDuty を有効にしようとしたときに GuardDuty が既に有効になっていると、スタックのデプロイは失敗します。ただし、CloudFormation テンプレートの条件を使用して、GuardDuty が既に有効になっているかどうかを確認できます。CloudFormation は、静的値を比較する条件の使用をサポートしていますが、同じテンプレート内の別のリソースプロパティの出力の使用はサポートしていません。詳細については、CloudFormation ドキュメントの「条件」を参照してください。

このパターンでは、 AWS Lambda 関数によってバックアップされた CloudFormation カスタムリソースを使用して、GuardDuty がまだ有効になっていない場合に条件付きで有効にします。GuardDuty が有効になっている場合、スタックはステータスをキャプチャし、スタックの出力セクションに記録します。GuardDuty が有効になっていない場合は、スタックによって有効になります。

前提条件と制限

前提条件

  • アクティブな AWS アカウント

  • CloudFormation スタックを作成、更新、削除する権限を持つ AWS Identity and Access Management (IAM) ロール

  • AWS Command Line Interface (AWS CLI)、インストールおよび設定済み

制約事項

GuardDuty が AWS アカウント または に対して手動で無効になっている場合 AWS リージョン、このパターンではそのターゲットアカウントまたはリージョンの GuardDuty は有効になりません。

アーキテクチャ

ターゲットテクノロジースタック

このパターンでは、Infrastructure as Code (IaC) に CloudFormation を使用します。Lambda 関数に支えられた CloudFormation カスタムリソースを使用して、動的なサービス有効化機能を実現します。

ターゲットアーキテクチャ

以下の大まかなアーキテクチャ図は、CloudFormation テンプレートをデプロイして GuardDuty を有効にするプロセスを示しています。

  1. CloudFormation テンプレートをデプロイして CloudFormation スタックを作成します。

  2. スタックは IAM ロールと Lambda 関数を作成します。

  3. Lambda 関数は IAM ロールを引き受けます。

  4. ターゲットで GuardDuty がまだ有効になっていない場合 AWS アカウント、Lambda 関数によって有効になります。

CloudFormation テンプレートをデプロイして GuardDuty を有効にするプロセス

自動化とスケール

AWS CloudFormation StackSet 機能を使用して、このソリューションを複数の AWS アカウント と に拡張できます AWS リージョン。詳細については、CloudFormation ドキュメントのAWS CloudFormation StackSets の使用」を参照してください。

ツール

  • AWS Command Line Interface (AWS CLI) は、コマンドラインシェルのコマンド AWS のサービス を通じて とやり取りするのに役立つオープンソースツールです。

  • AWS CloudFormation は、 AWS リソースのセットアップ、迅速かつ一貫したプロビジョニング、および AWS アカウント リージョン全体のライフサイクル全体にわたる管理に役立ちます。

  • Amazon GuardDuty は、ログを分析して処理し、 AWS 環境内の予期しないアクティビティや不正なアクティビティの可能性を特定する継続的なセキュリティモニタリングサービスです。

  • AWS Identity and Access Management (IAM) は、誰を認証し、誰に使用を認可するかを制御することで、 AWS リソースへのアクセスを安全に管理できます。

  • AWS Lambda は、サーバーのプロビジョニングや管理を行うことなくコードを実行できるコンピューティングサービスです。必要に応じてコードを実行し、自動的にスケーリングするため、課金は実際に使用したコンピューティング時間に対してのみ発生します。

エピック

タスク説明必要なスキル

CloudFormation テンプレートを作成します。

  1. 追加情報」セクションの CloudFormation テンプレートのコードをコピーします。

  2. テキストエディタでコードを貼り付けます。

  3. ファイルをワークステーション上の sample.yaml で保存します。

AWS DevOps

CloudFormation スタックを更新する。

  1. で AWS CLI、次のコマンドを入力します。これにより、sample.yaml ファイルを使用して新しい CloudFormation スタックが作成されます。詳細については、CloudFormation ドキュメントの「スタックの作成」を参照してください。

    aws cloudformation create-stack \ --stack-name guardduty-cf-stack \ --template-body file://sample.yaml
  2. スタックが正常に作成された AWS CLIことを示す次の値が に表示されることを確認します。スタックの作成に必要な時間はさまざまです。

    "StackStatus": "CREATE_COMPLETE",
AWS DevOps

で GuardDuty が有効になっていることを確認します AWS アカウント。

  1. にサインイン AWS Management Console し、GuardDuty コンソールを開きます。

  2. GuardDuty サービスが有効になっていることを確認します。

クラウド管理者、AWS 管理者

追加のアカウントまたはリージョンを設定します。

ユースケースに応じて、CloudFormation StackSet 機能を使用して、このソリューションを複数の AWS アカウント と に拡張します AWS リージョン。詳細については、CloudFormation ドキュメントのAWS CloudFormation StackSets の使用」を参照してください。

クラウド管理者、AWS 管理者

CloudFormation テンプレートを作成し、スタックをデプロイします。

タスク説明必要なスキル

CloudFormation テンプレートを作成します。

  1. 追加情報」セクションの CloudFormation テンプレートのコードをコピーします。

  2. テキストエディタでコードを貼り付けます。

  3. ファイルをワークステーション上の sample.yaml で保存します。

AWS DevOps

CloudFormation スタックを更新する。

  1. で AWS CLI、次のコマンドを入力します。これにより、sample.yaml ファイルを使用して新しい CloudFormation スタックが作成されます。詳細については、CloudFormation ドキュメントの「スタックの作成」を参照してください。

    aws cloudformation create-stack \ --stack-name guardduty-cf-stack \ --template-body file://sample.yaml
  2. スタックが正常に作成された AWS CLIことを示す次の値が に表示されることを確認します。スタックの作成に必要な時間はさまざまです。

    "StackStatus": "CREATE_COMPLETE",
AWS DevOps

で GuardDuty が有効になっていることを確認します AWS アカウント。

  1. にサインイン AWS Management Console し、GuardDuty コンソールを開きます。

  2. GuardDuty サービスが有効になっていることを確認します。

クラウド管理者、AWS 管理者

追加のアカウントまたはリージョンを設定します。

ユースケースに応じて、CloudFormation StackSet 機能を使用して、このソリューションを複数の AWS アカウント と に拡張します AWS リージョン。詳細については、CloudFormation ドキュメントのAWS CloudFormation StackSets の使用」を参照してください。

クラウド管理者、AWS 管理者

関連リソース

リファレンス

チュートリアルと動画

追加情報

CloudFormation テンプレート

AWSTemplateFormatVersion: 2010-09-09 Resources: rLambdaLogGroup: Type: 'AWS::Logs::LogGroup' DeletionPolicy: Delete Properties: RetentionInDays: 7 LogGroupName: /aws/lambda/resource-checker rLambdaCheckerLambdaRole: Type: 'AWS::IAM::Role' Properties: RoleName: !Sub 'resource-checker-lambda-role-${AWS::Region}' AssumeRolePolicyDocument: Version: 2012-10-17 Statement: - Effect: Allow Principal: Service: lambda.amazonaws.com Action: 'sts:AssumeRole' Path: / Policies: - PolicyName: !Sub 'resource-checker-lambda-policy-${AWS::Region}' PolicyDocument: Version: 2012-10-17 Statement: - Sid: CreateLogGroup Effect: Allow Action: - 'logs:CreateLogGroup' - 'logs:CreateLogStream' - 'logs:PutLogEvents' - 'iam:CreateServiceLinkedRole' - 'cloudformation:CreateStack' - 'cloudformation:DeleteStack' - 'cloudformation:Desc*' - 'guardduty:CreateDetector' - 'guardduty:ListDetectors' - 'guardduty:DeleteDetector' Resource: '*' resourceCheckerLambda: Type: 'AWS::Lambda::Function' Properties: Description: Checks for resource type enabled and possibly name to exist FunctionName: resource-checker Handler: index.lambda_handler Role: !GetAtt - rLambdaCheckerLambdaRole - Arn Runtime: python3.13 MemorySize: 128 Timeout: 180 Code: ZipFile: | import boto3 import os import json from botocore.exceptions import ClientError import cfnresponse guardduty=boto3.client('guardduty') cfn=boto3.client('cloudformation') def lambda_handler(event, context): print('Event: ', event) if 'RequestType' in event: if event['RequestType'] in ["Create","Update"]: enabled=False try: response=guardduty.list_detectors() if "DetectorIds" in response and len(response["DetectorIds"])>0: enabled="AlreadyEnabled" elif "DetectorIds" in response and len(response["DetectorIds"])==0: cfn_response=cfn.create_stack( StackName='guardduty-cfn-stack', TemplateBody='{ "AWSTemplateFormatVersion": "2010-09-09", "Description": "A sample template", "Resources": { "IRWorkshopGuardDutyDetector": { "Type": "AWS::GuardDuty::Detector", "Properties": { "Enable": true } } } }' ) enabled="True" except Exception as e: print("Exception: ",e) responseData = {} responseData['status'] = enabled cfnresponse.send(event, context, cfnresponse.SUCCESS, responseData, "CustomResourcePhysicalID" ) elif event['RequestType'] == "Delete": cfn_response=cfn.delete_stack( StackName='guardduty-cfn-stack') cfnresponse.send(event, context, cfnresponse.SUCCESS, {}) CheckResourceExist: Type: 'Custom::LambdaCustomResource' Properties: ServiceToken: !GetAtt - resourceCheckerLambda - Arn Outputs: status: Value: !GetAtt - CheckResourceExist - status

Lambda リソースの代替コードオプション

提供されている CloudFormation テンプレートは、参照とガイダンスを容易にするために、インラインコードを使用して Lambda リソースを参照します。または、Lambda コードを Amazon Simple Storage Service (Amazon S3) バケットに格納し、CloudFormation テンプレートで参照できます。インラインコードはパッケージの依存関係やライブラリをサポートしていません。Lambda コードを Amazon S3 バケットに配置し、CloudFormation テンプレートで参照することで、これらをサポートできます。

以下のコード行に置き換えます。

Code: ZipFile: |

次のコード行を使用します。

Code: S3Bucket: <bucket name> S3Key: <python file name> S3ObjectVersion: <version>

Amazon S3 バケットでバージョニングを使用していない場合は、 S3ObjectVersionプロパティを省略できます。詳細については、Amazon S3 ドキュメントの「Amazon S3 バケットでのバージョニングの使用」を参照してください。 Amazon S3

プライバシーサイト規約Cookie の設定
© 2025, Amazon Web Services, Inc. or its affiliates.All rights reserved.