自動化フレームワーク - 環境

このYAML設定ファイルのセクションでは、残りのジョブが操作できるアプリケーションを定義します。

環境については、こちらの動画で解説されています: ZAP Chat 08 Automation Framework Part 2 - Environment

自動化フレームワークは、ZAPでサポートされているすべての認証メカニズムをサポートしています。

注: デフォルトポート (httpの場合は80、httpsの場合は443) で動作するターゲットをテストする場合、URLのコロン付きポート部分は含めないでください。 その部分を含めた場合 (例: http://example.com:80)、ターゲットのクロールやテストができなくなる可能性があります。 「デフォルト」ポートが指定されている場合、ブラウザとZAPはそのポート番号を省略して扱います。その結果、コンテキスト内で期待されるURLと一致せず、コンテキストの一部として操作できなくなります。

env:                                   # 環境、必須
  contexts :                           # 1つ以上のコンテキストのリスト、必須
    - name: context 1                  # 他のジョブでこのコンテキストを参照するために使用される名前、必須
      urls:                            # トップレベルURLの必須リスト、各URL配下のすべてが含まれます
      includePaths:                    # 含める正規表現のオプションリスト
      excludePaths:                    # 除外する正規表現のオプションリスト
      authentication:
        method:                        # 文字列、'manual'、'http'、'form'、'json'、'script'、"autodetect"、"browser"、"client"のいずれか
        parameters:                    # スクリプトに必要なものを含めることができます。 ポート以外のすべてのパラメーターは変数をサポートしています
          hostname:                    # 文字列、'http'認証の場合のみ
          port:                        # 整数、'http'認証の場合のみ
          realm:                       # 文字列、'http'認証の場合のみ
          loginPageUrl:                # 文字列、リクエストを行う前に読み込むログインページURL、'form'または'json'認証の場合のみ
          loginRequestUrl:             # 文字列、リクエストするログインURL、'form'または'json'認証の場合のみ
          loginRequestBody:            # 文字列、ログインリクエストボディ - 指定しない場合GETリクエストが使用されます、'form'または'json'認証の場合のみ
          script:                      # 文字列、スクリプトへのパス、'script'認証の場合のみ
          scriptInline:                # 文字列、完全なスクリプト (複数行可) - 'script'とこちらのどちらか一方を指定してください。 'script'認証の場合のみ
          scriptEngine:                # 文字列、使用するスクリプトエンジンの名前、'script'認証の場合のみ
        verification:
          method:                      # 文字列、'response'、'request'、'both'、'poll'のいずれか
          loggedInRegex:               # 文字列、ログイン状態を判定するための正規表現パターン
          loggedOutRegex:              # 文字列、ログアウト状態を判定するための正規表現パターン
          pollFrequency:               # 整数、ポーリング頻度、'poll'検証の場合のみ
          pollUnits:                   # 文字列、ポーリング単位、'requests'、'seconds'のいずれか、'poll'検証の場合のみ
          pollUrl:                     # 文字列、ポーリングするURL、'poll'検証の場合のみ
          pollPostData:                # 文字列、ポーリングに含めるPOSTデータ、'poll'検証の場合のみ
          pollAdditionalHeaders:       # ポーリングリクエストの追加ヘッダーのリスト、'poll'検証の場合のみ
          - header:                    # ヘッダー名
            value:                     # ヘッダー値
      sessionManagement:
        method:                        # 文字列、'cookie'、'http'、'script'のいずれか
        parameters:                    # パラメーターのリスト - スクリプトに必要なものを含めることができます
          script:                      # 文字列、スクリプトへのパス、'script'セッション管理の場合のみ
          scriptEngine:                # 文字列、使用するスクリプトエンジンの名前、'script'セッション管理の場合のみ
      technology:
        exclude:                       # 除外する技術のリスト、https://www.zaproxy.org/techtags/ を参照 (末尾の名前のみを使用)
        include:                       # 含める技術のリスト、特定の技術をターゲットとする場合にのみ使用してください。コンテキスト設定時はexcludeが優先されます
      structure:
        structuralParameters:          # 構造パラメーターの名前のリスト
        dataDrivenNodes:               # データ駆動ノードのリスト
        - name:                        # 文字列、データ駆動ノードの名前
          regex:                       # 文字列、データ駆動ノードの正規表現、2つまたは3つの正規表現グループを含む必要があります
      users:                           # 認証に使用可能な1人以上のユーザーのリスト
      - name:                          # 文字列、ジョブで使用される名前
        credentials:                   # ユーザー認証情報のリスト - スクリプトに必要なものを含めることができます
          username:                    # 文字列、認証時に使用するユーザー名、変数サポート
          password:                    # 文字列、認証時に使用するパスワード、変数サポート
          totp:                        # TOTPデータ、ブラウザベース認証でサポート
            secret:                    # 文字列、シークレット
            period:                    # 整数、期間。 デフォルト: 30
            digits:                    # 整数、桁数。 デフォルト: 6
            algorithm:                 # 文字列、アルゴリズム。 デフォルト: SHA1
  vars:                                # 設定ファイル全体で使用される0個以上のカスタム変数のリスト
    myVarOne: CustomConfigVarOne       # 設定全体で${myVarOne}として使用可能
    myVarTwo: ${myVarOne}.VarTwo       # 他の変数を参照可能
  configs:                             # ZAPの "-config" コマンドラインオプションに基づく、汎用設定パラメーターの一覧
  parameters:
    failOnError: true                  # 設定した場合、エラー時に終了
    failOnWarning: false               # 設定した場合、警告時に終了
    continueOnFailure: false           # 1つのジョブが失敗してもすべてのジョブを実行し続ける
    progressToStdout: true             # 設定した場合、ジョブの進捗状況を標準出力に書き込む
  proxy:                               # オプションのアップストリームプロキシ設定
    hostname:                          # 文字列、プロキシホスト
    port:                              # 整数、プロキシポート
    realm:                             # 文字列、プロキシレルム
    username:                          # 文字列、プロキシユーザー名
    password:                          # 文字列、プロキシパスワード

変数

変数は 'vars' セクションで定義できます 変数はハードコード、他の変数の参照、または上記と同様にシステム環境変数の参照が可能です (例: '${envvar}')。 同じ名前の変数が2つある場合、システム変数の値が優先されます。

Configs

configs セクションは、ZAP設定ファイルで設定できる任意の値を定義するために使用できます。これは ZAP の -config コマンドラインオプションと同じように動作します。

コマンドラインの代わりにこのセクションを使用する利点は次のとおりです:

  1. 設定はプラン内で自己完結します
  2. ZAP チームは (テレメトリが有効な場合) この方法で使用されるキーを監視し、最も頻繁に使用されるキーに対する完全なサポートの追加を優先します
  3. 使用されているキーにより良い解決策が利用可能な場合、警告が発行されます
キーと値の検証は行われないため、設定が正しいことをご自身で確認する必要があります。 無効なキーは警告なく無視されます。

キーを決定するための推奨される方法は、FAQ: How do you find out what key to use to set a config value on the command line? に記載されています

パッシブスキャンスレッド数を設定する動作例は次のとおりです:

configs:
  pscans.threads: 8

フォーマットの変更

元々、'engine' および 'scriptEngine' フィールドは 'sessionManagement' 要素の直下にありました - これはプラン読み込み時には引き続きサポートされますが、現在は常に 'parameters' 要素の下に出力されます。

元々、'username' および 'password' フィールドは user 要素の直下にありました - これはプラン読み込み時には引き続きサポートされますが、現在は常に 'credentials' 要素の下に出力されます。

テクノロジーを指定する場合、テクノロジー名は https://www.zaproxy.org/techtags/ に記載されています - 末尾の名前のみを指定してください (例: "C")。