Amazon CodeGuru Reviewerによる静的解析(SAST)をやってみた
はじめに
こんにちは、Shunです。
この記事では、CodeGuru Reviewerを用いた静的解析の実施方法をご紹介します。
セキュリティ対策として、簡単かつ安価に実装可能です。
本記事では、以下を参考に実施しています。
参考: Security for Developers
想定読者
- CodeGuru Reviewerのサービスに興味がある方
- 静的解析(SAST)に興味がある方
- AWSのセキュリティに興味がある方
本記事で取り扱う内容
- CodeGuru Reviewerのサービス概要
- CodeGuru Reviewerの設定方法
- CodeGuru Reviewerによる検出項目
本記事で取り扱わない内容
- CodeCommitなどのAWSサービスの詳細説明
- AWSサービスの設定方法
CodeGuru Reviewerについて
概要
CodeGuru Reviewerは、機械学習とプログラム解析を活用し、JavaとPythonのコード品質を向上させることを目指す開発者向けツールです。
コードリポジトリとの統合をサポートし、構文エラーを超えたセキュリティ問題など複雑な欠陥の特定と提案を行います。
このサービスは、コード品質の維持とベストプラクティスの導入を促進します。
参考: Amazon CodeGuru Reviewer とは何ですか?
対象リポジトリと言語
CodeGuru Reviewerは、以下のソースプロバイダーのJavaおよびPythonコードリポジトリに対応しています。
- AWS CodeCommit
- Bitbucket
- GitHub
- GitHub Enterprise Cloud
- GitHub Enterprise Server
- Amazon S3
料金
CodeGuru Reviewerの料金体系は以下の通りです。
リポジトリの最初の10万行のコード: 10.00USD
リポジトリの追加の10万行のコード: 30.00USD
無料枠として、リポジトリの最初の10万行のコードが対象です。
CodeGuru Reviewerを使ってみる
ソースプロバイダーの設定
コンソールからCodeGuruのサービスを開き、[リポジトリ] > [リポジトリを関連付けて分析を実行]を選択します。
ソースプロバイダー、リポジトリ、分析を実行するブランチを選択します。
今回は、CodeCommitを例に説明します。
CodeCommitを使用する場合、[CodeCommit] > [リポジトリ] > [リポジトリの作成] または、[CodeCommit] > [リポジトリ] > [既存のリポジトリ] > [設定] からCodeGuru Reviewerを設定できます。
リポジトリの作成時
既存のリポジトリの設定
コードレビューの確認
リポジトリの分析が完了したら、[コードレビュー] > [フルリポジトリ分析]から結果を確認できます。
結果には、改善のための具体的な推奨事項が表示され、適用すべきコード修正が提案されます。
推奨事項では、クッキーのhttponly
属性をTrue
に設定しましょう!との内容が表示されています。
推奨事項の和訳です。
コードのセキュリティを高めるには、クッキーのhttponly属性をTrueに設定することを検討してください。この属性はデフォルトでは False です。Trueに設定することで、クライアント側のスクリプトがクッキーの内容を読み取ることを防ぎます。安全でないクッキーの設定は、暗号化されていないクッキーの送信につながる可能性があります。今はクッキーに機密データが含まれていなくても、後で追加される可能性があります。すべてのクッキーは安全な経路を通じてのみ送信するのがよいです。
推奨事項を選択すると、コード内の該当箇所がハイライトで表示されます。
CodeGuru Reviewerで、以下のJava、Pythonの推奨事項を検出することが可能です。
Amazon CodeGuru Detector Library
推奨事項の内容を修正し、対象ブランチへプルリクエストを作成します。
以下のようにCodeGuru Reviewerの増分コードレビューが実行されます。
増分コードレビューより検出結果を確認することができます。
先ほどの推奨事項をすべて修正したので、増分コードレビューでは推奨事項は表示されていません。
まとめ
CodeGuru Reviewerを利用することで、静的解析を通じてコード品質の向上が図れます。
実装する作業もリポジトリの紐づけのみとなりますので、非常に簡単に試すことが可能です。
今回はご紹介出来ませんでしたが、CodeGuru ReviewerをCI/CDパイプラインへ統合することによりDevSecOpsの実現が可能になります。
次回は、その具体的な実装方法について詳しく解説します。
最後まで読んでいただきありがとうございます!
テックブログ新着情報のほか、AWSやGoogle Cloudに関するお役立ち情報を配信中!
Follow @twitterGoogle Cloud Partner Top Engineer 2025、2024 AWS All Cert、ビール検定1冠
Recommends
こちらもおすすめ
-
Terraform を運用するについて考える ~第2回 Terraformを始める~
2022.10.26
-
AWS CodePipelineでTerraformパイプラインを実装する
2024.3.28
-
【AWS Summit Tokyo 2018】セッションレポート まとめ
2018.6.7
Special Topics
注目記事はこちら
データ分析入門
これから始めるBigQuery基礎知識
2024.02.28
AWSの料金が 10 %割引になる!
『AWSの請求代行リセールサービス』
2024.07.16