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

AppScan 360° 静的分析 は任意の Kubernetes 環境に配置できます。AppScan 360° SAST デプロイメント関連の Helm チャートには、HCL Harbor からアクセスするか、または HCL License and Download Portal からダウンロードしたアーカイブ・ファイル (tar.gz) からアクセスできます。どちらのバンドルにも、配置手順を簡素化するスクリプト (sast-service.sh) が含まれています。

HCL Harbor からの Helm チャートを使用した AppScan 360° 静的分析 のデプロイメント

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

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

  2. ASCP サーバーのホスト名を取得します。

    例: ascp.example.com

  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 は azurefile をサポートしていますが、他のストレージ・プロバイダーを使用する場合は、ReadWriteMany をサポートしていることを確認してください。

  7. クラスターをローカルにデプロイするためのオプションを指定して AppScan 360° SAST スクリプトを実行します。次に例を示します。
    > ./sast-service.sh --install 
                      --ingress-host <sast-ingress-fqdn> \
                      --server <ascp-fqdn> \
                      --cert AppScan360_RootCA.crt \
                      --cert-key AppScan360_RootCA.key \
                      --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 などを指定します。
  8. 配置が正常に完了したことを確認します。
    > kubectl get pods -n <NAMESPACE>
    <NAMESPACE> は、AppScan 360° SAST がインストールされた名前空間です。デフォルトは hcl-appscan-sast です。
  9. AppScan 360° SAST 関連のすべてのポッドが動作していることを、次のように確認します。
    ポッド名 作動可能 状況 再始動 年齢
    analyzer-<pod-id> 1/1 実行中 X X
    ascp-adapter-<pod-id> 1/1 実行中 X X
    gateway-<pod-id> 1/1 実行中 X X
    preparer-<pod-id> 1/1 実行中 X X
    sast-service-rabbitmq-0 1/1 実行中 X X
    scan-manager-<pod-id> 1/1 実行中 X X
    workflow-manager--<pod-id> 1/1 実行中 X X
  10. URL https://<sast-ingress-fqdn> を使用してブラウザーから AppScan 360° SAST にアクセスできることを確認します。

    (例: https://sast.example.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-token-file>: レジストリー・ユーザー認証トークンを含むファイル。例: --registry-token ./registry-token.txt
    • --load-images: このオプションは、コンテナー・イメージをファイル・システムからレジストリーにロードする必要があることを示します。コンテナー・イメージはパス sast-service-base/images/*.image 内に配置できます。
  2. 正しい Kubernetes クラスターに接続していることを確認します。

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

  3. ASCP サーバーのホスト名を取得します。

    例: ascp.example.com

  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 は azurefile をサポートしていますが、他のストレージ・プロバイダーを使用する場合は、ReadWriteMany をサポートしていることを確認してください。

  7. クラスターをローカルにデプロイするためのオプションを指定して AppScan 360° SAST スクリプトを実行します。次に例を示します。
    > ./sast-service.sh --install 
                        --ingress-host <sast-ingress-fqdn> \
                        --server <ascp-fqdn>
                        --cert AppScan360_RootCA.crt \
                        --cert-key AppScan360_RootCA.key \
                        --auth-token AgentsApiKey.txt \
                        --rabbitmq-password rabbitmq-pwd.txt \
                        --registry <registry-name> \
                        --registry-user <registry-username> \
                        --registry-token <registry-token-file> \
                        --storage-class azurefile \
                        --ingress-class nginx \
                        --load-images
    注: オプション -f を使用して、配置構成パラメーター で説明されているように、値がカスタマイズされた yaml ファイルへのファイル・パスを指定します。例えば、-f values.yaml などを指定します。
  8. 配置が正常に完了したことを確認します。
    > kubectl get pods -n <NAMESPACE>
    <NAMESPACE> は、AppScan 360° SAST がインストールされた名前空間です。デフォルトは hcl-appscan-sast です。
  9. AppScan 360° SAST 関連のすべてのポッドが動作していることを、次のように確認します。
    ポッド名 作動可能 状況 再始動 年齢
    analyzer-<pod-id> 1/1 実行中 X X
    ascp-adapter-<pod-id> 1/1 実行中 X X
    gateway-<pod-id> 1/1 実行中 X X
    preparer-<pod-id> 1/1 実行中 X X
    sast-service-rabbitmq-0 1/1 実行中 X X
    scan-manager-<pod-id> 1/1 実行中 X X
    workflow-manager--<pod-id> 1/1 実行中 X X
  10. URL https://<sast-ingress-fqdn> を使用してブラウザーから AppScan 360° SAST にアクセスできることを確認します。

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

ASCP との統合

AppScan 360° コンポーネント間の統合を成功させるには、ASCP で、AppScan 360° 静的分析 ingress URL を設定する必要があります。URLは、ASCP サーバーのインストール時または再構成時に設定することも、インストール後の手順として構成することもできます。

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.
注: 状況によっては、クラスターで使用可能な配置がない間、名前空間が終了状態のままになることがあります。このような場合、再構成は失敗します。名前空間を手動で削除し、配置を再試行してください。

デプロイメント・コマンド・オプション

パラメーター 説明 デフォルト値 必須
-h|-help 使用可能なコマンドと適切な使用方法を表示します。
-i|--install AppScan 360° SAST を配置します。このフラグはオプション値を想定していません。 N/A あり
-s|--server hostname ASCP サーバーのホスト名 (FQDN) を提供します。ASCP サーバーは AppScan 360° プラットフォーム・インストールの一部として構成されており、このサーバーでユーザーは AppScan 360° 静的分析 スキャンを開始できます。 あり
-cc|--cert cert-file-path TLS と HTTPS をセットアップするには、署名付き証明書ファイルへの完全修飾パスを指定します。 あり
-ck|--cert-key key-file-path 指定された証明書の秘密鍵への対応するパスを指定します。 あり
-at|--auth-token token SAST サービスとの ASCP 接続許可。また、ASCP プラットフォーム・サービスと AppScan 360° SAST の間の通信や交換も支援します。 あり
-p |--rabbitmq-passwords pwd-file-path RabbitMQ ユーザーのパスワードのファイル・パスを指定します。: RabbitMQ パスワードは構成後に変更できません。 あり
-sc|--storage-class name すべての AppScan 360° SAST ストレージ要件に使用するストレージ・プロバイダーを構成できます。例としては、local-pathazurefilelonghorn などがあります。 あり
-r |--registry registry イメージをロードするレジストリー名。
注: SAST イメージを含むアーカイブ・ファイルを使用したクラウド・デプロイメントでは、デプロイメント中にイメージをプルできるよう、クラウド K8S レジストリーからアクセス可能なレジストリーを指定する必要があります。
  • イメージのロードに -x が指定されている場合。
  • 配置にアーカイブ配置が使用されている場合。
-ru|--registry-user username 指定されたレジストリーのユーザー名。 あり。ただし、アーカイブ・ファイルをローカル Kubernetes クラスター (K3S など) に使用してデプロイする場合は除きます。
-rt--registry-token token-file-path 指定されたレジストリーのユーザー認証トークンを含むファイルへのパス。
注: トークンは、セキュリティー上の理由からファイルを使用してのみ提供できます。
あり。ただし、アーカイブ・ファイルをローカル Kubernetes クラスター (K3S など) に使用してデプロイする場合は除きます。
-ro|-repo|--repository repository イメージと Helm チャートを見つけるためのリポジトリー・パス。 appscan360-sast/sast-service なし
-v--version ダウンロードする AppScan 360° SAST のバージョン。 現在の配置用のスクリプトのバージョンがデフォルトで使用されます。 なし
-t--tag image-tag インストールする AppScan 360° SAST のバージョン。指定しない場合、リポジトリーまたはアーカイブ内の最新バージョンが使用されます。 利用可能な最新バージョン。 なし
-n|--namespace AppScan 360° SAST がデプロイされている名前空間。 hcl-appscan-sast なし
-f|--config-file yaml-file-path 構成の詳細を指定する yaml ファイルを使用して、コンテナーの配置を構成またはカスタマイズします。yaml ファイルの構成については、「配置構成パラメーター」を参照してください N/A なし
-ih|--ingress-host hostname

AppScan 360° SAST デプロイメント後にアクセスするための完全修飾ドメイン名 (FQDN)。

提供された FQDN が DNS で解決可能でない場合は、‘/etc/hosts ファイルが更新されて FQDN がそれぞれの IP アドレスにマップされるようにします。

sast.example.com なし
-ic|--ingress-class name ingress コントローラーは、 ゲートウェイ・サービスを介して AppScan 360° SAST を公開するために使用されます。指定しない場合、ingress コントローラーは構成されません。 なし
-x--load-images FNO からアーカイブをダウンロードするときは、このパラメーターの指示により、コンテナー・イメージがファイル・システムからロードされ、指定のコンテナー・レジストリーにプッシュされます。 このオプションは、エアギャップ・モードの配置にしか使用しないでください。
-verbose コンソールでの配置に関連する詳細なメッセージを生成します。 なし

例(X)

HCL Harbor の Helm チャートを使用したクラウド (Azure) デプロイメント:
> az login ...
> ./sast-service.sh --install \
                    --ingress-host test.sast.example.com \
                    --server test.ascp.example.com \
                    --cert ./AppScan360_RootCA.crt \
                    --cert-key ./AppScan360_RootCA.key \
                    --auth-token ./AgentsApiKey.txt \
                    --rabbitmq-password ./rabbitmq-pwd.txt \
                    --registry-user hcl-harbor-user \
                    --registry-token ./registry-token.txt \
                    --ingress-class nginx \
                    --storage-class azurefile
アーカイブ・ファイルを使用したクラウド (Azure) デプロイメント:
> az login ...
> ./sast-service.sh --install \
                    --ingress-host test.sast.example.com \
                    --server test.ascp.example.com \
                    --cert ./AppScan360_RootCA.crt \
                    --cert-key ./AppScan360_RootCA.key \
                    --auth-token ./AgentsApiKey.txt \
                    --rabbitmq-password ./rabbitmq-pwd.txt \
                    --registry appscanregistry.azurecr.io \
                    --registry-user azure-user \
                    --registry-token ./registry-token.txt \
                    --ingress-class nginx \
                    --storage-class azurefile \
                    --load-images
HCL Harbor の Helm チャートを使用したローカル Kubernetes デプロイメント:
> ./sast-service.sh --install \
                    --ingress-host test.sast.example.com \
                    --server test.ascp.example.com \
                    --cert ./AppScan360_RootCA.crt \
                    --cert-key ./AppScan360_RootCA.key \
                    --auth-token ./AgentsApiKey.txt \
                    --rabbitmq-password ./rabbitmq-pwd.txt \
                    --registry-user hcl-harbor-user \
                    --registry-token ./registry-token.txt \
                    --ingress-class nginx \
                    --storage-class local-path
アーカイブ・ファイルを使用したローカル Kubernetes デプロイメント:
> ./sast-service.sh --install \
                    --ingress-host test.sast.example.com \
                    --server test.ascp.example.com \
                    --cert ./AppScan360_RootCA.crt \
                    --cert-key ./AppScan360_RootCA.key \
                    --auth-token ./AgentsApiKey.txt \
                    --rabbitmq-password ./rabbitmq-pwd.txt \
                    --registry docker.io \
                    --ingress-class nginx \
                    --storage-class local-path \
                    --load-images

デプロイメント後の AppScan 360° SAST へのアクセス

配置が正常に完了すると、次の 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