このラボでは、SonarQube を使用してコードを更新するたびに、静的アプリケーションセキュリティテストを自動的に実行するようパイプラインを更新します。他にもSASTソリューションもありますが、ここで紹介する概念はどのツールにも適用できるはずです。
Fargate 上の Amazon ECS にデプロイされるフリーでオープンソースの SonarQube コミュニティエディションを使用します。このセクションの終わりまでに、次のような更新されたパイプラインが準備されるはずです。
それでは始めましょう!
SonarQube サーバーと CodeBuild プロジェクトは、提供された CDK 構成要素ですでに定義されています。先にダウンロードしたPipelineフォルダにあるconfig.yamlファイル内のSASTを有効にします。まずは Cloud9 IDE で、config.yaml を開きます。
sast セクションの、enabled の値を True に設定してください。この時までに、config.yaml は次のようになります。
|
|
CDK によってデプロイされる新しい AWS リソースの情報を確認するには、ターミナルウィンドウに移動して次のように入力します。
cd ~/environment/pipeline
cdk diff
次に、以下を入力し変更を展開します。確認のためのメッセージが出てきたら、y と return を押下します。
cdk deploy
CDK がタスクを完了するのを待ちます。完了すると、次のような出力が表示されます。
プレフィックス `DevToolsSonarQubeServiceURL
で示されたURLをコピーして、ブラウザに貼り付けます。SonarQube は、502 ゲートウェイタイムアウト または SonarQube が起動中画面を表示することがあります。初期化を完了し、時々更新するのには数分かかります。
SonarQube の初期化が完了すると、SonarQube のログインページが表示されます。SonarQube のデフォルトの認証情報は ユーザー名:admin と パスワード:admin です。
admin としてログインすると、パスワードの変更を促すメッセージが表示されます。新しいパスワードはメモするか、覚えておいてください。
パスワードを更新すると、SonarQube ダッシュボードにアクセスできるようになります。
次に、SonarQube トークンを生成する必要があります。これは、AWS CodeBuild を認証して、SonarQube サーバーにスキャンをリクエストできるようにするために必要です。メニューバーの Administrationをクリックし、Security、Usersの順にクリックします。
このラボでは、AWS CodeBuild によって特別に使用される新しい SonarQube ユーザーを作成します。[Create User] ボタンをクリックします。
ユーザーの詳細を入力し、[Create] をクリックします。(以下の例と同様の値を入力しても構いません。)
SonarQube ユーザーを作成したら、そのユーザーに固有のトークンを生成できます。下の画像のように、Update Tokens ボタンをクリックします。
トークン名を入力し、Generate をクリックします。
生成されたトークンをコピーします。
次に Cloud9 IDE に戻って、config.yaml をもう一度更新して、SonarQube から生成したトークンを提供する必要があります。<PLACE_SONARQUBE_TOKEN_HERE>の値を、コピーしたトークンに置き換えます。この時までに、config.yaml は次のようになります。
|
|
config.yaml を保存し、最後にターミナルウィンドウで cdk deploy を実行し、CodeBuild プロジェクトを新しいトークンで更新します。
cdk deploy
CDK のデプロイが成功したら、これで完了です。AWS CodePipeline ダッシュボードを見ると、checkOutsource の後に新しい SAST ステージが追加された更新されたパイプラインが表示されます。