[レポート] Simplify and automate security with compliance as code #GRC354 #AWSreInforce

2023.06.14

こんにちは!AWS事業本部コンサルティング部のたかくに(@takakuni_)です。

アナハイムで開催されている AWS re:Inforce 2023 に参加しています。

本記事は AWS re:Inforce 2023 のセッション「Simplify and automate security with compliance as code」のセッションレポートです。

セッション概要

Managing compliance for thousands of resources in the cloud does not have to be complicated. The key is to automate and simplify. In this builders’ session, walk through concepts of compliance as code and practice building a DevSecOps compliance pipeline that allows you to automate, validate, test, and deploy with minimum effort. This CI/CD pipeline for compliance provides full coverage of automated remediations in code for a selected compliance conformance pack using custom-built AWS Systems Manager automation documents and incorporates these automated and continuous remediations on detected violations by integrating into AWS CodePipeline.

構成図

構成図は以下になります。

CodeCommit でソース管理、S3 でアーティファクト管理、CodeBuild (AWS CLI) で AWS Config を更新するようなパイプラインを作成するがセッションの内容になります。

やってみた

AWS Config の有効化

AWS Config Rule をコードで管理したいため、 AWS Config 有効化時にはルールを追加しないように作ります。

パイプラインの仕組み上、適合パックごとにデプロイするため、 Security Hub の自動作成ルールとは競合しないものの、実運用に適用するなら、管理が煩雑にならないように注意したほうがいいなと思いました。

コードのアップロード

パイプラインの仕組みとしては、 CodeCommit に buildspec.yaml と Config ルールが記載されている CloudFormation テンプレートファイル (cpack-cfn.yml)をアップロードして、そのファイルをもとに Config Rule を管理していく方法を採用していました。

aws configservice put-conformance-pack コマンドの --template-s3-uri オプションの存在を初めて知ったので勉強になりました。

CodeCommit のデプロイをトリガーに CodePipeline が実行するパターンで初回デプロイが完了しました。

Config ルールを見てみる

初回デプロイ後に Config ルールを見てみると、無事未使用のセキュリティグループを検出するルールがデプロイされていました。

更新してみる

追加シナリオで cpack-cfn.yml をアップデートしてみると、無事 CodePipeline で更新されていることがわかりました。

まとめ

以上、Simplify and automate security with compliance as code のセッションレポートでした。

CloudFormation スタック以外(CLIベース)でコード管理するのが、とても新鮮なセッションでとても楽しかったです。

AWS事業本部コンサルティング部のたかくに(@takakuni_)でした!