[レポート] AWS CloudFormationによるプロアクティブな制御のためのコーディング #GRC441 #AWSreInforce

2024.06.12

こんにちは、AWS 事業本部の平木です!

フィラデルフィアで開催されている AWS re:Inforce 2024 に参加しています。

本記事は AWS re:Inforce 2024 のセッション「Coding for proactive controls with AWS CloudFormation」のセッションレポートです。

セッション概要

クラウドネイティブアーキテクチャを採用し、アプリケーションを大規模にデプロイする組織が増えるにつれ、堅牢でプロアクティブなセキュリティ管理の必要性が最も重要になっています。このコードトークでは、AWS CloudFormation Hooks と CloudFormation Guard を使用したセキュリティのベストプラクティスについて説明します。静的テンプレートの検証や CloudFormation Hooks との統合、AWS Config のカスタムルールとして使用できる Guard DSL ルールの書き方を学びます。
(Deepl 翻訳)

前提

本セッションでは下記 AWS サンプルの内容をもとに解説しています。

CloudFormation Guard と Hooks の紹介

現在、Amazon は様々なセキュリティフレームワークによるセキュリティやコンプライアンスを維持しながら年間 1 億 5 千万回以上本番環境に対してデプロイを行っており、このコンプライアンスを守りながら迅速にデプロイしていると言います。

この開発プロセスを維持するためにCloudFormation Guardを活用しているようです。

CloudFormation Guard は、オープンソースのフレームワークでドメイン固有言語を使用し検証するポリシーを記述することができ、CloudFormation Hooks を統合させることでデプロイ前にスタック操作を検証することができます。

開発ワークフローに、テンプレートの記述、cfn-lint による構文の検証、Guard ルールへの準拠の検証、サンドボックスアカウントでのテスト、自動デプロイなどを組み込むことで一貫したコンプライアンス遵守を徹底できます。

この一貫したセキュリティ、コンプライアンスを遵守するための CloudFormation Guard と Hooks の活用方法について次のデモで解説していました。

デモ

このセッションのデモでは、S3 バケットの暗号化を保証する基本的な CloudFormation Guard ルールの作成、メタデータを使用したルールの抑制、Amazon CodeWhisperer(生成 AI モデル)を使用したルールの生成を実演していました。

撮影したスライド画像が乱れており残念ながら掲載できないためテキストベースで紹介しますが、基本的には前提で記載した GitHub の内容を元に、記述の仕方などが解説されていましたのでご参照していただければと思います。

例えば、下記のようなポリシーを記載し、

let buckets = Resources.*[ Type == 'AWS::S3::Bucket'
  Metadata.guard.SuppressedRules not exists or
  Metadata.guard.SuppressedRules.* != "BUCKET_ENCRYPTION"
]

rule BUCKET_ENCRYPTION when %buckets !empty {
  %buckets.Properties.BucketEncryption exists
  <<
     Dude, you got a Benz, I got a busket
  >>
}

下記のようなテンプレートがあると、

Resource:
  Busket:
    Type: AWS::S3::Bucket

テンプレート内では暗号化を宣言していないため validate を行うと失敗します。

このように CloudFormation を活用している環境で人為的ミスを防ぐためにも CloudFormation Guard によるガードレールの設置は不可欠なように感じました。

また、デモの中では rain を活用したテンプレートのビルド方法なども紹介されていました。

終わりに

今回のセッションの目的としては、開発者がスピードとセキュリティを維持しながら効率的にコンプライアンスチェックを実施できるようにすることでした。

CloudFormation Guard と CloudFormation Hooks を統合し活用することで、

  • 事前検証によるデプロイの信頼性向上
  • デプロイプロセスの自動化
  • セキュリティとコンプライアンスの強化
  • 開発者の生産性向上
  • 一貫性のあるインフラ管理

を図ることができます。

一貫した IaC 管理を徹底するためにも CloudFormation Guard と Hooks を活用していく重要性を知ることができたので次回に実際の活用方法などを検証してみたいと思いました。

この記事がどなたかの役に立つと嬉しいです。

宣伝

6/17(月)19 時よりおそらくオフライン世界最速の re:Cap を開催します。

AWS re:Inforce 2024 に現地参加したメンバーによる振り返りイベントを開催しますのでぜひ足を運んでいただければと思います。

参加登録は以下、Connpass よりよろしくお願いいたします!