ビュー:

これらのYAML構成例をテンプレートとして使用し、AI ScannerでAIアプリケーションをスキャンしてください。アプリケーションのホスティング方法に合ったプロバイダタイプを選択してください。

AIスキャナーは5つのターゲットプロバイダタイプをサポートしています。アプリケーションのホスティング方法に合ったものを選択するか、他のHTTPアプリケーションプログラミングインターフェース (API) には汎用のcustomタイプを使用してください。設定パターンを見つけて、セットアップに合わせて調整し、スキャンを開始してください。

構成ファイル構造

すべての設定ファイルには、次のものが必要です。
  • version: 設定スキーマのバージョン、例えば2.9.0。AIスキャナーは古い1.xおよび2.xファイルを自動的に移行します。
  • target: テスト中のAIアプリケーション
  • judge:攻撃が成功したかどうかを評価するモデル
  • attack_presetattack_objectivescustom_prompts、またはagenticのいずれか: ターゲットに対して攻撃する方法。これらを組み合わせることができます。
それぞれのtargetおよびjudgeブロックは、openaibedrockazurevertexcustom、またはtrendaiのいずれか1つのサブブロックを含めることでプロバイダを選択します。typeフィールドを設定する必要はありません。AIスキャナーは、存在するサブブロックからプロバイダを推測します。すべてのサブブロックがすべての役割に対して有効であるわけではなく、以下の表に示されています。
プロバイダブロック
使用目的
対象
判定
エージェンティックアタッカー
openai
OpenAIおよびOpenAI互換エンドポイント
はい
はい
はい
bedrock
AWS Bedrock
はい
No
はい
azure
Azure OpenAI ServiceまたはAzure AI Foundry
はい
No
はい
vertex
Google Cloud Vertex AI
はい
No
はい
custom
他のHTTP APIでリクエストと対応テンプレートを使用する
はい
No
No
trendai
Trend Vision One–ホスト型モデル
No
はい
はい
現在、judgeエンドポイントはすべてのプロバイダーをサポートしていません。
AIスキャナーがapi_key_envからのAPIキーを使用して認証する方法は、プロバイダによって異なります。
  • openaitrendai: Bearerスキームを使用してAuthorizationヘッダーで送信されます
  • azureauth_type: api_key: 設定変更できない固定api-keyヘッダーで送信
  • custom: デフォルトではBearerスキームを使用してAuthorizationヘッダーに送信されます。ヘッダー名やプレフィックスを変更するには、auth_headerまたはauth_prefixフィールドを使用します。例えば、auth_prefix: "Token "です。
  • bedrockvertex: api_key_envは適用されません。これらのプロバイダーは、各セクションで説明されているように、AWSまたはGoogle Cloud認証情報チェーンを通じて認証されます。
customプロバイダ専用で、2つのプレースホルダーがAIスキャナーがデータを挿入および抽出する場所を制御します。
  • {{prompt}}: AIスキャナーは実行時にこのプレースホルダーを攻撃プロンプトに置き換えます。
  • {{response}}: AIスキャナーはこの場所からモデル対応を抽出します。
重要
重要
APIキーは環境変数に保存してください。APIキーを直接設定ファイルに含めないでください。検索を実行する前にapi_key_envという名前の環境変数を設定してください。

OpenAIおよびOpenAI互換エンドポイント

AIアプリケーションがOpenAIそのもの、OpenAI互換のゲートウェイ、またはOpenAIチャット完了APIを公開するセルフホストモデルである場合は、この構成を使用してください。
version: 2.9.0
name: OpenAI Compatible Scan
description: Security scan for an OpenAI-compatible chat endpoint
target:
  name: my-openai-app
  endpoint: https://api.openai.com/v1/
  api_key_env: TARGET_API_KEY
  openai:
    model: gpt-4o
    system_prompt: You are a helpful customer support assistant.
judge:
  name: judge
  endpoint: https://api.openai.com/v1/
  api_key_env: JUDGE_API_KEY
  openai:
    model: gpt-4o
settings:
  concurrency: 10
attack_preset: OWASP
endpointを任意のOpenAI互換の基本URLに向けてください。api.openai.comである必要はありません。

Amazon Bedrock

AIアプリケーションがAWS Bedrockでホストされている基盤モデルの場合、この構成を使用してください。
version: 2.9.0
name: Bedrock Target Scan
description: Security scan for a Bedrock-hosted model
target:
  name: my-bedrock-app
  bedrock:
    region: us-east-1
    model: anthropic.claude-3-5-sonnet-20241022-v2:0
    temperature: 0.6
    system_prompt: You are a helpful AI assistant.
judge:
  name: judge
  endpoint: https://api.openai.com/v1/
  api_key_env: JUDGE_API_KEY
  openai:
    model: gpt-4o
