DevSecOpsパイプライン構築のAWSワークショップ(COP206-R)に参加してきた #reinvent
こんにちは。 AWS re:Invent 2022 、楽しんでいますでしょうか。
ラスベガス現地では Session はもちろん、 ラボ環境などで実際に触りながら学ぶ Workshop や、 ホワイトボード上でAWSエキスパートとアーキテクチャの議論などができる Chalk Talk など、 多種多様な学びを得ることができます。
今回はワークショップである Build a complete DevSecOps pipeline on AWS(COP206-R)
に参加してきました。 そのレポートを書いていきます。
ワークショップの内容
はじめにワークショップの説明とアーキテクチャ全体像を引用します。
Build a complete DevSecOps pipeline on AWS
Organizations want to deliver applications that prioritize security and governance. In this workshop, learn to build a DevSecOps CI/CD pipeline with security and compliance testing integrated into the development process. Discover how you can create a CI/CD pipeline that delivers tested and secure infrastructure as code using a Git branching strategy for your AWS accounts. Learn to use GitHub Actions to integrate AWS CloudFormation Guard (cfn-guard) to run policy validations and ensure that pipeline deployments are consistent and that they meet your organization’s compliance standards.
ざっくり言ってしまうと CloudFormationの CI/CD 環境作成 のワークショップです。
CFnテンプレートを feat ブランチ上で作成します。 feat ブランチに push されるたびに テンプレートが ちゃんとしているかチェック します。 これがCI(Continuous Integration)部分です。
「ちゃんとしている」ことが確認できれば main ブランチへマージします。 この際にAWS環境へCFnスタックが 自動で展開 されます。 これがCD(Continuous Delivery)部分です。
こんな感じの CI/CD 環境を GitHub Actions で実現します。
実際の流れ、雰囲気
最初の10分ぐらいは説明パートです。 Why DevSecOps? Shift Left?
のざっくり説明と、 ワークショップで使う要素である CloudFormation Guard, GitHub Actions のざっくり説明がされました。
そのあとはひたすら各々のワークショップタイムです。 AWSラボ環境およびガイドを使って環境構築していきます。
ワークショップ会場はこんな感じ。 私含め、みなさん各自パイプライン作成に勤しんでいます。
詰まったところや不明点があれば、会場内にいるスタッフに聞いて解決できます。 またテーブル席内の参加者同士で話しあうこともカジュアルにできますね。
とりあえず通しでやってみた
このワークショップ自体は最初の説明含め 10:45 AM - 12:45 PM
でした。 私は時間内には終わらず、その後会場外で続きをして、 3時間弱ほどで通し終えました。
ワークショップのガイド各章のざっくりとした実施内容は以下のとおりです。
Environment Setup
… GitやGitHub の初期設定、AWSラボ環境のログインなどですCI/CD Account Aware Pipeline
… GitHub Actions の初期設定と ワークフローファイルのアップロードを行いますDeploy Template
… サンプルのCFnテンプレートをベースに CI/CDを実際に体験します
最終的に実行された GitHub Actions ワークフローは以下のとおり。
CI/CDパイプラインの最終成果物は、この myEC2bastion 。
展開前の事前チェックや展開の自動化など、 Shift Left ・ CI/CD を体験できました。 DevSecOps の雰囲気も理解できた(気がします)。
細かい部分を見てみる
通しでワークショップを完了した後に、 改めて作成したファイルの中身を見て、 使っているツールなど確認しました。ざっと羅列します。
- GitHub/AWS の連携準備で作成するリソースは
AWS::IAM::OIDCProvider
およびAWS::IAM::Role
。以下の内容を CFn化したもの - buildワークフローでは CloudFormationの静的解析である cfn-liint が走る
- GitHub Actions 用のアクション scottbrenner/cfn-lint-action がある。これは便利
- complianceワークフローでは cloudformation-guard が走る
- GitHub Actions用のアクション grolston/guard-action を使っている
- このアクション、
FedRAMP-Moderate
といったセキュリティ要件単位でルールセットを 指定可能。とても便利…
- deployワークフローでは事前に用意したGitHub/AWS連携のIAMロールを使って CFnスタックを作成
- GitHub Actions用のアクション aws-actions/aws-cloudformation-github-deploy を使っている。便利
…と言った感じです。 GitHub Actions用の便利アクションは知らなかったので、とても知見でした。
おわりに
re:Invent ワークショップに初参加してみました。
個人的には特にCloudFormationの解析・展開周りで役に立つ知見が多く、 充実したワークショップでした。 (ただワークショップあるあるですが、サブモニタが欲しくなりますね)
また本ワークショップは比較的「各々が好きに進めるスタイル」のようです。 他にも色々なワークショップがあるようなので、これから参加していきます。 楽しみです。
聞くだけのセッションとはまた違った楽しさがあります。 英語が話せれば同じ席の方とコミュニケーションを取ったり、 もっと充実しそうです。英語もがんばります。