Amazon CodeGuru Reviewerによる静的解析(SAST)をやってみた

AWS

2024.4.11

Topics

はじめに

こんにちは、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万行のコードが対象です。

参考: Amazon CodeGuru の料金

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に関するお役立ち情報を配信中!

Shun

好きな言葉は生ビール199円です。日本ビール協会認定1冠、AWS12冠、Google Cloud11冠

Recommends

こちらもおすすめ

Special Topics

注目記事はこちら