[AWS CloudTrail] 証跡/内部監査用のログを貯める

監査対策としてCloudTrailでログを取得する方式を解説します。

CloudTrailとは?

CloudTrail

  • 単一のAWS アカウントにおける、全APIリクエストを記録するサービス

    • 公式説明
      1
      CloudTrail を使用すると、AWS アカウントのイベントを表示できます。これらのイベントの記録を保持するには、証跡を作成します。証跡により、イベントメトリクスを作成し、アラートをトリガーして、イベントワークフローを作成することもできます。 また、AWS Organizations のマスターアカウントでログインすると、組織の証跡を作成することができます。
    • 一つのAPではなく、アカウント全体の話
    • 外向きよりも、内向きの監視が目的
      • AWSアカウントを共有する内部のIAMユーザの悪意を持った行動を抑えることができる
      • 外部からのリクエストも記録できる
  • デフォルト

    • 90日間の記録は初めから有効
    • 無料
    • 永続的に保持する際には有料となる
  • ”証跡情報の作成”

    • S3
    • 本番稼働でなければ、ひとまず対処しなくてもOK?
  • CloudTrail Insights

    • 異常検知機能
      • 公式説明
        1
        CloudTrailが異常なアクティビティを検出した場合、Insightsイベントはトレイルの送信先のS3バケットに配信されます。また、CloudTrailコンソールでInsightsイベントを表示すると、インサイトの種類やインシデント期間を確認することができます。CloudTrailのトレイルでキャプチャされる他のタイプのイベントとは異なり、インサイトイベントは、アカウントの通常の使用パターンとは大きく異なるアカウントのAPI使用状況の変化をCloudTrailが検出した場合にのみログに記録されます。
    • 有料
  • Organizationのマスターアカウントを使えば、マルチアカウント運用でも組織の証跡を作成可能

    • 監査チームとの連携に活用

CloudTrailで内部監査用のログを貯める

デフォルトでは90日間の情報しか確認出来ないため、証跡を作成してS3 bucketに貯める必要がある。

  • AWS Console/CloudTrail
  • ダッシュボード/”証跡の作成”を押下
    CloudTrail

証跡の作成

  • 使い方は2種類ありそう
    • アカウント統一の証跡を作成
    • サービス毎に証跡を分ける
      • 複数の認跡の作成では、追加コストが発生

リージョン毎に一つまでの証跡を作成しても無料であり、S3のみの課金となる。
CloudWatch側でサービス毎のログは取るので、CloudTrailはアカウント統一の証跡を作成することにする

CloudTrail 証跡の作成

  • 証跡情報の作成
    • 証跡名
      • アカウント名-logsで設定してみる
    • 証跡情報を全てのリージョンに適応
      • はい
    • 管理イベント
      • そのまま
    • Insightsイベント
      • いいえ
        • 追加料金を避けるため
        • CloudWatchからのAlartで充分だと考える
    • データイベント
      • S3, Lambda共に全てでOK
    • ストレージの場所
      • 新しいS3バケットを作成しますか?
        • はい
      • S3バケット
        • 適当に命名
          • bucket-for-cloudtrail-logs
    • 詳細
      • ログファイルの検証
        • CloudTrailからログファイルを送信後に、編集/削除/変更がないか確認できる
        • Cloud Configが必要だと考えていたが、利用せずとも改ざん対策できた
    • タグ
      • Own
        • 証跡の作成者だけ登録
    • 作成

以上で証跡とS3 Bucketが生成される。内部監査対策は基本的にこれだけでOK。

参考

関連記事

@EventEmitter @Input @Output @ViewChild ACM AMP API Gateway AR AR.js AR.js Studio AWS AWS Amplify AWS Budgets AWS Cost Explorer AWS SDK for JavaScript AddThis Adobe XD Alexa Amazon CloudWatch Amazon Honycode Amazon SNS Android Angular Angular Material AngularFire AppSync Augury C CDN CI/CD Cloud Craft Cloud9 CloudFormation CloudFront CloudTrail Cognito Cost Anomaly Detection Cubase ai Cubasis LE DTM Disqus DynamoDB Elgato HD 60S Firebase Firebase Hosting Former2 Github Github Actions Github.com GithubEnterprise GithubPages Google Chrome Google Cloud Shell GraphQL Hexo Hosting IAM Ionic JSON JavaScript LadioCast Logging LowCode MFA MS Authentication MacBook Pro 16 Mind Node NETDUETTO Netflix Party Netlify Network NoCode Observable PO PdM Promise RPA ReactiveForm Recognition Route53 S3 SAM(Serverless Application Model) SAR SSL SYNCROOM Schematics ScrumInc Serverless Service Siri Sitemap Spark AR Steinberg UR44C Teams Touch Cast Studio Treetable TypeScript UI UI Bakery WAF WAFv2 WEB Page Dev WEB会議 WebAR WebSocketAPI Webhook Windows Power Automate Wireshark aot async/await aws config cloud9 display.land draw.io e2e test filter() forkJoin() google search console hexo-generator-amp iOS iPad Pro iPhone icarus map() mat input mat tree mat-checkbox mat-input mat-selection-list mmhmm ngFor plantUML popIn Aladdin2 then() vscode ”global is not defined” らくがきAR アジャイル アジャイル開発 クロスプラットフォーム ショートカット スクラム スクラム開発 テレワーク ファイル操作 ブラウザ型IDE プロダクトオーナー プロダクトマネージャー プロトタイピング リモートセッション 共同開発 双方向データバインディング 待ち合わせ処理 認定スクラムマスター 静的WEB Hosting 静的WEBサイトHosting
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×