AppScan 360° 静的分析 クラスターの配置

AppScan 360° 静的分析 クラスターは Azure に配置できます。グラフには、Harbor から、または tar.gz アーカイブ・ファイルのローカル・インストールからアクセスできます。どちらのバンドルにも、配置手順を簡素化するスクリプト (sast-service.sh) が含まれています。

Helm チャートからの AppScan 360° 静的分析 の配置

Harbor から Helm チャートをダウンロードした後で、次の手順を実行します。
  1. 正しい Kubernetes クラスターに接続していることを確認します。

    .kube フォルダーに正しいクラスター構成ファイルがあることを確認します。

  2. ASCP サーバーの agents-api サービス URL を取得します。

    例: https://ascp.appscan.com:5000

  3. 認証トークン、証明書、および秘密鍵の各ファイルを ASCP サーバーから現在のマシンに取得します。
    • 認証トークンは、オプション --auth-token を使用して AppScan 360° SAST 配置に指定できます。例えば、--auth-token AgentsApiKey.txt のように指定します。
    • CA 証明書は、オプション --cert を使用して AppScan 360° SAST 配置に指定できます。例えば、--cert AppScan360_RootCA.crt のように指定します。
    • 秘密鍵は、オプション --cert-key を使用して AppScan 360° SAST 配置に指定できます。例えば、--cert-key AppScan360_RootCA.key のように指定します。
  4. HCL Harbor からユーザー・アカウントの CLI トークンを取得し、ファイルに保存します。

    例えば、registry-token.txt のように指定します。

  5. RabbitMQ パスワードを保存するファイルを作成します。
    例えば、rabbitmq-pwd.txt のように指定します。このパスワードは、RabbitMQ がインストールされている場合、RabbitMQ で構成されます。
    注: このパスワードは構成後に変更できません。
  6. ローカルまたは Azure にクラスターを配置するためのオプションを指定してAppScan 360° SAST スクリプトを実行します。
    > ./sast-service.sh --install 
                      --cloud azure \
                      --ingress-host <sast-ingress-fqdn> \
                      --cert AppScan360_RootCA.crt \
                      --cert-key AppScan360_RootCA.key \
                      --server-url https://<ascp-fqdn>:<agents-api-port> \
                      --auth-token AgentsApiKey.txt \
                      --rabbitmq-password rabbitmq-pwd.txt \
                      --registry-user <harbor-username> \
                      --registry-token registry-token.txt \
                      --storage-class azurefile \
                      --ingress-class nginx
    注:
    • スクリプト・ファイルに実行許可を与えます。例えば、chmod -R +x sast-service.sh scripts/* のように指定します。
    • オプション -f を使用して、配置構成パラメーター で説明されているように、カスタマイズされた yaml ファイルへのファイル・パスを指定します。例えば、-f values.yaml のように指定します。
  7. 配置が正常に完了したことを確認します。
    > kubectl get pods -n <NAMESPACE>
    <NAMESPACE> は、AppScan 360° SAST がインストールされた名前空間です。デフォルトは hcl-appscan-sast です。
  8. AppScan 360° SAST 関連のすべてのポッドが動作していることを、次のように確認します。
    ポッド名 準備できました 状態 再始動 年齢
    analyzer-<pod-id> 1/1 実行中\n X X
    ascp-adapter-<pod-id> 1/1 実行中\n X X
    gateway-<pod-id> 1/1 実行中\n X X
    preparer-<pod-id> 1/1 実行中\n X X
    sast-service-rabbitmq-0 1/1 実行中\n X X
    scan-manager-<pod-id> 1/1 実行中\n X X
    workflow-manager--<pod-id> 1/1 実行中\n X X
  9. URL https://<sast-ingress-fqdn> を使用してブラウザーから AppScan 360° SAST にアクセスできることを確認します。

    (例: https://sast.appscan.com)

アーカイブ・ファイルからの AppScan 360° 静的分析 の配置

tar.gz ファイルをダウンロードして解凍した後で、次の手順を実行します。
  1. コンテナー・イメージを ACR またはほかに選択した任意のレジストリーにアップロードするには、以下のパラメーター・オプションを使用して、配置スクリプトにレジストリー資格情報を入力します。
    注: AppScan 360° SAST コンテナー・イメージは、リモートの OCI 準拠レジストリーにアップロードする必要があります。
    • --registry <registry>: コンテナー・イメージをプッシュするレジストリー。例: appscanregistry.azurecr.io, docker.io
    • --registry-user <registry-username>: 認証用のレジストリー・ユーザー名。
    • --registry-token <registry-password-file>: レジストリー・ユーザー・パスワードを含むファイル。例: --registry-token ./registry-.txt
    • --load-images: このオプションは、コンテナー・イメージをファイル・システムからレジストリーにロードする必要があることを示します。コンテナー・イメージはパス sast-service-base/images/*.image 内に配置できます。
  2. 正しい Kubernetes クラスターに接続していることを確認します。

    .kube フォルダーに正しいクラスター構成ファイルがあることを確認します。

  3. ASCP サーバーの agents-api サービス URL を取得します。

    例: https://ascp.appscan.com:5000

  4. 認証トークン、証明書、および秘密鍵の各ファイルを ASCP サーバーから現在のマシンに取得します。
    • 認証トークンは、オプション --auth-token を使用して AppScan 360° SAST 配置に指定できます。例えば、--auth-token AgentsApiKey.txt のように指定します。
    • CA 証明書は、オプション --cert を使用して AppScan 360° SAST 配置に指定できます。例えば、--cert AppScan360_RootCA.crt のように指定します。
    • 秘密鍵は、オプション --cert-key を使用して AppScan 360° SAST 配置に指定できます。例えば、--cert-key AppScan360_RootCA.key のように指定します。
  5. RabbitMQ パスワードを保存するファイルを作成します。
    例えば、rabbitmq-pwd.txt のように指定します。このパスワードは、RabbitMQ がインストールされている場合、RabbitMQ で構成されます。
    注: このパスワードは構成後に変更できません。
  6. ローカルまたは Azure にクラスターを配置するためのオプションを指定してAppScan 360° SAST スクリプトを実行します。
    > ./sast-service.sh --install 
                      --cloud azure \
                      --ingress-host <sast-ingress-fqdn> \
                      --cert AppScan360_RootCA.crt \
                      --cert-key AppScan360_RootCA.key \
                      --server-url https://<ascp-fqdn>:<agents-api-port> \
                      --auth-token AgentsApiKey.txt \
                      --rabbitmq-password rabbitmq-pwd.txt \
                      --registry-user <harbor-username> \
                      --registry-token registry-token.txt \
                      --storage-class azurefile \
                      --ingress-class nginx
    注: オプション -f を使用して、配置構成パラメーター で説明されているように、カスタマイズされた yaml ファイルへのファイル・パスを指定します。例えば、-f values.yaml のように指定します。
  7. 配置が正常に完了したことを確認します。
    > kubectl get pods -n <NAMESPACE>
    <NAMESPACE> は、AppScan 360° SAST がインストールされた名前空間です。デフォルトは hcl-appscan-sast です。
  8. AppScan 360° SAST 関連のすべてのポッドが動作していることを、次のように確認します。
    ポッド名 準備できました 状態 再始動 年齢
    analyzer-<pod-id> 1/1 実行中\n X X
    ascp-adapter-<pod-id> 1/1 実行中\n X X
    gateway-<pod-id> 1/1 実行中\n X X
    preparer-<pod-id> 1/1 実行中\n X X
    sast-service-rabbitmq-0 1/1 実行中\n X X
    scan-manager-<pod-id> 1/1 実行中\n X X
    workflow-manager--<pod-id> 1/1 実行中\n X X
  9. URL https://<sast-ingress-fqdn> を使用してブラウザーから AppScan 360° SAST にアクセスできることを確認します。

    (例: https://sast.appscan.com)

AppScan 360° SAST ingress の構成

提供された ingress が https を使用するよう構成するには、nginx.ingress.kubernetes.io/backend-protocol のアノテーションを使用して NGINX がバックエンド・サービスと通信する方法を指定します。

  • パラメーター
    global.ingress.additionalAnnotations
  • 説明

    AppScan 360° 静的分析 ingress で構成するアノテーションのリスト。

  • nginx.ingress.kubernetes.io/backend-protocol: HTTPS

AppScan 360° 静的分析 の再構成

AppScan 360° 静的分析 の最初の配置後、配置スクリプトを使用し、最後に指定した配置オプションを用いて Kubernetes クラスターを再構成します。最初にクラスターを削除する必要はありません。

配置スクリプトで既存のインストールが再構成されていることを確認するには、スクリプト出力メッセージで次のメッセージを確認します。
Namespace 'hcl-appscan-sast' already exists. The SAST deployment will be upgraded.
注: 状況によっては、クラスターで使用可能な配置がない間、名前空間が終了状態のままになることがあります。このような場合、再構成は失敗します。名前空間を手動で削除し、配置を再試行してください。

デプロイメントのオプション

配置に関する注意事項:
  • ローカル・インストールでは、スキャンの成果物が保存されるストレージ・プロバイダーとして local-path を使用します。
  • 配置スクリプトは、テキスト・ファイルを介して機密情報を受け入れます。例えば、レジストリー・トークンまたは RabbitMQ パスワードなどです。
  • インストールをカスタマイズするには、構成ファイルを yaml ファイル形式で指定します。
パラメーター 説明 デフォルト値 必須
-i--install AppScan 360° SAST を配置します。このフラグはオプション値を想定していません。 なし あり
-l --local-c--cloud ローカルの Kubernetes インスタンスまたはクラウド・インストールを指定します。
  • -l--local: ローカル・クラスターへの配置
  • -c --cloud: クラウド Kubernetes クラスターに配置します。パラメーターでクラウド・プラットフォームを指定します。例えば、azure などを指定します。
-l あり
-n--namespace コンテナーの名前空間。 hcl-appscan-sast あり
-f--config-file yaml-file-path 構成の詳細を指定する yaml ファイルを使用して、コンテナーの配置を構成またはカスタマイズします。yaml ファイルの構成については、「配置構成パラメーター」を参照してください なし いいえ
-ih|--ingress-host hostname ingress のアクセス可能なホスト名。AppScan 360° SAST には、クラスター上で稼働する ingress コントローラーが必要です。クラウド・クラスター用に、クラウド・プロバイダーのホスト・ゾーンに対して構成されたパブリック・アクセス可能なホスト名。

ローカル配置では、dns 修飾名を使用できます。: ローカル・インストールの場合は、dns の名前を /etc/hosts file に追加します。

-cc--cert cert-file-path TLS と HTTPS をセットアップするには、署名付き証明書ファイルへの完全修飾パスを指定します。空白のままにすると、TLS が無効になり、HTTP が使用されます。 HTTP
-ck--cert-key key-file-path 指定された証明書の秘密鍵への対応するパスを指定します。 署名付き証明書が提供されている場合。
-su--server-url url ASCP サーバーの API サービス URL とポート番号。ASCP サーバーは AppScan 360 プラットフォーム・インストールの一部として構成されており、このサーバーでユーザーが SAST スキャンを開始できます。
-at|--auth-token token SAST サービスとの ASCP 接続許可。また、ASCP プラットフォーム・サービスと AppScan 360° SAST の間の通信や交換も支援します。 あり
-p |--rabbitmq-passwords pwd-file-path RabbitMQ ユーザーのパスワードのファイル・パスを指定します。: RabbitMQ パスワードは構成後に変更できません。 あり
-r --registry registry イメージをロードするレジストリー名。
注: SAST イメージを含むアーカイブ zip ファイルを使用したクラウド配置では、配置中にイメージをプルできるように、クラウド K8S レジストリーからアクセス可能なレジストリーを指定する必要があります。
  • イメージのロードに -x が指定されている場合。
  • 配置にアーカイブ配置が使用されている場合。
-ru--registry-user username 指定されたレジストリーのユーザー名。
-rt--registry-token token-file-path 指定されたレジストリーのユーザー CLI トークンを含むファイルへのパス。
注: トークンは、セキュリティー上の理由からファイルを使用してのみ提供できます。
-ro|-repo|--repository repository イメージと Helm チャートを見つけるためのリポジトリー・パス。 appscan360-sast/sast-service
-v--version ダウンロードする AppScan 360° SAST のバージョン。 現在の配置用のスクリプトのバージョンがデフォルトで使用されます。 Harbor からダウンロードする場合に必要です。
-t--tag image-tag インストールする AppScan 360° SAST のバージョン。指定しない場合、リポジトリーまたはアーカイブ内の最新バージョンが使用されます。 利用可能な最新バージョン あり
-ic|--ingress-class name ingress コントローラーは、 ゲートウェイ・サービスを介して AppScan 360° SAST を公開するために使用されます。クラスターにインストールされている ingress コントローラーの名前を指定する必要があります。 あり
-sc|--storage-class すべての AppScan 360° SAST ストレージ要件に使用するストレージ・プロバイダーを構成します。

Azure 配置用の azurefile

-x--load-images FNO からアーカイブをダウンロードするときは、このパラメーターの指示により、コンテナー・イメージがファイル・システムからロードされ、指定のコンテナー・レジストリーにプッシュされます。このオプションは、エアギャップ・モードの配置にしか使用しないでください。 いいえ
-verbose コンソールでの配置に関連する詳細なメッセージを生成します。

例(X)

ローカルの Kubernetes の配置:
> ./sast-service.sh -i -l -ih sast.appscan.com \
                 -cc ./config/appscan.crt -ck ./config/appscan.key \
                    -su https://asop.appscan.com:1234 -st ./config/server.token \
                    -ru appscan-user@hcl.com -rt ./config/registry.token \
                    -pwd ./config/sast.pwd --rabbitmq-password ./config/rabbitmq.pwd
クラウド (Azure) の配置:
> az login ...
> ./sast-service.sh --install \
                    --cloud azure \
                    --ingress-host test.sast.appscan.com \
                    --cert ./AppScan360_RootCA.crt \
                    --cert-key ./AppScan360_RootCA.key \
                    --server-url https://test.asop.appscan.com:5000 \
                    --auth-token ./AgentsApiKey.txt \
                    --rabbitmq-password ./rabbitmq-pwd.txt \
                    --registry appscanregistry.azurecr.io
                    --registry-user registryuser \
                    --registry-token ./registry-token.txt \
                    --ingress-class nginx \
                    --storage-class azurefile

配置後のコンテナーへのアクセス

配置が正常に完了すると、次の swagger-ui を使用して AppScan 360° SAST REST API にアクセスできます。
> https://<appscan sast url>/swagger-ui/index.html
AppScan 360° SAST では、auth-token が配置されたときに指定されたトークンベースの認証を使用します。トークンは次のコマンドで取得できます。
> kubectl get secrets -n hcl-appscan-sast sast-service-secret -o jsonpath="{.data.SAST_AUTH_TOKEN}" | base64 -d