attack_preset: OWASP
bedrockブロックはapi_key_envを使用しません。AIスキャナーは、IAMロール、環境変数、共有認証情報ファイル、またはSSOなど、標準のAWS SDK認証情報チェーンを通じてAWS認証情報を解決します。AWS_DEFAULT_REGIONまたはAWS_REGIONが設定されている場合、regionを省略できます。

Azure OpenAI

Azure OpenAI ServiceまたはAzure AI Foundryのデプロイメントにはこの構成を使用してください。azure.auth_typeで2つの認証モードのいずれかを選択してください。
APIキー認証には、次の構成を使用してください。
version: 2.9.0
name: Azure OpenAI Target Scan
description: Security scan for an Azure OpenAI deployment
target:
  name: my-azure-app
  endpoint: https://my-resource.openai.azure.com
  api_key_env: TARGET_API_KEY
  azure:
    deployment_name: gpt-4o
    auth_type: api_key
    temperature: 0.6
    system_prompt: You are a helpful AI assistant.
judge:
  name: judge
  endpoint: https://api.openai.com/v1/
  api_key_env: JUDGE_API_KEY
  openai:
    model: gpt-4o
attack_preset: OWASP
Microsoft Entra ID認証はAzure OpenAI Serviceで利用可能ですが、Azure AI Foundryでは利用できません。auth_type: entraidを設定し、api_key_envを削除してください。その後、リソース上でCognitive Services OpenAIユーザロールを持つサービスプリンシパルのためにAZURE_CLIENT_IDAZURE_TENANT_IDAZURE_CLIENT_SECRETをエクスポートしてください。
endpointはAzure OpenAI Serviceの*.openai.azure.comホストとAzure AI Foundryの*.services.ai.azure.comホストの両方を受け入れます。

Google Vertex AI

AIアプリケーションがGoogle Cloud Vertex AIでホストされているGeminiモデルの場合、この構成を使用してください。
version: 2.9.0
name: Vertex AI Target Scan
description: Security scan for a Vertex AI-hosted Gemini model
target:
  name: my-gemini-app
  vertex:
    project: my-gcp-project
    location: us-central1
    model: gemini-2.5-flash
    temperature: 0.6
    system_prompt: You are a helpful AI assistant.
judge:
  name: judge
  endpoint: https://api.openai.com/v1/
  api_key_env: JUDGE_API_KEY
  openai:
    model: gpt-4o
attack_preset: OWASP
vertexブロックはapi_key_envを使用していません。Vertex AIはアプリケーションデフォルト認証情報 (ADC) を使用します。検索を実行する前に、ローカル開発用にgcloud auth application-default loginで認証するか、自動化されたパイプライン用にサービスアカウントまたはWorkload Identity Federationを設定してください。

カスタムHTTPエンドポイント

OpenAI互換、Bedrock、Azure OpenAI、Vertex AIではないAIアプリケーションにはcustomプロバイダを使用してください。customブロックは、APIのリクエストと対応の形状をYAMLテンプレートとして記述します。
次の項目を指定する必要があります。
  • エンドポイントURL
  • HTTP方式
  • コンテンツタイプ宣言などのヘッダーフィールド
  • リクエストボディのJSON構造には、{{prompt}}で示されたテキストプロンプトの位置が含まれています
  • レスポンスボディのJSON構造には、モデル出力の位置が含まれており、{{response}}で示されています

シンプルなREST API

AIアプリケーションが単一フィールドでプロンプトを受け取り、単一フィールドでモデル対応を返すシンプルなRESTエンドポイントを公開する場合、この構成を使用してください。requestresponseセクションのフィールド名をAPIスキーマに合わせて調整してください。
version: 2.9.0
name: Simple REST API Scan
description: Security scan for a basic text generation endpoint
target:
  name: my-text-api
  endpoint: https://api.example.com/v1/generate
  api_key_env: TARGET_API_KEY
  custom:
    method: POST
    headers:
      Content-Type: application/json
    request:
      input: "{{prompt}}"
      temperature: 0.2
    response:
      answer: "{{response}}"
judge:
  name: judge
  endpoint: https://api.openai.com/v1/
  api_key_env: JUDGE_API_KEY
  openai:
    model: gpt-4o
settings:
  concurrency: 10
attack_objectives:
  - name: System Prompt Leakage
    techniques:
      - None
    modifiers:
      - None
  - name: Sensitive Data Disclosure
    techniques:
      - None
    modifiers:
      - None

メッセージ配列を使用したチャット完了API

