AppScan 360° 静的分析 の配置のトラブルシューティング

AppScan 360° 静的分析 のインストール中または使用中に問題が発生した場合は、以下の情報を使用してトラブルシューティングを試してください。

配置スクリプト実行時のエラー・リターン

Cert Manager の依存関係の欠落

  • エラー:
    Error: unable to build kubernetes objects from release manifest: [resource mapping not found for name:
    "analyzer-cert" namespace: "" from "": no matches for kind "Certificate" in version "cert-manager.io/v1"
    ensure CRDs are installed first, resource mapping not found for name: "ascp-adapter-cert" namespace: "" 
    from "": no matches for kind "Certificate" in version "cert-manager.io/v1"
  • 根本原因:

    このエラーは、cert-manager アドオンの依存関係がクラスターにデプロイされていない場合に発生します。AppScan 360° SAST は、デプロイメント用の cert-manager アドオンに依存します。

  • 解決方法:

    Kubernetes クラスターに cert-manager が配置され、実行されていることを確認します。システム要件環境設定の手順を確認します。

Keda 依存関係の欠落

  • エラー:
    Error: unable to build kubernetes objects from release manifest: [resource mapping not found for name:
    "analyzer-hpa" namespace: "" from "": no matches for kind "ScaledObject" in version "keda.sh/v1alpha1"
    ensure CRDs are installed first, resource mapping not found for name: "ascp-adapter-hpa" namespace: "" 
    from "": no matches for kind "ScaledObject" in version "keda.sh/v1alpha1"
  • 根本原因:

    このエラーは、Keda アドオンの依存関係がクラスターにデプロイされていない場合に発生します。AppScan 360° SAST は、デプロイメント用の Keda アドオンに依存します。

  • 解決方法:

    Kubernetes クラスターに Keda が配置され、実行されていることを確認します。システム要件環境設定の手順を確認します。

リソースが既に使用中または再作成不能

  • エラー:
    • Previous PVC storage not completely cleaned up.
    • Incomplete finalizers on pods.
    • Namespace stuck in termination state.
  • 根本原因:

    以前の配置からのリソースは、削除プロセスで完全にクリーンアップされることはありません。これは、名前空間が強制的に削除された場合にも発生する可能性があり、クラスター上でリソースが追跡されないままになります。

  • 解決策:
    解決策は、関連するリソースの問題のタイプによって異なります。
    • 終了状態のままになっている名前空間をクリーンアップする
      kubectl get namespace "hcl-appscan-sast" -o json | tr -d "\n" | sed "s/\"finalizers\": \[[^]]\+\]/\"finalizers\": []/" | kubectl replace --raw /api/v1/namespaces/hcl-appscan-sast/finalize -f-
    • 終了状態のままになっているポッドをクリーンアップする

      kubectl delete pod <pod-name> --grace-period=0 --force --namespace <namespace>
    • 孤立した PV や PVC を削除する

      kubectl patch pv <pv-name> -p '{"metadata":{"finalizers":null}}'
      kubectl delete pv --grace-period=0 --force --namespace <namespace> <pv-name>
      kubectl patch pvc <pvc-name> -p '{"metadata":{"finalizers":null}}
      kubectl delete pvc --grace-period=0 --force --namespace <namespace> <pvc-name>

必須パラメーターが指定されていない

  • エラー:
    • ERROR: Authorization token is required for the deployment. Use the option '--auth-token' to specify the file path which contains the token.
    • ERROR: Authorization token file path specified for the option '--auth-token' does not exist. o ERROR: Rabbitmq password is required for the deployment. Use the option '--rabbitmq-pwd' to specify the file path which contains the password.
    • ERROR: Rabbitmq password file path specified for the option '--rabbitmq-pwd' does not exist.
    • ERROR: CA certificate & key are required for the deployment. Use the options '--cert, --cert-key' to specify the ca certificate and the private-key file paths.
    • ERROR: Certificate file path specified for the option '--cert' does not exist. 
    • ERROR: Certificate private key file path specified for the option '--cert-key' does not exist. 
    • ERROR: Configuration file path specified for the option '--config-file' does not exist.
  • 根本原因:

    配置スクリプトに必須のパラメーターが指定されていないか、オプションに無効な値が指定されています。

  • 解決策:

    配置スクリプトに必須のオプションをすべて確認し、オプションに有効な値が指定されていることを確認してください。

配置スクリプトの後にポッドを開始できない

配置後のプロセスとして、クラスターにログインして、すべての AppScan 360° SAST ポッドが稼働していることを確認する必要があります。ポッド関連の配置に関する問題の例を以下にいくつか示します。

Persistent Volume (PV) および Persistent Volume Claim (PVC) 関連のエラー

PVC を作成するには、ディスク上に要求されたストレージ・サイズの空き容量が必要です。データ・ストレージを収容するディスク・スペースに、要求された容量に対応する十分な空き容量があることを確認します。PVC がプロビジョニングされていない場合は、ポッドの作成に失敗します。

注: クラウド・ストレージ・ソリューション (azurefile など) を使用すると、大容量の有料ストレージを利用できます。

既存の AppScan 360° SAST に関連する PV および PVC が完全に削除されていない場合は、名前の競合により新しい配置での PV および PVC の作成に失敗するため、ポッドの作成にも失敗します。

  • 解決策:

    削除後に数秒待って、すべての PV および PVC リソースが効率的にリリースされていることを確認してから、新しい配置を試行してください。

ポッドの作成に必要な CPU/メモリーの不足

AppScan 360° SAST の各コンポーネントには、それぞれのポッドに対する一連のリソース要件が定義されています。詳細については、「リソースの要件」セクションを参照してください。

各ポッドに設定された必要な最小リソース制限がノードプールで使用できない場合、ポッドの作成は失敗します。

  • 解決策:

    ノードプールのリソース・サイズが AppScan 360° SAST で定義されたリソースの要件を満たしていることを確認してください。

RabbitMQ が稼働しない

AppScan 360° SAST コンポーネントが想定どおりに機能するには、RabbitMQ サービスが稼働している必要があります。RabbitMQ サービスの開始には数分かかります。RabbitMQ の配置中に、AppScan 360° SAST ポッドが開始の試行に何度か失敗することは珍しくありません。RabbitMQ サービスの開始に失敗すると、AppScan 360° SAST ポッドも同様に失敗します。

ポッドが「準備完了」状態に移動しない
  • エラー:
    • Startup probe failed: …
    • Readiness probe failed: …
  • 根本原因:

    ポッドの 1 つ以上の正常性チェックが失敗しました。

  • 解決策:
    • 依存コンポーネントが動作し、正しく設定されていることを確認します。
    • kubectl describe pod <pod-name> -n <namespace> コマンドを実行して、詳細を確認します。
    • 詳細については、ポッド・ログを確認してください。コンテナー化スキャンのトラブルシューティング を参照してください。

イメージのプルの失敗

エラー:

failed to authorize: failed to fetch anonymous token: unexpected status: 401 Unauthorized

根本原因:

これは、AppScan 360° SAST レジストリーの秘密が作成されていないか、現在のレジストリーの秘密に古い資格情報が含まれていることが原因です。

解決策:

  • 以前の AppScan 360° SAST レジストリーの秘密を削除します。
  • 配置スクリプトに指定された、レジストリーのユーザー名とパスワードを更新します。参照 配置構成パラメーター

証明書の有効期限切れ

期限切れの証明書を更新するには、次の手順を実行します。
  1. 新しい証明書とそれぞれの秘密鍵を指定して、配置コマンドを再実行します。
  2. 内部コンポーネントの証明書を保持する名前空間から以下の秘密を削除します。秘密は自動的に再生成されます。
    kubectl delete secret sast-service-tls gateway-tls workflow-manager-tls scan-manager-tls preparer-tls analyzer-tls ascp-adapter-tls sast-service-rabbitmq-tls --namespace hcl-appscan-sast 
  3. 名前空間内のすべてのポッドを削除します。新たに生成された TLS の秘密を使用する新しいポッドが自動的に作成されます。
    kubectl delete --all pods --namespace=hcl-appscan-sast

新規インストール時の配置の失敗

場合によっては、現在 SAST を配置していないクラスターに AppScan 360° SAST を配置すると、クラスターでの以前のロールバック操作によって失敗することがあります。AppScan 360° SAST の以前のアップグレードや再構成の操作の場合、クラスターはこのままの状態でかまいません。
注: 配置プロセスが、失敗したアップグレードを自動的に処理し、クラスターを以前の安定したバージョンに自動的に復元します。こうしたトラブルシューティングのガイドラインは、クラスターへの新規インストールにのみ適用されます。

エラー:

Helm の配置操作が失敗し、一般的なエラー (ERROR: Deploy SAST services - failed. Installation aborted!) が表示される。

根本原因:

このクラスターでアップグレードしようとして失敗し、古い秘密ファイルがクラスターに残ったままになっています。そのため、新しい配置で必要な同様のファイルが作成されません。

解決方法:

新規インストールを試行する前に、配置解除コマンドを実行してください。参照 AppScan 360° 静的分析 の削除

サービスにアクセスできない

AppScan 360° SAST には、配置スクリプトのパラメーターとして指定された FQDN (https://<sast-ingress-fqdn>) を介してアクセスできます。FQDN を介してサービスにアクセスできなくなるエラーの例には、以下のようなものがあります。

ingress コントローラーの依存関係の欠落
  • エラー:
    • このサイトにアクセスできない。
  • 根本原因:

    このエラーは、ingress コントローラーのインストールや構成が正しく行われていない場合に、ブラウザーで指定された FQDN から AppScan 360° SAST にアクセスしようとすると表示されます。

  • 解決策:
    • Kubernetes クラスターに ingress コントローラーが配置され、実行されていることを確認してください。必要なすべての依存関係については、「前提条件」セクションを確認してください。
    • ingress コントローラーの構成に使用される静的 IP で、配置に使用される FQDN が解決されることを確認してください。

      クラウド DNS 管理ツールでレコード・セットを作成するか、ローカル・マシンの /etc/hosts ファイルを更新することで、実行できます。

FQDN が間違っています
  • エラー:
    • このサイトにアクセスできない。
  • 根本原因:

    ingress の構成に使用される FQDN が、サービスへのアクセスに使用される FQDN と異なっています。別の問題として、IP/DNS マッピングが間違っている可能性があります。使用される FQDN が ingress IP にマッピングされている値と異なる場合、サービスは到達不能になります。

  • 解決策:
    • 使用されている FQDN でサービスにアクセスできていることを確認し、配置スクリプトに渡された値と一致することを確認してください。
    • FQDN 値が、ローカル・マシンの /etc/hosts ファイルまたはクラウド DNS ホスト・ゾーンのいずれかの ingress IP にマッピングされていることを確認してください。
クラスター接続拒否
  • エラー:
    Kubernetes cluster unreachable: Get "http://localhost:8080/version": dial tcp [::1]:8080: connect: connection refused
  • 根本原因:

    config ファイルが見つからないか、kubectl にクラスターへのアクセスを許可するように正しく構成されていません。

  • 考えられる解決方法:
    • config ファイルが .kube/config に存在することを確認します。

    • 現在のユーザーが .kube/config を所有していることを確認します。

    • kube/config に適切な権限があることを確認します。

    • KUBECONFIG をエクスポートします。

ゲートウェイ・サービスが実行されない

配置には成功したが、ポッドの開始に失敗する
  • エラー:
    • ここに表示されるエラー・メッセージは、根本原因によって異なります。
  • 根本原因:
    • ImagePullBackoff: これは、ポッドの失敗の最も一般的な理由です。指定されたリポジトリー/リポジトリー・パスからイメージをプルできない場合にエラーが発生します。
    • CPU 不足、メモリー不足: このエラーは、クラスター・ノードプールのどのノードも AppScan 360° SAST の 最小限の CPU/メモリー・セットを満たしていない場合に発生します。
  • 解決策:
    • 配置時に指定されたリポジトリーに、配置するイメージが含まれていることを確認してください。
    • 指定されたリポジトリー認証が正しいことを確認してください。AppScan 360° SAST の配置では、リポジトリーからイメージをプルするために正確な認証が求められます。
    • ノードプールに、配置時に設定された最小要件を満たす十分なメモリーと CPU リソースがあることを確認してください。
    • 詳細については、ポッド・エラー・ログを確認してください。
デプロイメントには成功したが Workflow Manager が起動しない
  • エラー:
    Failed to inject service URL to SAClientUtil ...
  • 根本原因:

    ASCP サーバーとの接続に問題があり、その後公開キーを取得できなかった可能性があります。

  • 解決策:
    • ASCP サーバーが稼働中であることを確認します。

    • サーバー情報、認証トークン、証明書、およびキーがすべて正しいことを確認します。

    • 詳細については、ポッド・エラー・ログを確認してください。

スキャンは ASCP で「初期化中」状態ですが、それ以上は進みません
  • エラー:

    スキャン・ステータスが「初期化中」と表示され、それ以上先に進みません。

  • 根本原因:

    ASCPAppScan 360° SAST の間の接続に問題がある可能性があります。

  • 解決方法:
    • ASCP サーバーに正しいAppScan 360° SAST URLが設定されていることを確認します。
    • ASCP サーバー・マシンが、AppScan 360° SAST ingress FQDN を正しく解決することを確認します。
    • 詳細については ASCP ログを確認してください。