[レポート] Practical shift left for builders #APS352-R #AWSreInforce

2023.06.15

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

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

本記事は AWS re:Inforce 2023 のセッション「Practical shift left for builders」のセッションレポートです。

セッション概要

Providing early feedback in the development lifecycle maximizes developer productivity and enables engineering teams to deliver quality products. In this builders’ session, learn how to use AWS Developer Tools to empower developers to make good security decisions early in the development cycle. Tools such as Amazon CodeGuru, Amazon CodeWhisperer, and Amazon DevOpsGuru can provide continuous real-time feedback upon each code commit into a source repository and supplement this with ML capabilities integrated into the code review stage.

構成図

構成図は以下の通りです。

ハンズオン資料より引用

CodeCommit の Main ブランチへのプルリクエストをイベントに Amazon CodeBuild をトリガーし、ジョブを実行するワークショップでした。

AWS CodeBuild では Amazon CodeGuru, Bandit, OPA などのコードスキャンを実行する仕組みとなっており、Python, Java, Terraform の 3 つのパイプランシナリオに対して、シフトレフトレビューを行うハンズオンとなっていました。

やってみた

Python のシナリオ

Python のシナリオから始めます。

新しいブランチを作成後、 sample.py というサンプルファイルを作成し、CodeCommit にプッシュするところから始まります。

CodeCommit レポジトリを確認し、新しいブランチが作成され、sample.pyがコミットされていることを確認したら、プルリクエストを作成します。

Python のケースの場合、Main ブランチへのプルリクエストをイベントに CodeBuild が起動する CloudWatch Event のルールが作成されていました。

実行された CodeBuild では、Bandit という Python コードのセキュリティチェックを行っていました。

また、CodeCommit コンソールからも PR スレッドに CodeBuild (Bandit チェック) のコメントが添付されていました。

自動で チェック、PR にコメント付けはとても便利ですね。

再度、エラーが出ている部分を修正して PR を作成してみます。

修正が完了すると、無事 Passed でセキュリティチェックが合格しました。

Java のシナリオ

Java のシナリオでは、 Amazon CodeGuru を利用してレビューを行いました。まずは、 CodeCommit との紐付けを行います。

初回はフルリポジトリ分析が走り、初回は推奨事項無しでチェックが完了しました。

Java のレポジトリに対して、PR を作成すると、CdoeGuru 側で増分コードレビューが走り、セキュリティレビューが実行されます。

増分コードレビューであるため、レビュー時間の短縮に繋がるの便利ですね。

裏の仕組みとしては同じく、CodeCommit の PR をイベントに CodeBuild で実行していました。

コードレビューの結果も出てました。3つ推奨事項が出てきてました。

PR のコメントの残り方が特徴的でした。改善できるコードの部分を的確に表示していて良かったです。

Terraform のシナリオ

最後に Terraform のシナリオです。同じくソースコードを変更し、 PR の作成まで行います

Terraform では、 OPA を利用したチェックが行われていました。

OPA でリソースだけではなく、Terraform Provider のバージョンチェックも行っており、勉強になりました。

コードを修正して、無事マージすることができました。

まとめ

以上、 Practical shift left for builders のセッションレポートでした!

複数のシナリオが用意されており、各シナリオで利用するサービスが異なるポイントがかなり勉強になりました。この記事がどなたかの参考になれば幸いです。

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