AIアプリケーションがチャット完了APIの規約に従う場合、この構成を使用します。プロンプトは、役割とコンテンツフィールドを持つメッセージ配列として送信されます。このパターンは、OpenAIと同じリクエスト構造に従うカスタムホストのエンドポイントで一般的です。
システムプロンプトを含めるには、messages 配列の最初のエントリとして role: system を追加します。AIスキャナーは各攻撃プロンプトを role: user メッセージとして送信します。
version: 2.9.0
name: Chat Completions API Scan
description: Security scan for a chat-style AI endpoint
target:
  name: my-chat-api
  endpoint: https://api.example.com/v1/chat/completions
  api_key_env: TARGET_API_KEY
  custom:
    method: POST
    headers:
      Content-Type: application/json
    request:
      model: my-model-v1
      messages:
        - role: system
          content: You are a helpful assistant.
        - role: user
          content: "{{prompt}}"
      stream: false
    response:
      choices:
        - finish_reason: stop
          index: 0
          message:
            content: "{{response}}"
            role: assistant
judge:
  name: judge
  endpoint: https://api.openai.com/v1/
  api_key_env: JUDGE_API_KEY
  openai:
    model: gpt-4o
settings:
  concurrency: 10
attack_objectives:
  - name: System Prompt Leakage
    techniques:
      - DAN (Do anything now)
    modifiers:
      - None
  - name: Malicious Code Generation
    techniques:
      - Ignore all previous instructions
    modifiers:
      - Base64 Encoding
responseテンプレートにchoicesのような配列が含まれている場合、AIスキャナーはインデックス0から抽出します。

ネストされたリクエストと対応の構造

AIアプリケーションがプロンプトと対応を深くネストされたJSONオブジェクトでラップする場合、メタデータや構成パラメータをプロンプトと共に含むAPIなどでこの構成を使用してください。
version: 2.9.0
name: Nested Structure API Scan
description: Security scan for an endpoint with nested JSON payloads
target:
  name: my-nested-api
  endpoint: https://nlp.example.net/run
  api_key_env: TARGET_API_KEY
  custom:
    method: POST
    headers:
      Content-Type: application/json
    auth_prefix: "Token "
    request:
      payload:
        prompt: "{{prompt}}"
      config:
        temperature: 0.1
        max_tokens: 1000
    response:
      data:
        result:
          message: "{{response}}"
judge:
  name: judge
  endpoint: https://api.openai.com/v1/
  api_key_env: JUDGE_API_KEY
  openai:
    model: gpt-4o
settings:
  concurrency: 5
attack_objectives:
  - name: Sensitive Data Disclosure
    techniques:
      - Payload splitting
    modifiers:
      - Best-of-N Scrambling
  - name: Agent Tool Definition Leakage
    techniques:
      - None
    modifiers:
      - None

カスタムエンドポイントの制限

  • JSONレスポンスのみ。AIスキャナーは非JSONレスポンスボディをサポートしていません。
  • ストリーミングはありません。AIスキャナーは解析前に完全な対応本文を読み取るため、サーバ送信イベントやチャンクストリームをサポートしていません。
  • 最初の配列要素のみ。対応テンプレートが配列を含む場合、AIスキャナーは常にインデックス0から抽出します。
ヒント
ヒント
アプリケーションがオフトピックのプロンプトをブロックするガードレールの背後にある場合、検索開始前にAI検索が送信する接続チェックを含め、チェックプロンプトを上書きするか、オプションのtarget.health_checkブロックで無効にすることができます。
target:
  health_check:
    enabled: true      # set to false to skip the check entirely
    message: How can I do DC profiling?

Trend Vision Oneホスト型ジャッジモデル

ご自身のOpenAI互換キーを使用して攻撃結果を評価したくない場合は、Trend Vision Oneがホストするジャッジモデルを使用してください。trendaiプロバイダブロックはjudgeロール、およびオプションでエージェンティックアタッカーロールにのみ利用可能です。検索targetとして使用することはできません。なぜなら、ターゲットは常にテスト中のAIアプリケーションだからです。
version: 2.9.0
name: TrendAI Judge Example
description: Scan a customer OpenAI target with a Trend Vision One-hosted judge
target:
  name: customer-app
  endpoint: https://api.openai.com/v1/
  api_key_env: TARGET_API_KEY
  openai:
    model: gpt-4o
judge:
  name: trend-saas-judge
  api_key_env: TREND_AI_KEY
  trendai:
    region: us
attack_preset: OWASP
モデル、エンドポイント、システムプロンプト、調整パラメータはこのプロバイダではユーザが設定できません。AIスキャナーはregionから自動的に導き出し、役割は任意であり、デフォルトはusです。サポートされている地域:
  • us
  • eu
  • jp
  • sg
  • au
  • in
  • mea
  • uk
  • ca
  • za