SAST をデプロイする

このラボでは、SonarQube を使用してコードを更新するたびに、静的アプリケーションセキュリティテストを自動的に実行するようパイプラインを更新します。他にもSASTソリューションもありますが、ここで紹介する概念はどのツールにも適用できるはずです。

Fargate 上の Amazon ECS にデプロイされるフリーでオープンソースの SonarQube コミュニティエディションを使用します。このセクションの終わりまでに、次のような更新されたパイプラインが準備されるはずです。

pipeline-part2

それでは始めましょう!

  1. SonarQube サーバーと CodeBuild プロジェクトは、提供された CDK 構成要素ですでに定義されています。先にダウンロードしたPipelineフォルダにあるconfig.yamlファイル内のSASTを有効にします。まずは Cloud9 IDE で、config.yaml を開きます。 config-yaml

  2. sast セクションの、enabled の値を True に設定してください。この時までに、config.yaml は次のようになります。

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    
    ### Staging Auto-Deploy
    auto_deploy_staging: True
    
    ### Static Application Security Testing (SAST) Step
    sast:
      enabled: True
      sonarqube:
        image: public.ecr.aws/adelagon/sonarqube:lts-community
        token: <PLACE_SONARQUBE_TOKEN_HERE>
    
    ### Software Composition Analysis (SCA) Step
    sca:
      enabled: False
    
    ### License Checker Step
    license:
      enabled: False
    
    ### Dynamic Application Security Testing (DAST) Step
    dast:
      enabled: False
      zaproxy:
        instance_type: t2.medium
        api_key: SomeRandomString

  3. CDK によってデプロイされる新しい AWS リソースの情報を確認するには、ターミナルウィンドウに移動して次のように入力します。

    cd ~/environment/pipeline
    cdk diff
    
  4. 次に、以下を入力し変更を展開します。確認のためのメッセージが出てきたら、y と return を押下します。

    cdk deploy
    
  5. CDK がタスクを完了するのを待ちます。完了すると、次のような出力が表示されます。 cdk-sonarqube-success

  6. プレフィックス `DevToolsSonarQubeServiceURL で示されたURLをコピーして、ブラウザに貼り付けます。SonarQube は、502 ゲートウェイタイムアウト または SonarQube が起動中画面を表示することがあります。初期化を完了し、時々更新するのには数分かかります。 sonarqube-starting

  7. SonarQube の初期化が完了すると、SonarQube のログインページが表示されます。SonarQube のデフォルトの認証情報は ユーザー名:adminパスワード:admin です。 sonarqube-login

  8. admin としてログインすると、パスワードの変更を促すメッセージが表示されます。新しいパスワードはメモするか、覚えておいてください。 sonarqube-change-passwd

  9. パスワードを更新すると、SonarQube ダッシュボードにアクセスできるようになります。 sonarqube-dashboard

  10. 次に、SonarQube トークンを生成する必要があります。これは、AWS CodeBuild を認証して、SonarQube サーバーにスキャンをリクエストできるようにするために必要です。メニューバーの Administrationをクリックし、SecurityUsersの順にクリックします。 sonarqube-admin

  11. このラボでは、AWS CodeBuild によって特別に使用される新しい SonarQube ユーザーを作成します。[Create User] ボタンをクリックします。 sonarqube-users

  12. ユーザーの詳細を入力し、[Create] をクリックします。(以下の例と同様の値を入力しても構いません。) sonarqube-create-user

  13. SonarQube ユーザーを作成したら、そのユーザーに固有のトークンを生成できます。下の画像のように、Update Tokens ボタンをクリックします。 sonarqube-update-token

  14. トークン名を入力し、Generate をクリックします。 sonarqube-token-gen

  15. 生成されたトークンをコピーします。 sonarqube-token-created

  16. 次に Cloud9 IDE に戻って、config.yaml をもう一度更新して、SonarQube から生成したトークンを提供する必要があります。<PLACE_SONARQUBE_TOKEN_HERE>の値を、コピーしたトークンに置き換えます。この時までに、config.yaml は次のようになります。

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    
    ### Staging Auto-Deploy
    auto_deploy_staging: True
    
    ### Static Application Security Testing (SAST) Step
    sast:
      enabled: True
      sonarqube:
        image: public.ecr.aws/adelagon/sonarqube:lts-community
        token: 1ecf.......60f2
    
    ### Software Composition Analysis (SCA) Step
    sca:
      enabled: False
    
    ### License Checker Step
    license:
      enabled: False
    
    ### Dynamic Application Security Testing (DAST) Step
    dast:
      enabled: False
      zaproxy:
        instance_type: t2.medium
        api_key: SomeRandomString

  17. config.yaml を保存し、最後にターミナルウィンドウで cdk deploy を実行し、CodeBuild プロジェクトを新しいトークンで更新します。

    cdk deploy
    
  18. CDK のデプロイが成功したら、これで完了です。AWS CodePipeline ダッシュボードを見ると、checkOutsource の後に新しい SAST ステージが追加された更新されたパイプラインが表示されます。 updated-pipeline