Cisco Secure Workload OpenAPI

この章では、Cisco Secure Workload 内での OpenAPI の広範な機能について紹介します。安全なダイジェストベースの認証スキームを強調し、RESTful API インタラクションを促進する OpenAPI の役割について説明します。このスキームにより、ポリシー管理やシステム構成などの機能へのアクセスが制御されます。認証するには、ユーザーは Secure Workload にログインし、API キーとシークレットを生成し、JSON 形式の REST リクエストに Secure Workload API SDK を使用する必要があります。

さらに、この章では、ポリシー分析、適用、自動ポリシー検出などの重要な操作をサポートする API エンドポイントについても詳しく説明します。API が現在のポリシーセットを分析する方法と、適用エンドポイントがホスト全体にファイアウォールルールを実装する方法について説明します。自動ポリシー検出などの高度な機能は、特定の基準に基づいてポリシーを特定および生成する自動プロセスを強調します。

OpenAPI 認証

OpenAPI はダイジェストベースの認証方式を使用します。ワークフローは次のようになります。

  1. Secure Workload UI ダッシュボードにログインします。

  2. 目的の機能を使用して API キーと API 秘密を生成します。

  3. JSON 形式で REST 要求を送信するには、Secure Workload API SDK を使用します。

  4. Python SDK を使用するには、pip install tetpyclient を使用して SDK をインストールします。

  5. Python SDK をインストールしたら、RestClient をインスタンス化するためのいくつかの定型コードを次に示します。


    from tetpyclient import RestClient

    API_ENDPOINT="https://<UI_VIP_OR_DNS_FOR_TETRATION_DASHBOARD>"

    # ``verify`` is an optional param to disable SSL server authentication.
    # By default, cluster dashboard IP uses self signed cert after
    # deployment. Hence, ``verify=False`` might be used to disable server
    # authentication in SSL for API clients. If users upload their own
    # certificate to cluster (from ``Platform > SSL Certificate``)
    # which is signed by their enterprise CA, then server side authentication
    # should be enabled; in such scenarios, in the code below, verify=False
    # should be replaced with verify="path-to-CA-file"
    # credentials.json looks like:
    # {
    #   "api_key": "<hex string>",
    #   "api_secret": "<hex string>"
    # }

    restclient = RestClient(API_ENDPOINT,
                    credentials_file='<path_to_credentials_file>/credentials.json',
                    verify=False)
    # followed by API calls, for example API to retrieve list of agents.
    # API can be passed /openapi/v1/sensors or just /sensors.
    resp = restclient.get('/sensors')

API キーと秘密の生成

手順


ステップ 1

Secure Workload UI の右上隅で、ログインしているアカウントをクリックし、[APIキー(API Keys)] を選択します。

ステップ 2

[API キーの作成(Create API Key)] をクリックします。

ステップ 3

(オプション)API キーの説明を入力します。

ステップ 4

API キーと API 秘密に必要な機能を選択します。

API キーと API 秘密のペアを使用するための機能の制限設定を使用できます。

API 機能の可用性は、ユーザーロールによって異なります。次の API 機能は、すべてのユーザー権限レベルで使用できます。

表 1. API 機能

機能

説明

sensor_management

ソフトウェアエージェントのステータスを構成およびモニターする機能。

software_download

エージェントまたは仮想アプライアンスのソフトウェアパッケージをダウンロードする機能。

flow_inventory_query

Secure Workload クラスタのフローとインベントリ項目をクエリする機能。

user_role_scope_management

ユーザー、ロール、および範囲を読み取り、追加、変更、または削除する機能。

user_data_upload

フローとインベントリ項目に注釈を付けるためのデータのアップロード、正当または不当なファイルハッシュのアップロードをユーザーに許可する機能。

app_policy_management

ワークスペース(アプリケーション)を管理し、ポリシーを適用する機能。

external_integration

vCenter や Kubernetes などの外部システムとの統合を可能にする機能。

次の API 機能は、サイト管理者のみが使用できます。

表 2. サイト管理者向けのAPI 機能

機能

説明

appliance_management

Cisco Secure Workload アプライアンスを管理する機能

appliance_monitoring

Cisco Secure Workload アプライアンスの設定と構成をモニターする機能(読み取り専用)

ステップ 5

[作成(Create)] をクリックします。

API キーと秘密が生成されたら、ファイルにコピーして安全な場所に保存する必要があります。または、キーと秘密を含む JSON ファイルをダウンロードできます。


(注)  


LDAP を使用した外部認証および LDAP 認証が有効な場合、ユーザーセッションの終了後にグループの LDAP メンバーからの Secure Workload ロールが再評価されるため、Open API への API Key アクセスが停止します。中断を回避するために、API キーを使用するユーザーの [ユーザーの詳細の編集(Edit User Details)] で [ローカル認証を使用(Use Local Authentication)] オプションを有効にします。


ワークスペースとセキュリティポリシー

次のページでは、セグメンテーションを管理するための OpenAPI エンドポイントについて説明します。

ワークスペース

ワークスペース(以前の呼称は「アプリケーション ワークスペース」または「アプリケーション」)は、特定の範囲のポリシーを定義、分析、および適用するためのコンテナです。動作の詳細については、『ワークスペース』のマニュアルを参照してください。この一連の API には、API キーに関連付けられている app_policy_management 機能が必要です。

ワークスペースオブジェクト

ワークスペース(「アプリケーション」)の JSON オブジェクトは、API エンドポイントに応じて、単一のオブジェクトまたはオブジェクトの配列として返されます。オブジェクトの属性については、以下で説明します。

属性

タイプ

説明

id

string

ワークスペースの一意の識別子。

name

文字列

ユーザーが指定したワークスペース名。

description

文字列

ユーザーが指定したワークスペースの説明。

app_scope_id

string

ワークスペースが関連付けられている範囲の ID。

author

string

ワークスペースを作成したユーザーの姓と名。

primary

boolean

ワークスペースがその範囲に対してプライマリであるかどうかを示します。

alternate_query_mode

boolean

ワークスペースに「ダイナミックモード」が使用されているかどうかを示します。ダイナミックモードでは、自動ポリシー検出の実行により、クラスタごとに 1 つ以上の候補クエリが作成されます。デフォルト値は true です。

created_At

integer

ワークスペースが作成されたときの Unix タイムスタンプ。

latest_adm_version

integer

ワークスペースの最新の adm (v*) バージョン。

analysis_enabled

boolean

ワークスペースで分析が有効になっているかどうかを示します。

analyzed_version

integer

ワークスペースの分析された p* バージョン。

enforcement_enabled

boolean

ワークスペースで適用が有効になっているかどうかを示します。

enforced_version

integer

ワークスペースの適用された p* バージョン。

アプリケーションのリスト

このエンドポイントは、ワークスペース(「アプリケーション」)の配列を返します。

GET /openapi/v1/applications
表 3. パラメータ

名前

タイプ

説明

app_scope_id

string

特定のアプリケーション範囲に関連付けられたワークスペースを照合します。

exact_name

string

ワークスペースを提供された値と正確に照合します。

応答オブジェクト:ワークスペースオブジェクトの配列を返します。

サンプル python コード

restclient.get('/applications')

単一のワークスペースの取得

このエンドポイントは、要求されたワークスペース(「アプリケーション」)を 1 つの JSON オブジェクトとして返します。

GET /openapi/v1/applications/{application_id}

パラメータ:要求 URL には、次のパラメータが含まれています。

名前

タイプ

説明

application_id

string

ワークスペースの一意の識別子。

応答オブジェクト:指定された ID のワークスペースオブジェクトを返します。

サンプル python コード

  application_id = '5d02b493755f0237a3d6e078'
  restclient.get('/applications/%s' % application_id)

ワークスペースの作成

このエンドポイントは、ワークスペース(「アプリケーション」)を作成します。クラスタとポリシーの定義を含む JSON 本文をポストすることによって、ポリシーを定義することができます。


(注)  


同じ範囲にプライマリワークスペースが存在し、新しいポリシーが提供されている場合、ポリシーは新しいバージョンとして既存のワークスペースに追加されます。


POST /openapi/v1/applications

パラメータ:JSON クエリの本文には、次のキーが含まれています。

名前

タイプ

説明

app_scope_id

string

ワークスペースに割り当てる範囲 ID。

name

文字列

(オプション)ワークスペースの名前。

description

文字列

(オプション)ワークスペースの説明。

alternate_query_mode

boolean

(オプション)ワークスペースに「ダイナミックモード」が使用されているかどうかを示します。ダイナミックモードでは、自動ポリシー検出の実行により、クラスタごとに 1 つ以上の候補クエリが作成されます。デフォルト値は true です。

strict_validation

boolean

(オプション)アップロードされたデータに不明なキーまたは属性がある場合、エラーを返します。スペルミスされたキーを検出するのに役立ちます。デフォルト値は false です。

primary

string

(オプション)このワークスペースを関連付けられた範囲のプライマリにする必要がある場合は、「true」に設定します。デフォルトは true です。

ワークスペース内で作成されるポリシーを記述する、追加のオプションパラメータを含めることもできます。


(注)  


このスキームは、UI と詳細エンドポイントからのエクスポート時に返されるものに対応しています。


名前

タイプ

説明

クラスタ

クラスタの配列

ポリシーを定義するために使用されるノードのグループ。

inventory_filters

インベントリ フィルタの配列

データセンター アセットをフィルタリングします。

absolute_policies

ポリシーの配列

絶対ランクで作成される順序ポリシー。

default_policies

ポリシーの配列

デフォルト ランクで作成される順序ポリシー。

catch_all_action

文字列

「ALLOW」または「DENY」

クラスタ オブジェクト属性:

名前

タイプ

説明

id

string

ポリシーで使用される固有識別子。

name

文字列

クラスタの表示名。

description

文字列

クラスタの説明。

nodes

ノードの配列

このクラスタに属するノードまたはエンドポイント

consistent_uuid

文字列

特定のワークスペースに対して一意である必要があります。自動ポリシー検出の実行後、類似/同じクラスタは次のバージョンでも consistent_uuid を維持します。

ノード オブジェクトの属性:

名前

タイプ

説明

ip

文字列

ノードの IP またはサブネット。たとえば、10.0.0.0/8 や 1.2.3.4 など。

name

文字列

ノードの表示名。

インベントリ フィルタ オブジェクトの属性:

名前

タイプ

説明

id

string

ポリシーで使用される固有識別子。

name

文字列

クラスタの表示名。

query

object

インベントリ フィルタ クエリの JSON オブジェクト表現。

ポリシー オブジェクトの属性:

名前

タイプ

説明

consumer_filter_id

string

クラスタの ID、ユーザー インベントリ フィルタ、またはアプリ範囲。

provider_filter_id

string

クラスタの ID、ユーザー インベントリ フィルタ、またはアプリ範囲。

action

文字列

「ALLOW」または「DENY」

l4_params

l4params の配列

許可されたポートとプロトコルのリスト。

L4Params オブジェクト属性:

名前

タイプ

説明

proto

integer

Protocol Integer value (NULL はすべてのプロトコルを意味します)。

port

array

ポート範囲を含みます。たとえば、[80, 80] や [5000, 6000] など。

approved

boolean

(オプション)ポリシーが承認されているかどうかを示します。デフォルトは False です。

応答オブジェクト:新しく作成されたワークスペースオブジェクトを返します。

サンプル python コード


  name = 'test'
  scope_id = '5ce480cc497d4f1b4b9a9e8d'
  filter_id = '5ce480cd497d4f1b4b9a9ea4'
  application = {
      'app_scope_id': scope_id,
      'name': name,
      'absolute_policies': [
          {
	      # consumer/provider filter IDs can be ID of a cluster identified during automatic policy discovery (formerly known as ADM),
	      # user inventory filter or app scope.
              'provider_filter_id': filter_id,
              'consumer_filter_id': filter_id,
              'action': 'ALLOW',
	      # ALLOW policy for TCP on port 80.
              'l4_params': [
                  {
                      'proto': 6, # TCP
                      'port': [80, 80],  # port range
                  }
              ],
          }
      ],
      'catch_all_action': 'ALLOW'
  }
  restclient.post('/applications', json_body=json.dumps(application))

新しいバージョンのインポート

ポリシーをインポートし、ワークスペース(「アプリケーション」)の新しい v* バージョンを作成します。

POST /openapi/v1/applications/{application_id}/import

パラメータは、ワークスペース エンドポイントの作成と同じです。

応答オブジェクト:ワークスペースオブジェクトを返します。

一連のポリシーの検証

新しいバージョンを作成せずに一連のポリシーを検証します。

POST /openapi/v1/applications/validate_policies

app_scope_id は必須です。残りのパラメータは、ワークスペース エンドポイントの作成と同じです。

応答オブジェクト:

属性

タイプ

説明

valid

boolean

ポリシーが有効かどうかを示します。

errors

array

無効な場合、エラーの詳細

ワークスペースの削除

ワークスペース(「アプリケーション」)を削除します。

DELETE /openapi/v1/applications/{application_id}

ワークスペースを削除する前に、ワークスペースで適用を無効にする必要があります。

ワークスペースまたはそのクラスタが他のアプリケーションによって(提供されるサービスの関係を介して)使用されている場合、このエンドポイントは 422 Unprocessable Entity を返します。返されるエラーオブジェクトには、details 属性が含まれ、依存オブジェクトの数とともに各タイプの最初の 10 個の ID が示されます。この情報を使用して、問題となっている依存関係を見つけて削除できます。

パラメータ:要求 URL には、次のパラメータが含まれています。

名前

タイプ

説明

application_id

string

ワークスペースの一意の識別子。

応答オブジェクト:なし

サンプル python コード


  application_id = '5d02b493755f0237a3d6e078'
  restclient.delete('/applications/%s' % application_id)

ワークスペースの更新

このエンドポイントにより、既存のワークスペース(「アプリケーション」)が更新されます。

PUT /openapi/v1/applications/{application_id}

パラメータ:要求 URL には、次のパラメータが含まれています。

名前

タイプ

説明

application_id

string

ワークスペースの一意の識別子。

JSON クエリの本文には、次のキーが含まれています。

名前

タイプ

説明

name

文字列

(オプション)ワークスペースの更新された名前。

descrip

string

(オプション)ワークスペースの更新された説明。

primary

string

(オプション)ワークスペースをプライマリにするには、「true」に設定します。ワークスペースをセカンダリにするには、「false」に設定します。

応答オブジェクト:指定された ID の更新されたワークスペースオブジェクト。

サンプル python コード


  application_id = '5d02b493755f0237a3d6e078'
  req_payload = {
        'name': 'Updated Name',
        'description': 'Updated Description',
        'primary': 'true'
  }
  resp = restclient.put('/applications/%s' % application_id,
                        json_body=json.dumps(req_payload))

ワークスペースの詳細を取得

このエンドポイントは、ワークスペースの完全なエクスポート JSON ファイルを返します。これには、ポリシーとクラスタの定義が含まれます。

GET/openapi/v1/applications/{application_id}/details

パラメータ:要求 URL には、次のパラメータが含まれています。

名前

タイプ

説明

application_id

string

ワークスペースの一意の識別子。

version

string

(オプション)「v10」または

「p10」形式のバージョンで、デフォルトは「最新」です。

応答オブジェクト:指定されたワークスペースバージョンのクラスタとポリシーを返します。

サンプル python コード


  application_id = '5d02b493755f0237a3d6e078'
  # For v* version v10 and for p* version p10
  version = 'v10'
  resp = restclient.get('/applications/%s/details?version=%s' % (application_id, version))

ワークスペースバージョンの一覧表示

このエンドポイントは、特定のワークスペースのすべてのバージョンのリストを返します。

GET /openapi/v1/applications/{application_id}/versions

パラメータ:要求 URL には、次のパラメータが含まれています。

名前

タイプ

説明

application_id

string

ワークスペースの一意の識別子。

created_before

integer

(オプション)ページネーションの場合、前の応答からの最新バージョンの「created_at」(作成日)に設定します。

limit

integer

(オプション)返される結果の最大数。デフォルトは 50 です。

応答オブジェクト:次の属性を持つオブジェクトの配列:

属性

タイプ

説明

version

string

「v10」または「p10」の形式のバージョン。

created_At

integer

ワークスペースが作成されたときの Unix タイムスタンプ。

description

文字列

ユーザーが提供する説明。

name

文字列

表示名。

サンプル python コード


  application_id = '5d02b493755f0237a3d6e078'
  created_before = 1612325705
  limit = 10
  resp = restclient.get('/applications/%s/versions?created_before=%s&limit=%s' %
                        (application_id, created_before, limit))

ワークスペースバージョンの削除

このエンドポイントは、クラスタとポリシーを含む指定されたバージョンを削除します。適用または分析されたバージョンは削除されません。メンバーが外部ポリシーを介して別のワークスペースによって参照されている場合、応答は参照のリストと共にエラーを返します。

DELETE /openapi/v1/applications/{application_id}/versions/{version}

パラメータ:要求 URL には、次のパラメータが含まれています。

名前

タイプ

説明

application_id

string

ワークスペースの一意の識別子。

version

string

「v10」または「p10」の形式のバージョン。

応答オブジェクト:なし

サンプル python コード


  application_id = '5d02b493755f0237a3d6e078'
  version = 'v10'
  resp = restclient.delete('/applications/%s/versions/%s' %
                           (application_id, version))

ワークスペースバージョンの比較

このエンドポイントは、提供されたワークスペースバージョン間の相違を計算します。追加されたポリシー、削除されたポリシー、およびオプションで変更されていないポリシーを返します。両方のバージョンに、一致する consistent_uuid によって定義されたクラスタが存在し、クエリが変更された場合、クラスタの変更が含まれます。

GET /openapi/v1/applications/{application_id}/version_diff

パラメータ:要求 URL には、次のパラメータが含まれています。

名前

タイプ

説明

application_id

string

ワークスペースの一意の識別子。

base_version

string

「v10」または「p10」などの完全バージョン。

draft_version

string

「v10」または「p10」などの完全バージョン。

include_unchanged

boolean

デフォルトは false です。変更されていないポリシーを応答で返します。

応答オブジェクト:次の属性を持つオブジェクトを返します。

属性

タイプ

説明

クラスタ

アレイ

バージョン間で変更されたクラスター。

ポリシー

アレイ

バージョン間で変更されたポリシー。

最新のポリシーの分析

ワークスペース内で一連の最新のポリシー分析を有効にします。

POST /openapi/v1/applications/{application_id}/enable_analysis

パラメータ:要求 URL には、次のパラメータが含まれています。

名前

タイプ

説明

application_id

string

ワークスペースの一意の識別子。

パラメータ:オプションの JSON クエリ本体には、次のキーが含まれます

名前

タイプ

説明

action_note

string

(オプション) ポリシー公開アクションの理由。

name

文字列

(オプション) 公開されたポリシーバージョンの名前。

description

文字列

(オプション) 公開されたポリシーバージョンの説明。

応答オブジェクト:次の属性を持つオブジェクトを返します。

属性

タイプ

説明

data_set

オブジェクト

データセットの JSON オブジェクト表現。

analyzed_policy_version

integer

ワークスペースの分析された p* バージョン。

サンプル python コード


  application_id = '5d02b493755f0237a3d6e078'
  req_payload = {
    'action_note': 'Policy analysis',
    'name': 'Test run 1',
    'description': 'New workloads added.'
  }
  resp = restclient.post('/applications/%s/enable_analysis' % application_id,
                         json_body=json.dumps(req_payload))

単一のワークスペースでポリシー分析を無効にする

ワークスペースでポリシー分析を無効にします。

POST /openapi/v1/applications/{application_id}/disable_analysis

パラメータ:要求 URL には、次のパラメータが含まれています。

名前

タイプ

説明

application_id

string

ワークスペースの一意の識別子。

応答オブジェクト:次の属性を持つオブジェクトを返します。

属性

タイプ

説明

data_set

オブジェクト

データセットの JSON オブジェクト表現。

analyzed_policy_version

integer

最後に分析されたワークスペースの p* バージョン。

サンプル python コード


  application_id = '5d02b493755f0237a3d6e078'
  resp = restclient.post('/applications/%s/disable_analysis' % application_id)

単一のワークスペースの適用

ワークスペースで最新のポリシーセットの適用を有効にします。

POST /openapi/v1/applications/{application_id}/enable_enforce


警告


新しいホスト ファイアウォール ルールが挿入され、関連するホスト上で既存のルールがすべて削除されます。


パラメータ:要求 URL には、次のパラメータが含まれています。

名前

タイプ

説明

application_id

string

ワークスペースの一意の識別子。

version

string

(オプション) 適用するポリシーのバージョン。

バージョンが指定されていない場合、ワークスペースの最新のポリシーが適用されます。バージョンは「p*」の形式で指定することが推奨されます。整数のみが指定されている場合、対応する「p*」バージョンが適用されます。

応答オブジェクト:次の属性を持つオブジェクトを返します。

名前

タイプ

説明

epoch

string

最新の適用プロファイルの固有識別子。

サンプル python コード


  application_id = '5d02b493755f0237a3d6e078'
  req_payload = {
    'version': 'p10'
  }
  resp = restclient.post('/applications/%s/enable_enforce' % application_id,
                         json_body=json.dumps(req_payload))

単一ワークスペースの適用の無効化

ワークスペースへの適用を無効にします。

POST /openapi/v1/applications/{application_id}/disable_enforce


警告


新しいホスト ファイアウォール ルールが挿入され、関連するホスト上で既存のルールがすべて削除されます。


パラメータ:要求 URL には、次のパラメータが含まれています。

名前

タイプ

説明

application_id

string

ワークスペースの一意の識別子。

応答オブジェクト:次の属性を持つオブジェクトを返します。

名前

タイプ

説明

epoch

string

最新の適用プロファイルの固有識別子。

サンプル python コード


  application_id = '5d02b493755f0237a3d6e078'
  resp = restclient.post('/applications/%s/disable_enforce' %
                         application_id)

自動ポリシー検出の開始

ワークスペースのポリシーを自動的に検出します(以前は「ADM 実行の送信」と呼ばれていました)。

POST /openapi/v1/applications/{application_id}/submit_run

パラメータ:要求 URL には、次のパラメータが含まれています。

名前

タイプ

説明

application_id

string

ワークスペースの一意の識別子。

パラメータ:JSON クエリの本文には、次のキーが含まれています。

名前

タイプ

説明

start_time

string

自動ポリシー検出実行の入力時間間隔の開始時刻。

end_time

string

自動ポリシー検出実行の入力時間間隔の終了時刻。

clustering_granularity

string

(オプション)クラスタリングの粒度により、ユーザーは自動ポリシー検出によって生成されるクラスタのサイズを制御できます。想定される値:VERY_FINE、FINE、MEDIUM、COARSE、または VERY_COARSE

port_generalization

string

(オプション)ポートの一般化により、ポートの一般化を実行するときに必要な統計的有意性のレベルが制御されます。想定される値:DISABLED、CONSERVATIVE、MODERATE、AGGRESSIVE、または VERY_AGGRESSIVE

policy_compression

string

(オプション)ポリシー圧縮が有効になっている場合、ワークスペース内に生成されたクラスタの中で、相当な頻度で使用されるポリシー(同じプロバイダーポートを使用するポリシー)は、親に「除外」される可能性があります。つまり、親範囲全体に置き換えられる可能性があります。想定される値:DISABLED、CONSERVATIVE、MODERATE、AGGRESSIVE、または VERY_AGGRESSIVE

auto_accept_policy_connectors

boolean

(オプション)自動受け入れポリシーコネクタ 自動ポリシー検出中に作成されたすべての発信ポリシー要求は、自動的に受け入れられます。

enable_exclusion_filter

boolean

(オプション)除外フィルタの有効化オプションは、ユーザー定義の除外フィルタ(存在する場合)のいずれかに一致するすべてのカンバセーションを無視する柔軟性を得られます。詳細については、「除外フィルタ」を参照してください。

enable_default_exclusion_filter

boolean

(オプション)デフォルトの除外フィルタの有効化オプションは、デフォルトの除外フィルタ(存在する場合)のいずれかに一致するすべてのカンバセーションを無視する柔軟な対応を可能にします。詳細については、「デフォルトの除外フィルタ」を参照してください。

enable_service_discovery

boolean

(オプション)エージェントでのサービス検出の有効化が設定されている場合、エージェントノードに存在するサービスに関連した一時的なポート範囲情報がレポートされます。次に、レポートされたポート範囲情報に基づいてポリシーが生成されます。

carry_over_policies

boolean

(オプション)承認済みポリシーの引継ぎが設定されている場合、UI または OpenAPI を使用してユーザーによって承認済みとしてマークされているすべてのポリシーが保持されます。

skip_clustering

boolean

(オプション)クラスタリングのスキップが設定されている場合、新しいクラスタは生成されず、既存の承認済みクラスタまたはインベントリフィルタからポリシーが生成されます。設定されていない場合は、範囲内のすべてのワークロードがポリシーに含められます。

deep_policy_generation

boolean

(オプション)単一範囲ではなく、範囲ツリーのブランチのポリシーを生成することができます。詳細については、1 つの範囲または範囲ツリーのブランチのポリシーの検出およびサブトピックを参照してください。

use_default_config

boolean

(オプション)このオプションが設定されている場合、自動ポリシー検出は、以前の実行設定の代わりにデフォルトのポリシー検出設定を使用します。詳細については、「デフォルトのポリシー検出設定」を参照してください。


(注)  


ワークスペースで自動ポリシー検出が以前に実行された場合、指定されていないオプションパラメータのデフォルト値は、以前の自動ポリシー検出実行設定から取得されます。それ以外の場合、デフォルト値はデフォルトのポリシー検出設定から取得されます。


応答オブジェクト:次の属性を持つオブジェクトを返します。

名前

タイプ

説明

message

string

自動ポリシー検出実行の成功/失敗に関するメッセージ。

サンプル python コード


  application_id = '5d02b493755f0237a3d6e078'
  req_payload = {
        'start_time': '2020-09-17T10:00:00-0700',
        'end_time': '2020-09-17T11:00:00-0700',
        # Optional Parameters.
        'clustering_granularity': 'FINE',
        'port_generalization': 'AGGRESSIVE',
        'policy_compression': 'AGGRESSIVE',
        'auto_accept_policy_connectors': False,
        'enable_exclusion_filter': True,
        'enable_default_exclusion_filter': True,
        'enable_service_discovery': True,
        'carry_over_policies': True,
        'skip_clustering': False,
        'deep_policy_generation': True,
        'use_default_config': False
  }
  resp = restclient.post('/applications/%s/submit_run' % application_id,
                         json_body=json.dumps(req_payload))

ポリシー検出実行のステータスの取得

ワークスペースで実行されている自動ポリシー検出のステータスをクエリします。

GET /openapi/v1/applications/{application_id}/adm_run_status

パラメータ:要求 URL には、次のパラメータが含まれています。

名前

タイプ

説明

application_id

string

ワークスペースの一意の識別子。

応答オブジェクト:次の属性を持つオブジェクトを返します。

名前

タイプ

説明

status

string

自動ポリシー検出実行のステータス。値:PENDING、COMPLETE、または FAILED

サンプル python コード


  application_id = '5d02b493755f0237a3d6e078'
  resp = restclient.get('/applications/%s/adm_run_status' % application_id)

ポリシー

この一連の API を使用して、ポリシーの追加、編集、または削除を管理できます。 create および update catch all アクションには version パラメータが必要です。API キーに関連付けられた user_role_scope_management 機能が必要です。

ポリシー オブジェクト

ポリシーオブジェクトの属性については、以下で説明します。

属性

タイプ

説明

id

string

ポリシーの一意の識別子。

application_id

string

ポリシーが属するワークスペースの ID。

consumer_filter_id

string

定義されたフィルタの ID。現在、任意のクラスタ、ユーザー定義フィルタ、または範囲をポリシーのコンシューマとして使用できます。

provider_filter_id

string

定義されたフィルタの ID。現在、任意のクラスタ、ユーザー定義フィルタ、または範囲をポリシーのプロバイダーとして使用できます。

version

string

ポリシーが属するワークスペースのバージョンを示します。

rank

string

ポリシーランク。入力可能値:DEFAULT、ABSOLUTE、CATCHALL。

policy_action

string

入力可能値は、ALLOW または DENY です。コンシューマとプロバイダー間の特定のサービスポートまたはプロトコルについて、トラフィックを許可するかドロップするかを示します。

priority

integer

ポリシーを並べ替えるために使用されます。

l4_params

l4params の配列

許可されたポートとプロトコルのリスト。

L4Params オブジェクト属性:

名前

タイプ

説明

proto

integer

Protocol Integer value (NULL はすべてのプロトコルを意味します)。

port

array

ポートの包含範囲。例:[80, 80] または [5000, 6000]。

description

文字列

このプロトとポートに関する短い文字列。

approved

boolean

ポリシーがユーザーによって承認されている場合。

ポリシーの取得

このエンドポイントは、特定のワークスペースのポリシーのリストを返します。この API は、app_policy_management 機能を持つ API キーで使用できます。

GET /openapi/v1/applications/{application_id}/policies

パラメータ:要求 URL には、次のパラメータが含まれています。

名前

タイプ

説明

version

string

ポリシーを取得するワークスペースのバージョンを示します。

consumer_filter_id

string

(オプション)コンシューマフィルタ ID で出力をフィルタ処理します。

provider_filter_id

string

(オプション)コンシューマフィルタ ID で出力をフィルタ処理します。

ポリシー ID は、バージョンごとに変更できます。公開バージョンからポリシーのリストを取得するには、バージョン番号の前に「p」を付ける必要があります。たとえば、公開されたバージョン 3 のすべてのポリシーを取得するには、次のような要求を実行できます。

GET /openapi/v1/applications/{application_id}/policies?version=p3

以下に示すように、この特定のワークスペース内のすべてのポリシーのオブジェクトを返します。


    {
      absolute_policies: [ ... ],
      default_policies: [ ... ],
      catch_all_action:
    }

サンプル python コード


  application_id = '5f88c996755f023f3bafe163'
  restclient.get('/applications/%s/policies' % application_id, params={'version': '1'})
デフォルトポリシーの取得

このエンドポイントは、特定のワークスペースのデフォルトポリシーのリストを返します。この API は、app_policy_management 機能を持つ API キーで使用できます。

GET /openapi/v1/applications/{application_id}/default_policies

パラメータ:

名前

タイプ

説明

id

string

ポリシーの一意の識別子。

version

string

ポリシーを取得するワークスペースのバージョンを示します。

limit

integer

要求あたりのポリシー数を制限します。

offset

integer

(オプション)以前の応答から受け取ったオフセット番号。常に limit と共に使用する必要があります。

consumer_filter_id

string

(オプション)コンシューマフィルタ ID で出力をフィルタ処理します。

provider_filter_id

string

(オプション)プロバイダーフィルタ ID で出力をフィルタ処理します。

このワークスペースの提供されたバージョンのデフォルトポリシーのリストを返します。応答には、要求された数のポリシーと offset が含まれており、次のポリシーのセットを取得するには、後続の要求でこの offset を使用します。応答に offset がない場合は、すべてのポリシーがすでに取得されていることを示します。

サンプル python コード


  application_id = '5f88c996755f023f3bafe163'
  restclient.get('/applications/%s/default_policies' % application_id, params={'version': '1', 'limit': 3, 'offset': 3})

サンプル応答


    {
      "results": [
      PolicyObject4,
      PolicyObject5,
      PolicyObject6
      ],
      "offset": 6
    }
絶対ポリシーの取得

このエンドポイントは、特定のワークスペース内の絶対ポリシーのリストを返します。この API は、app_policy_management 機能を持つ API キーで使用できます。

GET /openapi/v1/applications/{application_id}/absolute_policies

パラメータ:

名前

タイプ

説明

version

string

ポリシーを取得するワークスペースのバージョンを示します。

limit

integer

要求あたりのポリシー数を制限します。

offset

integer

(オプション)以前の応答から受け取ったオフセット番号。常に limit と共に使用する必要があります。

consumer_filter_id

string

(オプション)コンシューマフィルタ ID で出力をフィルタ処理します。

provider_filter_id

string

(オプション)プロバイダーフィルタ ID で出力をフィルタ処理します。

このワークスペースの提供されたバージョン内の絶対ポリシーのリストを返します。応答には、要求された数のポリシーと offset が含まれており、次のポリシーのセットを取得するには、後続の要求でこの offset を使用します。応答に offset がない場合は、すべてのポリシーがすでに取得されていることを示します。

サンプル python コード


  application_id = '5f88c996755f023f3bafe163'
  restclient.get('/applications/%s/absolute_policies' % application_id, params={'version': '1', 'limit': 3})

サンプル応答


    {
      "results": [
      PolicyObject1,
      PolicyObject2,
      PolicyObject3
      ],
      "offset": 3
    }
Catch All ポリシーの取得

このエンドポイントは、特定のワークスペースの Catch All ポリシーを返します。この API は、app_policy_management 機能を持つ API キーで使用できます。

GET /openapi/v1/applications/{application_id}/catch_all

パラメータ:

名前

タイプ

説明

version

string

ポリシーを取得するワークスペースのバージョンを示します。

ワークスペースの指定されたバージョンの Catch All ポリシーを表す単一のポリシーオブジェクトを返します。

サンプル python コード


  application_id = '5f88c996755f023f3bafe163'
  restclient.get('/applications/%s/catch_all' % application_id, params={'version': '1'})

特定のポリシーの取得

このエンドポイントは、ポリシーのインスタンスを返します。

GET /openapi/v1/policies/{policy_id}

指定した ID に関連付けられているポリシーオブジェクトを返します。

サンプル python コード


  policy_id = '5f88ca1e755f0222f85ce85c'
  restclient.get('/policies/%s' % policy_id)

ポリシー識別子を使用した特定のポリシーの検索

このエンドポイントは、ポリシー識別子パラメータを複合キーとして使用して、特定のポリシーを検索します。

POST /openapi/v1/policies/search

クエリ本文は、次のスキーマを使用した JSON 本文で構成されます。

名前

タイプ

説明

application_id

string

アプリケーション ワークスペースの ID。

policy_identifier

オブジェクト

一貫したポリシー識別子を構成するフィールド。

ポリシー識別子フィールドは、次のスキーマを使用して構成されています。

名前

タイプ

説明

version

string

(オプション)ポリシーを取得するアプリケーションのバージョンを示します。指定しない場合、デフォルトでアプリケーションの最新の「v」バージョンに設定されます。

consumer_consistent_uuid

string

コンシューマまたは送信元の一貫した UUID。

provider_consistent_uuid

string

プロバイダーまたは宛先の一貫した UUID。

rank

string

ポリシーランクは「DEFAULT」または「ABSOLUTE」のいずれかである必要があります。

action

string

ポリシーアクションは、「ALLOW」または「DENY」のいずれかである必要があります。

priority

integer

ポリシーの優先順位を示す値。

protocol

integer

IP プロトコル番号(0 ~ 255)。

start_port

integer

(オプション)ポート範囲の開始(0 ~ 65535)。指定されていない場合、デフォルトは 0 です。

end_port

integer

(オプション)ポート範囲の終了(0 ~65535)。start_port が 0 の場合、デフォルトは 65535 で、0 以外の場合は start_prot です。

サンプル python コード


  application_id = '5f88ca1e755f0222f85ce85c'
  consumer_id = '5f88ca1e755f0222f85ce85d'
  provider_id = '5f88ca1e755f0222f85ce85d'
  rank = 'DEFAULT'
  action = 'ALLOW'
  priority = 100
  protocol = 6
  start_port = 80
  version = 'p3'

  req_body = f'''
  {{
      "application_id": "{application_id}",
      "policy_identifier": {{
          "consumer_consistent_uuid": "{consumer_id}",
          "provider_consistent_uuid": "{provider_id}",
          "rank": "{rank}",
          "action": "{action}",
          "priority": {priority},
          "protocol": "{protocol}",
          "start_port": "{start_port}",
          "version": "{version}"
      }}
  }}'''
  restclient.post('/policies/search', json_body=req_body)

ポリシーの作成

このエンドポイントは、新しいポリシーを作成するために使用されます。

POST /openapi/v1/applications/{application_id}/policies

パラメータ:

属性

タイプ

説明

consumer_filter_id

string

定義されたフィルタの ID。

provider_filter_id

string

定義されたフィルタの ID。

version

string

ポリシーを更新するワークスペースのバージョンを示します。

rank

string

値は、ランク付けの DEFAULT、ABSOLUTE、または CATCHALL になります。

policy_action

string

値は ALLOW または DENY です。つまり、指定されたサービスポートまたはプロトコルで、コンシューマからプロバイダーへのトラフィックを許可またはドロップします。

priority

integer

ポリシーを並べ替えるために使用されます。

サンプル python コード


  req_payload = {
    "version": "v1",
    "rank" : "DEFAULT",
    "policy_action" : "ALLOW",
    "priority" : 100,
    "consumer_filter_id" : "123456789",
    "provider_filter_id" : "987654321",
  }
  resp = restclient.post('/openapi/v1/applications/{application_id}/policies', json_body=json.dumps(req_payload))
デフォルトポリシーの作成

このエンドポイントは、新しいデフォルトポリシーを作成するために使用されます。このエンドポイントでは、ポリシーエンドポイントの作成と同様のデフォルトポリシーが作成されます。

POST /openapi/v1/applications/{application_id}/default_policies

絶対ポリシーの作成

このエンドポイントは、新しい絶対ポリシーを作成するために使用されます。このエンドポイントでは、ポリシーエンドポイントの作成と同様の絶対ポリシーが作成されます。

POST /openapi/v1/applications/{application_id}/absolute_policies

ポリシーの更新

このエンドポイントはポリシーを更新します。

PUT /openapi/v1/policies/{policy_id}

パラメータ:

属性

タイプ

説明

consumer_filter_id

string

定義されたフィルタの ID。

provider_filter_id

string

定義されたフィルタの ID。

policy_action

string

入力可能値は、ALLOW または DENY です。コンシューマとプロバイダー間の特定のサービスポートまたはプロトコルについて、トラフィックを許可するかドロップするかを示します。

priority

integer

ポリシーの優先順位の並べ替えに使用

指定された ID に関連付けられている変更されたポリシーオブジェクトを返します。

Catch All の更新

このエンドポイントは、特定のワークスペースの Catch All を更新します。

PUT /openapi/v1/applications/{application_id}/catch_all

パラメータ:

属性

タイプ

説明

version

string

ポリシーを更新するワークスペースのバージョンを示します。

policy_action

string

入力可能値は、ALLOW または DENY です。このワークスペースのいずれのポリシーにも一致しないトラフィックを許可するか、ドロップするかを示します。

ポリシーへのサービスポートの追加

このエンドポイントは、特定のポリシーのサービスポートを作成するために使用されます。

POST /openapi/v1/policies/{policy_id}/l4_params

パラメータ:

属性

タイプ

説明

version

string

ポリシーを取得するワークスペースのバージョンを示します。

start_port

integer

範囲の開始ポート。

end_port

integer

範囲の終了ポート。

proto

integer

Protocol Integer value (NULL はすべてのプロトコルを意味します)。

description

文字列

(オプション)このプロトコルとポートに関する短い文字列。

ポリシーのサービスポートの更新

このエンドポイントは、ポリシーの指定されたサービスポートを更新します。

PUT /openapi/v1/policies/{policy_id}/l4_params/{l4_params_id}

パラメータ:

属性

タイプ

説明

approved

bool

ポリシーを承認済みとしてマークします。

ポリシーのサービスポートの削除

このエンドポイントは、ポリシーの指定されたサービスポートを削除します。(オプション)詳細については、「除外フィルタを参照してください。

DELETE /openapi/v1/policies/{policy_id}/l4_params/{l4_params_id}

パラメータ:

属性

タイプ

説明

create_exclusion_filter

bool

(オプション)true の場合、ポリシーに一致する除外フィルタが作成されます。このフィルタに一致するフローは、今後の自動ポリシー検出の実行から除外されます。詳細については、「除外フィルタ」を参照してください。

ポリシーの削除

このエンドポイントは、指定されたポリシーを削除します。除外フィルタは作成されません。

DELETE /openapi/v1/policies/{policy_id}

識別子を持つポリシーの削除

このエンドポイントは、ポリシー識別子パラメータを使用して、指定されたポリシーを削除します。除外フィルタは作成されません。

DELETE /openapi/v1/policies/destroy_with_identifier

クエリ本文は、次のスキーマを使用した JSON 本文で構成されます。

名前

タイプ

説明

application_id

string

アプリケーション ワークスペースの ID。

policy_identifier

オブジェクト

一貫したポリシー識別子を構成するフィールド。

ポリシー識別子フィールドは、次のスキーマを使用して構成されています。

名前

タイプ

説明

version

string

(オプション)削除操作を実行するアプリケーション ワークスペースの「v」バージョン。指定されていない場合、デフォルトはワークスペースの最新の「v」バージョンです。

consumer_consistent_uuid

string

コンシューマまたは送信元の一貫した UUID

provider_consistent_uuid

string

プロバイダーまたは宛先の一貫した UUID

rank

string

ポリシーランクは「DEFAULT」または「ABSOLUTE」のいずれかである必要があります。

action

string

ポリシーアクションは、「ALLOW」または「DENY」のいずれかである必要があります。

priority

integer

ポリシーのプライオリティ値。

protocol

integer

ポリシーの IP プロトコル番号(0 ~ 255)

start_port

integer

(オプション)ポート範囲の開始(0 ~ 65535)。指定されていない場合、デフォルトは 0 です

end_port

integer

(オプション)ポート範囲の終了(0 ~65535)。start_port が 0 の場合、デフォルトは 65535 で、0 以外の場合は start_prot です。

サンプル python コード



  application_id = '5f88ca1e755f0222f85ce85c'
  consumer_id = '5f88ca1e755f0222f85ce85d'
  provider_id = '5f88ca1e755f0222f85ce85d'
  action = 'ALLOW'
  rank = 'DEFAULT'
  protocol = 6
  start_port = 80
  priority = 100
  version = '5'

  req_body = f'''
  {{
      "application_id": "{application_id}",
      "policy_identifier": {{
          "consumer_consistent_uuid": "{consumer_id}",
          "provider_consistent_uuid": "{provider_id}",
          "rank": "{rank}",
          "priority": {priority},
          "action": "{action}",
          "protocol": "{protocol}",
          "start_port": "{start_port}",
          "version": "{version}"
      }}
  }}'''
  restclient.delete('/policies/destroy_with_identifier', json_body=req_body)

ポリシーの簡易分析

このエンドポイントを使用して、ルート範囲で分析または適用されたポリシーと一致する仮想フローの一連のポリシーを見つけることができます。詳細については、「簡易分析」を参照してください。

この API は、ルート範囲への最小限の読み取りアクセス権を持つユーザーのみが使用できます。また、API キーに関連付けられた app_policy_management 機能が必要です。

POST /openapi/v1/policies/{rootScopeID}/quick_analysis

クエリ本文は、次のスキーマを使用した JSON 本文で構成されます。

名前

タイプ

説明

consumer_ip

string

クライアント/コンシューマの IP アドレス。

provider_ip

string

サーバー/プロバイダーの IP アドレス。

provider_port

integer

(オプション)プロバイダーポート。TCP または UDP フローにのみ関連します。

protocol

string

フローのプロトコル(TCP など)。

analysis_type

string

分析タイプは、analyzed または enforced にできます。分析タイプが「analyzed」の場合、ルート範囲で分析されたすべてのポリシーに対してフローを照合することによって、フローが決定されます。分析タイプが「enforced」の場合、ルート範囲で適用されたすべてのポリシーに対してフローを照合することによって、フローが決定されます。

application_id

string

(オプション)プライマリワークスペースの ID は常にワークスペース「v」バージョンを伴います。指定されている場合は、ルート範囲内の他のワークスペースからの分析および適用済みポリシーと共に、指定されたバージョンのポリシーを使用してフローが決定されます。このフィールドが省略された場合、ルート範囲内のすべての分析および適用済みポリシーを考慮して、フローが決定されます。

version

integer

(オプション)上記のワークスペースの「v」バージョン。これは、application_id が指定されている場合は指定する必要があります。それ以外の場合は省略する必要があります。

サンプル要求

要求の本文は、JSON 形式のクエリである必要があります。

分析されたすべてのポリシーに基づいてフローが決定されるクエリ本文の例は、次のようになります。


    req_payload = {
        "consumer_ip": "4.4.1.1",
        "provider_ip": "4.4.2.1",
        "provider_port": 9081,
        "protocol": "TCP",
        "analysis_type": "analyzed"
    }
    resp = restclient.post('/openapi/v1/policies/{rootScopeID}/quick_analysis', json_body=json.dumps(req_payload))

フローの決定が、ワークスペースの ‘v’ バージョンのポリシーと、ルート範囲内の他のすべてのワークスペースから分析されたポリシーに基づくクエリ本文の例は、次のようになります。


    req_payload = {
        "consumer_ip": "4.4.1.1",
        "provider_ip": "4.4.2.1",
        "provider_port": 9081,
        "protocol": "TCP",
        "analysis_type": "analyzed",
        "application_id": "5e7e5f56497d4f0bc26c7bb3",
        "version": 1
    }
    resp = restclient.post('/openapi/v1/policies/{rootScopeID}/quick_analysis', json_body=json.dumps(req_payload))

サンプル応答

この応答は、本文の JSON オブジェクトで、次のプロパティがあります。

キー

policy_decision

許可または拒否されるかどうかの仮想フローの決定。

outbound_policy

発信トラフィックを許可/拒否するコンシューマのポリシー

inbound_policy

着信トラフィックを許可/拒否するプロバイダーのポリシー


    {
        "policy_decision": "ALLOW",
        "outbound_policy": {
            "policy_rank": "DEFAULT",
            "start_port": 9082,
            "l4_detail_id": "5e7e600f497d4f7341f4f6d0",
            "src_filter_id": "5e7e600e497d4f7341f4f459",
            "end_port": 9082,
            "cluster_edge_id": "5e7e600f497d4f7341f4f6d1",
            "dst_filter_id": "5e7d0efc497d4f44b6b09351",
            "action": "ALLOW",
            "protocol": "TCP",
            "app_scope_id": "5e7e5f3a497d4f0bc26c7bb0"
        },
        "inbound_policy": {
            "policy_rank": "DEFAULT",
            "start_port": 9082,
            "l4_detail_id": "5e7e600f497d4f7341f4f6d0",
            "src_filter_id": "5e7e600e497d4f7341f4f459",
            "end_port": 9082,
            "cluster_edge_id": "5e7e600f497d4f7341f4f6d1",
            "dst_filter_id": "5e7d0efc497d4f44b6b09351",
            "action": "ALLOW",
            "protocol": "TCP",
            "app_scope_id": "5e7e5f3a497d4f0bc26c7bb0"
        }
    }

ポリシー統計情報

このエンドポイントは、ある時間間隔でポリシーについて観察されたパケット、バイト、およびカンバセーションの数を返します。カンバセーションは、概して言えば 1 時間の実行間隔で集約されたポリシーに一致するフロー監視になります。1 時間以内に特定のポリシーについて測定されたカンバセーションの数は、その 1 時間にネットワークを介して通信したコンシューマとプロバイダーのインベントリ項目の個別のペアの数を表します。

このエンドポイントはポリシー識別子パラメータを入力として受け入れますが、ワークスペースの公開されたバージョンからのポリシーおよび L4 パラメータ ID を使用することをお勧めします。


(注)  


アプリケーション ワークスペースの新しいバージョンが公開された後、その結果が利用可能になるまでに最大 6 時間かかることがあります。すべてのタイムスタンプの解決にも、6 時間の最小実行間隔があります。


アプリケーション ワークスペースの適用されたバージョン全体におけるポリシーの、ポリシー統計を取得する URL パスは次のとおりです。

POST /openapi/v1/policies/stats/enforced

アプリケーション ワークスペースの分析されたバージョン全体におけるポリシーの、ポリシー統計を取得する URL パスは次のとおりです。

POST /openapi/v1/policies/stats/analyzed

クエリ本文は、次のスキーマを使用した JSON 本文で構成されます。

表 4.

名前

タイプ

説明

application_id

string

アプリケーション ワークスペースの ID。

t0

string

RFC-3339 形式の時間間隔の開始。

t1

string

(オプション)RFC-3339 形式の時間間隔の終了。指定しない場合、デフォルトは現在の時間です。

policy_id

string

ポリシーの ID。ポリシー識別子が存在する場合は不要です。

l4_param_id

string

L4 パラメータの ID。 ポリシー識別子が存在する場合、または「CATCH_ALL」ポリシーの場合は不要です。

policy_identifier

オブジェクト

一貫したポリシー識別子を構成するフィールド。

ポリシー識別子フィールドは、次のスキーマを使用して構成されています。

名前

タイプ

説明

consumer_consistent_uuid

string

コンシューマまたは送信元の一貫した UUID。

provider_consistent_uuid

string

プロバイダーまたは宛先の一貫した UUID。

rank

string

ポリシーランクは「DEFAULT」または「ABSOLUTE」のいずれかである必要があります。

action

string

ポリシーアクションは、「ALLOW」または「DENY」のいずれかである必要があります。

priority

integer

ポリシーの優先順位を示す値。

protocol

integer

ポリシーの IP プロトコル番号(0 ~ 255)。

start_port

integer

(オプション)ポート範囲の開始(0 ~ 65535)。指定されていない場合、デフォルトは 0 です

end_port

integer

(オプション)ポート範囲の終了(0 ~65535)。start_port が 0 の場合、デフォルトは 65535 で、0 以外の場合は start_prot です。

サンプル python コード


  application_id = '5f88ca1e755f0222f85ce85c'
  consumer_id = '5f88ca1e755f0222f85ce85d'
  provider_id = '5f88ca1e755f0222f85ce85d'
  action = 'ALLOW'
  rank = 'DEFAULT'
  protocol = 6
  start_port = 80
  priority = 100

  req_body = f'''
  {{
      "application_id": "{application_id}",
      "t0":"2022-07-06T00:00:00Z",
      "t1":"2022-07-28T19:00:00Z",
      "policy_identifier": {{
          "consumer_consistent_uuid": "{consumer_id}",
          "provider_consistent_uuid": "{provider_id}",
          "rank": "{rank}",
          "priority": {priority},
          "action": "{action}",
          "protocol": "{protocol}",
          "start_port": "{start_port}"
      }}
  }}'''
  restclient.post('/policies/stats/analyzed', json_body=req_body)

  # For CATCH_ALL policies:
  root_app_scope_id = '6f88ca1e755f0222f85ce85e'
  rank = 'CATCH_ALL'
  action = 'DENY'
  req_body = f'''
  {{
      "application_id": "{application_id}",
      "t0":"2022-07-06T00:00:00Z",
      "t1":"2022-07-28T19:00:00Z",
      "policy_identifier": {{
          "consumer_consistent_uuid": "{root_app_scope_id}",
          "provider_consistent_uuid": "{root_app_scope_id}",
          "rank": "{rank}",
          "action": "{action}"
      }}
  }}'''

  restclient.post('/policies/stats/analyzed', json_body=req_body)

サンプル応答

この応答は、本文の JSON オブジェクトで、次のプロパティがあります。

表 5.

キー

conversation_count

指定された期間とポリシーで観察されたカンバセーションの数。

packet_count

指定された期間とポリシーで観察されたパケットの数。

byte-count

指定された期間とポリシーで観察されたバイト数。

first_seen_at

このポリシーのフローを最初に観察したときのタイムスタンプ(RFC-3339 形式)。

last_seen_at

このポリシーのフローを最後に観察したときのタイムスタンプ(RFC-3339 形式)。

agg_start_version

時間 t0 以降に記録された、このポリシーの最も古い公開バージョン。

agg_start_time

agg_start_version が公開されたタイムスタンプ。


    {
      "conversation_count": 72,
      "packet_count": 800,
      "byte_count": 1960,
      "first_seen_at": "2022-09-09T11:00:00.000Z",
      "last_seen_at": "2022-09-09T11:00:00.000Z",
      "agg_start_version": 4,
      "agg_start_time": "2022-08-10T23:00:00.000Z"
    }

未使用のポリシー

このエンドポイントは、指定された時間間隔でカンバセーションが観察されなかった公開ワークスペース内のポリシー識別子を返します。

ポリシー識別子

すべてのポリシーと ADM で生成されたクラスタは、基になるフィルタクエリまたはポリシーのポートとプロトコルが変更されなくても、複数のアプリケーション ワークスペース バージョン間でその ID を変更できます。ワークスペースバージョン間で特定のポリシーのフローヒット数を追跡するため、バージョン間で変更されないフィルタには一貫した UUID を使用し、ポリシー識別子と呼ばれる複合キーを使用します。これには、プロバイダーとコンシューマの一貫した UUID に加え、ランク、アクション、優先順位、ポート、プロトコルが含まれます。

したがって、ポリシー識別子は、アプリケーション ワークスペースのバージョン間でポリシーの重要な側面を識別および説明できる複合キーとして機能しますが、ポリシー ID(通常の CRUD エンドポイントで使用されるものなど)はワークスペースのバージョン間で変更できます。


(注)  


プロバイダー/コンシューマの一貫性のある UUID とポリシー識別子は、さまざまなアプリケーション ワークスペース バージョン間で共有されるため、フィルタまたはポリシーを一意に識別しません。


特定のクラスタまたはポリシーで CRUD 操作を実行するには、検索エンドポイントで識別子を特定のアプリケーション ワークスペース バージョンの具体的なポリシーに解決することを推奨します。

通常の CRUD 操作はポリシー ID を使用して実行できますが、ポリシー統計情報と識別子による破壊のみで、ポリシー識別子を入力として使用できます。これは主に、便宜上検索のための中間呼び出しを避けるためであり、代わりにワークスペース内の未使用のポリシーを直接検証して破壊します。

ポリシー ID とフィルタ ID を可能な限り使用し、ポリシー統計情報または識別子による破壊 API エンドポイント用に手動でポリシー識別子を生成しないことを強く推奨します。ただし、次の例は、ポリシーオブジェクトからポリシー識別子を生成する 1 つの方法を示しています。


    resp = restclient.get(f'/policies/631b0590497d4f09b537b973')
    policy = resp.json() # policy object
    policy_identifer = {
        'consumer_consistent_uuid': policy['consumer_filter']['consistent_uuid'],
        'provider_consistent_uuid': policy['provider_filter']['consistent_uuid'],
        'rank': policy['rank'],
        'action': policy['action'],
        'priority': policy['priority'],
        'protocol': policy['l4_params'][0]['proto'],
        'start_port': policy['l4_params'][0]['port'][0],
        'end_port': policy['l4_params'][0]['port'][1]
    }

(注)  


アプリケーション ワークスペースの新しいバージョンが公開された後、その結果が利用可能になるまでに最大 6 時間かかることがあります。各タイムスタンプの解決にも、最小 6 時間を必要とします。


アプリケーション ワークスペースの適用されたバージョン間で未使用のポリシーを取得するための URL パスは次のとおりです。

POST /openapi/v1/unused_policies/{application_id}/enforced

アプリケーション ワークスペースの分析されたバージョン間で未使用のポリシーを取得するための URL パスは次のとおりです。

POST /openapi/v1/unused_policies/{application_id}/analyzed

クエリ本文は、次のスキーマを使用した JSON 本文で構成されます。

名前

タイプ

説明

t0

string

RFC-3339 形式の時間間隔の開始。

t1

string

(オプション)RFC-3339 形式の時間間隔の終了。指定しない場合、デフォルトは現在の時間です。

limit

integer

(オプション)要求あたりのポリシー数を制限します。

offset

string

(オプション)前の応答から受信したオフセット(ページネーションに有用)。


    application_id = '62e1915e755f026f2bcdd805'
    resp = restclient.post(f'/unused_policies/{application_id}/analyzed', json_body=f'''
    {{
        "t0":"2022-07-06T00:00:00Z",
        "t1":"2022-07-28T19:00:00Z"
    }}''')'

サンプル応答

この応答は、本文の JSON オブジェクトで、次のプロパティがあります。

キー

application_id

アプリケーション ワークスペースの ID。

policy_identifiers

未使用のポリシーのポリシー識別子のリスト。

offset

結果の次のページに渡される応答オフセット。

結果の次のページを生成するには、offset の応答で受信したオブジェクトを取得し、それを次のクエリの offset の値として渡します。


    {
      "application_id": "63054a97497d4f2dc113a9c4",
      "policy_identifiers": [
        {
          "consumer_consistent_uuid": "62fff45c497d4f5064973c4d",
          "provider_consistent_uuid": "62fff45c497d4f5064973c4d",
          "version": "p1",
          "rank": "DEFAULT",
          "policy_action": "ALLOW",
          "priority": 10,
          "proto": 6,
          "start_port": 10000,
          "end_port": 10000,
          "agg_start_version": 1,
          "agg_start_time": "2022-08-10T23:00:00.000Z"
        },
        {
          "consumer_consistent_uuid": "62fff45c497d4f5064973c4d",
          "provider_consistent_uuid": "62fff45c497d4f5064973c4d",
          "version": "p1",
          "rank": "DEFAULT",
          "policy_action": "ALLOW",
          "priority": 10,
          "protocol": 6,
          "start_port": 10001,
          "end_port": 10001,
          "agg_start_version": 1,
          "agg_start_time": "2022-08-10T23:00:00.000Z"
        }
      ],
      "offset": "eyJvZmZzZXQiOjZ9"
    }

ポリシーテンプレート

この一連の API は、ポリシーテンプレートを追加、編集、または削除するために使用できます。API キーに関連付けられている app_policy_management 機能が必要です。

ポリシーテンプレートの取得

このエンドポイントは、特定のルート範囲のポリシーテンプレートのリストを返します。この API は、app_policy_management 機能を持つ API キーで使用できます。

GET /openapi/v1/application_templates?root_app_scope_id={root_app_scope_id}

パラメータ:要求 URL には、次のパラメータが含まれています。

名前

タイプ

説明

root_app_scope_id

string

ルート範囲の一意の識別子。

応答オブジェクト:指定されたルート範囲のポリシー テンプレート オブジェクトのリストを返します。

サンプル python コード


  root_app_scope_id = '<root-app-scope-id>'
  restclient.get('/application_templates?root_app_scope_id=%s' % root_app_scope_id)

特定のポリシーテンプレートの取得

このエンドポイントは、ポリシーテンプレートのインスタンスを返します。

GET /openapi/v1/application_templates/{template_id}

パラメータ:要求 URL には、次のパラメータが含まれています。

名前

タイプ

説明

template_id

string

ポリシーテンプレートの固有識別子。

応答オブジェクト:指定された ID のポリシー テンプレート オブジェクトを返します。

サンプル python コード


  template_id = '<template-id>'
  restclient.get('/application_templates/%s' % template_id)

ポリシーテンプレートの作成

このエンドポイントは、新しいポリシーテンプレートを作成するために使用されます。

POST /openapi/v1/application_templates

JSON リクエストの本文には、次のキーが含まれています。

属性

タイプ

説明

name

文字列

インポート時にテンプレートの名前として使用されます。

description

文字列

(オプション)適用プロセス中に表示されるテンプレートの説明

parameters

パラメータオブジェクト

テンプレートパラメータ(下記を参照)。

absolute_policies

ポリシーオブジェクトの配列

(オプション)絶対ポリシーの配列。

default_policies

ポリシーオブジェクトの配列

(必須)デフォルトポリシーの配列、空にすることが可能。

応答オブジェクト: 作成されたポリシーテンプレート オブジェクトを返します。

サンプル python コード


  root_app_scope_id = '<root-app-scope-id>'
  payload = {'root_app_scope_id': root_app_scope_id,
             'name': "policy_name",
             'default_policies': [
                {
                  'action': 'ALLOW',
                  'priority': 100,
                  'l4_params': [
                    {
                      'proto': 17,
                      'port': [80, 90]
                    }
                  ]
                }
              ]
            }
  restclient.post('/application_templates',
                  json_body=json.dumps(payload))

ポリシーテンプレートの更新

このエンドポイントは、ポリシーテンプレートを更新します。

PUT /openapi/v1/application_templates/{template_id}

パラメータ:要求 URL には、次のパラメータが含まれています。

名前

タイプ

説明

template_id

string

ポリシーテンプレートの固有識別子。

JSON リクエストの本文には、次のキーが含まれています。

属性

タイプ

説明

name

文字列

(オプション)インポート時にテンプレートの名前として使用されます。

description

文字列

(オプション)適用プロセス中に表示されるテンプレートの説明

応答オブジェクト:指定された ID の変更されたポリシー テンプレート オブジェクトを返します。

サンプル python コード


  new_name = <new-name>
  payload = {'name': new_name}
  template_id = '<template-id>'
  restclient.post('/application_templates/%s' % template_id,
                  json_body=json.dumps(payload))

ポリシーテンプレートの削除

このエンドポイントは、指定されたポリシーテンプレートを削除します。

DELETE /openapi/v1/application_templates/{template_id}

パラメータ:要求 URL には、次のパラメータが含まれています。

名前

タイプ

説明

template_id

string

ポリシーテンプレートの固有識別子。

応答オブジェクト:なし

サンプル python コード


  template_id = '<template-id>'
  restclient.delete('/application_templates/%s' % template_id)

ポリシーテンプレートのダウンロード

このエンドポイントは、ポリシーテンプレートをダウンロードします。

GET /openapi/v1/application_templates/{template_id}/download

パラメータ:要求 URL には、次のパラメータが含まれています。

名前

タイプ

説明

template_id

string

ポリシーテンプレートの固有識別子。

応答オブジェクト:指定された ID を持つ完全なポリシーテンプレート定義を返します。

サンプル python コード


  template_id = '<template-id>'
  restclient.get('/application_templates/%s/download' % template_id)

クラスタ

この一連の API を使用して、ワークスペース(「アプリケーション」)のメンバーであるクラスタを追加、編集、または削除できます。API キーに関連付けられた user_role_scope_management 機能が必要です。

クラスタオブジェクト

クラスタオブジェクトの属性については、以下で説明します。

属性

タイプ

説明

id

string

クラスタの一意の識別子。

consistent_uuid

文字列

自動ポリシー検出実行時の一貫した ID。

application_id

string

クラスタが属するワークスペースの ID。

version

string

クラスタが属するワークスペースのバージョン

name

文字列

クラスタの名前。

description

文字列

クラスタの説明。

approved

boolean

クラスタがユーザーによって「承認」されている場合。

query

JSON

親範囲のフィルタと組み合わせて、フィルタに関連付けられているフィルタ (または一致基準)。

short_query{1}JSON{1}

JSON

フィルタに関連付けられているフィルタ (または一致基準)。

alternate_queries

クエリの配列

動的モードで実行される自動ポリシー検出によって生成された代替の推奨クエリ。

inventory

インベントリの配列

要求された場合、IP、ホスト名、vrf_id、および uuid を含むクラスタのメンバーインベントリを返します。

クラスタの取得

このエンドポイントは、特定のワークスペース(「application」)のクラスタのリストを返します。この API は、app_policy_management 機能を持つ API キーで使用できます。

GET /openapi/v1/applications/{application_id}/clusters

パラメータ:要求 URL には、次のパラメータが含まれています。

名前

タイプ

説明

application_id

string

クラスタが属するワークスペースの ID。

version

string

クラスタを取得するワークスペースのバージョンの表示。

include_inventory

boolean

クラスタのインベントリを含みます。

応答オブジェクト:この特定のワークスペースとバージョンの全クラスタの配列を返します。

サンプル python コード


  application_id = '5d02b493755f0237a3d6e078'
  restclient.get('/applications/%s/clusters' % application_id)

特定のクラスタの取得

このエンドポイントは、クラスタのインスタンスを返します。

PUT /openapi/v1/clusters/{cluster_id}

パラメータ:要求 URL には、次のパラメータが含まれています。

名前

タイプ

説明

cluster_id

string

クラスタの一意の識別子。

include_inventory

boolean

クラスタのインベントリを含みます。

応答オブジェクト:指定された ID に関連付けられたクラスタオブジェクトを返します。

サンプル python コード


  cluster_id = '5d02d021497d4f0949ba74e4'
  restclient.get('/clusters/%s' % cluster_id)

クラスタの作成

このエンドポイントは、新しいクラスタを作成するために使用されます。

POST /openapi/v1/applications/{application_id}/clusters

パラメータ:要求 URL には、次のパラメータが含まれています。

名前

タイプ

説明

application_id

string

クラスタが属するワークスペースの ID。

JSON クエリの本文には、次のキーが含まれています。

属性

タイプ

説明

name

文字列

クラスタの名前。

version

string

クラスタが追加されるワークスペースのバージョンを示します。

description

文字列

(オプション)クラスタの説明。

approved

boolean

(オプション)承認されたクラスタは、自動ポリシー検出の実行中に更新されません。デフォルトは「False」です。

query

JSON

フィルタに関連付けられているフィルタ (または一致基準)。代替クエリモード(動的モードとも呼ばれます)は、ワークスペースで有効にする必要があります。それ以外の場合は無視されます。

query

JSON

フィルタに関連付けられているフィルタ (または一致基準)。代替クエリモード(動的モードとも呼ばれます)は、ワークスペースで有効にする必要があります。それ以外の場合は無視されます。

nodes

配列

IP アドレスまたはエンドポイントのリスト。クエリが提供済みでワークスペースが動的モードでない限り、これらの IP に一致するクエリを作成するために使用されます。

ノード オブジェクトの属性:

名前

タイプ

説明

ip

文字列

IP アドレス

name

文字列

(オプション)ノードの名前。

prefix_len

integer

(オプション)サブネットマスク。


(注)  


クエリが提供済みでワークスペースが動的モードでない限り、ノードはクエリの作成に使用されます。


応答オブジェクト:新しく作成されたクラスタオブジェクトを返します。

サンプル python コード


  application_id = '5d02b493755f0237a3d6e078'
  payload = {
    'name': 'test_cluster',
    'version': 'v2',
    'description': 'basic granularity',
    'approved': False,
    'query': {
        'type': 'eq',
        'field': 'host_name',
        'value': 'centos6001'
    }
  }
  restclient.post('/applications/%s/clusters' % application_id)

クラスタの更新

このエンドポイントは、クラスタを更新します。

PUT /openapi/v1/clusters/{cluster_id}

パラメータ:要求 URL には、次のパラメータが含まれています。

名前

タイプ

説明

cluster_id

string

クラスタの一意の識別子。

JSON クエリの本文には、次のキーが含まれています。

属性

タイプ

説明

name

文字列

クラスタの名前。

description

文字列

(オプション)クラスタの説明。

approved

boolean

承認されたクラスタは、自動ポリシー検出の実行中に更新されません。

query

JSON

フィルタに関連付けられているフィルタ (または一致基準)。代替クエリモード(動的モードとも呼ばれます)は、ワークスペースで有効にする必要があります。それ以外の場合は無視されます。

応答オブジェクト:指定された ID に関連付けられている変更されたクラスタオブジェクトを返します。

サンプル python コード


  cluster_id = '5d02d2a4497d4f5194f104ef'
  payload = {
    'name': 'new_test_cluster',
  }
  restclient.put('/clusters/%s' % cluster_id, json_body=json.dumps(payload))

クラスタの削除

このエンドポイントは、指定されたクラスタを削除します。クラスタがポリシーによって使用されている場合、クラスタは削除されず、依存関係のリストが返されます。

DELETE /openapi/v1/clusters/{cluster_id}

パラメータ:要求 URL には、次のパラメータが含まれています。

名前

タイプ

説明

cluster_id

string

クラスタの一意の識別子。

応答オブジェクト:なし

サンプル python コード


  cluster_id = '5d02d2a4497d4f5194f104ef'
  restclient.delete('/clusters/%s' % cluster_id)

カンバセーション

カンバセーションは、コンシューマポートが削除された自動ポリシー検出の実行における時間範囲内の集約されたフローです。カンバセーションに関する詳細な説明は、カンバセーション」を参照してください。

この API を使用すると、特定のワークスペースに対する自動ポリシー検出の実行中に生成されたカンバセーションを検索できます。この API には、API キーに関連付けられている app_policy_management 機能が必要です。

ポリシー検出実行での会話の検索

このエンドポイントを使用すると、特定のワークスペースに対する自動ポリシー検出の実行中の会話を検索できます。ダウンロードした会話の一部として表示させる、サポートされているディメンションとメトリックのサブセットを指定することもできます。必要に応じて、サポートされているディメンションとメトリックに関するフィルタを使用して、会話のサブセットに対するクエリを実行できます。

POST /openapi/v1/conversations/{application_id}

クエリは、次のキーを使用した JSON 本文で構成されます。

名前

タイプ

説明

version

integer

自動ポリシー検出実行のバージョン

filter

JSON

(オプション)クエリフィルタ。フィルタが空(すなわち {})の場合、クエリはすべての会話に一致します。サポートされているディメンションとメトリックのフィルタを使用して、より具体的な会話をダウンロードできます。フィルタの構文については、 フィルタ を参照してください。

寸法

array

(オプション)ダウンロードした会話に対して返されるディメンションのリスト。サポートされているディメンションのリストは、こちら にあります。

メトリック

array

(オプション)ダウンロードした会話に対して返されるメトリックのリスト。サポートされているメトリックのリストは、 こちら にあります。

limit

integer

(オプション)1 つの API 応答で返される会話の数。

offset

string

(オプション)前の応答から受信したオフセット(ページネーションに有用)。

要求の本文は、JSON 形式のクエリである必要があります。次に、クエリ本文の例を示します。


    {
        "version": 1,
        "filter": {
            "type": "and",
            "filters":[
                {
                    "type": "eq",
                    "field": "excluded",
                    "value": False
                },
                {
                    "type": "eq",
                    "field": "protocol",
                    "value": "TCP"
                },
            ]
        },
        "dimensions": ["src_ip", "dst_ip", "port"],
        "metrics": ["byte_count", "packet_count"],
        "limit" : 2,
        "offset": <offset-object>
    }
応答

この応答は、本文の JSON オブジェクトで、次のプロパティがあります。

キー

offset

結果の次のページでパスされる応答オフセット

results

結果のリスト

結果の次のページを生成するには、offset の応答で受信したオブジェクトを取得し、それを次のクエリの offset の値として渡します。


   req_payload = {"version": 1,
                  "limit": 10,
                  "filter": {"type": "and",
                      "filters": [
                          {"type": "eq", "field": "excluded", "value": False},
                          {"type": "eq", "field": "protocol", "value": "TCP"}
                       ]
                  }
    }

    resp = restclient.post('/conversations/{application_id}', json_body=json.dumps(req_payload))
    print resp.status_code
    if resp.status_code == 200:
        parsed_resp = json.loads(resp.content)
        print json.dumps(parsed_resp, indent=4, sort_keys=True)

ポリシー検出実行の上位 N 件の会話

このエンドポイントを使用すると、メトリックに基づき、ディメンションでグループ化された、特定のワークスペースに対して実行された自動ポリシー検出の上位の会話を検索できます。現在サポートされているメトリックは こちら、ディメンションで現在サポートされているグループはこちらです。サポートされているディメンションとメトリックのフィルタを使用して、会話のサブセットをクエリできます。たとえば、バイトトラフィックの会話が最も多いソース IP アドレスを検索するには、src_ip ディメンションと byte_count メトリックを指定してクエリを使用します。

POST /openapi/v1/conversations/{application_id}/topn

クエリは、次のキーを使用した JSON 本文で構成されます。

名前

タイプ

説明

version

integer

自動ポリシー検出実行のバージョン

dimension

string

上位 N 個のクエリに対してグループ化される会話のディメンション。

サポートされているディメンション:src_ip、dst_ip

metric

string

上位 N 件の会話に対して並べ替えられるメトリック。サポートされているメトリックのリストは、 こちら にあります。

filter

JSON

(オプション)クエリフィルタ。フィルタが空(すなわち {})の場合、クエリはすべての会話に一致します。サポートされているディメンションとメトリックのフィルタを使用して、より具体的な会話をダウンロードできます。フィルタの構文については、「フィルタ」を参照してください。

しきい値

integer

単一の API 応答で返される上位 N 件の結果の数。

要求の本文は、JSON 形式のクエリにする必要があります。次に、クエリ本文の例を示します。


    {
        "version": 1,
        "dimension": "src_ip",
        "metric": "byte_count",
        "filter": {
            "type": "and",
            "filters":[
                {
                    "type": "eq",
                    "field": "excluded",
                    "value": False
                },
                {
                    "type": "eq",
                    "field": "protocol",
                    "value": "TCP"
                },
            ]
        },
        "threshold" : 10
    }
応答

この応答は、本文の JSON オブジェクトで、次のプロパティがあります。

キー

results

結果キーを持つ 1 つの JSON オブジェクトと、クエリディメンションとメトリックに一致するキーを持つ結果オブジェクトのリストの値をリストします。


  [ {"result": [
    {
      "byte_count": 1795195565,
      "src_ip": "192.168.1.6"
    },
    {
      "byte_count": 1781002379,
      "src_ip": "192.168.1.28"
    },
    ...
  ] } ]

    req_payload = {"version": 1, "dimension": "src_ip", "metric": "byte_count",
      "filter": {"type": "and",
        "filters": [
          {"type": "eq", "field": "excluded", "value": False},
          {"type": "eq", "field": "protocol", "value": "TCP"},
          {"type": "eq", "field": "consumer_filter_id", "value": "16b12a5614c5af5b68afa7ce"},
          {"type": "subnet", "field": "src_ip", "value": "192.168.1.0/24"}
        ]
      },
      "threshold" : 10
    }

    resp = restclient.post('/conversations/{application_id}/topn', json_body=json.dumps(req_payload))
    print resp.status_code
    if resp.status_code == 200:
        parsed_resp = json.loads(resp.content)
        print json.dumps(parsed_resp, indent=4, sort_keys=True)

サポートされているディメンション

名前

タイプ

説明

src_ip

string

コンシューマの IP アドレス

dst_ip

string

コンシューマの IP アドレス

protocol

string

通信で使用されたプロトコル。例:「TCP」、「UDP」など

port

integer

プロバイダーのポート。

address_type

string

「IPv4」または「IPv6」

consumer_filter_id

string

コンシューマ IP がクラスタに属する場合はクラスタのクラスタ ID。それ以外の場合はコンシューマ IP が属する範囲 ID。

provider_filter_id

string

プロバイダー IP がクラスタに属している場合はクラスタのクラスタ ID、それ以外の場合はプロバイダー IP が属する範囲 ID。

excluded

boolean

ポリシーの生成中にこの会話を除外するかどうか。

confidence

double

コンシューマとプロバイダーの分類の信頼度。値は 0.0 から 1.0 まで変化し、1.0 は分類について高い信頼度を意味します。

サポートされているメトリック

名前

タイプ

説明

byte-count

integer

会話中のバイトの総数

packet_count

integer

会話中のパケットの総数

除外フィルタ

この一連の API は、除外フィルタを追加、編集、または削除するために使用でき、API キーに関連付けられている user_role_scope_management 機能が必要です。

除外フィルタは、自動ポリシー検出クラスタリングアルゴリズムからフローを除外します。詳細については、「除外フィルタ」を参照してください。

除外フィルタオブジェクト

除外フィルタオブジェクトの属性について、以下で説明します。

属性

タイプ

説明

id

string

クラスタの一意の識別子。

application_id

string

除外フィルタが属するワークスペースの ID。

version

string

除外フィルタが属するワークスペースのバージョン。

consumer_filter_id

string

定義されたフィルタの ID。現在、ワークスペース、ユーザー定義フィルタ、または範囲に属するすべてのクラスタをポリシーのコンシューマとして使用できます。

provider_filter_id

string

定義されたフィルタの ID。現在、ワークスペース、ユーザー定義フィルタ、または範囲に属するすべてのクラスタをポリシーのプロバイダーとして使用できます。

proto

integer

Protocol Integer value (NULL はすべてのプロトコルを意味します)。

port

array

ポートの包含範囲。例:[80, 80] または [5000, 6000]。NULL はすべてのポートを意味します。

updated_at

integer

除外フィルタが更新されたときの UNIX タイムスタンプ。

除外フィルタの取得

このエンドポイントは、特定のワークスペースの除外フィルタのリストを返します。この API は、app_policy_management 機能を持つ API キーで使用できます。

GET /openapi/v1/applications/{application_id}/exclusion_filters

パラメータ:要求 URL には、次のパラメータが含まれています。

名前

タイプ

説明

application_id

string

ワークスペースの一意の識別子。

version

string

除外フィルタを取得するワークスペースのバージョンを示します。

応答オブジェクト:指定されたワークスペースとバージョンの除外フィルタオブジェクトのリストを返します。

サンプル python コード


  application_id = '<application-id>'
  params = {'version': 'v10'}
  restclient.get('/applications/%s/exclusion_filters' % application_id,
                 params=params)

特定の除外フィルタを取得する

このエンドポイントは、除外フィルタのインスタンスを返します。

GET /openapi/v1/exclusion_filters/{exclusion_filter_id}

パラメータ:要求 URL には、次のパラメータが含まれています。

名前

タイプ

説明

exclusion_filter_id

string

除外フィルタの一意の識別子。

応答オブジェクト:指定された ID を持つ除外フィルタオブジェクトを返します。

サンプル python コード


  exclusion_filter_id = '<exclusion-filter-id>'
  restclient.get('/exclusion_filters/%s' % exclusion_filter_id)

除外フィルタの作成

このエンドポイントは、除外フィルタを作成するために使用します。

POST /openapi/v1/applications/{application_id}/exclusion_filters

パラメータ:要求 URL には、次のパラメータが含まれています。

名前

タイプ

説明

application_id

string

ワークスペースの一意の識別子。

JSON リクエストの本文には、次のキーが含まれています。

属性

タイプ

説明

version

string

除外フィルタが属するワークスペースのバージョン。

consumer_filter_id

string

(オプション)定義されたフィルタの ID。現在、ワークスペース、ユーザー定義フィルタ、または範囲に属するすべてのクラスタをポリシーのコンシューマとして使用できます。

provider_filter_id

string

(オプション)定義されたフィルタの ID。現在、ワークスペース、ユーザー定義フィルタ、または範囲に属するすべてのクラスタをポリシーのプロバイダーとして使用できます。

proto

integer

(オプション)プロトコル整数値(NULL はすべてのプロトコルを意味します)。

start_port

integer

(オプション)範囲の開始ポート。

end_port

integer

(オプション)範囲の終了ポート。

省略可能なパラメータが欠落している場合は、ワイルドカード(いずれにも一致)と見なされます。

応答オブジェクト:作成された除外フィルタオブジェクトを返します。

サンプル python コード


  provider_filter_id = '<provider-filter-id>'
  consumer_filter_id = '<consumer-filter-id>'
  payload = {'version': 'v0',
             'consumer_filter_id': consumer_filter_id,
             'provider_filter_id': provider_filter_id,
             'proto': 6,
             'start_port': 800,
             'end_port': 1000}
  application_id = '<application-id>'
  restclient.post('/applications/%s/exclusion_filters' % application_id,
                  json_body=json.dumps(payload))

除外フィルタを更新する

このエンドポイントは除外フィルタを更新します。

PUT /openapi/v1/exclusion_filters/{exclusion_filter_id}

パラメータ:要求 URL には、次のパラメータが含まれています。

名前

タイプ

説明

exclusion_filter_id

string

除外フィルタの一意の識別子。

JSON リクエストの本文には、次のキーが含まれています。

属性

タイプ

説明

consumer_filter_id

string

(オプション)定義されたフィルタの ID。現在、ワークスペース、ユーザー定義フィルタ、または範囲に属するすべてのクラスタをポリシーのコンシューマとして使用できます。

provider_filter_id

string

(オプション)定義されたフィルタの ID。現在、ワークスペース、ユーザー定義フィルタ、または範囲に属するすべてのクラスタをポリシーのプロバイダーとして使用できます。

proto

integer

Protocol Integer value (NULL はすべてのプロトコルを意味します)。

start_port

integer

(オプション)範囲の開始ポート。

end_port

integer

(オプション)範囲の終了ポート。

応答オブジェクト:指定された ID を持つ変更された除外フィルタオブジェクトを返します。

サンプル python コード


  payload = {'proto': 17}
  exclusion_filter_id = '<exclusion-filter-id>'
  restclient.post('/exclusion_filters/%s' % exclusion_filter_id,
                  json_body=json.dumps(payload))

除外フィルタの削除

このエンドポイントは、指定された除外フィルタを削除します。

DELETE /openapi/v1/exclusion_filters/{exclusion_filter_id}

パラメータ:要求 URL には、次のパラメータが含まれています。

名前

タイプ

説明

exclusion_filter_id

string

除外フィルタの一意の識別子。

応答オブジェクト:なし

サンプル python コード


  exclusion_filter_id = '<exclusion-filter-id>'
  restclient.delete('/exclusion_filters/%s' % exclusion_filter_id)

デフォルトの除外フィルタ

この一連の API は、除外フィルタを追加、編集、または削除するために使用できます。API キーに関連付けられている app_policy_management 機能が必要です。

除外フィルタは、自動ポリシー検出クラスタリングアルゴリズムからフローを除外します。詳細については、「除外フィルタ」を参照してください。

デフォルト除外フィルタのオブジェクト

除外フィルタオブジェクトの属性について、以下で説明します。

属性

タイプ

説明

id

string

デフォルト除外フィルタの一意の識別子。

consumer_filter_id

string

定義されたフィルタの ID。現在、ワークスペース、ユーザー定義フィルタ、または範囲に属するすべてのクラスタをポリシーのコンシューマとして使用できます。

provider_filter_id

string

定義されたフィルタの ID。現在、ワークスペース、ユーザー定義フィルタ、または範囲に属するすべてのクラスタをポリシーのプロバイダーとして使用できます。

proto

integer

Protocol Integer value (NULL はすべてのプロトコルを意味します)。

port

array

ポートの包含範囲。例:[80, 80] または [5000, 6000]。NULL はすべてのポートを意味します。

updated_at

integer

除外フィルタが更新されたときの UNIX タイムスタンプ。

デフォルトの除外フィルタの取得

このエンドポイントは、デフォルトの除外フィルタのリストを返します。この API は、app_policy_management 機能を持つ API キーで使用できます。

GET /openapi/v1/default_exclusion_filters?root_app_scope_id={root_app_scope_id}

パラメータ:要求 URL には、次のパラメータが含まれています。

名前

タイプ

説明

root_app_scope_id

string

ルート範囲の一意の識別子。

応答オブジェクト:ルート範囲の既定の除外フィルタオブジェクトのリストを返します。

サンプル python コード


 root_app_scope_id = '<root-app-scope-id>'
  restclient.get('/default_exclusion_filters?root_app_scope_id=%s' % root_app_scope_id)

特定のデフォルト除外フィルタを取得

このエンドポイントは、デフォルト除外フィルタのインスタンスを返します。

default_exclusion_filter_id = '<default-exclusion-filter-id>'

restclient.get('/default_exclusion_filters/%s' % default_exclusion_filter_id)

パラメータ:要求 URL には、次のパラメータが含まれています。

名前

タイプ

説明

default_exclusion_filter_id

string

除外フィルタの一意の識別子。

応答オブジェクト:指定された ID を持つデフォルトの除外フィルタオブジェクトを返します。

サンプル python コード


  default_exclusion_filter_id = '<default-exclusion-filter-id>'
  restclient.get('/default_exclusion_filters/%s' % default_exclusion_filter_id)

デフォルトの除外フィルタの作成

このエンドポイントは、デフォルトの除外フィルタを作成するために使用します。

GET /openapi/v1/default_exclusion_filters?root_app_scope_id={root_app_scope_id}

パラメータ:要求 URL には、次のパラメータが含まれています。

名前

タイプ

説明

root_app_scope_id

string

ルート範囲の一意の識別子。

JSON リクエストの本文には、次のキーが含まれています。

属性

タイプ

説明

consumer_filter_id

string

(オプション)定義された範囲または

インベントリフィルタの ID。

provider_filter_id

string

(オプション)定義された範囲または

インベントリフィルタの ID。

proto

integer

(オプション)プロトコル整数値(NULL

はすべてのプロトコルを意味します)。

start_port

integer

(オプション)範囲の開始ポート。

end_port

integer

(オプション)範囲の終了ポート。

応答オブジェクト:作成されたデフォルトの除外フィルタオブジェクトを返します。

サンプル python コード


  provider_filter_id = '<provider-filter-id>'
  consumer_filter_id = '<consumer-filter-id>'
  payload = {'consumer_filter_id': consumer_filter_id,
             'provider_filter_id': provider_filter_id,
             'proto': 6,
             'start_port': 800,
             'end_port': 1000}
  root_app_scope_id = '<root-app-scope-id>'
  restclient.post('/default_exclusion_filters?root_app_scope_id=%s' % root_app_scope_id,
                  json_body=json.dumps(payload))

デフォルトの除外フィルタの更新

このエンドポイントは、デフォルトの除外フィルタを更新します。

PUT /openapi/v1/default_exclusion_filters/{default_exclusion_filter_id}

パラメータ:要求 URL には、次のパラメータが含まれています。

名前

タイプ

説明

default_exclusion_filter_id

string

デフォルトの除外フィルタの一意の識別子。

JSON リクエストの本文には、次のキーが含まれています。

属性

タイプ

説明

consumer_filter_id

string

(オプション)定義された範囲またはインベントリフィルタの ID。

provider_filter_id

string

(オプション)定義された範囲またはインベントリフィルタの ID。

proto

integer

Protocol Integer value (NULL はすべてのプロトコルを意味します)。

start_port

integer

(オプション)範囲の開始ポート。

end_port

integer

(オプション)範囲の終了ポート。

応答オブジェクト:指定された ID を持つ変更されたデフォルトの除外フィルタオブジェクトを返します。

サンプル python コード


  payload = {'proto': 17}
  default_exclusion_filter_id = '<default-exclusion-filter-id>'
  restclient.post('/default_exclusion_filters/%s' % default_exclusion_filter_id,
                  json_body=json.dumps(payload))

デフォルトの除外フィルタの削除

このエンドポイントは、指定されたデフォルトの除外フィルタを削除します。

DELETE /openapi/v1/default_exclusion_filters/{default_exclusion_filter_id}

パラメータ:要求 URL には、次のパラメータが含まれています。

名前

タイプ

説明

default_exclusion_filter_id

string

除外フィルタの一意の識別子。

応答オブジェクト:なし

サンプル python コード


  default_exclusion_filter_id = '<default-exclusion-filter-id>'
  restclient.delete('/default_exclusion_filters/%s' % default_exclusion_filter_id)

ライブ分析

ライブ分析やポリシー分析は、セキュリティポリシーの生成における重要な側面です。これにより、一連のポリシー(自動ポリシー検出によって生成された場合、またはユーザーによって手動で追加された場合)を評価してから、実際にそれらのポリシーをワークロードに適用できます。ライブ分析を使用すると、アプリケーショントラフィックを中断することなく、ライブトラフィックで what-if 分析を実行できます。

このセクションに記載されている一連の API を使用すると、フローをダウンロードし、ワークスペースで現在公開されているの一連のポリシーがそれらのフローに及ぼす影響を確認できます。この一連の API を起動するには、API キーに関連付けられている app_policy_management 機能が必要です。

ライブ分析を介して利用できるフローには属性 (ディメンションとメトリック) があります。ダウンロード API を使用すると、ユーザーはディメンションのさまざまな基準でフローをフィルタリングできます。

ライブ分析でのフローサイズ

このエンドポイントは、ライブ分析を介して利用可能なフローをダウンロードするために、検索条件(またはフィルタ)を指定できる列を把握するために役立ちます。最も一般的なユースケースは、許可されたか、エスケープされたか、または拒否されたフローをダウンロードすることです。カテゴリサイズの検索条件をダウンロード API に渡すことでダウンロードが実現します。[type: eq] とともに使用する場合、フローのインバウンドカテゴリおよびアウトバウンドカテゴリが一致している必要があります。[type: contains] とともに使用する場合、フローのインバウンドカテゴリおよびアウトバウンドカテゴリが一致している必要があります。

GET /openapi/v1/live_analysis/dimensions

ライブ分析で使用可能なフローメトリック

このエンドポイントは、ライブ分析に関連付けられたメトリック(バイト数、パケット数など)のリストを返します。このエンドポイントの 1 つの使用例は、ダウンロード API にメトリックのサブセットを含めることです。つまり、すべてのメトリックをダウンロードする代わりに、ユーザーは関心のあるメトリックの小さなサブセットを指定できます。

GET /openapi/v1/live_analysis/metrics

ライブ分析を介して使用可能なフローのダウンロード

この API エンドポイントは、フィルタ条件に一致するフローのリストを返します。結果に含まれる各フローオブジェクトには、ライブ分析ディメンション(ライブ分析ディメンション API によって返される)とライブ分析メトリックス(ライブ分析メトリック API によって返される)の結合である属性があります。使用可能なディメンションとメトリックの完全なセットに関心がない場合ユーザーは、必要に応じて、ディメンションまたはメトリックの小さなサブセットを指定することもできます。ディメンションまたはメトリックのより小さなサブセットのこのプロジェクションは、API コールを高速化するという副作用も伴います。

POST /openapi/v1/live_analysis/{application_id}

JSON クエリの本文には、次のキーが含まれています。

キー名

タイプ

説明

t0

整数または文字列

時間間隔の開始時刻(エポックまたは ISO 8601)

t1

整数または文字列

時間間隔の終了時刻(エポックまたは ISO 8601)

filter

JSON

クエリ フィルタ。フィルタが空(例:{})の場合、クエリはすべてのフローに一致します。フィルタの構文については、フロー検索の「フィルタ」セクションを参照してください。

寸法

array

(オプション)ライブ分析を介して利用可能なダウンロードされたフローに対して返されるフローディメンションのリスト。指定しない場合、利用可能なすべてのディメンションが返されます。

メトリック

array

(オプション)ライブ分析を介して利用可能なダウンロードされたフローに対して返されるフローメトリックのリスト。

limit

integer

(オプション)1 つの API 応答で返されるフローの数。

offset

string

(オプション)前の応答から受信したオフセット(ページネーションに有用)。

要求の本文は、JSON 形式のクエリである必要があります。次に、クエリ本文の例を示します。


  
    {
        "t0": "2016-06-17T09:00:00-0700",
        "t1": "2016-06-17T17:00:00-0700",
        "filter": {
            "type": "and",
            "filters": [
                {
                    "type": "contains",
                    "field": "category",
                    "value": "escaped"
                },
                {
                    "type": "in",
                    "field": "dst_port",
                    "values": ["80", "443"]
                }
            ]
        },
        "limit": 100,
        "offset": <offset-object>
    }

この応答は、本文の JSON オブジェクトで、次のプロパティがあります。

キー

offset

結果の次のページでパスされる応答オフセット

results

結果のリスト

結果の次のページを生成するには、offset の応答で受信したオブジェクトを取得し、それを次のクエリの offset の値として渡します。

サンプル python コード


   req_payload = {"t0": "2016-11-07T09:00:00-0700",
                  "t1": "2016-11-07T19:00:00-0700",
                  "limit": 10,
                  "filter": {"type": "and",
                      "filters": [
                          {"type": "contains", "field": "category", "value": "escaped"},
                          {"type": "regex", "field": "src_hostname", "value": "web*"}
                       ]
                  }
    }

    resp = restclient.post('/live_analysis/{application_id}', json_body=json.dumps(req_payload))
    print resp.status_code
    if resp.status_code == 200:
        parsed_resp = json.loads(resp.content)
        print json.dumps(parsed_resp, indent=4, sort_keys=True)

ライブ適用分析を介して利用可能なフローのダウンロード

この API エンドポイントは、フィルタ条件に一致するフローのリストを返します。結果に含まれる各フローオブジェクトには、ライブ分析ディメンション(ライブ分析ディメンション API によって返される)とライブ分析メトリックス(ライブ分析メトリック API によって返される)の結合である属性があります。使用可能なディメンションとメトリックの完全なセットに関心がない場合ユーザーは、必要に応じて、ディメンションまたはメトリックの小さなサブセットを指定することもできます。ディメンションまたはメトリックのより小さなサブセットのこのプロジェクションは、API コールを高速化するという副作用も伴います。

POST /openapi/v1/live_enforcement_analysis/{application_id}

JSON クエリの本文には、次のキーが含まれています。

キー名

タイプ

説明

t0

整数または文字列

時間間隔の開始時刻(エポックまたは ISO 8601)

t1

整数または文字列

時間間隔の終了時刻(エポックまたは ISO 8601)

filter

JSON

クエリ フィルタ。フィルタが空(例:{})の場合、クエリはすべてのフローに一致します。フィルタの構文については、フロー検索の「フィルタ」セクションを参照してください。

寸法

array

(オプション)ライブ分析を介して利用可能なダウンロードされたフローに対して返されるフローディメンションのリスト。指定しない場合、利用可能なすべてのディメンションが返されます。

メトリック

array

(オプション)ライブ分析を介して利用可能なダウンロードされたフローに対して返されるフローメトリックのリスト。

limit

integer

(オプション)1 つの API 応答で返されるフローの数。

offset

string

(オプション)前の応答から受信したオフセット(ページネーションに有用)。

要求の本文は、JSON 形式のクエリである必要があります。次に、クエリ本文の例を示します。


  
    {
        "t0": "2016-06-17T09:00:00-0700",
        "t1": "2016-06-17T17:00:00-0700",
        "filter": {
            "type": "and",
            "filters": [
                {
                    "type": "contains",
                    "field": "category",
                    "value": "escaped"
                },
                {
                    "type": "in",
                    "field": "dst_port",
                    "values": ["80", "443"]
                }
            ]
        },
        "limit": 100,
        "offset": <offset-object>
    }

この応答は、本文の JSON オブジェクトで、次のプロパティがあります。

キー

offset

結果の次のページでパスされる応答オフセット

results

結果のリスト

結果の次のページを生成するには、offset の応答で受信したオブジェクトを取得し、それを次のクエリの offset の値として渡します。

サンプル python コード


   req_payload = {"t0": "2016-11-07T09:00:00-0700",
                  "t1": "2016-11-07T19:00:00-0700",
                  "limit": 10,
                  "filter": {"type": "and",
                      "filters": [
                          {"type": "contains", "field": "category", "value": "escaped"},
                          {"type": "regex", "field": "src_hostname", "value": "web*"}
                       ]
                  }
    }

    resp = restclient.post('/live_enforcement_analysis/{application_id}', json_body=json.dumps(req_payload))
    print resp.status_code
    if resp.status_code == 200:
        parsed_resp = json.loads(resp.content)
        print json.dumps(parsed_resp, indent=4, sort_keys=True)

スコープ

この一連の API を使用して、Secure Workload クラスタ展開の範囲(または AppScopes)を管理できます。API キーに関連付けられた user_role_scope_management 機能が必要です。範囲リストを取得する API は、 app_policy_managementまたは sensor_management の機能を持つ API キーで使用できます。

範囲オブジェクト

範囲オブジェクトの属性については、以下で説明します。

属性

タイプ

説明

id

string

範囲の固有識別子。

short_name

string

ユーザーが指定した範囲の名前。

name

文字列

範囲の完全修飾名。これは完全修飾名です。つまり、ルート範囲に至るまで、親範囲の名前 (該当する場合) があります。

description

文字列

ユーザーが指定した範囲の説明。

short_query{1}JSON{1}

JSON

範囲に関連付けられているフィルタ (または一致基準)。

query

JSON

(ルート範囲までの)親範囲のフィルタとともに範囲に関連付けられるフィルタ(一致基準)。

vrf-id

integer

範囲が属している VRF の ID。

parent_app_scope_id

string

親範囲の ID。

child_app_scope_ids

array

範囲の子 id の配列。

policy_priority

ワークスペースの優先順位を並べ替えるために使用されます。セマンティクスと表示を参照してください。

ダーティ

bool

子または親クエリが更新され、変更をコミットする必要があることを示します。

dirty_short_query

JSON

この範囲のクエリが更新されていてもコミットされていない場合は、null 以外です。

範囲の取得

このエンドポイントは、Secure Workload アプライアンスが認識している範囲のリストを返します。この API は、 app_policy_managementまたは user_role_scope_management のいずれかの機能を持つ API キーで使用できます。

GET/openapi/v1/app_scopes

パラメータ:

名前

タイプ

説明

vrf-id

integer

アプリの範囲を vrf_id で照合します。

root_app_scope_id

string

アプリの範囲をルートアプリの範囲 ID と照合します。

exact_name

string

大文字と小文字を区別して、正確な名前に一致する範囲を返します。

exact_short_name

string

大文字と小文字を区別して、正確な short_name に一致する範囲を返します。

範囲オブジェクトのリストを戻します。

範囲の作成

このエンドポイントは、新しい範囲を作成するために使用されます。

POST/openapi/v1/app_scopes

パラメータ:

名前

タイプ

説明

short_name

string

ユーザーが指定した範囲の名前。

description

文字列

ユーザーが指定した範囲の説明。

short_query{1}JSON{1}

JSON

範囲に関連付けられているフィルタ (または一致基準)。

parent_app_scope_id

string

親範囲の ID。

policy_priority

integer

デフォルトは「last」です。ワークスペースの優先順位を並べ替えるために使用されます。「ポリシー」の「ポリシーの順序付け」を参照してください。

サンプル python コード


   req_payload = {
      "short_name": "App Scope Name",
      "short_query": {
          "type":"eq",
          "field":"ip",
          "value": <....>
      },
      "parent_app_scope_id": <parent_app_scope_id>
  }
  resp = restclient.post('/app_scopes', json_body=json.dumps(req_payload))

サブネットに基づいて範囲を作成するには、次の short_query を使用します。


    "short_query":
      {
        "type":"subnet",
        "field":"ip",
        "value": "1.0.0.0/8"
      },

特定の範囲を取得する

このエンドポイントは、範囲のインスタンスを返します。

GET/openapi/v1/app_scopes/{app_scope_id}

指定した ID に関連付けられている範囲オブジェクトを返します。

範囲の更新

このエンドポイントは範囲を更新します。name および description への変更はすぐに適用されます。short_query への変更は、範囲を「ダーティ」としてマークし、dirty_short_query 属性を設定します。特定のルート範囲の下にあるすべての範囲クエリが変更になった場合、範囲クエリ変更のコミットエンドポイントに ping を実行して、必要なすべての更新をコミットする必要があります。

PUT/openapi/v1/app_scopes/{app_scope_id}

パラメータ:

名前

タイプ

説明

short_name

string

ユーザーが指定した範囲の名前。

description

文字列

ユーザーが指定した範囲の説明。

short_query{1}JSON{1}

JSON

範囲に関連付けられているフィルタ (または一致基準)。

指定された ID に関連付けられている変更された範囲オブジェクトを返します。

特定範囲の削除

このエンドポイントは、指定された範囲を削除します。

DELETE /openapi/v1/app_scopes/{app_scope_id}

範囲がワークスペース、ポリシー、ユーザー インベントリ フィルタなどに関連付けられている場合、このエンドポイントは 422 Unprocessable Entity を返します。返されるエラーオブジェクトには、details 属性が含まれ、依存オブジェクトの数とともに各タイプの最初の 10 個の ID が示されます。この情報を使用して、問題となっている依存関係を見つけて削除できます。

ポリシーの優先順位で範囲を取得する

このエンドポイントは、対応するプライマリワークスペースが適用される順序で範囲を一覧表示します。

GET /openapi/v1/app_scopes/{root_app_scope_id}/policy_order

範囲オブジェクトの配列データを返します。

ポリシー順序の更新

このエンドポイントは、ポリシーが適用される順序を更新します。


警告


このエンドポイントは、ポリシーが適用される順序を変更します。その結果、新しいホスト ファイアウォール ルールが挿入され、関連するホスト上で既存のルールがすべて削除されます。

POST /openapi/v1/app_scopes/{root_app_scope_id}/policy_order


パラメータ:

名前

タイプ

説明

root_app_scope_id

string

順序が変更されるルート範囲。

ids

アレイ

適用される順序での範囲 ID 文字列の配列。

ids 配列パラメータには、ルート範囲のすべてのメンバー(ルートを含む)が含まれている必要があります。

範囲クエリの変更のコミット

このエンドポイントは非同期バックグラウンド ジョブをトリガーして、特定のルート範囲のすべての「ダーティ」子を更新します。このジョブは、範囲とワークスペースを更新します。詳細については、「 範囲 」を参照してください。

POST/openapi/v1/app_scopes/commit_dirty

パラメータ:

名前

タイプ

説明

root_app_scope_id

string

すべての子が更新されるルート範囲の ID。

sync

boolean

(オプション)リクエストを同期する必要があるかどうかを示します。

ジョブがキューに入れられたことを示すために、202を 返します。ジョブが完了したかどうかを確認するには、ルート範囲の「ダーティ」属性をポーリングして、それが false に設定されているかどうかを確認します。

ユーザーは、sync パラメータを指定して、ジョブをすぐに実行することもできます。リクエストが完了すると、ステータスコード 200 が返されます。多くの更新を適用する必要がある場合、このリクエストには時間がかかることがあります。

グループ提案リクエストの送信

範囲のグループ提案リクエストを送信します。

PUT /openapi/v1/app_scopes/{app_scope_id}/suggest_groups

パラメータ:要求 URL には、次のパラメータが含まれています。

名前

タイプ

説明

app_scope_id

string

範囲の固有識別子。

パラメータ:JSON クエリの本文には、次のキーが含まれています。

名前

タイプ

説明

start_time

string

グループ提案入力時間間隔の開始時間。

end_time

string

グループ提案入力時間間隔の終了時間。

応答オブジェクト:次の属性を持つオブジェクトを返します。

名前

タイプ

説明

message

string

グループ提案リクエストの提出成否に関するメッセージです。

サンプル python コード


  app_scope_id = '5d02b493755f0237a3d6e078'
  req_payload = {
        'start_time': '2020-09-17T10:00:00-0700',
        'end_time': '2020-09-17T11:00:00-0700',
  }
  resp = restclient.put('/app_scopes/%s/suggest_groups' % app_scope_id,
                         json_body=json.dumps(req_payload))

グループ提案ステータスの取得

範囲のグループ提案ステータスのクエリを実行します。

GET /openapi/v1/app_scopes/{app_scope_id}/suggest_groups_status

パラメータ:要求 URL には、次のパラメータが含まれています。

名前

タイプ

説明

app_scope_id

string

範囲の固有識別子。

応答オブジェクト:次の属性を持つオブジェクトを返します。

名前

タイプ

説明

status

string

グループ提案のステータス。値:PENDING、COMPLETE、または FAILED

サンプル python コード


  app_scope_id = '5d02b493755f0237a3d6e078'
  resp = restclient.get('/app_scopes/%s/suggest_groups_status' % app_scope_id)

アラートの設定

この一連の API を使用して、ユーザーアラートを管理できます。API キーに関連付けられた user_alert_management 機能が必要です。

アラートオブジェクト

各アラート設定オブジェクトには、次のフィールドが含まれています。

属性

タイプ

説明

app_name

string

アラート設定に関連付けられているアプリケーション名。

ルール

オブジェクト

アラート設定がアラートをトリガーするために満たされる必要がある一連の条件。

subjects

オブジェクト

アラートを受信するユーザーのリスト。

severity

string

アラート設定に関連付けられている重大度のレベルを示します。

individual_alert

boolean

アラート設定をトリガーする個々のアラートを送信するかどうかを示します。

summary_alert_freq

string

特定のアラート設定に対して送信されるサマリーアラートの頻度。

alert_type

string

アラート設定の固有識別子。

app_instance_id

string

アラート設定に関連付けられている特定のインスタンスの固有識別子。

アラートの取得

このエンドポイントは、ユーザーのアラート設定のリストを取得します。アラートは、指定されたルート範囲にフィルタリングできます。範囲が指定されていない場合、ユーザーがアクセスできるすべての範囲のすべてのアラートが返されます。サービス プロバイダー アラートは、ユーザーがサイト管理者である場合にのみ返されます。

GET /openapi/v1/alert_confs

パラメータ:

名前

タイプ

説明

root_app_scope_id

string

(オプション)その範囲に割り当てられているアラートのみを返すルート範囲の ID。

応答オブジェクト:ユーザー アラート オブジェクトのリストを返します。

アラートの作成

このエンドポイントは、新しいアラートを作成するために使用されます。

POST openapi/v1/alert_confs

パラメータ:

属性

タイプ

説明

app_name

string

アラート設定に関連付けられているアプリケーション名。

ルール

オブジェクト

アラート設定がアラートをトリガーするために満たされる必要がある一連の条件。

subjects

オブジェクト

アラートを受信するユーザーのリスト。

severity

string

アラート設定に関連付けられている重大度のレベルを示します。

individual_alert

boolean

アラート設定をトリガーする個々のアラートを送信するかどうかを示します。

summary_alert_freq

string

特定のアラート設定に対して送信されるサマリーアラートの頻度。

alert_type

string

アラート設定の固有識別子。

app_instance_id

string

アラート設定に関連付けられている特定のインスタンスの固有識別子。

要求側のユーザーは、指定された範囲にアクセスできる必要があります。範囲のないアラートは「サービス プロバイダー アラート」であり、サイト管理者のみが作成できます。

応答オブジェクト:新しく作成されたアラートオブジェクトを返します。

特定のアラートの取得

このエンドポイントは、特定のアラートオブジェクトを返します。

GET /openapi/v1/alert_confs/

パラメータ:要求 URL には、次のパラメータが含まれています。

名前

タイプ

説明

alert_id

string

アラートを一意に識別します。

応答オブジェクト:指定された ID に関連付けられているアラートオブジェクトを返します。

アラートの更新

このエンドポイントは、既存のアラートを更新するために使用されます。

PUT /openapi/v1/alert_confs/

パラメータ:要求 URL には、次のパラメータが含まれています。

名前

タイプ

説明

alert_id

string

このアラートの設定を取得または変更します。

JSON リクエストの本文には、次のパラメータが含まれています

名前

タイプ

説明

name

文字列

ユーザーが指定したアラートの名前。

description

文字列

ユーザーが指定したアラートの説明。

要求側のユーザーは、指定された範囲にアクセスできる必要があります。範囲のないアラートは「サービス プロバイダー アラート」と呼ばれ、サイト管理者のみが更新できます。

応答オブジェクト:指定された ID を持つ更新されたアラートオブジェクト。

特定のアラートの削除

このエンドポイントは、指定されたアラートを削除します。

DELETE /openapi/v1/alert_confs/{alert_id}

パラメータ:要求 URL には、次のパラメータが含まれています。

名前

タイプ

説明

alert_id

string

アラートを一意に識別します。

応答オブジェクト:なし。

ロール

この一連の API を使用して、ユーザー ロールを管理できます。API キーに関連付けられた user_role_scope_management 機能が必要です。


(注)  


これらの API は、サイト管理者とルート範囲の所有者のみが使用できます。


ロール オブジェクト

ロールオブジェクトの属性については、以下で説明します。

属性

タイプ

説明

id

string

ロールの固有識別子。

app_scope_id

string

範囲が定義されている範囲。「サービスプロバイダーロール」の場合は空の場合があります。

name

文字列

ロールのユーザー指定名。

description

文字列

ロールのユーザー指定の説明。

ロールの取得

このエンドポイントは、ユーザーがアクセス可能なロールのリストを返します。ロールは、特定のルート範囲にフィルタリングできます。範囲が指定されていない場合、ユーザーがアクセスできるすべての範囲のすべてのロールが返されます。サービス プロバイダ ロールは、ユーザーがサイト管理者である場合にのみ返されます。

GET/openapi/v1/roles

パラメータ:

名前

タイプ

説明

app_scope_id

string

(オプション) その範囲に割り当てられているロールのみを返すルート範囲の ID。

応答オブジェクト:ユーザーロールオブジェクトのリストを返します。

サンプル python コード


  resp = restclient.get('/roles')

ロールの作成

このエンドポイントは、新しいロールを作成するために使用されます。

POST/openapi/v1/roles

パラメータ:

名前

タイプ

説明

name

文字列

ロールのユーザー指定名。

description

文字列

ロールのユーザー指定の説明。

app_scope_id

string

(オプション) ロールに記載されている範囲 ID がサービス プロバイダ ロールと見なされない場合、ロールが作成される範囲 ID。

要求側のユーザーは、指定された範囲にアクセスできる必要があります。範囲のないロールは「サービス プロバイダ ロール」と呼ばれ、サイト管理者のみが作成できます。

応答オブジェクト:新しく作成されたロールオブジェクトを返します。

サンプル python コード


  app_scope_id = '<app-scope-id>'
  req_payload = {
        'name': 'Role Name',
        'description': 'Role Description',
        'app_scope_id': app_scope_id
  }
  restclient.post('/roles', json_body=json.dumps(req_payload))

特定のロールを取得

このエンドポイントは、特定のロール オブジェクトを返します。

GET/openapi/v1/roles/{role_id}

パラメータ:要求 URL には、次のパラメータが含まれています。

名前

タイプ

説明

role-id

string

ロールの固有識別子。

応答オブジェクト:指定された ID に関連付けられているロールオブジェクトを返します。

サンプル python コード


  role_id = '<role-id>'
  restclient.get('/roles/%s' % role_id)

ロールの更新

このエンドポイントは、既存のロールを更新するために使用されます。

PUT /openapi/v1/roles/{role_id}

パラメータ:要求 URL には、次のパラメータが含まれています。

名前

タイプ

説明

role-id

string

ロールの固有識別子。

JSON リクエストの本文には、次のパラメータが含まれています

名前

タイプ

説明

name

文字列

ロールのユーザー指定名。

description

文字列

ロールのユーザー指定の説明。

要求側のユーザーは、指定された範囲にアクセスできる必要があります。範囲のないロールは「サービスプロバイダーロール」と呼ばれ、サイト管理者のみが更新できます。

応答オブジェクト:指定された ID を持つ更新されたロールオブジェクト。

サンプル python コード


  role_id = '<role-id>'
  req_payload = {
        'name': 'Role Name',
        'description': 'Role Description',
  }
  restclient.put('/roles/%s' % role_id, json_body=json.dumps(req_payload))

範囲へのロール アクセスを付与

このエンドポイントは、指定されたアクセス レベルを範囲に付与します。

POST/openapi/v1/roles/{role_id}/capabilities

機能は、ユーザーがアクセスできるロールにのみ追加できます。ロールが範囲に割り当てられている場合、機能はその範囲またはその子に対応している必要があります。サービス プロバイダ ロール (範囲に割り当てられていないもの) は、任意の範囲の機能を追加できます。

パラメータ:要求 URL には、次のパラメータが含まれています。

名前

タイプ

説明

role-id

string

ロールの固有識別子。

JSON リクエストの本文には、次のパラメータが含まれています

名前

タイプ

説明

app_scope_id

string

アクセスが提供される範囲の ID。

能力

string

値は次のいずれかです。SCOPE_READ,

SCOPE_WRITE、EXECUTE、ENFORCE、

SCOPE_OWNER、DEVELOPER

機能の詳細については、「ロール」を参照してください。

応答オブジェクト:

名前

タイプ

説明

app_scope_id

string

アクセスが提供される範囲の ID。

role-id

string

ロールの ID。

能力

string

値は次のいずれかです。SCOPE_READ、SCOPE_WRITE、EXECUTE、ENFORCE、SCOPE_OWNER、DEVELOPER

継承

boolean

サンプル python コード


  role_id = '<role-id>'
  req_payload = {
    'app_scope_id': '<app-scope-id>',
    'ability': 'SCOPE_READ'
  }
  restclient.post('/roles/%s/capabilities' % role_id,
                  json_body=json.dumps(req_payload))

特定のロールの削除

このエンドポイントは、指定された範囲を削除します。

DELETE /openapi/v1/roles/{role_id}

パラメータ:要求 URL には、次のパラメータが含まれています。

名前

タイプ

説明

role-id

string

ロールの固有識別子。

応答オブジェクト:なし。

サンプル python コード


  role_id = '<role-id>'
  restclient.delete('/roles/%s' % role_id)

Users

この API のセットでユーザーを管理します。API キーに関連付けられた user_role_scope_management 機能が必要です。


(注)  


これらの API は、サイト管理者とルート範囲の所有者のみが使用できます。


ユーザー オブジェクト

ユーザー オブジェクトの属性については、以下で説明します。

属性

タイプ

説明

id

string

ユーザー ロールの固有識別子。

電子メール

string

ユーザー アカウントに関連付けられている電子メール。

first_name

string

名前。

last_name

string

姓。

app_scope_id

string

ユーザーに割り当てられる範囲。「サービス プロバイダー ユーザー」の場合、通常は空になります。

role_ids

リスト

ユーザー アカウントに割り当てられているロールの ID のリスト。

by-

pass_external_auth

boolean

ローカルユーザーの場合は true、外部認証ユーザー(ldap または sso)の場合は false。

disabled_at

整数

ユーザーが無効になっているときの Unix タイムスタンプ。0 または null。そうでない場合。

ユーザーの取得

このエンドポイントは、Secure Workload アプライアンスに認識されているユーザーオブジェクトのリストを返します。

GET/openapi/v1/users

パラメータ:要求 URL には、次のパラメータが含まれています。

名前

タイプ

説明

include_disabled

boolean

(オプション)無効なユーザーを含めるために、デフォルトで false に設定されます。

app_scope_id

string

(オプション)指定した範囲に割り当てられているユーザーのみを返します。

応答オブジェクト:ユーザーオブジェクトのリストを返します。サイト管理者のみが「サービス プロバイダ ユーザー」を表示できます。つまり、範囲に割り当てられていません。

サンプル python コード


    GET /openapi/v1/users

新しいユーザ アカウントの作成

このエンドポイントは、新しいユーザー アカウントを作成するために使用されます。

POST/openapi/v1/users

パラメータ:JSON リクエストの本文には、次のパラメータが含まれます。

名前

タイプ

説明

電子メール

string

ユーザー アカウントに関連付けられている電子メール。

first_name

string

名前。

last_name

string

姓。

app_scope_id

string

(オプション) ユーザーが属するルート範囲。

role_ids

リスト

(オプション) ユーザーに割り当てられる必要があるロールのリスト。

app_scope_id は、ユーザーが割り当てられるルート範囲の ID です。app_scope_id が表示されない場合、そのユーザーは「サービス プロバイダー ユーザー」です。サイト管理者のみ、サービス プロバイダー ユーザーを作成できます。role_ids は、指定されたアプリケーション範囲の下で作成されたロールの ID です。

応答オブジェクト:新しく作成されたユーザーオブジェクトを返します。

サンプル python コード


  req_payload = {
      "first_name": "fname",
      "last_name": "lname",
      "email": "foo@bar.com"
      "app_scope_id": "root_appscope_id",
      "role_ids": ["roleid1", "roleid2"]
  }
  resp = restclient.post('/users', json_body=json.dumps(req_payload))

特定のユーザーの取得

このエンドポイントは、特定のユーザー オブジェクトを返します。

GET/openapi/v1/users/{user_id}

パラメータ:要求 URL には、次のパラメータが含まれています。

名前

タイプ

説明

user_id

string

ユーザーオブジェクトの ID。

応答オブジェクト:指定された ID に関連付けられているユーザーオブジェクトを返します。

サンプル python コード

	
  user_id = '5ce480db497d4f1ca1fc2b2b'
  resp = restclient.get('/users/%s' % user_id)

ユーザーの更新

このエンドポイントは、既存のユーザーを更新します。

PUT /openapi/v1/users/{user_id}

パラメータ:要求 URL には、次のパラメータが含まれています。

名前

タイプ

説明

user_id

string

更新されるユーザーオブジェクトの ID。

JSON リクエストの本文には、次のパラメータが含まれています

名前

タイプ

説明

電子メール

string

ユーザー アカウントに関連付けられている電子メール。

first_name

string

名前。

last_name

string

姓。

app_scope_id

string

ルートアプリケーション範囲 ID(サイト管理者にのみ許可)

応答オブジェクト:新しく更新されたユーザーオブジェクトを返します。

サンプル python コード


  req_payload = {
      "first_name": "fname",
      "last_name": "lname",
      "email": "foo@bar.com"
      "app_scope_id": "root_appscope_id",
  }
  restclient.put('/users', json_body=json.dumps(req_payload))

非アクティブ化されたユーザーの有効化/再アクティブ化

このエンドポイントは、非アクティブ化されたユーザーを再び有効化するために使用されます。

POST /openapi/v1/users/{user_id}/enable

パラメータ:要求 URL には、次のパラメータが含まれています。

名前

タイプ

説明

user_id

string

有効化されているユーザーオブジェクトの ID。

応答オブジェクト:指定された ID に関連付けられている、再アクティブ化されたユーザーオブジェクトを返します。

サンプル python コード

		
  user_id = '5ce480db497d4f1ca1fc2b2b'		
  resp = restclient.post('/users/%s/enable' % user_id)

ユーザー アカウントにロールを追加

このエンドポイントは、ユーザー アカウントにロールを追加するために使用されます。

PUT/openapi/v1/users/{user_id}/add_role

パラメータ:要求 URL には、次のパラメータが含まれています。

名前

タイプ

説明

user_id

string

変更されるユーザーオブジェクトの ID。

JSON リクエストの本文には、次のパラメータが含まれています

名前

タイプ

説明

role-id

string

追加するロール オブジェクトの ID。

応答オブジェクト:指定された ID に関連付けられている、変更されたユーザーオブジェクトを返します。

サンプル python コード


  user_id = '5ce480db497d4f1ca1fc2b2b'
  req_payload = {
      "role_id": "5ce480d4497d4f1c155d0cef",
  }
  resp = restclient.put('/users/%s/add_role' % user_id,
                        json_body=json.dumps(req_payload))

ユーザー アカウントからロールを削除

このエンドポイントは、ユーザーアカウントからロールを削除するために使用されます。

/Openapi/v1/users/{user_id}/remove_role の削除

パラメータ:要求 URL には、次のパラメータが含まれています。

名前

タイプ

説明

user_id

string

削除されるユーザーオブジェクトの ID。

JSON リクエストの本文には、次のパラメータが含まれています

名前

タイプ

説明

role-id

string

削除するロール オブジェクトの ID。

応答オブジェクト:指定された ID に関連付けられている、変更されたユーザーオブジェクトを返します。

サンプル python コード


  user_id = '5ce480db497d4f1ca1fc2b2b'
  req_payload = {
      "role_id": "5ce480d4497d4f1c155d0cef",
  }
  resp = restclient.delete('/users/%s/remove_role' % user_id,
                           json_body=json.dumps(req_payload))

指定されたユーザーの削除

このエンドポイントは、指定されたユーザー アカウントを削除します。

DELETE /openapi/v1/users/{user_id}

パラメータ:要求 URL には、次のパラメータが含まれています。

名前

タイプ

説明

user_id

string

削除されるユーザーオブジェクトの ID。

応答オブジェクト:指定された ID に関連付けられている、削除されたユーザーオブジェクトを返します。

サンプル python コード


  user_id = '5ce480db497d4f1ca1fc2b2b'
  resp = restclient.delete('/users/%s' % user_id)

インベントリ フィルタ

インベントリ フィルタは、インベントリ検索クエリの一致基準をエンコードします。この一連の API は、インベントリ フィルタ で説明されているものと同様の機能を提供します。API キーに関連付けられている sensor_management or app_policy_management 機能が必要です。

インベントリ フィルタ オブジェクト

インベントリ フィルタ JSON オブジェクトは、API エンドポイントに応じて、単一のオブジェクトまたはオブジェクトの配列として返されます。オブジェクトの属性については、以下で説明します。

属性

タイプ

説明

id

string

インベントリフィルタの一意の識別子。

name

文字列

ユーザーが指定したインベントリフィルタの名前。

app_scope_id

string

フィルタに関連付けられた範囲の ID。

short_query{1}JSON{1}

JSON

フィルタに関連付けられているフィルタ (または一致基準)。

primary

boolean

「true」の場合は、フィルタが所有権の範囲に制限されていることを意味します。

public

boolean

「true」の場合、フィルタはその範囲にサービスを提供します。プライマリや範囲も制限されている必要があります。

query

JSON

親範囲のフィルタと組み合わせて、フィルタに関連付けられているフィルタ (または一致基準)。[所有権の範囲に制限する(restricted to ownership scope)] チェックボックスがオンになっている場合に、これらの連携が有効になります。[primary (プライマリ)] フィールドが false の場合、クエリは short_query と同じです。

インベントリ フィルタの取得

このエンドポイントは、ユーザーに表示されるインベントリ フィルタのリストを返します。

GET/openapi/v1/filters/inventories

パラメータ:

名前

タイプ

説明

vrf-id

integer

VRF ID でインベントリフィルタを照合します。

root_app_scope_id

string

ルートアプリケーション範囲 ID でインベントリフィルタを照合します。

name

文字列

大文字と小文字を区別せずに、名前の一部に一致するインベントリフィルタを返します。

exact_name

string

大文字と小文字を区別して、正確な名前に一致するインベントリフィルタを返します。

インベントリ フィルタの作成

このエンドポイントは、インベントリ フィルタを作成するために使用されます。

POST/openapi/v1/filters/inventories

パラメータ:

名前

タイプ

説明

name

文字列

アプリケーション範囲のユーザー指定名。

query

JSON

フィルタに関連付けられているフィルタ (または一致基準)。

app_scope_id

string

フィルタに関連付けられた範囲の ID。

primary

boolean

「true」の場合は、フィルタが所有権の範囲に制限されていることを意味します。

public

boolean

「true」の場合、フィルタはその範囲にサービスを提供します。また、プライマリ/スコープが制限されている必要があります。

サンプル python コード


  req_payload = {
    "app_scope_id": <app_scope_id>,
    "name": "sensor_config_inventory_filter",
    "query": {
      "type": "eq",
      "field": "ip",
      "value": <sensor_interface_ip>
    },
  }
  resp = restclient.post('/filters/inventories', json_body=json.dumps(req_payload))

インベントリフィルタクエリの検証

このエンドポイントは、必要なスキーマに対してクエリの構造を検証します。

POST /openapi/v1/filters/inventories/validate_query

パラメータ:

名前

タイプ

説明

query

JSON

範囲に関連付けられているフィルタ (または一致基準)。

応答オブジェクト:

属性

タイプ

説明

valid

boolean

クエリが有効かどうかの表示

errors

array

無効な場合、エラーの詳細

特定のインベントリ フィルタの取得

このエンドポイントは、インベントリフィルタのインスタンスを返します。

GET /openapi/v1/filters/inventories/{inventory_filter_id}

指定された ID に関連付けられているインベントリ フィルタ オブジェクトを返します。

特定のインベントリフィルタの更新

このエンドポイントは、インベントリフィルタを作成するために使用されます。

PUT /openapi/v1/filters/inventories/{inventory_filter_id}

パラメータ:

名前

タイプ

説明

name

文字列

ユーザーが指定した範囲の名前。

query

JSON

範囲に関連付けられているフィルタ (または一致基準)。

app_scope_id

string

フィルタに関連付けられた範囲の ID。

primary

boolean

「true」の場合は、フィルタが所有権の範囲に制限されていることを意味します。

public

boolean

「true」の場合、フィルタによって特定のサービスが提示されます。ポリシー生成の一部として使用できます。また、プライマリ/範囲が制限されている必要があります。

Usages

boolean

メンバーポリシーと設定の統計の収集。

特定のインベントリフィルタの削除

このエンドポイントは、指定されたインベントリフィルタを削除します。

DELETE /openapi/v1/filters/inventories/{inventory_filter_id}

フロー検索

フロー検索機能は、「フロー」で説明されているのと同様の機能を提供します。これらの一連の API には、API キーに関連付けられている flow_inventory_query 機能が必要です。

フローディメンションのクエリ

このエンドポイントは、フロー検索クエリ (以下) に対して検索条件 (またはフィルタ) を指定できるフロー カラムのリストを返します。列の説明の詳細については、「列とフィルタ」を参照してください。

GET/openapi/v1/flowsearch/dimensions

パラメータ:(なし)

応答オブジェクト:

名前

タイプ

説明

寸法

文字列のリスト

アップロードされたユーザーとオーケストレータ ディメンションのリスト。

サンプル python コード


  restclient.get('/flowsearch/dimensions')

フローメトリックのクエリ

このエンドポイントは、フロー観測に関連付けられたメトリックス(バイト数、パケット数など)のリストを返します。

GET/openapi/v1/flowsearch/metrics

パラメータ:(なし)

応答オブジェクト:

名前

タイプ

説明

メトリック

文字列のリスト。

利用可能なメトリックのリスト。

サンプル python コード


  restclient.get('/flowsearch/metrics')

フローのクエリ

このエンドポイントは、フィルタ条件に一致するフローのリストを返します。結果の各フロー オブジェクトには、フローの大きさ (上記のフロー寸法 API によって返される) とフロー メトリックス (上記のフロー メトリックス API によって返される) の結合である属性があります。

POST/openapi/v1/flowsearch

フィルタ条件で指定できるカラムのリストは、/openapi/v1/flowsearch/ dimensions API を使用して取得できます。

パラメータ:クエリ本文は、次のキーを使用した JSON 本文で構成されます。

名前

タイプ

説明

t0

整数または文字列

フロー検索開始時刻 (エポックまたは ISO 8601)

t1

整数または文字列

フロー検索終了時間 (エポックまたは ISO 8601)

filter

JSON

クエリ フィルタ。フィルタが空(つまり、{})の場合、クエリはすべてのフローに一致します。

scope-name

string

クエリが制限されている範囲の完全な名前。

寸法

array

(オプション)Flowsearch API の結果に返される寸法名のリスト。これは省略可能なパラメータです。指定しない場合、flowsearch の結果は使用可能なすべての寸法を返します。このオプションは、発信者が残りの寸法を気にしない場合に使用可能な寸法のサブセットを指定するときに役立ちます。

メトリック

array

(オプション)Flowsearch API の結果で返されるメトリック名のリスト。これは省略可能なパラメータです。指定しない場合、flowsearch の結果は使用可能なすべてのメトリックスが返されます。このオプションは、発信者が他のメトリックスを処理しない場合に使用可能なメトリックスのサブセットを指定するのに役立ちます。

limit

integer

(オプション)応答フローの制限数。

offset

string

(オプション)前の応答から受信した Offset オブジェクト。

降順

boolean

(オプション)このパラメータが false または指定されていない場合、結果はタイムスタンプの昇順になります。パラメータ値が true の場合、結果はタイムスタンプの降順になります。

要求の本文は、JSON 形式のクエリである必要があります。次に、クエリ本文の例を示します。


    {
        "t0": "2016-06-17T09:00:00-0700",
        "t1": "2016-06-17T17:00:00-0700",
        "filter": {
            "type": "and",
            "filters": [
                {
                    "type": "contains",
                    "field": "dst_hostname",
                    "value": "prod"
                },
                {
                    "type": "in",
                    "field": "dst_port",
                    "values": ["80", "443"]
                }
            ]
        },
        "scopeName": "Default:Production:Web",
        "limit": 100,
        "offset": <offset-object>
    }

フィルタ

フィルタは、1 つ以上のプリミティブ フィルタで構成されるプリミティブ フィルタと論理フィルタ (「not」、「and」、「or」) をサポートします。プリミティブ フィルタの形式は次のとおりです。


    {"type" : "<OPERATOR>", "field": "<COLUMN_NAME>", "value": "<COLUMN_VALUE>"}

プリミティブフィルタの場合は、eq、ne、lt、lte、gtgte などの比較演算子を使用できます。演算子は、in、regex、subnet、containsrange にすることもできます。

プリミティブ フィルタの一部の例としては、次のものがあります。


   {"type": "eq", "field": "src_address", "value": "7.7.7.7"}

   {"type": "regex", "field": "src_hostname", "value": "prod.*"}

   {"type": "subnet", "field": "src_addr", "value": "1.1.11.0/24"}

   # Note, 'in' clause uses 'values' key instead of 'value'
   {"type": "in", "field": "src_port", "values": [80, 443]}

not、and、or などのブール演算を使用して、複雑なフィルタを指定することもできます。以下は、これらのタイプのフィルタの一部の例です。


    # "and" and "or" operators need to specify list of "filters"
    {"type": "and",
        "filters": [
            {"type": "in", "field": "src_port", "values": [80, 443]},
            {"type": "regex", "field": "src_hostname", "value": "prod.*"}
        ]
    }

    # "not" operator needs to specify a "filter"
    {"type": "not",
        "filter": {"type": "subnet", "field": "src_addr", "value": "1.1.11.0/24"}
    }

フロー検索要求での filter のスキーマは、より正式に示すと次のようになります。

キー

タイプ

フィルタ タイプ

field

プリミティブ フィルタのフィルタ フィールド カラム

filter

フィルタオブジェクト(フィルタタイプ not にのみ使用)

filters

フィルタオブジェクトのリスト(フィルタタイプ and および or に使用)

value

プリミティブ フィルタの値

in または range のフィルタタイプを使用したプリミティブフィルタの値のリスト

プリミティブ フィルタ タイプ

eq、ne:それぞれ、「field」で指定されたカラム内の「value」で指定された値に等価または不等のフローを検索します。次のフィールドをサポートします。src_hostname、dst_hostname、src_address、dst_address、src_port、dst_port、src_scope_name、dst_scope_name、vrf_name、src_enforcement_epg_name、dst_enforcement_epg_name、proto これらの演算子は、ユーザーラベル付きカラムでも機能します。

lt、lte、gt、gte:「field」で指定されたカラムの値が「value」で指定された値より小さい、値と等しい、値より大きい、値以上である(該当する場合)フローを検索します。次のフィールドをサポートします。[src_port、dst_port]

range:「values」リストで指定された範囲の開始と範囲の終了の間で、「field」で指定されたカラムの値のフローを検索します(「values」リストは、「範囲」フィルタタイプのサイズ 2 である必要があります。最初の値は範囲の開始で、2 番目の値は範囲の終了です)。次のフィールドをサポートします。[src_port、dst_port]

in:「field」で指定されたカラム内で、「values」で指定されたメンバーシップリストに一致するメンバーシップのフローを検索します。次のフィールドをサポートします。src_hostname、dst_hostname、src_address、dst_address、src_port、dst_port、src_scope_name、dst_scope_name、vrf_name、src_enforcement_epg_name、dst_enforcement_epg_name、proto この演算子は、ユーザーラベル付きカラムでも機能します。

regex、contains:それぞれ「field」で指定されたカラムで、「value」で指定された正規表現の正規表現一致または含む一致のフローを検索します。次のフィールドをサポートします。src_hostname、dst_hostname、src_scope_name、dst_scope_name、vrf_name、src_enforcement_epg_name、dst_enforcement_epg_name これらの演算子は、ユーザーラベル付きカラムでも機能します。regex タイプのフィルタは、「value」として Java スタイルの正規表現パターンを使用する必要があります。

subnet:CIDR 表記の文字列として「field 」で指定されたサブネットメンバーシップのフローを検索します。次のフィールドをサポートしています。[src_address、dst_address]

論理フィルタ タイプ

  • not:「filter」によって指定されたオブジェクトの論理「not」フィルタ。

  • and:「filters」によって指定されたフィルタオブジェクトのリストの論理「and」フィルタ。

  • or:「filters」によって指定されたフィルタオブジェクトのリストの論理「or」フィルタ。

応答オブジェクト:

キー

offset

結果の次のページでパスされる応答オフセット

results

結果のリスト

結果の次のページを生成するには、offset の応答で受信したオブジェクトを取得し、それを次のクエリの offset の値として渡します。

サンプル python コード


   req_payload = {"t0": "2016-11-07T09:00:00-0700",
                  "t1": "2016-11-07T19:00:00-0700",
                  "scopeName": "Default:Prod:Web",
                  "limit": 10,
                  "filter": {"type": "and",
                      "filters": [
                          {"type": "subnet", "field": "src_address", "value": "1.1.11.0/24"},
                          {"type": "regex", "field": "src_hostname", "value": "web*"}
                       ]
                  }
    }

    resp = restclient.post('/flowsearch', json_body=json.dumps(req_payload))
    print resp.status_code
    if resp.status_code == 200:
        parsed_resp = json.loads(resp.content)
        print json.dumps(parsed_resp, indent=4, sort_keys=True)

フローの TopN クエリ

このエンドポイントは、指定されたメトリックスの集約によってリスト内のランクが決定される場合に、指定された寸法値の上位 N 個のソートされたリストを返します。

POST/openapi/v1/flowsearch/topn

パラメータ:

フィルタ条件で指定できるカラムのリストは、/openapi/v1/flowsearch/dimensions API を使用して取得できます。要求の本文は、JSON 形式のクエリである必要があります。次に、クエリ本文の例を示します。要求本文内のパラメータ t0 および t1 は、エポック形式または ISO 8601 形式で指定できます。TopN API では、1 日の最大時間範囲のみクエリできます。グループ化を実行する必要があるディメンションは、 dimension を使用して指定する必要があります。上位 N 件の結果をランク付けする必要があるメトリックスは、JSON 本文の metric フィールドで指定する必要があります。threshold には、「上位 N 件」の「N」を示す 1 以上の値を 指定する必要があります。threshold の最大値は 1000 です。ユーザーが 1000 を超える値を指定した場合でも、API は最大で 1000 件の結果のみを返します。また、scopeName パラメータを指定する必要があります。これは、検索対象を絞り込むための完全な範囲名です。filter は、フロー検索(「フィルタ 」)のフィルタと同じです。filter を指定しない場合、TopN はすべてのフローエントリに適用されます。


    {
      "t0": "2016-06-17T09:00:00-0700",    # t0 can also be 1466179200
      "t1": "2016-06-17T17:00:00-0700",    # t1 can also be 1466208000
      "dimension": "src_address",
      "metric": "fwd_pkts",
      "filter": {"type": "eq", "field": "src_address", "value": "172.29.203.193"},  #optional
      "threshold": 5,
      "scopeName": "Default"
    }

クエリ本文は、次のキーを使用した JSON 本文で構成されます。

キー

t0

フローの開始時刻 (エポックまたは ISO 8601)

t1

フローの終了時刻 (エポックまたは ISO 8601)

filter

クエリ フィルタ。フィルタが空 (例: {})、またはフィルタが存在しない (オプション) 場合、topN クエリはすべてのフロー エントリに適用されます。

scope-name

範囲の完全な名前。クエリの実行対象が指定した範囲のみになります。

dimension

dimension は、グループ化で使用するフィールドです。

metric

metric は dimension の値の合計数です。

threshold

threshold は TopN の「N」です。

応答オブジェクト:

キー

result

上位 N エントリの配列

サンプル python コード


  req_payload = {
      "t0": "2017-06-07T08:20:00-07:00",
      "t1": "2017-06-07T14:20:00-07:00",
      "dimension": "src_address",
      "metric": "fwd_pkts",
      "filter": {"type": "ne", "field": "src_address", "value": "172.29.203.193"},
      "threshold": 5,
      "scopeName": "Default"
  }
  resp = rc.post('/flowsearch/topn',
                 json_body=json.dumps(req_payload))
  print resp.status_code
  if resp.status_code == 200:
     parsed_resp = json.loads(resp.content)
     print json.dumps(parsed_resp)

サンプル応答


  [
    { "result": [
      {"src_address": "172.31.239.163", "fwd_pkts": 23104},
      {"src_address": "172.31.239.162", "fwd_pkts": 22410},
      {"src_address": "172.31.239.166", "fwd_pkts": 16185},
      {"src_address": "172.31.239.168", "fwd_pkts": 15197},
      {"src_address": "172.31.239.169", "fwd_pkts": 15116}
      ]
    }
  ]

フローカウント

このエンドポイントは、指定された基準に一致するフロー観測の数を返します。

POST/openapi/v1/flowsearch/count

パラメータ:

要求の本文は、JSON 形式のクエリである必要があります。次に、クエリ本文の例を示します。要求本文内のパラメータ t0 および t1 は、エポック形式または ISO 8601 形式で指定できます。この API は、1 日の最大時間範囲のクエリのみを許可します。また、scopeName パラメータを指定する必要があります。これは、検索を制限する範囲の完全な名前です。このパラメータが指定されていない場合、フロー観測カウント API 要求は、読み取りアクセス権を持つすべての範囲に適用されます。filter は、フロー検索フィルタのフィルタのものと同じです。


    {
      "t0": "2016-06-17T09:00:00-0700",    # t0 can also be 1466179200
      "t1": "2016-06-17T17:00:00-0700",    # t1 can also be 1466208000
      "filter": {"type": "eq", "field": "src_address", "value": "172.29.203.193"},
      "scopeName": "Default"
    }

クエリ本文は、次のキーを使用した JSON 本文で構成されます。

キー

t0

フローの開始時刻(エポックまたは ISO 8601)

t1

フローの終了時刻(エポックまたは ISO 8601)

filter

クエリ フィルタ。フィルタが空(例: {})の場合、クエリはすべてのフローに一致します。

scope-name

範囲の完全な名前。クエリの実行対象が指定した範囲のみになります。

応答オブジェクト:

キー

count

フロー検索条件に一致するフロー観測の数。

サンプル python コード


    req_payload = {
          "t0": "2017-07-20T08:20:00-07:00",
          "t1": "2017-07-20T10:20:00-07:00",
          "scopeName": "Tetration",
          "filter": {
                      "type": "eq",
                      "field": "dst_port",
                      "value": "5642"
              }
    }
    resp = rc.post('/flowsearch/count',
                   json_body=json.dumps(req_payload))
    print resp.status_code
    if resp.status_code == 200:
       parsed_resp = json.loads(resp.content)
       print json.dumps(parsed_resp)

サンプル応答


    {"count":508767}

インベントリ

インベントリ検索 API は、インベントリ検索で説明されているのと同様の機能を提供します。これらの一連の API には、API キーに関連付けられている flow_inventory_query 機能が必要です。

インベントリの寸法のクエリ

このエンドポイントは、インベントリ検索クエリに対して検索条件 (またはフィルタ) を指定できるインベントリ カラムのリストを返します。

GET/openapi/v1/inventory/search/dimensions

インベントリ検索

このエンドポイントは、指定された条件に一致するインベントリ項目のリストを返します。

POST/openapi/v1/inventory/search

フィルタ条件で指定できるカラムのリストは、/openapi/v1/inventory/ search/dimensions API を使用して取得できます。

パラメータ:

名前

タイプ

説明

filter

JSON

フィルタ クエリ。

scope-name

string

(オプション) 結果を制限する範囲の名前。

limit

integer

(オプション)返される結果の最大数。

offset

integer

(オプション) 次のページを取得する以前の要求からのオフセット。

要求の本文は、JSON 形式のクエリである必要があります。次に、クエリ本文の例を示します。


    {
        "filter": {
            "type": "contains",
            "field": "hostname",
            "value": "collector"
        },
        "scopeName": "Default:Production:Web",  // optional
        "limit": 100,
        "offset": "<offset-object>"               // optional
    }

サポートされているさまざまなタイプのフィルタを取得するには、フィルタ を参照してください。

クエリ本文は、次のキーを使用した JSON 本文で構成されます。

キー

filter

クエリ フィルタ。フィルタが空 (例: {}) の場合、クエリはすべてのインベントリ項目に一致します。

scope-name

クエリが制限される範囲の完全な名前 (オプション)

寸法

インベントリ検索 API の結果で返される寸法名のリスト。これは省略可能なパラメータです。指定しない場合、結果として使用可能なすべての寸法が返されます。このオプションは、発信者が残りの寸法を気にしない場合に使用可能な寸法のサブセットを指定するときに役立ちます。

制限

応答項目の制限数(オプション)

offset

前の応答から受信したオフセットオブジェクト(オプション)

応答

この応答は、本文の JSON オブジェクトで、次のプロパティがあります。

名前

タイプ

説明

offset

integer

結果の次のページに渡される応答オフセット。

results

オブジェクトの配列

結果のリスト。

応答には、ページ分割された応答の offset フィールドが含まれる場合があります。ユーザーは、次の一連の結果を取得するために、後続の要求で同じオフセットを指定する必要があります。

サンプル python コード


  req_payload = {
    "scopeName": "Tetration", # optional
    "limit": 2,
    "filter": {"type": "and",
       "filters": [
          {"type": "eq", "field": "vrf_name", "value": "Tetration"},
          {"type": "subnet", "field": "ip", "value": "1.1.1.0/24"},
          {"type": "contains", "field": "hostname", "value": "collector"}
       ]
    }
  }

  resp = restclient.post('/inventory/search', json_body=json.dumps(req_payload))
  print resp.status_code
  if resp.status_code == 200:
     parsed_resp = json.loads(resp.content)
     print json.dumps(parsed_resp, indent=4, sort_keys=True)

インベントリ統計情報

このエンドポイントは、インベントリ項目の統計情報を返します。

GET /openapi/v1/inventory/{id}/stats?t0=<t0>&t1=<t1>&td=<td>

表 6.

パス パラメータ

説明

id

Inventory item id as {ip}-{vrf_id} such as 1.1.1.1-123

クエリー パラメータ

説明

t0

エポック時間の統計情報の開始時刻

t1

エポック時間の統計情報の終了時刻

td

統計情報集約の粒度。整数で秒数を指定します。「分」、「時間」、「日」などの文字列をパスできます。

サンプル python コード


  resp = restclient.get('/inventory/1.1.1.1-123/stats?t0=1483228800&t1=1485907200&td=day')

インベントリ カウント

このエンドポイントは、指定された条件に一致するインベントリ項目のリストを返します。

POST/openapi/v1/inventory/count

フィルタ条件で指定できるカラムのリストは、/openapi/v1/inventory/ search/dimensions API を使用して取得できます。

パラメータ:

名前

タイプ

説明

filter

JSON

フィルタ クエリ。

scope-name

string

(オプション) 結果を制限する範囲の名前。

要求の本文は、JSON 形式のクエリである必要があります。次に、クエリ本文の例を示します。


    {
        "filter": {
            "type": "and",
            "filters": [
                {
                    "type": "contains",
                    "field": "hostname",
                    "value": "prod"
                },
                {
                    "type": "subnet",
                    "field": "ip"
                    "value": "6.6.6.0/24"
                }
            ]
        },
        "scopeName": "Default:Production:Web",  # optional
    }

応答

この応答は、本文の JSON オブジェクトで、次のプロパティがあります。

表 7.

キー

count

フィルタ条件に一致するインベントリ項目の数

サンプル python コード


  req_payload = {
    "scopeName": "Tetration", # optional
    "filter": {"type": "and",
       "filters": [
          {"type": "eq", "field": "vrf_name", "value": "Tetration"},
          {"type": "subnet", "field": "ip", "value": "1.1.1.0/24"},
          {"type": "contains", "field": "hostname", "value": "collector"}
       ]
    }
  }

  resp = restclient.post('/inventory/count', json_body=json.dumps(req_payload))
  print resp.status_code
  if resp.status_code == 200:
     parsed_resp = json.loads(resp.content)
     print json.dumps(parsed_resp, indent=4, sort_keys=True)

インベントリの脆弱性

このエンドポイントは、脆弱なワークロードに関連付けられた IP アドレスに対応する CVE を返します。

この API は、ルート範囲への最小限の読み取りアクセス権を持つユーザーのみが使用できます。

POST /openapi/v1/inventory/cves/{rootScopeID}

パラメータ:

名前

タイプ

説明

ips

文字列のリスト

CVE 情報を取得する IP のリスト。

要求の本文は、JSON 形式のクエリである必要があります。次に、クエリ本文の例を示します。


    {
        "ips": [
            "10.18.187.72",
            "10.18.187.73"
        ]
    }

応答

この応答は、本文の JSON オブジェクトの配列で、次のプロパティが含まれます。

名前

タイプ

説明

ip

文字列

IP アドレス

cve_ids

文字列のリスト

IP アドレスを持つインベントリの CVE ID のリスト。

サンプル python コード


  root_scope_id = "5fa0d242497d4f7d968c669b"
  req_payload = {
    "ips":["10.18.187.72", "10.18.187.73"]
  }

  resp = restclient.post('/inventory/cves/' + root_scope_id, json_body=json.dumps(req_payload))
  print resp.status_code
  if resp.status_code == 200:
     parsed_resp = json.loads(resp.content)
     print json.dumps(parsed_resp, indent=4, sort_keys=True)

悪意のある IP アドレスの取得

エンドポイントは、悪意のある IP アドレスに関する情報を返します。この API は、flow_inventory_query 機能を備えた API キーで使用できます。

GET /openapi/v1/malicious_ips

要求 URL には、次のパラメータが含まれています。

パス パラメータ

説明

offset

応答を返す前にスキップするレコードの数。デフォルトは 0 で、最大許容数は 100000 です。

制限

返されるレコードの数。デフォルトは 50 で、最大許容数は 100000 です。

ワークロード

ワークロード API は、ワークロードプロファイル」ページのコンテンツへの、プログラムによるアクセスを提供します。これらの一連の API には、API キーに関連付けられている sensor_management or flow_inventory_query 機能が必要です。

ワークロードの詳細

このエンドポイントは、特定のワークロードの指定されたエージェント UUID を返します。

GET /openapi/v1/workload/{uuid}

パス パラメータ

説明

uuid

エージェント UUID

応答

応答は、指定された UUID に関連付けられたワークロードオブジェクトです。ワークロードオブジェクトの属性スキーマを以下に示します。

表 8.

属性

タイプ

説明

agent_type

整数

列挙型のエージェントタイプ

agent_type_str

string

プレーンテキストのエージェントタイプ

auto_upgrade_opt_out

boolean

true の場合、エージェントはクラスタのアップグレード時に自動的にアップグレードされません。

cpu_quota_mode

integer

CPU クォータ制御

cpu_quota_us

integer

CPU クォータ使用率

current_sw_version

string

ワークロードで実行されているエージェントソフトウェアのバージョン

data_plane_disabled

boolean

true の場合、フローテレメトリデータはエージェントからクラスタにエクスポートされません。

desired_sw_version

string

ワークロードでの実行を意図したエージェントソフトウェアのバージョン

enable_cache_sidechannel

boolean

true の場合、サイドチャネル攻撃の検出が有効になります。

enable_forensics

boolean

true の場合、フォレンジックが有効になります。

enable_meltdown

boolean

true の場合、メルトダウンエクスプロイト検出が有効になります。

enable_pid_lookup

boolean

true の場合、プロセスルックアップが有効になります。

forensics_cpu_quota_mode

integer

フォレンジック CPU クォータ制御

forensics_cpu_quota_us

integer

フォレンジッククォータの使用状況

forensics_mem_quota_bytes

integer

フォレンジック メモリ クォータ(バイト単位)

host_name

string

ワークロードのホスト名

interfaces

アレイ

インターフェイス オブジェクトの配列

kernel_version

string

カーネル バージョン(Kernel version)

last_config_fetch_at

integer

最終設定がフェッチされた日時

last_software_update_at

integer

最終ソフトウェアは、エージェントが現在のバージョンを報告したときのタイムスタンプです。

max_rss_limit

integer

最大メモリ制限

platform

string

ワークロードのプラットフォーム

uuid

string

エージェントの一意の ID

windows_enforcement_mode

string

Windows 強制モードの種類。WAF(Windows Advanced Firewall)または WFP(Windows Filtering Platform)

サンプル python コード


  agent_uuid = 'aa28b304f5c79b2f22d87a5af936f4a8fa555894'
  resp = restclient.get('/workload/%s' % (agent_uuid))

ワークロードの統計情報

このエンドポイントは、ワークロードの統計情報を返します。

GET /openapi/v1/workload/{uuid}/stats?t0=<t0>&t1=<t1>&td=<td>

パス パラメータ

説明

uuid

エージェント UUID

クエリ URL には次のパラメータが含まれています

クエリー パラメータ

説明

t0

エポック時間の統計情報の開始時刻

t1

エポック時間の統計情報の終了時刻終了時刻は開始時刻を 1 日以上超えることができません。

td

統計情報集約の粒度。整数で秒数を指定します。「分」、「時間」、「日」などの文字列をパスできます。

応答

この応答は、本文の JSON オブジェクトで、次のプロパティがあります。

名前

タイプ

説明

timestamp

string

メトリックが収集された時刻(エポックまたは ISO 8601)

results

オブジェクト

メトリック

メトリックは、次のプロパティを持つ JSON オブジェクトです

名前

タイプ

説明

flow_count

integer

フロー数。

rx_byte_count

integer

受信バイト数。

rx_packet_count

integer

受信パケット数。

tx_byte_count

integer

送信バイト数。

tx_packet_count

integer

送信パケット数。

サンプル python コード


  agent_uuid = 'aa28b304f5c79b2f22d87a5af936f4a8fa555894'
  td = 15 * 60 # 15 minutes
  resp = restclient.get('/workload/%s/stats?t0=1483228800&t1=1485907200&td=%d' % (agent_uuid, td))

  # This code queries workload statistics for a week
  t0 = 1483228800
  for _ in range(7):
    t1 = t0 + 24 * 60 * 60
    resp = restclient.get('/workload/%s/stats?t0=%d&t1=%d&td=day' % (agent_uuid, t0, t1))
    t0 = t1

インストールされたソフトウェアパッケージ

このエンドポイントは、ワークロードにインストールされているパッケージのリストを返します。

GET /openapi/v1/workload/{uuid}/packages

パス パラメータ

説明

uuid

エージェント UUID

応答

応答は、パッケージ JSON オブジェクトの配列です。パッケージオブジェクトのスキーマは次のとおりです。

属性

タイプ

説明

アーキテクチャ

string

パッケージのアーキテクチャ

name

文字列

パッケージの名前

パブリッシャ

string

パッケージの発行元

version

string

パッケージのバージョン

サンプル python コード


  agent_uuid = 'aa28b304f5c79b2f22d87a5af936f4a8fa555894'
  resp = restclient.get('/workload/%s/packages' % (agent_uuid))

ワークロードの脆弱性

このエンドポイントは、ワークロードで観察された脆弱性のリストを返します。

GET /openapi/v1/workload/{uuid}/vulnerabilities

脆弱性オブジェクトは、次のキーを使用した JSON 本文で構成されます。

パス パラメータ

説明

uuid

エージェント UUID

応答

応答は、脆弱性 JSON オブジェクトの配列です。脆弱性オブジェクトのスキーマは次のとおりです。

属性

タイプ

説明

cve_id

string

Common Vulnerability Exposure の ID

package_infos

アレイ

パッケージ情報オブジェクトの配列

v2_score

float

CVSS 2 スコア

v2_access_complexity

string

CVSS V2 アクセスの複雑さ

v2_access_vector

string

CVSS V2 アクセスベクトル

v2_authentication

string

CVSS V2 認証

v2_availability_impact

string

CVSS V2 可用性への影響

v2_confidentiality_impact

string

CVSS V2 機密性への影響

v2_integrity_impact

string

CVSS V2 完全性への影響

v2_severity

string

CVSS V2 重大度

v3_score

float

CVSS V3 スコア

v3_attack_complexity

string

CVSS V3 攻撃の複雑さ

v3_attack_vector

string

CVSS V3 攻撃ベクトル

v3_availability_impact

string

CVSS V3 可用性への影響

v3_base_severity

string

CVSS V3 基本重大度

v3_confidentiality_impact

string

CVSS V2 機密性への影響

v3_integrity_impact

string

CVSS V3 完全性への影響

v3_privileges_required

string

必要な CVSS V3 権限

v3_scope

string

CVSS V3 範囲

v3_user_interaction

string

CVSS V3 ユーザーの操作

cvm_score

float

Cisco Security Risk Score

cvm_severity

string

Cisco Security Risk Score 重大度

cvm_easily_exploitable

bool

Cisco Security Risk Score エクスプロイトされやすい脆弱性

cvm_malware_exploitable

bool

Cisco Security Risk Score エクスプロイトされやすいマルウェア

cvm_active_internet_breach

bool

Cisco Security Risk Score アクティブなインターネット侵害

cvm_popular_target

bool

Cisco Security Risk Score 狙われやすいターゲット

cvm_predicted_exploitable

bool

Cisco Security Risk Score エクスプロイト可能と予測

cvm_fix_available

bool

Cisco Security Risk Score 修正が利用可能

サンプル python コード


  agent_uuid = 'aa28b304f5c79b2f22d87a5af936f4a8fa555894'
  resp = restclient.get('/workload/%s/vulnerabilities' % (agent_uuid))

集約されたワークロード脆弱性の概要

このエンドポイントは、ワークロードで観察された脆弱性の集約された統計を返します。

POST /openapi/v1/workloads/cve/aggregated_stats

脆弱性オブジェクトは、次のキーを使用した JSON 本文で構成されます。

パス パラメータ

説明

uuid

ホスト UUID

応答

応答は、影響を受けるワークロードと CVE のプロセススナップショットの概要です。

属性

タイプ

説明

host_uuid

string

脆弱性の CVE データを取得するエージェント ID またはワークロード ID のリスト

app_scope_id

string

JSON オブジェクト定義を使用する必要な CVE の範囲

ips

array of strings

CVE 情報を取得する IP のリスト。

os

string

ホスト オペレーティング システムのリスト

cve_infos

アレイ

CVE 情報の配列

表 9. CVE 情報の構造

属性

タイプ

説明

cve_id

string

IP アドレスがある CVE ID のリスト

v2_score

number

float64

CVSS スコア

v2_severity

string

CVSS V2 重大度

v3_score

number

float64

CVSS V3 スコア

v3_base_severity

string

CVSS V3 基本重大度

cvm_score

number

float64

Cisco Security Risk Score

cvm_severity

string

Cisco Security Risk Score 重大度

サンプル python コード

payload = {
"app_scope_id" : "66051883497d4f52437ba1b3",
"host_uuids" : ["39852c5221c4be28cd7c5e9786ac671c2faef13c","902c0977918ef3bfbd43b23782cc2574192f8bcb"]
}
resp = restclient.post('/workloads/cve/aggregated_stats', json_body=json.dumps(payload))

ワークロードの長時間実行プロセス

このエンドポイントは、ワークロードで長時間実行されているプロセスのリストを返します。長時間実行プロセスは、稼働時間が 5 分以上のプロセスとして定義されます。

GET /openapi/v1/workload/{uuid}/process/list

パス パラメータ

説明

uuid

エージェント UUID

応答

応答は、プロセス JSON オブジェクトのリストです。

属性

タイプ

説明

cmd

string

プロセスのコマンド文字列

binary_hash

string

16 進数のプロセスバイナリの SHA256

ctime

long

使用中のプロセスバイナリの ctime

mtime

long

使用中のプロセスバイナリの mtime

exec_path

string

プロセスの実行パス

exit_usec

long

プロセスが使用中に終了した時刻

num_libs

integer

プロセスでロードされるライブラリの数

pid

integer

[プロセス ID(Process ID)]

ppid

integer

親プロセス ID

pkg_info_name

string

プロセスに関連付けられたパッケージの名前

pkg_info_version

string

プロセスに関連付けられたパッケージのバージョン

proc_state

string

プロセスの状態

uptime

long

使用中のプロセスの稼働時間

username

string

プロセスのユーザー名

resource_usage

アレイ

リソース使用状況の配列

オブジェクト

サンプル python コード


  agent_uuid = 'aa28b304f5c79b2f22d87a5af936f4a8fa555894'
  resp = restclient.get('/openapi/v1/workload/%s/process/list' % (agent_uuid))

ワークロード プロセス スナップショットのサマリー

このエンドポイントは、ワークロード プロセス スナップショットのサマリーを返します。プロセススナップショットには、特定の時間にワークロードによってキャプチャされたすべてのプロセスが含まれています。現在、最新のプロセススナップショットのコピーが 1 つ保持されています。エンドポイントは、将来の拡張を容易にするために、空のペイロードを持つ POST メソッドをサポートします。

POST /openapi/v1/workload/{uuid}/process/tree/ids

パス パラメータ

説明

uuid

エージェント UUID

応答

応答は、プロセススナップショットのサマリー JSON オブジェクトのリストです。

属性

タイプ

説明

sensor_uuid

string

エージェント UUID

handle

string

取得するプロセススナップショットへのハンドル

process_count

integer

スナップショットのプロセス数

ts_usec

integer

スナップショットがキャプチャされたときのタイムスタンプ

サンプル python コード


  agent_uuid = 'aa28b304f5c79b2f22d87a5af936f4a8fa555894'
  payload = {
  }
  resp = restclient.post('/openapi/v1/workload/%s/process/tree/ids' %
                        agent_uuid, json_body=json.dumps(payload))

ワークロード プロセス スナップショット

このエンドポイントは、ワークロードのプロセススナップショットを返します。プロセススナップショットには、特定の時間にワークロードによってキャプチャされたすべてのプロセスが含まれています。現在、最新のプロセススナップショットのコピーが 1 つ保持されています。このエンドポイントは、ワークロード プロセス スナップショットのサマリーエンドポイントと一緒に使用する必要があります。

POST /openapi/v1/workload/{uuid}/process/tree/details

パス パラメータ

説明

uuid

エージェント UUID

ペイロードフィールド

タイプ

説明

handle

string

取得するプロセススナップショットへのハンドル

応答

応答は、JSON でのスナップショットに属するプロセスのリストです。

属性

タイプ

説明

command-string

string

トークン化されたコマンド文字列

command_string_raw

string

raw コマンド文字列

binary_hash

string

16 進数のプロセスバイナリの SHA256

ctime

long

使用中のプロセスバイナリの ctime

mtime

long

使用中のプロセスバイナリの mtime

exec_path

string

プロセスの実行パス

process_id

integer

[プロセス ID(Process ID)]

parent_process_id

integer

親プロセス ID

process_key

integer

プロセスの一意のキー

parent_process_key

integer

親プロセスへの一意のキー

pkg_info_name

string

プロセスに関連付けられたパッケージの名前

pkg_info_version

string

プロセスに関連付けられたパッケージのバージョン

proc_state

string

プロセスの状態

uptime

long

使用中のプロセスの稼働時間

username

string

プロセスのユーザー名

cve_ids

アレイ

CVEID オブジェクトの配列

サンプル python コード


  agent_uuid = 'aa28b304f5c79b2f22d87a5af936f4a8fa555894'
  payload = {
  }
  resp = restclient.post('/openapi/v1/workload/%s/process/tree/ids' %
              agent_uuid, json_body=json.dumps(payload))
  handle = json.loads(resp.text)['process_summary'][0]['summary'][0]['handle']
  payload = {
    "handle": handle,
  }
  resp = restclient.post('/openapi/v1/workload/%s/process/tree/details' %
              agent_uuid, json_body=json.dumps(payload))

JSON オブジェクトの定義:

インターフェイス

属性

タイプ

説明

ip

文字列

インターフェイスの IP アドレス

mac

string

インターフェイスの MAC アドレス

name

文字列

インターフェイスの名前

netmask

string

インターフェイスのネットマスク

pcap_opened

boolean

false の場合、インターフェイスのパケットキャプチャは有効化されていません

tags_scope_id

アレイ

インターフェイスに関連付けられた範囲 ID

vrf

string

[VRF名(VRF Name)]

vrf-id

integer

VRF ID

パッケージ情報

属性

タイプ

説明

name

文字列

パッケージ名

version

string

パッケージのバージョン

リソース使用状況

属性

タイプ

説明

cpu_usage

float

CPU 使用率

memory_usage_kb

integer

メモリ使用量

ts_usec

long

リソース使用量がキャプチャされたときのタイムスタンプ

CVE ID

属性

タイプ

説明

cve_id

string

cve ID

impact__cvss_v2__access_complexity

string

CVE アクセスの複雑度

impact__cvss_v2__access_vector

string

CVE access vector

デフォルトのポリシー生成設定

この一連の API は、ルート範囲のデフォルトのポリシー生成設定を読み取り、更新するために使用されます。

この API には、API キーに関連付けられている app_policy_management 機能が必要です。


(注)  


これらの API は、サイト管理者とルート範囲の所有者のみが使用できます。


ポリシー生成設定オブジェクト

属性

タイプ

説明

carry_over_policies

boolean

承認済みとしてマークされたポリシーは、可能な場合は維持されます

deep_policy_generation

boolean

指定された範囲の下に範囲ツリー全体のポリシーを作成します(指定された範囲内のすべてのメンバーを含む)

skip_clustering

boolean

クラスタリングをスキップするには true に設定します。既存の承認済みクラスタと範囲でポリシーが生成されます

auto_accept_policy_connectors

boolean

すべての発信ポリシーコネクタを自動承諾します

enable_exclusion_filter

boolean

入力フローデータに除外フィルタを適用します

enable_default_exclusion_filter

boolean

入力フローデータにデフォルトの除外フィルタを適用します

remove_redundant_policies

boolean

ディープポリシー生成中に冗長ポリシーを削除します

enable_service_discovery

boolean

false に設定すると、センサーによって報告された adm パイプラインのエフェメラルポート範囲に基づいて、ポリシー生成がスキップされます。現在は、Windows Active Directory のポリシーの生成に使用されています。

externals

array

外部依存関係オブジェクトの順序付きリスト

clustering_granularity

string

VERY_COARSE、COARSE、MEDIUM、FINE、VERY_FINE のいずれか

policy_compression

string

DISABLED、CONSERVATIVE、MODERATE、AGGRESSIVE、VERY_AGGRESSIVE のいずれか

port_generalization

string

DISABLED、CONSERVATIVE、MODERATE、AGGRESSIVE、VERY_AGGRESSIVE のいずれか

sim_policy

integer

1 => フロー、2 => プロセス、5 => 両方

外部依存関係オブジェクト

名前

タイプ

説明

id

string

フィルタの ID

filter_type

string

AppScope または UserInventoryFilter

incluce

array

有効にする user_filters boolean と、提供されたサービス インベントリ フィルタの順序付きリストの user_filter_list を持つオブジェクト

デフォルトのポリシー生成設定の取得

この API エンドポイントは、現在のデフォルトのポリシー生成構成を返します。オブジェクトが作成されていない場合は、空のオブジェクトが返されます。


(注)  


GET 要求を実行する前に、Set Default Policy Generation Config API を実行する必要があります。詳細については、「デフォルトのポリシー生成構成 API の設定」を参照してください。


GET /openapi/v1/app_scopes/default_adm_run_config

要求 URL には、次のパラメータが含まれています。

パラメータ名

タイプ

説明

root_app_scope_id

string

このデフォルト構成が適用されるルート範囲の固有識別子

応答オブジェクト:現在のデフォルトのポリシー生成設定を返します。オブジェクトが作成されていない場合は、空のオブジェクトを返します。

デフォルトのポリシー生成設定の設定

この API エンドポイントは、デフォルトのポリシー生成構成を設定します。

PUT /openapi/v1/app_scopes/default_adm_run_config

下記のポリシー生成構成オブジェクトリストの値に加えて、次のパラメータがあります。

パラメータ名

タイプ

説明

root_app_scope_id

string

このデフォルト構成が適用されるルート範囲の固有識別子

応答オブジェクトは、デフォルトのポリシー生成構成オブジェクトを返します。

サンプル python コード

req_payload = {
        "policy_discovery_config": {
            "carry_over_policies": False,
            "deep_policy_generation": False,
            "skip_clustering": False, 
            "auto_accept_policy_connectors": False,
            "policy_compression": 2, # numbers 0-4, 2 is MODERATE
            "enable_service_discovery": True,
            "skip_clustering": False, 
            "port_generalization": 2, # numbers 0-4, 2 is MODERATE
            "clustering_granularity": 2, # numbers 0-4, 2 is MEDIUM
            "root_app_scope_id": root_scope_id # Include the root_scope_id here
            # Additional configuration can be added here as needed
            }
        }
        resp = restclient.put('/openapi/v1/app_scopes/default_adm_run_config?root_app_scope_id={root_app_scope_id}', json_body=json.dumps(req_payload))

フォレンジックインテント

このソフトウェアエージェント API は、フォレンジックインテントの管理に関連付けられています。

フォレンジックインテントは、フォレンジックプロファイルを適用先のエージェントのグループにリンクします。エージェントのグループは、インベントリフィルタを使用して定義します。

これらの API のセットには、API キーに関連付けられている sensor_management 機能が必要です。


(注)  


これらの API は、サイト管理者とルート範囲の所有者のみが使用できます。


フォレンジック インテント オブジェクト

属性

タイプ

説明

id

string

インテントの固有識別子

name

文字列

インテントの名前

inventory_filter_id

array

このインテントに関連付けられているインベントリフィルタの ID

forensic_config_profile_id

integer

このインテントに関連付けられているプロファイルの ID

created_At

integer

インテントが作成されたときの Unix タイムスタンプ

updated_at

integer

インテントが最後に更新されたときの Unix タイムスタンプ

フォレンジックインテントのリスト

このエンドポイントは、既存のすべてのフォレンジックプロファイルをリストします。

GET /openapi/v1/inventory_config/forensic_intents

パラメータ:(なし)

このエンドポイントは、フォレンジック インテント オブジェクトの概要の配列を返します。

単一のフォレンジックインテントの取得

GET /openapi/v1/inventory_config/forensic_intents/{intent_id}

パラメータ:

名前

タイプ

説明

intent_id

string

インテントの ID

フォレンジック インテント オブジェクトの詳細を返します。

フォレンジックインテントの作成

POST /openapi/v1/inventory_config/forensic_intents

パラメータ:

名前

タイプ

説明

name

文字列

インテントの名前

inventory_filter_id

string

このインテントに関連付けられているインベントリフィルタの ID

forensic_config_profile_id

string

このインテントに関連付けられているフォレンジックプロファイルの ID

フォレンジック インテント オブジェクトを返します。

フォレンジックインテントの更新

PUT /openapi/v1/inventory_config/forensic_intents/{intent_id}

パラメータ:

名前

タイプ

説明

intent_id

string

インテントの ID

name

文字列

インテントの名前

inventory_filter_id

string

このインテントに関連付けられているインベントリフィルタの ID

forensic_config_profile_id

string

このインテントに関連付けられているフォレンジックプロファイルの ID

フォレンジック インテント オブジェクトを返します。

フォレンジックインテントの削除

DELETE /openapi/v1/inventory_config/forensic_intents/{intent_id}

パラメータ:

名前

タイプ

説明

intent_id

string

インテントの ID

成功すると 200 を返します。

フォレンジックインテント順序

このソフトウェアエージェント API は、フォレンジックインテント順序の管理に関連付けられています。

フォレンジックプロファイルは、インテントを使用してエージェントに適用されます。インテントは、インベントリフィルタを使用してエージェントのグループを定義します。フィルタが重複している場合は、どれが適用されるかを把握する必要があります。インテントの優先順位を定義するために順序を使用します。

これらの API のセットには、API キーに関連付けられている 'sensor_management' 機能が必要です。


(注)  


これらの API は、サイト管理者とルート範囲の所有者のみが使用できます。


フォレンジックインテント順序オブジェクト

属性

タイプ

説明

version

string

現在の順序のバージョン

intents

array

順序内のインテントオブジェクトの名前

intent_ids

array

フォレンジックインテント ID の配列

現在のフォレンジックインテント順序の取得

このエンドポイントは、現在のフォレンジックインテント順序を返します。

GET /openapi/v1/inventory_config/forensic_orders

パラメータ:(なし)

このエンドポイントは、現在のフォレンジックインテント順序オブジェクトを返します。

フォレンジックインテント順序の作成

POST /openapi/v1/inventory_config/forensic_orders

パラメータ:

名前

タイプ

説明

version

string

現在の順序と一致する必要があります

intent_ids

array

インテント ID の配列

フォレンジックインテント順序オブジェクトを返します。

フォレンジックプロファイル

このソフトウェアエージェント API は、フォレンジックプロファイルの管理に関連付けられています。

フォレンジックプロファイルは、フォレンジックインテントを使用してエージェントのグループに適用できる、ルールのコレクションです。

これらの API のセットには、API キーに関連付けられている 'sensor_management' 機能が必要です。


(注)  


これらの API は、サイト管理者とルート範囲の所有者のみが使用できます。


フォレンジック プロファイル オブジェクト

属性

タイプ

説明

id

string

プロファイルの固有識別子

name

文字列

プロファイルの名前

forensic_rules

array

プロファイルに関連付けられたルールの配列

created_At

integer

プロファイルが作成されたときの Unix タイムスタンプ

updated_at

integer

プロファイルが最後に更新されたときの Unix タイムスタンプ

is_readonly

boolean

プロファイルが読み取り専用かどうかを示します

root_app_scope_id

string

プロファイルが属するルート範囲の ID

フォレンジックプロファイルのリスト

このエンドポイントは、既存のすべてのフォレンジックプロファイルをリストします。

GET /openapi/v1/inventory_config/forensic_profiles

パラメータ:(なし)

このエンドポイントは、フォレンジック プロファイル オブジェクトの概要の配列を返します。

単一のフォレンジックプロファイルの取得

GET /openapi/v1/inventory_config/forensic_profiles/{profile_id}

パラメータ:

名前

タイプ

説明

profile_id

string

プロファイルの ID

フォレンジック プロファイル オブジェクトの詳細を返します。

フォレンジックプロファイルの作成

POST /openapi/v1/inventory_config/forensic_profiles

パラメータ:

名前

タイプ

説明

name

文字列

プロファイルの名前

root_app_scope_id

string

プロファイルが属するルート範囲の ID

forensic_rule_ids

array

このプロファイルに関連付けるフォレンジックルール ID の配列

フォレンジック プロファイル オブジェクトを返します。

フォレンジックプロファイルの更新

PUT /openapi/v1/inventory_config/forensic_profiles/{id}

パラメータ:

名前

タイプ

説明

profile_id

string

プロファイルの ID

name

文字列

プロファイルの名前

forensic_rule_ids

array

このプロファイルに関連付けるフォレンジックルール ID の配列

フォレンジック プロファイル オブジェクトを返します。

フォレンジックプロファイルの削除

DELETE /openapi/v1/inventory_config/forensic_profiles/{profile_id}

パラメータ:

名前

タイプ

説明

profile_id

string

プロファイルの ID

成功すると 200 を返します。

フォレンジックルール

このソフトウェアエージェント API は、フォレンジックルールの管理に関連付けられています。

フォレンジックルールはフォレンジックプロファイルで使用され、エージェントのグループに適用されます。

これらの API のセットには、API キーに関連付けられている 'sensor_management' 機能が必要です。


(注)  


これらの API は、サイト管理者とルート範囲の所有者のみが使用できます。


フォレンジック ルール オブジェクト

属性

タイプ

説明

id

string

ルールの固有識別子

name

文字列

ルールの名前

description

文字列

ルールの説明

type

string

PREDEFINED または USER_DEFINED

eval_group_type

string

AS_INDIVIDUAL または AS_GROUP

severity

string

IMMEDIATE_ACTION、CRITICAL、HIGH、MEDIUM、LOW のいずれか

actions

array

配列または ALERT または REPORT の文字列

created_At

integer

ルールが作成されたときの Unix タイムスタンプ

updated_at

integer

ルールが最後に更新されたときの Unix タイムスタンプ

フォレンジックルールのリスト

このエンドポイントは、既存のすべてのフォレンジックルールをリストします。

GET /openapi/v1/inventory_config/forensic_rules

パラメータ:(なし)

このエンドポイントは、フォレンジック ルール オブジェクトの概要の配列を返します。

単一のフォレンジックルールの取得

GET /openapi/v1/inventory_config/forensic_rules/{rule_id}

パラメータ:

名前

タイプ

説明

rule_id

string

ルールの ID

フォレンジック ルール オブジェクトの詳細を返します。

フォレンジックルールの作成

POST /openapi/v1/inventory_config/forensic_rules

パラメータ:

名前

タイプ

説明

root_app_scope_id

string

このルールが属するルート範囲の ID

name

文字列

ルールの名前

description

文字列

ルールの説明

eval_group_type

string

ルールのタイプ

severity

string

ルールの重大度

actions

array

配列または ALERT または REPORT の文字列

clause

string

ルールのクエリ句

フォレンジック ルール オブジェクトを返します。

フォレンジックルールの更新

PUT /openapi/v1/inventory_config/forensic_rules/{rule_id}

パラメータ:

名前

タイプ

説明

rule_id

string

ルールの ID

name

文字列

ルールの名前

description

文字列

ルールの説明

eval_group_type

string

ルールのタイプ

severity

string

ルールの重大度

actions

array

配列または ALERT または REPORT の文字列

clause

string

ルールのクエリ句

フォレンジック ルール オブジェクトを返します。

フォレンジックルールの削除

DELETE /openapi/v1/inventory_config/forensic_rules/{rule_id}

パラメータ:

名前

タイプ

説明

rule_id

string

ルールの ID

成功すると 200 を返します。

施行

ポリシーの適用は、生成されたポリシーがワークスペースに関連付けられた範囲内でアセットにプッシュされ、新しいファイアウォールルールが書き込まれる機能です。この一連の API には、API キーに関連付けられている app_policy_management 機能が必要です。

詳細については、「ポリシーの適用」を参照してください。

エージェント ネットワーク ポリシーの設定

このエンドポイントは、エージェント ID に従ってエージェントオブジェクトを返します。これは、ネットワーク ポリシー、エージェント設定、バージョンなどを取得するのに役立ちます。

GET /openapi/v1/enforcement/agents/{aid}/network_policy_config

パラメータ:

リクエスト URL には次のパラメータが含まれています

名前

タイプ

説明

aid

string

ネットワーク ポリシー設定のエージェント UUID。

JSON クエリの本文には、次のキーが含まれています。

名前

タイプ

説明

include_filter_names

boolean

ネットワークポリシーにフィルタ名と ID を含めます。

inject_versions

boolean

ネットワークポリシーに ADM ワークスペースバージョンを含めます。

応答

このエンドポイントの応答は、 エージェント オブジェクトです。

具体的なポリシーの統計情報

このエンドポイントは、エージェント ID と具体的なポリシー ID を指定して、具体的なポリシーの統計情報を返します。エンドポイントは、 Timeseries 具体的ポリシー結果オブジェクトの配列を返します。

GET /openapi/v1/enforcement/agents/{aid}/concrete_policies/{cid}/stats?t0=<t0>&t1=<t1> ˓→&td=<td>

パラメータ:

リクエスト URL には次のパラメータが含まれています

名前

タイプ

説明

aid

string

統計情報のエージェント UUID

CID

string

統計情報の具体的ポリシー UUID。

JSON クエリの本文には、次のキーが含まれています。

表 10.

名前

タイプ

説明

t0

integer

エポック時間の統計情報の開始時刻

t1

integer

エポック時間の統計情報の終了時刻

td

整数または

string

統計情報集約の粒度。整数で秒数を指定します。「分」、「時間」、「日」などの文字列をパスできます。

JSON オブジェクトの定義:

エージェント

属性

タイプ

説明

agent_uuid

string

エージェントの UUID。

agent_config

オブジェクト

エージェント構成

agent_config_status

オブジェクト

エージェント構成ステータス

desired_network_policy_config

object

ネットワークポリシー構成

provisioned_network_policy_config

オブジェクト

プロビジョニングされたネットワークポリシー構成

provisioned_state_update_timestamp

integer

エージェントが上記のプロビジョニングされたポリシーを確認したときの秒単位のエポックタイムスタンプ。

desired_policy_update_timestamp

integer

desired_network_policy_config が生成されたときの秒単位のエポックタイムスタンプ。

agent_info

オブジェクト

エージェント情報

skipped

boolean

具体的ポリシーの生成がスキップされた場合は true。

message

string

具体的ポリシーの生成がスキップされた理由。

エージェント設定

属性

タイプ

説明

agent_uuid

string

エージェントの UUID。

enforcement_enabled

boolean

エージェントで適用が有効になっていることを示す構成。

fail_mode

string

フェールモード。

version

number

エージェント構成のバージョン番号。

control_tet_rules_only

boolean

tet ルールのみの構成を制御します。

allow_broadcast

boolean

ブロードキャスト構成を許可します。

allow_multicast

boolean

マルチキャスト構成を許可します。

allow_link_local

boolean

リンクローカル構成を許可します。

enforcement_cpu_quota_mode

string

適用エージェントの CPU クォータモード。

enforcement_cpu_quota_us

string

適用エージェントの CPU クォータマイクロ秒。

enforcement_max_rss_limit

number

適用エージェントの最大 RSS 制限。

ネットワーク ポリシー設定

属性

タイプ

説明

version

string

バージョン番号。

network-policy

array

ネットワーク ポリシー オブジェクトの配列。

address_sets

array

IP セット機能のアドレスセットオブジェクトの配列。

container_network_policy

アレイ

ContainerNetworkPolicy オブジェクトの配列。

ネットワークポリシー

属性

タイプ

説明

priority

string

具体的ポリシーの優先順位。

enforcement_intent_id

string

適用インテント ID。

concrete_policy_id

string

具体的ポリシー ID。

match

オブジェクト

ポリシーの一致基準。これは廃止予定のフィールドです。

action

オブジェクト

ポリシー一致のアクション

workspace_id

string

ワークスペースの ID。

adm_data_set_id

string

ワークスペースの自動ポリシー検出データセット ID。

adm_data_set_version

string

ワークスペースの自動ポリシー検出データセットバージョン。params に inject_versions=true が渡された場合にのみ設定します。

cluster_edge_id

string

クラスタエッジ ID。

policy_intent_group_id

string

ポリシーインテントグループ ID。

match_set

オブジェクト

IP セットサポートの一致セットオブジェクト。一致または match_set の 1 つだけが存在します。

src_filter_id

string

ソースインベントリフィルタ ID。これは、params として include_filter_names=true が渡されたときに設定されます。

src_filter_name

string

ソースインベントリフィルタ名。これは、params として include_filter_names=true が渡されたときに設定されます。

dst_filter_id

string

宛先インベントリフィルタ ID。これは、params として include_filter_names=true が渡されたときに設定されます。

dst_filter_name

string

宛先インベントリフィルタ名。これは、params として include_filter_names=true が渡されたときに設定されます。

ContainerNetworkPolicy

属性

タイプ

説明

pod_id

string

ポッド ID。

network-policy

array

ネットワーク ポリシー オブジェクトの配列。

deployment

string

展開名。

service_endpoint

アレイ

サービスエンドポイント名のリスト。

一致

属性

タイプ

説明

src_addr

object

送信元アドレスのサブネットオブジェクト。

dst-addr

object

宛先アドレスのサブネットオブジェクト。

src_port_range_start

int

送信元ポートの範囲の開始。

src_port_range_end

int

送信元ポート範囲の終了。

dst_port_range_start

int

宛先ポート範囲の開始。

dst_port_range_end

int

宛先ポート範囲の終了。

ip_protocol

string

IP プロトコル。

address-family

string

IPv4 または IPv6 アドレス ファミリ。

direction

string

一致、入力、または出力の方向。

src_addr_range

object

送信元アドレスのアドレス範囲オブジェクト。

dst_add_range

object

宛先アドレスのアドレス範囲オブジェクト。

操作(Action)

属性

タイプ

説明

type

string

アクションタイプ。

一致セット

属性

タイプ

説明

src_set_id

string

ネットワークポリシー構成 address_sets 配列のアドレスセットオブジェクトの送信元セット ID。

.

dst_set_id

string

ネットワークポリシー構成 address_sets 配列のアドレスセットオブジェクトの宛先セット ID。

src_port

ar-

ray

送信元ポートのポート範囲オブジェクトの配列。

dst_ports

ar-

ray

宛先ポートのポート範囲オブジェクトの配列。

ip_protocol

string

IP プロトコル。

address-family

string

IPv4 または IPv6 アドレス ファミリ。

direction

string

一致、入力、または出力の方向。

アドレス セット

属性

タイプ

説明

set-Id

string

アドレスセット ID。

addr_ranges

array

アドレス範囲オブジェクトの配列。

subnets

array

サブネットオブジェクトの配列。

addr_family

string

IPv4 または IPv6 アドレス ファミリ。

サブネット

属性

タイプ

説明

ip_addr

string

[IP Address]。

prefix_length

int

サブネットのプレフィックス長。

アドレス範囲

属性

タイプ

説明

start_ip_addr

string

範囲の開始 IP アドレス。

end_ip_addr

string

範囲の終了 IP アドレス。

ポート範囲

属性

タイプ

説明

start_port

int

範囲の開始ポート。

end_port

int

範囲の終了ポート。

エージェント構成ステータス

属性

タイプ

説明

無効

boolean

エージェントで適用が無効になっていることを示す構成。

current_version

number

エージェントに適用されているエージェント構成の現在のバージョン。

high_seen_version

number

エージェントが受信したエージェント構成の最新バージョン。

プロビジョニングされたネットワークポリシー構成

属性

タイプ

説明

version

string

エージェントによってプロビジョニングされたネットワークポリシー構成バージョン。

error_reason

string

エージェントがポリシーを正常に適用した場合は CONFIG_SUCCESS、そうでない場合はエラーの理由。

無効

boolean

エージェントで適用が無効になっていることを示す構成。

current_version

number

エージェントに適用されている現在の NPC バージョン。

high_seen_version

number

エージェントが受信した NPC の最高バージョン。

policy_status

オブジェクト

すべてのネットワーク ポリシー ステータス。

エージェント情報

属性

タイプ

説明

agent_info_supported

boolean

エージェント機能で agent_info がサポートされているかどうか。

ipset_supported

boolean

エージェント機能で ipset がサポートされているかどうか。

具体的ポリシーの結果

属性

タイプ

説明

byte-count

int

具体的ポリシーヒットのバイト数。

pkt-count

int

具体的ポリシーヒットのパケット数。

Timeseries 具体的ポリシーの結果

属性

タイプ

説明

timestamp

string

結果集約のタイムスタンプ文字列。

result

object

具体的ポリシーの結果

クライアントサーバー構成

クライアントとサーバーの関係の検出は、Secure Workload のさまざまな機能の中核を成しており、グラウンドトゥルースを報告できるため、可能な場合は常にソフトウェアエージェントを使用することを推奨します。ネットワーク内のテレメトリ モニタリング ポイントでは、さまざまな状況により、特定のフローに関するすべてのパケットの監視は保証されません。たとえば、TCP フローにおける 2 つの単方向の半分がネットワークを通じて一意のパスを通過する可能性があるため、エラーのレベルにより常に影響を受けることを避けられません。

Cisco Secure Workload は、各フローに機械学習アルゴリズムを適用し、一貫性のないテレメトリが報告された場合に判断を提供する統計モデルを構築することにより、ユーザーの操作なしでこれらのエラーを検出して最小限に抑えようとします。ほとんどの場合、ユーザーはこの一連の API について気にする必要はありません。ただし、少数のケースでは、クライアントサーバーの検出アルゴリズムでフローの方向を正しく取得できません。たとえば、自動ポリシー検出など、フローの方向に依存する機能は、不要なポートを開くなどの望ましくない動作を示す場合があります。

既知のサーバーポートに関するヒントを Secure Workload アルゴリズムに提供するために使用できる一連の API が用意されています。この一連の API は、ルート範囲の所有権ロールを持つユーザーが使用できます。それらのユーザーの API キーには、app_policy_management 機能が関連付けられている必要があります。

クライアントサーバーの構成には 2 つのオプションがあります。

ホスト構成

ルート範囲内の IP アドレスの特定のサブセットに適用可能な既知のサーバーポートの構成

サーバーポート構成の追加

この API を使用して、特定のルート範囲の既知のサーバーポートに関するヒントを Secure Workload アルゴリズムに提供できます。ルート範囲に属する一連の IP アドレスの既知の TCP/UDP サーバーポートのリストを提供して、フロー内のクライアントサーバーの正しい方向を Secure Workload アルゴリズムに認識させることができます。

POST /openapi/v1/adm/{root_scope_id}/server_ports

パラメータ:要求 URL には、次のパラメータが含まれています。

名前

タイプ

説明

root_scope_id

string

ルート範囲の固有識別子。

さらに、この API への入力として提供されるテキストファイルには、次の形式のエンドポイントサーバーのポート構成が含まれています。

エンドポイントサーバーのポート構成

属性

タイプ

説明

ip_address

string

IP アドレス(IPv4 または IPv6 アドレス)。サブネットは許可されていません。

tcp_server_ports

int のリスト

ip_address に対応する既知の TCP サーバーポートのリスト。

udp_server_ports

int のリスト

ip_address に対応する既知の UDP サーバーポートのリスト。

サーバーポートの一括設定

属性

タイプ

説明

host_config

エンドポイントサーバーのポート構成オブジェクトのリスト。

既知のサーバーポートが関連付けられている IP アドレスの

リスト。

サンプル python コード


  # contents of below file:
  # {"host_config": [
  #    {"ip_address": "1.1.1.1",
  #     "tcp_server_ports": [100, 101, 102],
  #     "udp_server_ports": [103]
  #    },
  #    {"ip_address": "1.1.1.2",
  #     "tcp_server_ports": [200, 201, 202]
  #    }
  #  ]
  # }

  file_path = '/<path_to_file>/server_ports.txt'
  root_scope_id = '<root-scope-id>'
  restclient.upload(file_path,
                    '/adm/%s/server_ports' % root_scope_id,
                    timeout=200) # seconds

(注)  


上記の API は、バックエンドの既知のサーバーポート設定の完全な状態を上書きします。変更が必要な場合は、変更後に完全な構成を再度アップロードする必要があります。


サーバーポート構成の取得

この API は、ルート範囲のエンドポイントに対してアップロードされた既知のサーバーポートのリストを返します。

GET /openapi/v1/adm/{root_scope_id}/server_ports

パラメータ:要求 URL には、次のパラメータが含まれています。

名前

タイプ

説明

root_scope_id

string

ルート範囲の固有識別子。

応答オブジェクト:ref:ServerPortConfig オブジェクトのリスト。

サンプル python コード


  root_scope_id = '<root-scope-id>'
  restclient.get('/adm/%s/server_ports' % root_scope_id)

サーバーポート構成の削除

この API は、指定されたルート範囲のサーバーポート構成を削除します。

DELETE /openapi/v1/adm/{root_scope_id}/server_ports_config

パラメータ:要求 URL には、次のパラメータが含まれています。

名前

タイプ

説明

root_scope_id

string

ルート範囲の固有識別子。

応答オブジェクト:なし。

サンプル python コード


  root_scope_id = '<root-scope-id>'
  restclient.delete('/adm/%s/server_ports' % root_scope_id)

ポート設定

ルート範囲に属するすべての IP アドレスに適用可能な既知のサーバーポートの設定

サーバーポート設定のプッシュ

この API を使用して、特定のルート範囲における既知のサーバーポートに関するヒントを Secure Workload アルゴリズムに提供できます。ユーザーは、特定のルート範囲における既知の TCP/UDP サーバーポートのリストを提供して、フロー内のクライアントサーバーの正しい方向を Secure Workload アルゴリズムに把握させることができます。また、各サーバーポートに関連付けられたサービス名を指定するオプションも使用できます。

すべてのルート範囲に適用可能な既知のサービスのデフォルトリストもあります(以降、グローバルサービスと呼びます)。このリストは、ユーザーがいつでも上書きできます。

サービス コンフィギュレーション

サービスは(ポート、名前の)ペアとして定義されます。

属性

タイプ

説明

port

int

TCP/UDPサーバーポート番号

name

文字列

このポートに関連付けられたサービス名(オプション)

override_in_conflicts

boolean

競合が発生した場合にホストを強制的にプロバイダーにする(オプション)

サービスの一括設定

属性

サブ属性

タイプ

説明

server_ports_config

tcp_service_list

サービス設定オブジェクトのリスト

既知の TCP サービスのリスト

udp_service_list

サービス設定オブジェクトのリスト

既知の UDP サービスのリスト

Push services per root scope:

POST /openapi/v1/adm/{root_scope_id}/server_ports_config

サンプル python コード


    # contents of below file:
    #{"server_ports_config":
    #    {
    #        "tcp_service_list": [
    #                {
    #                        "port": 80,
    #                        "name" : "http"
    #
    #                },
    #                {
    #                        "port": 53,
    #                        "name" : "dns"
    #                },
    #                {
    #                        "port": 514,
    #                        "name" : "syslog",
    #                        "override_in_conflicts": true
    #                }
    #        ],
    #        "udp_service_list": [
    #                {
    #                        "port": 161
    #                },
    #                {
    #                        "port": 53,
    #                        "name": "dns"
    #                }
    #        ]
    #    }
    #}

    file_path = '/<path_to_file>/server_ports.json'

    # Updating service list for a given root scope
    #restclient.upload(file_path,
    #                  '/openapi/v1/adm/{root_scope_id}/server_ports_config',
    #                  timeout=200) # seconds

(注)  


上記の API は、バックエンドの既知のサーバーポート設定の完全な状態を上書きします。ユーザーが何らかの変更を行う場合は、変更後に完全な設定を再度アップロードする必要があります。


サーバーポート設定の取得

この API は、ユーザーがアップロードしたルート範囲内における既知のサーバーポートのリストを返します。応答は一括サービス設定です。


    Retrieve configured services per root scope:
        GET /openapi/v1/adm/{root_scope_id}/server_ports_config

    Retrieve configured global services:
        GET /openapi/v1/adm/server_ports_config

サーバーポート設定の削除

この API は、指定されたルート範囲のサーバーポート設定を削除します。


    Remove configured services per root scope:
        DELETE /openapi/v1/adm/{root_scope_id}/server_ports_config

ソフトウェアエージェント

エージェント API

ソフトウェアエージェント API は、Secure Workload ソフトウェアエージェントの管理に関連付けられています。この API のセットには、API キーに関連付けられている sensor_management 機能が必要です。以下の GET API は、API キーに関連付けられた flow_inventory_query 機能でも使用できます。

ソフトウェア エージェントの取得

この API エンドポイントは、ソフトウェアエージェントのリストを返します。各ソフトウェアエージェントには、エージェントタイプを示す 2 つのフィールドがあります。agent_type_str はプレーンテキストですが、agent_type は列挙型です。

GET/openapi/v1/sensors

要求 URL には、次のパラメータが含まれています。

パラメータ名

タイプ

説明

limit

integer

(オプション)返される結果の数を制限します。

offset

string

(オプション)ページ分割された要求を有効にします。応答がオフセットを返す場合、後続の要求では同じオフセットを使用して、次のページでより多くの結果を取得する必要があります。

応答オブジェクトは、次の属性を持つソフトウェアエージェントのリストを返します。

属性

タイプ

説明

agent_type

整数

エージェントのタイプ(列挙体)。

agent_type_str

string

エージェントのタイプ(プレーンテキスト)。

auto_upgrade_opt_out

boolean

True に設定すると、エージェントはクラスタのアップグレード中に自動アップグレードされません。

cpu_quota_mode

integer

ワークロードが使用できる CPU 処理時間の制限。

cpu_quota_us

integer

特定の期間にワークロードが使用できる最大 CPU 時間を制限します。

current_sw_version

string

ワークロードで実行されているエージェントソフトウェアのバージョン。

data_plane_disabled

boolean

True に設定すると、フローテレメトリデータはエージェントからクラスタにエクスポートされません。

desired_sw_version

string

ワークロードでの実行を意図したエージェントソフトウェアのバージョン。

enable_conversation_flows

boolean

True に設定すると、カンバセーションモードが有効になります。

enable_cache_sidechannel

boolean

True に設定すると、サイドチャネル攻撃の検出が有効になります。

enable_forensics

boolean

True に設定すると、フォレンジック機能が有効になります。

enable_meltdown

boolean

True に設定すると、メルトダウンエクスプロイト検出が有効になります。

enable_pid_lookup

boolean

True に設定すると、プロセスルックアップが有効になります。

forensics_cpu_quota_mode

integer

フォレンジック分析中にワークロードが使用できる CPU 処理時間の制限。

forensics_cpu_quota_us

integer

フォレンジック分析中に特定の期間にワークロードが使用できる最大 CPU 時間を制限します。

forensics_mem_quota_bytes

integer

ソフトウェアエージェントがフォレンジック分析のために収集できるメモリ量の制限(バイト単位)。

host_name

string

ソフトウェアエージェントがインストールされているホストに割り当てられている名前。

interfaces

アレイ

インターフェイス オブジェクトの配列。

kernel_version

string

ワークロードで実行されているカーネルバージョン。

last_config_fetch_at

integer

Cisco Secure Workload から最後の構成更新を受信した日時を示すタイムスタンプ。

last_software_update_at

integer

ソフトウェアが最後に更新された日時を示すタイムスタンプ。

max_rss_limit

integer

ワークロードが消費できる常駐セットサイズ(RSS)の最大量を制限します。

platform

string

ワークロードのプラットフォーム。

uuid

string

エージェントの一意の識別子。

windows_enforcement_mode

string

Windows 適用モードのタイプ

  • Windows Advanced Firewall(WAF)

  • Windows フィルタリング プラットフォーム(WFP)

current_appliance_id

文字列

Cisco Secure Workload で現在実行されているアプライアンスの固有識別子。

desirable_appliance_id

文字列

Cisco Secure Workload で実行されている目的のアプライアンスの固有識別子。

bios_uuid

文字列

ノードの BIOS UUID。

client_ip

文字列

ワークロードにアクセスする要求を開始するアプリケーションの IP アドレス。

os_display_label

文字列

ワークロードのオペレーティングシステムを示す表示ラベル。

arch

string

エージェントのアーキテクチャ。

enforcement_max_rss_limit

integer

Cisco Secure Workload が介入してメモリ制限を適用する前に、ワークロードが消費できるメモリ(RAM)の最大量を制限します。

enforcement_cpu_quota_mode

integer

ワークロードが使用できる CPU 処理時間の制限。これは後でシステム(Kubernetes スケジューラなど)によって適用されます。

enforcement_cpu_quota_us

integer

特定の期間にワークロードが使用できる最大 CPU 時間の制限。これは後でシステム(Kubernetes スケジューラなど)によって適用されます。

drop_ special_flow

boolean

特定のネットワーク トラフィック フローをブロックするオプション。

auto_removal_after_sec

integer

指定した秒数後の自動削除を有効にするオプション。

enable_process_visibility

boolean

プロセスの可視化を有効にするオプション。

enable_package_visibility

boolean

パッケージの可視性を有効にするオプション。

is_internal

boolean

ワークロードが内部ネットワークの一部であることを明確に示すラベル。

enable_service_protection

文字列

サービスの保護を有効にするオプション。

vrf-id

integer

VRF(Virtual Routing and Forwarding)インスタンスの識別子。

created_At

integer

エージェントが作成された日時を示すタイムスタンプ。

proxy_uuid

文字列

プロキシサーバーの固有識別子。

mac

string

イーサネットデバイスの MAC アドレス。

config_updated_at

integer

構成が更新された日時を示すタイムスタンプ。

enable_dpi

boolean

ディープ パケット インスペクション(DPI)を有効にするオプション。

auto_removed

boolean

分析または一時的な展開に使用されるリソースを自動的に削除できるようにするオプション。

vrf

string

VRF(Virtual Routing and Forwarding)インスタンスの名前。

last_config_fetch_at

integer

構成が最後に取得された日時を示すタイムスタンプ。

deleted_at

integer

エージェントが削除された日時を示すタイムスタンプ。

uninstalled_at

integer

エージェントがアンインストールされた日時を示すタイムスタンプ。

enforcement_enabled

boolean

ワークロードでのセキュリティポリシーの適用を可能にするオプション。

config_intent_id

文字列

ワークロードに展開されたソフトウェアエージェントの特定の構成インテントに関連付けられた一意の識別子。

config_profile_id

文字列

ワークロードに展開されたソフトウェアエージェントによって使用される構成プロファイルの固有識別子。

config_profile_name

文字列

構成プロファイルの名前。

forensics_export_signals

文字列

フォレンジックデータをエクスポートするシグナル。

desirable_agent_type

文字列

ワークロードに展開するソフトウェアエージェントのタイプ。

agent_anomaly_types

object

Cisco Secure Workload におけるエージェント異常のタイプ。

cmdb_labels

文字列

CMDB 構成項目に割り当てられたラベル。

insecure_cipher

boolean

既知の脆弱性があるアルゴリズム。

deprecated_tls

boolean

廃止される Transport Layer Security(TLS)バージョン。

flows_disk_quota_bytes

integer

ネットワークフローに割り当てられたディスク容量(バイト単位)。

flows_time_quota_sec

integer

ネットワークフローに割り当てられた時間(秒単位)。

pkg_upgr_exception

integer

Cisco Secure Workload 環境内でパッケージのアップグレードプロセス中に例外が発生しました。

unsupported_version

boolean

Cisco Secure Workload ソフトウェアエージェントまたは Cisco Secure Workload クラスタのバージョン。

sensor_cpu_quota_alert

boolean

ワークロードの CPU 使用率が定義されたクォータを超えるとトリガされるアラート。

enforcer_cpu_quota_alert

boolean

セキュリティポリシーの適用を担当するエンフォーサコンポーネントが、割り当てられた CPU クォータを超えるとトリガされるアラート。

forensic_cpu_quota_alert

boolean

ワークロードの CPU 使用率が定義されたクォータを超えるとトリガされるアラート。このクォータは後でフォレンジック分析中に使用されます。

sensor_mem_usage_alert

boolean

センサーのメモリ使用量のシステムによる監視によってトリガされるアラート。

enforcer_mem_usage_alert

boolean

エンフォーサコンポーネントのメモリ使用量が事前定義されたしきい値に達するとトリガされるアラート。

forensic_mem_usage_alert

boolean

メモリフォレンジック調査中に特定のメモリ使用パターンが検出されるとトリガされるアラート。

client_cert_validity_days

integer

クライアント証明書の有効日数。

force_disable_enforcement

boolean

トラブルシューティングの目的で、個々のワークロードまたは特定のアプリケーション、ワークスペース、または範囲への適用を無効にするオプション。

force_disable_enforcement_updated_at

integer

個々のワークロードまたは特定のアプリケーション、ワークスペース、範囲に対する適用が無効になった日時を示すタイムスタンプ。

last_pkg_served_at

integer

最後のパッケージが提供された日時を示すタイムスタンプ。

last_pkg_served

文字列

ワークロードで検出された、最後にインストールされたアプリケーション。

flow_rules

array

フロールールオブジェクトの配列。

flow_rules_updated_at

integer

フロールールが更新された日時を示すタイムスタンプ。

enable_user_reporting

boolean

ユーザーレポートを有効にするオプション。

ソフトウェアエージェントの取得

この API エンドポイントは、UUID が URI の一部であるソフトウェアエージェントの属性を返します。各ソフトウェアエージェントには、エージェントタイプを説明する 2 つのフィールドがあります。<agent_type_str> はプレーンテキストで、<agent_type> は列挙型です。

GET /openapi/v1/sensors/{uuid}

ソフトウェアエージェントの削除

この API エンドポイントは、UUID を指定してソフトウェアエージェントを廃止するために使用されます。

この API は注意して使用する必要があります。エージェントが削除されると、Secure Workload ダッシュボードに表示されなくなり、エージェントがアクティブな場合、Secure Workload ではエージェントからのフローエクスポートは許可されません。

DELETE /openapi/v1/sensors/{uuid}

インテントを使用したソフトウェア エージェントの設定

この API ワークフローは、以下に定義されているいくつかの REST エンドポイントを使用します。

インベントリ フィルタの作成

このエンドポイントは、ユーザーがソフトウェア エージェントを設定する、エージェント ホストに一致する基準を指定するために使用されます。

POST/openapi/v1/filters/inventories

パラメータ:

名前

タイプ

説明

app_scope_id

string

インベントリ フィルタに割り当てる範囲 ID。

name

文字列

インベントリ フィルタの名前。

query

json

エージェント ホストのフィルタまたは一致基準。

サンプル python コード


   # app_scope_id can be retrieved by /app_scopes API
   req_payload = {
      "app_scope_id": <app_scope_id>,
      "name": "sensor_config_inventory_filter",
      "query": {
         "type": "eq",
         "field": "ip",
         "value": <sensor_interface_ip>
      }
   }
   resp = restclient.post('/filters/inventories',
                  json_body=json.dumps(req_payload)))
   print resp.status_code
   # returned response will contain the created filter and it's ID.

ソフトウェア エージェント設定プロファイルの作成

このエンドポイントは、ソフトウェア エージェントのターゲット セットに適用する一連の設定オプションを指定するために使用されます。

POST/openapi/v1/inventory_config/profiles

次の設定オプションは、エージェント設定プロファイルの一部として指定できます。

  • allow_broadcast:ブロードキャスト トラフィックを許可/禁止するオプション(このオプションのデフォルト値は True です)。

  • allow_multicast:マルチキャストトラフィックを許可/禁止するオプション(このオプションのデフォルト値は True です)。

  • allow_link_local:リンクローカルトラフィックを許可/禁止するオプション(このオプションのデフォルト値は True です)。

  • auto_upgrade_opt_out:True の場合、エージェントは Secure Workload クラスタのアップグレード中に自動アップグレードされません。

  • data_plane_disabled:True の場合、エージェントは Cisco Secure Workload へのフローのレポートを停止します。

  • enable_forensics:ワークロードでのフォレンジックイベントの収集を有効にするオプション(結果的にエージェントはより多くの CPU を使用するようになります)。

  • enable_meltdown:ワークロードでの Meltdown エクスプロイト検出を有効にします(結果的にエージェントはより多くの CPU を使用するようになります)。

  • enable_pid_lookup: true の場合、エージェントはフローにプロセス情報を接続しようとします。(注) この設定オプションでは、エンド ホストでより多くの CPU が使用されます。

  • enforcement_disabled: 適用エージェントを実行しているホストで適用を無効にするために使用できます。

  • preserve_existing_rules: 既存の iptable ルールを保持するかどうかを指定するオプション。

  • windows_enforcement_mode:WAF(Windows Advanced Firewall)または WFP(Windows Filtering Platform)を使用するオプション(デフォルトのオプションは WAF)。

設定オプションの詳細については、「ソフトウェアエージェント設定」を参照してください。

サンプル python コード


  # Define profile to disable data_plane on agent
  req_payload = {
     "root_app_scope_id": <root_app_scope_id>,
     "data_plane_disabled": True,
     "name": "sensor_config_profile_1",
     "enable_pid_lookup": True,
     "enforcement_disabled": False
  }
  resp = restclient.post('/inventory_config/profiles',
                 json_body=json.dumps(req_payload))
  print resp.status_code
  # returned response will contain the created profile and it's ID.
  parsed_resp = json.loads(resp.content)

ソフトウェアエージェント設定プロファイルの取得

このエンドポイントは、ユーザーに表示されるソフトウェアエージェント設定プロファイルのリストを返します。

GET /openapi/v1/inventory_config/profiles

パラメータ:(なし)

特定のソフトウェアエージェント設定プロファイルの取得

このエンドポイントは、ソフトウェアエージェント設定プロファイルのインスタンスを返します。

GET /openapi/v1/inventory_config/profiles/{profile_id}

指定した ID に関連付けられているソフトウェアエージェント設定プロファイルオブジェクトを返します。

ソフトウェアエージェント設定プロファイルの更新

このエンドポイントは、ソフトウェアエージェント設定プロファイルを更新します。

GET /openapi/v1/inventory_config/profiles/{profile_id}

次の設定オプションは、エージェント設定プロファイルの一部として指定できます。

  • allow_broadcast:ブロードキャスト トラフィックを許可/禁止するオプション(このオプションのデフォルト値は True です)。

  • allow_multicast:マルチキャストトラフィックを許可/禁止するオプション(このオプションのデフォルト値は True です)。

  • allow_link_local:リンクローカルトラフィックを許可/禁止するオプション(このオプションのデフォルト値は True です)。

  • auto_upgrade_opt_out:True の場合、エージェントは Secure Workload クラスタのアップグレード中に自動アップグレードされません。

  • data_plane_disabled:True の場合、エージェントは Cisco Secure Workload へのフローのレポートを停止します。

  • enable_forensics:ワークロードでのフォレンジックイベントの収集を有効にするオプション(結果的にエージェントはより多くの CPU を使用するようになります)。

  • enable_meltdown:ワークロードでの Meltdown エクスプロイト検出を有効にします(結果的にエージェントはより多くの CPU を使用するようになります)。

  • enable_pid_lookup: true の場合、エージェントはフローにプロセス情報を接続しようとします。(注) この設定オプションでは、エンド ホストでより多くの CPU が使用されます。

  • enforcement_disabled: 適用エージェントを実行しているホストで適用を無効にするために使用できます。

  • preserve_existing_rules: 既存の iptable ルールを保持するかどうかを指定するオプション。

  • windows_enforcement_mode:WAF(Windows Advanced Firewall)または WFP(Windows Filtering Platform)を使用するオプション(デフォルトのオプションは WAF)。

設定オプションの詳細については、「ソフトウェアエージェント設定」を参照してください。

指定された ID に関連付けられている、変更されたソフトウェアエージェント設定プロファイルオブジェクトを返します。

ソフトウェアエージェント設定プロファイルの削除

このエンドポイントは、指定されたソフトウェアエージェント設定プロファイルを削除します。

DELETE /openapi/v1/inventory_config/profiles/{profile_id}

ソフトウェア エージェントの設定インテントの作成

このエンドポイントは、指定された一連のソフトウェア エージェントに一連の設定オプションを適用するインテントを指定するために使用されます。これにより、インテントが作成され、新しく作成されたインテントを順序に追加することによってインテントの順序が更新されます。

POST/openapi/v1/inventory_config/intents

サンプル python コード


  req_payload = {
    "inventory_config_profile_id": <>,
    "inventory_filter_id": <>
  }
  resp = restclient.post('/inventory_config/intents',
                 json_body=json.dumps(req_payload))
  print resp.status_code
  # returned response will contain the created intent object and it's ID.

インテントの順序の指定

このエンドポイントは、さまざまなソフトウェア エージェントの設定インテントの順序を指定するために使用されます。たとえば、2 つのインテントが存在する場合があります。一方は開発マシンのプロセス ID ルックアップを有効にし、他方は Windows マシンでのプロセス ID ルックアップを無効にします。最初のインテントの優先度が高い場合は、開発用の Windows マシンでのプロセス ID 検索が有効になります。注: デフォルトでは、インテントが作成されると、インテント順序リストの先頭に追加されます。このエンドポイントは、エンド ユーザーが既存のインテントの順序を変更する必要がある場合にのみ使用されます。

POST/openapi/v1/inventory_config/orders

サンプル python コード


  # Read the agent config intents ordered list
  resp = restclient.get('/inventory_config/orders')
  order_result_json = json.loads(resp.content)

  # Modify the list by prepending the new intent in the list
  order_rslt_json['intent_ids'].insert(0,<intent_id>)

  # Post the new ordering back to the server
  resp = restclient.post('/inventory_config/orders',
                 json_body=json.dumps(order_rslt_json))

エージェント設定インテントの削除

このエンドポイントは、特定のエージェント設定インテントを削除するために使用されます。

DELETE /openapi/v1/inventory_config/intents/{intent_id}

サンプル python コード


  intent_id = '588a51dcb5b30d0ee6da084a'
  resp = restclient.delete('/inventory_config/intents/%s' % intent_id)

インターフェイス構成インテント

VRF をエージェントに割り当てるために推奨される方法は、リモート VRF 構成設定を使用することです。まれなケースですが、エージェントホストに複数のインターフェイスがあり、異なる VRF を割り当てる必要がある場合、ユーザーはインターフェイス構成インテントを使用してインターフェイスに VRF を割り当てることができます。[管理(Manage)] > [エージェント(Agents)] に移動し、[設定(Configure)] タブをクリックします。

Inventory Config Intent オブジェクト

GET および POST メソッドは、inventory config intent JSON オブジェクト配列を返します。オブジェクトの属性については、以下で説明します。

属性

タイプ

説明

vrf-id

integer

VRF ID 整数

vrf_name

string

[VRF名(VRF Name)]

inventory_filter_id

string

インベントリフィルタ ID

inventory_filter

JSON

インベントリフィルタ。詳細については、OpenAPI > インベントリフィルタを参照してください。

インターフェイス構成インテントの取得

このエンドポイントは、ユーザーに表示されるインベントリ設定のリストを返します。

GET /openapi/v1/inventory_config/interface_intents

パラメータ:(なし)

インターフェイス構成インテントのリストの作成または更新

このエンドポイントは、 インターフェイス構成インテントのリストを作成または変更するために使用します。API は、インテントの順序付きリストを受け取ります。このリストからインテントを削除するには、ユーザーは既存のインテントリストを読み込み、変更し、変更したリストを書き戻す必要があります。

POST /openapi/v1/inventory_config/interface_intents

パラメータ:

名前

タイプ

説明

inventory_filter_id

string

インターフェイスに一致するインベントリフィルタ ID

vrf-id

integer

インターフェイスを割り当てる VRF ID

サンプル python コード


  req_payload = {
    "intents": [
      {"inventory_filter_id": <inventory_filter_id_1>, "vrf_id": <vrf_id_1>},
      {"inventory_filter_id": <inventory_filter_id_1>, "vrf_id": <vrf_id_2>}
    ]
  }
  resp = restclient.post('/inventory_config/interface_intents', json_body=json.dumps(req_payload))

NAT の背後にあるエージェントの VRF 設定

次の一連の API は、NAT ボックスの背後にあるエージェントに VRF を割り当てるポリシーを指定する場合に役立ちます。これらの API セットには、API キーに関連付けられている sensor_management 機能が必要であり、サイト管理ユーザーのみが使用できます。

NAT の背後にあるエージェントの VRF 設定ルールの一覧表示

このエンドポイントは、NAT の背後にあるエージェントに適用可能な VRF 設定ルールのリストを返します。

GET/openapi/v1/agentnatconfig

NAT の背後にあるエージェントに適用可能な新しい VRF 設定を作成します

このエンドポイントは、Secure Workload アプライアンスで認識される送信元 IP および送信元ポートに基づいて、ホストの VRF ラベル付け基準を指定するために使用されます。

POST/openapi/v1/agentnatconfig

パラメータ:

名前

タイプ

説明

src_subnet

string

送信元 IP が属することができるサブネット (CIDR 表記)。

src_port_range_start

整数

送信元ポート範囲の低バウンド (0-65535)。

src_port_range_end

整数

送信元ポート範囲の高バウンド (0-65535)。

vrf-id

integer

送信元アドレスとポートが上記で指定した範囲内に収まるエージェントのフローのラベル付けに使用される VRF ID。

サンプル python コード


    req_payload = {
        src_subnet: 10.1.1.0/24,          # src IP range for sensors
        src_port_range_start: 0,
        src_port_range_end: 65535,
        vrf_id: 676767                    # VRF ID to assign
    }

    resp = rc.post('/agentnatconfig', json_body=json.dumps(req_payload))
    print resp.status_code

既存の VRF 設定の削除

DELETE /openapi/v1/agentnatconfig/{nat_config_id}

Cisco Secure Workload ソフトウェアのダウンロード

Secure Workload ソフトウェアのダウンロード機能では、Secure Workload エージェントのソフトウェアパッケージをダウンロードする方法を提供します。これらの一連の API には、API キーに関連付けられている software_download 機能が必要です。この機能は、サイト管理者ユーザー、ルート範囲の所有者、およびエージェントのインストーラロールを持つユーザーのみが使用できます。

サポートされているプラットフォームを取得するための API

このエンドポイントは、サポートされているプラットフォームのリストを返します。

GET /openapi/v1/sw_assets/platforms

パラメータ:(なし)

応答オブジェクト:サポートされているプラットフォームのリストを返します。

サンプル python コード

以下のサンプルコードは、サポートされているすべてのプラットフォームを取得します。

resp = restclient.get('/sw_assets/platforms')
if resp.status_code == 200:
   parsed_resp = json.loads(resp.content)
   print json.dumps(parsed_resp)

サンプル応答

{"results": [{"platform": "OracleServer-6.3", "agent_type": "enforcer", "arch": "x86_64"}, {"platform": "MSWindows8Enterprise", "agent_type": "legacy_sensor", "arch": "x86_64"}]}

サポートされているソフトウェアバージョンを取得するための API

このエンドポイントは、指定された「agent_type」、「package_type」、「platform」、および「architecture」がサポートされているソフトウェアバージョンのリストを返します。

GET /openapi/v1/sw_assets/download?platform=<platform>&agent_type=<agent_type>&pkg_type=<pkg_type>&arch=<arch>&list_version=<list_version>&installation_id=<installer_id>

このとき、<agent_type>、<platform>、<arch> は、サポート対象のプラットフォームを取得するための API から得た結果のいずれかにすることができます。<pkg_type> と <agent_type> はオプションですが、少なくともどちらか 1 つを指定する必要があります。この API を有効にするには、<list_version> が「True」である必要があります。

パラメータ:要求 URL には、次のパラメータが含まれています。

名前

タイプ

説明

platform

string

プラットフォームを指定します。

agent_type

string

(オプション)エージェントの種類を指定します。

pkg_type

string

(オプション)パッケージ タイプを指定します。値は「sensor_w_cfg」または「sensor_bin_pkg」のいずれかになります。

arch

string

アーキテクチャを指定します。

list_version

string

ソフトウェアバージョンの検索を有効にするには、「True」に設定します。

応答オブジェクト:サポートされているソフトウェアバージョンのリストを返します。

サンプル python コード

resp = restclient.get('/sw_assets/download?platform=OracleServer-6.3&pkg_type=sensor_w_cfg&arch=x86_64&list_version=True')
if resp.status_code == 200:
   print resp.content
resp = restclient.get('/sw_assets/download?platform=OracleServer-6.3&pkg_type=sensor_w_cfg&arch=x86_64&list_version=True&installation_id=c1caf62038525fbcdf207e1c9a05d71595275147b50b45edc188604b75d9863f0c83ebe65c4890354bb0eb184eeb9bce5a98182e99cdafbada0b6bdb8c5bf5d17bf262ca20f9f010c3f9a81c0e8f6f6c0732f25e6c718b6b9042bba35457d3234b256693ba651a95d35e4434d630f5b031')
if resp.status_code == 200:
   print resp.content

サンプル応答

3.3.1.30.devel
3.3.1.31.devel

インストーラ ID を作成する API

このエンドポイントは、Cisco Secure Workload ソフトウェアをダウンロードするための API のインストーラ ID を作成します。

GET /openapi/v1/sw_assets/installation_id

応答オブジェクト:Cisco Secure Workload ソフトウェアをダウンロードするために API で使用できるインストーラ ID を返します。

サンプル python コード

resp = restclient.get('/sw_assets/installation_id')
if resp.status_code == 200:
   parsed_resp = json.loads(resp.content)
   print json.dumps(parsed_resp)

サンプル応答

"c1caf62038525fbcdf207e1c9a05d71595275147b50b45edc188604b75d9863f0c83ebe65c4890354bb0eb184eeb9bce5a98182e99cdafbada0b6bdb8c5bf5d17bf262ca20f9f010c3f9a81c0e8f6f6c0732f25e6c718b6b9042bba35457d3234b256693ba651a95d35e4434d630f5b031"

Secure Workload ソフトウェアをダウンロードするための API

このエンドポイントにより、クライアントは指定された「agent_type」、「package_type」、「platform」、「ar- chitecture」、および「sensor_version」のソフトウェアをダウンロードできます。

GET /openapi/v1/sw_assets/download?platform=<platform>&agent_type=<agent_type>&pkg_type=<pkg_type>&arch=<arch>&sensor_verion=<sensor_version>&installation_id=<installer_id>

このとき、<agent_type>、<platform>、<arch> は、サポート対象のプラットフォームを取得するための API から得た結果のいずれかにすることができます。<pkg_type> と <agent_type> はオプションですが、少なくともどちらか 1 つを指定する必要があります。<sensor_version> は、サポート対象のソフトウェアバージョンを取得するための API から得た結果のいずれかにできます。「sensor_version」が指定されていない場合は、最新のソフトウェアがダウンロードされます。

パラメータ:要求 URL には、次のパラメータが含まれています。

名前

タイプ

説明

platform

string

プラットフォームを指定します。

agent_type

string

(オプション)エージェントの種類を指定します。

pkg_type

string

(オプション)パッケージ タイプを指定します。値は「sensor_w_cfg」または「sensor_bin_pkg」のいずれかになります。

arch

string

アーキテクチャを指定します。

sensor_version

string

(オプション)ソフトウェアのバージョンを指定します。デフォルトは空の文字列です。

応答オブジェクト:指定されたパラメータの Secure Workload ソフトウェアを返します。

サンプル python コード

resp = restclient.download('<download_path>/<file_name>','/sw_assets/download?platform=OracleServer-6.3&pkg_type=sensor_w_cfg&arch=x86_64&sensor_version=3.3.1.30.devel&installation_id=c1caf62038525fbcdf207e1c9a05d71595275147b50b45edc188604b75d9863f0c83ebe65c4890354bb0eb184eeb9bce5a98182e99cdafbada0b6bdb8c5bf5d17bf262ca20f9f010c3f9a81c0e8f6f6c0732f25e6c718b6b9042bba35457d3234b256693ba651a95d35e4434d630f5b031'
if resp.status_code == 200:
   print 'file downloaded successfully'

Cisco Secure Workload エージェントのアップグレード

Secure Workload エージェントのアップグレード機能を使用すると、インストールされている Secure Workload エージェントを特定のバージョンにアップグレードできます。この機能はメタデータのみを更新し、実際のアップグレードは次のチェックイン時に行われます。 API には、API キーに関連付けられた software_download 機能が必要です。この機能は、サイト管理者ユーザー、ルート範囲の所有者、またはエージェントのインストーラロールを持つユーザーのみが使用できます。

エージェントを特定のバージョンにアップグレードするための API

このエンドポイントは、「UUID」が特定の「sensor_version」にアップグレードされると、エージェントをトリガーします。「sensor_version」が指定されていない場合は、最新バージョンが適用されます。この API ではダウングレード要求は続行されません。

POST /openapi/v1/sensors/{UUID}/upgrade?sensor_version=<sensor_version>

<sensor_version> は、「 サポートされているソフトウェアバージョンを取得するための API 」から取得した結果のいずれかです。

パラメータ:要求 URL には、次のパラメータが含まれています。

名前

タイプ

説明

sensor_version

string

(オプション)希望のバージョンを指定します。デフォルトでは最新バージョンが適用されます。

このアップグレード要求のステータスを返します。

サンプル python コード


  resp = restclient.post('/openapi/v1/sensors/{UUID}/upgrade?sensor_version=3.4.1.1.devel')
  if resp.status_code == 200:
    print 'agent upgrade was triggered successfully and in progress'
  elif resp.status_code == 304:
    print 'provided version is not newer than current version'
  elif resp.status_code == 400:
    print 'provided version is invalid'
  elif resp.status_code == 403:
    print 'user does not have required capability'
  elif resp.status_code == 404:
    print 'agent with {UUID} does not exist'

ユーザーがアップロードしたファイルハッシュ

ユーザーはファイルハッシュのリストを Secure Workload にアップロードして、それらのハッシュが良性かフラグ付きかを指定できます。Secure Workload はそれに応じて、それぞれのバイナリハッシュでプロセスにフラグを設定します。

この一連の API を使用して、ファイルハッシュのリストを Cisco Secure Workload にアップロードまたは削除できます。この API を呼び出すには、user_data_upload 機能で API キーを使用します。


(注)  


ルート範囲ごとに最大 100 万のファイルハッシュを持つことができます。良性ハッシュとフラグ付きハッシュについては、それぞれ 500000 のファイルハッシュを持つことができます。


次の API は、範囲所有者とサイト管理者が、「製品」アプライアンスの単一ルート範囲でファイルハッシュをアップロード、ダウンロード、および削除するために使用できます。

ユーザーファイルハッシュのアップロード

このエンドポイントは、Secure Workload アプライアンスのルート範囲のファイルハッシュを持つ CSV ファイルをアップロードする際に使用されます。列ヘッダーの HashTypeFileHash が CSV ファイルに表示されている必要があります。HashTypeSHA-1 または SHA-256 である必要があります。FileHash は空ではなく、40 文字で 16 進数の SHA1 形式または 64 文字で 16 進数の SHA256 形式である必要があります。

FileName および Notes ヘッダーはオプションです。ファイル名は 150 文字以下、注記は 1,024 文字以下にする必要があります。

POST /openapi/v1/assets/user_filehash/upload/{rootAppScopeNameOrID}/{benignOrflagged}

パラメータ:要求 URL には、次のパラメータが含まれています。

名前

タイプ

説明

rootAppScopeNameOrID

string

ルート範囲の名前または ID。

benignOrflagged

string

benignflagged のどちらか 1 つ。

応答オブジェクト:なし

サンプル python コード


  # Sample CSV File
  # HashType,FileHash,FileName,Notes
  # SHA-1,1AF17E73721DBE0C40011B82ED4BB1A7DBE3CE29,application_1.exe,Sample Notes
  # SHA-256,8F434346648F6B96DF89DDA901C5176B10A6D83961DD3C1AC88B59B2DC327AA4,application_2.exe,Sample Notes

  file_path = '/<path_to_file>/user_filehash.csv'
  root_app_scope_name = 'Tetration'
  restclient.upload(file_path, '/assets/user_filehash/upload/%s/benign' % root_app_scope_name)

ユーザーファイルハッシュの削除

このエンドポイントは、CSV ファイルをアップロードして、Secure Workload アプライアンスのルート範囲からファイルハッシュを削除するために使用されます。CSV ファイルには、ヘッダーとして FileHash が必要です。

POST /openapi/v1/assets/user_filehash/delete/{rootAppScopeNameOrID}/{benignOrflagged}

パラメータ:要求 URL には、次のパラメータが含まれています。

名前

タイプ

説明

rootAppScopeNameOrID

string

ルート範囲の名前または ID。

benignOrflagged

string

benignflagged のどちらか 1 つ。

応答オブジェクト:なし

サンプル python コード


  # Sample CSV File
  # FileHash
  # 1AF17E73721DBE0C40011B82ED4BB1A7DBE3CE29
  # 8F434346648F6B96DF89DDA901C5176B10A6D83961DD3C1AC88B59B2DC327AA4

  file_path = '/<path_to_file>/user_filehash.csv'
  root_app_scope_name = 'Tetration'
  restclient.upload(file_path, '/assets/user_filehash/delete/' + root_app_scope_name + '/benign')

ユーザーファイルハッシュのダウンロード

このエンドポイントは、Secure Workload アプライアンスの指定されたルート範囲のユーザーファイルハッシュを CSV ファイルとして返します。CSV ファイルには、ヘッダー HashType、FileHash、FileName、および Notes がそれぞれの順序で含まれます。

GET /openapi/v1/assets/user_filehash/download/{rootAppScopeNameOrID}/{benignOrflagged}

パラメータ:要求 URL には、次のパラメータが含まれています。

名前

タイプ

説明

rootAppScopeNameOrID

string

ルート範囲の名前または ID。

benignOrflagged

string

良性またはフラグ付きのいずれかです。

応答オブジェクト:なし

サンプル python コード


  file_path = '/<path_to_file>/output_user_filehash.csv'
  root_app_scope_name = 'Tetration'
  restclient.download(file_path, '/assets/user_filehash/download/%s/benign' % root_app_scope_name)

ユーザー定義ラベル

これらの API は、Secure Workload アプライアンスのフローとインベントリ項目にラベル付けをする、ユーザー定義ラベルを追加または削除するために使用されます。この API を呼び出すには、user_data_upload 機能で API キーを使用します。フローとインベントリ項目のラベル付けに使用するキーと値の管理に関するガイドラインについては、UI ユーザーガイドの「ラベルスキーマ」セクションを参照してください。


(注)  


この機能に UI を使用してアクセスする方法については、「カスタムラベルのインポート」を参照してください。



(注)  


アップロードできる IPv4/IPv6 アドレスやサブネットの数に関する制限事項については、「ラベルの制限」を参照してください。


範囲に依存する API

次の API は、Secure Workload アプライアンスのルート範囲でラベルを取得/設定/削除するために使用されます。これらは、ルート範囲の所有者サイト管理者のみが使用できます。また、ルート範囲への読み取りアクセス権を持つユーザーは、GET API 呼び出しを使用できます。

インベントリラベルの取得

このエンドポイントは、Secure Workload アプライアンスのルート範囲にある IPv4/IPv6 アドレスまたはサブネットのラベルを返します。このエンドポイントのクエリに使用されるアドレス/サブネットは、ラベルのアップロードに使用されるものと完全に一致している必要があります。

GET /openapi/v1/inventory/tags/{rootAppScopeName}?ip={IPorSubnet}

パラメータ:要求 URL には、次のパラメータが含まれています。

名前

タイプ

説明

rootAppScopeName

string

ルート範囲名。

IPorSubnet

string

IPv4/IPv6 アドレスまたはサブネット。

応答オブジェクト:

名前

タイプ

説明

attributes

JSON

フローとインベントリの各項目のマッチングをラベリングするためのキー/値マップ。

サンプル python コード


  root_app_scope_name = 'Tetration'
  restclient.get('/inventory/tags/%s' % root_app_scope_name, params={'ip': '10.1.1.1/24'})

インベントリラベルの検索

このエンドポイントでは、Secure Workload アプライアンスのルート範囲で IPv4/IPv6 アドレスまたはサブネットのラベルを検索できます。

GET /openapi/v1/inventory/tags/{rootAppScopeName}/search?ip={IPorSubnet}

パラメータ:要求 URL には、次のパラメータが含まれています。

名前

タイプ

説明

rootAppScopeName

string

ルート範囲名。

IPorSubnet

string

IPv4/IPv6 アドレスまたはサブネット。

応答オブジェクト:この API は、次の形式でオブジェクトのリストを返します。

名前

タイプ

説明

キー

string

IPv4/IPv6 アドレスまたはサブネット。

updatedAt

integer

ラベルが更新されたときの UNIX タイムスタンプ

value

JSON

キーの属性のキー/値マップ。

サンプル python コード


  root_app_scope_name = 'Tetration Scope'
  encoded_root_app_scope_name = urllib.quote(root_app_scope_name, safe='')
  restclient.get('/inventory/tags/%s/search' % encoded_root_app_scope_name, params={'ip': '10.1.1.1/24'})

インベントリラベルの設定

このエンドポイントは、Secure Workload アプライアンスのルート範囲でフローとインベントリの各項目にラベルを付けるためのラベルの設定に使用されます。

POST /openapi/v1/inventory/tags/{rootAppScopeName}

パラメータ:要求 URL には、次のパラメータが含まれています。

名前

タイプ

説明

rootAppScopeName

string

ルート範囲名。

JSON クエリの本文には、次のキーが含まれています。

名前

タイプ

説明

ip

文字列

IPv4/IPv6 アドレスまたはサブネット。

attributes

JSON

フローとインベントリの各項目のマッチングをラベリングするためのキー/値マップ。

応答オブジェクト:

名前

タイプ

説明

警告

JSON

ラベルの設定中に発生した警告を含むキーまたは値マップ。

サンプル python コード


  root_app_scope_name = 'Tetration'
  req_payload = {'ip': '10.1.1.1/24', 'attributes': {'datacenter': 'SJC', 'location': 'CA'}}
  restclient.post('/inventory/tags/%s' % root_app_scope_name, json_body=json.dumps(req_payload))

インベントリラベルの削除

このエンドポイントは、Secure Workload アプライアンスのルート範囲にある IPv4/IPv6 アドレスまたはサブネットのラベルを削除します。

DELETE /openapi/v1/inventory/tags/{rootAppScopeName}

パラメータ:要求 URL には、次のパラメータが含まれています。

名前

タイプ

説明

rootAppScopeName

string

ルート範囲名。

JSON クエリの本文には、次のキーが含まれています。

名前

タイプ

説明

ip

文字列

IPv4/IPv6 アドレスまたはサブネット。

サンプル python コード


  root_app_scope_name = 'Tetration'
  req_payload = {'ip': '10.1.1.1/24'}
  restclient.delete('/inventory/tags/%s' % root_app_scope_name, json_body=json.dumps(req_payload))

ラベルのアップロード

このエンドポイントは、Secure Workload アプライアンスのルート範囲でフローとインベントリの各項目にラベルを設定するためのラベル付きの CSV ファイルをアップロードするために使用されます。IP という名前の列ヘッダーが CSV ファイルに表示されている必要があります。残りの列ヘッダーのうち、最大 32 までを使用して、フローとインベントリ項目の注釈を付けることができます。ラベルに英語以外の文字を使用するには、アップロードした CSV ファイルが UTF-8 形式である必要があります。

POST /openapi/v1/assets/cmdb/upload/{rootAppScopeName}

パラメータ:

ユーザーは、この API へのパラメータとして操作タイプ(X-Tetration-Oper)を提供する必要があります。X-Tetration-Oper は、次のいずれかとすることができます。

  • [追加(add)]:ラベルを新規および既存のアドレス/サブネットに追加します。既存のラベルの代わりに新しいラベルを選択して、競合を解決します。たとえば、データベース内の住所のラベルが {"foo": "1", "bar": "2"} で、CSV ファイルに {"z": "1", "bar": "3"} が含まれている場合、add は、このアドレスのラベルを {"foo": "1", "z": "1", "bar": "3"} に設定します。

  • [上書き(overwrite)]:新しいアドレス/サブネットのラベルを挿入し、既存のラベルを置き換えます。たとえば、データベース内の住所のラベルが {"foo": "1", "bar": "2"} で、CSV ファイルに {"z": "1", "bar": "3"} が含まれている場合、overwrite は、このアドレスのラベルを {“z”: “1”, “bar”: “3”} に設定します。

  • [マージ(merge)]:ラベルを既存のアドレス/サブネットにマージします。空の値の代わりに空でない値を選択することで、競合を解決します。たとえば、データベース内のアドレスのラベルが {"foo": "1", "bar": "2", "qux": "", "corge": "4"} で、CSV ファイルに {"z": "1", "bar": "", "qux": "3", "corge": "4-updated"} が含まれている場合、merge は、このアドレスのラベルを {"foo": "1", "z": "1", "bar": "2", "qux": "3", "corge": "4-updated"} に設定します。


    (注)  


    “bar” の値は “”(空)にリセットされず、既存の値 “bar”=”2” が保持されます。


  • [削除(delete)]:アドレス/サブネットのラベルを削除します。

応答オブジェクト:

名前

タイプ

説明

警告

JSON

ラベルの設定中に発生した警告を含むキーまたは値マップ。

サンプル python コード


  file_path = '/<path_to_file>/user_annotations.csv'
  root_app_scope_name = 'Tetration'
  req_payload = [tetpyclient.MultiPartOption(key='X-Tetration-Oper', val='add')]
  restclient.upload(file_path, '/assets/cmdb/upload/%s' % root_app_scope_name, req_payload)

JSON 形式を使用したラベルのアップロード

このエンドポイントは、JSON 形式を使用して Cisco Secure Workload アプライアンスのフローとインベントリの各項目にラベルを設定するためのラベルをアップロードするために使用されます。ip_tags の属性は、ヘッダーのサブセットである必要があります。フローとインベントリ項目に注釈を付けるために最大 32 のヘッダーを使用できます。ラベルに英語以外の文字を使用するには、JSON ペイロードを UTF-8 形式にする必要があります。

POST /openapi/v1/multi_inventory/tags/{rootAppScopeName}

パラメータ:要求 URL には、次のパラメータが含まれています。

名前

タイプ

説明

rootAppScopeName

string

ルート範囲名

表 11. ペイロードパラメータ

名前

タイプ

説明

ヘッダー

アレイ

ラベル名を指定する文字列の配列

operation

string

追加またはマージのいずれか。指定されていない場合は、追加と見なされます。

ip_tags

アレイ

ip_tags オブジェクトの配列

表 12. ip_tags

名前

タイプ

説明

ip

文字列

有効な IPv4/IPv6 アドレスまたはサブネット

attributes

JSON

ラベルと値文字列のペアの JSON。ラベルはヘッダーのサブセットである必要があります。


(注)  


1. レコードラベルが、指定されたヘッダーのサブセットではない場合、指定されたヘッダーとレコード内のラベルの不一致をユーザーにアラート通知する警告が生成されます。

2. このエンドポイントでは、ユーザーは、最大 95,000 のエントリと 36 の属性のみをアップロードできます。


  • 追加リクエストの場合、「operation」はオプションです。指定されていない場合は、追加と見なされます。

  • マージリクエストの場合、「operation」はマージとして指定する必要があります。

3. 最大 95,000 のエントリと 36 の属性をアップロードできます。

追加リクエストのサンプル Python コード


  { 
    "headers" : ["key1", "key2"], 
    "operation": "add" 
    "ip_tags" : [ 
        { 
            "ip": "10.10.10.11", 
            "attributes": { 
                "key1": "val1", 
                "key2": "val2" 
            } 
        }, 
        { 
            "ip": "10.10.10.12", 
            "attributes": { 
                "key1": "val111", 
                "key2": "val2" 
            } 
        } 
    ] 
} 

マージリクエストのサンプル Python コード


  {{ 
    "headers" : ["key1", "key2"], 
    "operation": "merge" 
    "ip_tags" : [ 
        { 
            "ip": "10.10.10.11", 
            "attributes": { 
                "key1": "val1", 
                "key2": "val2" 
            } 
        }, 
        { 
            "ip": "10.10.10.12", 
            "attributes": { 
                "key1": "val1", 
                "key2": "val2" 
            } 
        } 
    ] 
} 
resp = restclient.post('/multi_inventory/tags/%s' % rootAppScopeName, json_body=json.dumps(req_payload)) 

ユーザーラベルのダウンロード

このエンドポイントは、Secure Workload アプライアンスのルート範囲に対してユーザーがアップロードしたラベルを CSV ファイルとして返します。

GET /openapi/v1/assets/cmdb/download/{rootAppScopeName}

パラメータ:要求 URL には、次のパラメータが含まれています。

名前

タイプ

説明

rootAppScopeName

string

ルート範囲名。

応答:

Content-Type: text/csv

ユーザーが範囲に対してアップロードしたラベルを含む CSV ファイル。

サンプル python コード


  file_path = '/<path_to_file>/output.csv'
  root_app_scope_name = 'Tetration'
  restclient.download(file_path, '/assets/cmdb/download/%s' % root_app_scope_name)

列ヘッダーの取得

このエンドポイントは、Secure Workload アプライアンスのルート範囲の列ヘッダーのリストを返します。

GET /openapi/v1/assets/cmdb/attributenames/{rootAppScopeName}

パラメータ:要求 URL には、次のパラメータが含まれています。

名前

タイプ

説明

rootAppScopeName

string

ルート範囲名。

応答オブジェクト:ラベルに使用できるファセットの配列。

サンプル python コード


   root_app_scope_name = 'Tetration'
   resp = restclient.get('/assets/cmdb/attributenames/%s' % root_app_scope_name)

列ヘッダーの削除

このエンドポイントは、Secure Workload アプライアンスのルート範囲の列ヘッダーを削除します。列ヘッダーを削除すると、ラベル付きファセットのリストから削除され、既存のラベルからも削除されます。

DELETE /openapi/v1/assets/cmdb/attributenames/{rootAppScopeName}/{attributeName}

パラメータ:要求 URL には、次のパラメータが含まれています。

名前

タイプ

説明

rootAppScopeName

string

ルート範囲名。

attributeName

string

削除対象の属性。

応答オブジェクト:なし

サンプル python コード


   root_app_scope_name = 'Tetration'
   attribute_name = 'column1'
   resp = restclient.delete('/assets/cmdb/attributenames/%s/%s' % (root_app_scope_name, attribute_name))

JSON 形式を使用したラベルの削除

このエンドポイントは、JSON 形式を使用して複数の IPv4/IPv6 アドレスまたはサブネットのラベルを削除します。

DELETE /openapi/v1/multi_inventory/tags/{rootAppScopeName}

パラメータ:要求 URL には、次のパラメータが含まれています。

名前

タイプ

説明

rootAppScopeName

string

ルート範囲名

表 13. ペイロードパラメータ

名前

タイプ

説明

ヘッダー

アレイ

(オプション)ラベル名を指定する文字列の配列

ip_tags

アレイ

ip_tags オブジェクトの配列

表 14. ip_tags

名前

タイプ

説明

ip

文字列

有効な IPv4/IPv6 アドレスまたはサブネット

attributes

JSON

(オプション)ラベルと値文字列のペアの JSON。ラベルはヘッダーのサブセットである必要があります。

サンプル Python コード


  { 
    "ip_tags" : [ 
        { 
            "ip": "10.10.10.11", 
          }, 
        { 
            "ip": "10.10.10.12", 
            "attributes": { 
                "key1": "val1", 
                "key2": "val2" 
            } 
        } 
    ] 
} 
resp = restclient.delete('/multi_inventory/tags/%s' % rootAppScopeName, json_body=json.dumps(req_payload)) 

ラベル付きファセットのリストの取得

このエンドポイントは、Secure Workload アプライアンスのルート範囲のラベル付きファセットのリストを返します。ラベル付きファセットは、その範囲内のフローとインベントリ項目に注釈を付けるために使用される、アップロードされた CSV ファイル内の列ヘッダーのサブセットです。

GET /openapi/v1/assets/cmdb/annotations/{rootAppScopeName}

パラメータ:要求 URL には、次のパラメータが含まれています。

名前

タイプ

説明

rootAppScopeName

string

ルート範囲名。

応答オブジェクト:ルート範囲のラベル付きファセットの配列。

サンプル python コード


   root_app_scope_name = 'Tetration'
   resp = restclient.get('/assets/cmdb/annotations/%s' % root_app_scope_name)

ラベル付きファセットのリストの更新

このエンドポイントは、Secure Workload アプライアンスのルート範囲のフローとインベントリ項目に注釈を付けるために使用されるファセットのリストを更新します。

PUT /openapi/v1/assets/cmdb/annotations/{rootAppScopeName}

パラメータ:要求 URL には、次のパラメータが含まれています。

名前

タイプ

説明

rootAppScopeName

string

ルート範囲名。

応答オブジェクト:なし

サンプル python コード


   # the following list is a subset of column headers in the
   # uploaded CSV file
   req_payload = ['location', 'region', 'detail']
   root_app_scope_name = 'Tetration'
   restclient.put('/assets/cmdb/annotations/%s' % root_app_scope_name,
                  json_body=json.dumps(req_payload))

ユーザーがアップロードしたラベルの消去

このエンドポイントは、Secure Workload アプライアンスのルート範囲でフローとインベントリの各項目のラベルを消去します。変更は新しいデータに影響します。古いラベル付きデータは変更されずに残ります。

POST /openapi/v1/assets/cmdb/flush/{rootAppScopeName}

パラメータ:要求 URL には、次のパラメータが含まれています。

名前

タイプ

説明

rootAppScopeName

string

ルート範囲名。

応答オブジェクト:なし

サンプル python コード


  root_app_scope_name = 'Tetration'
  restclient.post('/assets/cmdb/flush/%s' % root_app_scope_name)

範囲に依存しない API

次の API は、Secure Workload アプライアンス上の複数の範囲にまたがる場合があります。


(注)  


範囲非依存および範囲依存の注釈付きファセットの数は、どのルート範囲でも 32 を超えてはなりません。


ラベルのアップロード

このエンドポイントは、Secure Workload アプライアンスのフローとインベントリの各項目にラベルを設定するためのラベル付きの CSV ファイルをアップロードするために使用されます。IP および VRF という名前の列ヘッダーが CSV ファイルに表示され、VRF がラベルのルート範囲と一致する必要があります。残りの列ヘッダーのうち、最大 32 までを使用して、フローとインベントリ項目の注釈を付けることができます。

POST/openapi/v1/assets/cmdb/upload

パラメータ:

ユーザーは、実行する操作を指定するために、この API のパラメータとして操作タイプ(X-Tetration-Oper)を提供する必要があります。

応答オブジェクト:

名前

タイプ

説明

警告

JSON

ラベルの設定中に発生した警告を含むキーまたは値マップ。

サンプル python コード


  file_path = '/<path_to_file>/user_annotations.csv'
  req_payload = [tetpyclient.MultiPartOption(key='X-Tetration-Oper', val='add')]
  restclient.upload(file_path, '/assets/cmdb/upload', req_payload)

ユーザーラベルのダウンロード

このエンドポイントは、Secure Workload アプライアンスのすべての範囲に対してユーザーがアップロードしたラベルを CSV ファイルとして返します。

GET/openapi/v1/assets/cmdb/download

パラメータ:(なし)

応答:

Content-Type: text/csv

ユーザーが範囲に対してアップロードしたラベルを含む CSV ファイル。

サンプル python コード


  file_path = '/<path_to_file>/output.csv'
  restclient.download(file_path, '/assets/cmdb/download')

範囲に依存しないラベル

これらのラベルは、特定のルート範囲に関連付けられておらず、アプライアンスのすべての範囲に適用されます。

インベントリラベルの取得

これらのエンドポイントは、Secure Workload アプライアンスの IPv4/IPv6 アドレスまたはサブネットの範囲に依存しないラベルを返します。このエンドポイントのクエリに使用されるアドレスやサブネットは、ラベルのアップロードに使用されるものと完全に一致している必要があります。

GET /openapi/v1/si_inventory/tags?ip={IPorSubnet}

パラメータ:要求 URL には、次のパラメータが含まれています。

名前

タイプ

説明

IPorSubnet

string

IPv4/IPv6 アドレスまたはサブネット。

応答オブジェクト:

名前

タイプ

説明

attributes

JSON

一致するフローとインベントリの各項目にラベルを付けるためのキーまたは値マップ。

サンプル python コード


  restclient.get('/si_inventory/tags', params={'ip': '10.1.1.1/24'})

インベントリラベルの検索

このエンドポイントにより、Secure Workload アプライアンスの IPv4/IPv6 アドレスまたはサブネットのラベルを検索できます。

GET /openapi/v1/si_inventory/tags/search?ip={IPorSubnet}

パラメータ:要求 URL には、次のパラメータが含まれています。

名前

タイプ

説明

IPorSubnet

string

IPv4/IPv6 アドレスまたはサブネット。

応答オブジェクト:この API は、次の形式でオブジェクトのリストを返します。

名前

タイプ

説明

キー

string

IPv4/IPv6 アドレスまたはサブネット。

updatedAt

integer

ラベルが更新されたときの UNIX タイムスタンプ。

value

JSON

キーの属性のキーまたは値マップ。

サンプル python コード


  restclient.get('/si_inventory/tags/search', params={'ip': '10.1.1.1/24'})

インベントリラベルの設定

このエンドポイントは、Secure Workload アプライアンスのフローとインベントリの各項目にラベルを付けるためのラベルの設定に使用されます。

POST /openapi/v1/si_inventory/tags

パラメータ:JSON クエリの本文には、次のキーが含まれています。

名前

タイプ

説明

ip

文字列

IPv4/IPv6 アドレスまたはサブネット。

attributes

JSON

一致するフローとインベントリの各項目にラベルを付けるためのキーまたは値マップ。

応答オブジェクト:

名前

タイプ

説明

警告

JSON

ラベルの設定中に発生した警告を含むキーまたは値マップ。

サンプル python コード


  req_payload = {'ip': '10.1.1.1/24', 'attributes': {'datacenter': 'SJC', 'location': 'CA'}}
  restclient.post('/si_inventory/tags', json_body=json.dumps(req_payload))

インベントリラベルの削除

このエンドポイントは、Secure Workload アプライアンスの IPv4/IPv6 アドレスまたはサブネットのラベルを削除します。

DELETE /openapi/v1/si_inventory/tags

パラメータ:JSON クエリの本文には、次のキーが含まれています。

名前

タイプ

説明

ip

文字列

IPv4/IPv6 アドレスまたはサブネット。

サンプル python コード


  req_payload = {'ip': '10.1.1.1/24'}
  restclient.delete('/si_inventory/tags, json_body=json.dumps(req_payload))

ラベル付きファセットのリストの取得

このエンドポイントは、Secure Workload アプライアンス上の範囲に依存しないラベル付きファセットのリストを返します。ラベル付きファセットは、すべての範囲のフローおよびインベントリ項目に注釈を付けるために使用される列ヘッダーのサブセットです。


(注)  


要求 URL から範囲名を除外して、注釈付き範囲に依存しないファセットのリストを表示および更新します。


GET /openapi/v1/assets/cmdb/annotations

応答オブジェクト:範囲に依存しないラベル付きファセットの配列。

サンプル python コード


   resp = restclient.get('/assets/cmdb/annotations')

ラベル付きファセットのリストの更新

このエンドポイントは、Secure Workload アプライアンス上のフローおよびインベントリ項目に注釈を付けるために使用される、範囲に依存しないファセットのリストを更新します。

PUT /openapi/v1/assets/cmdb/annotations

応答オブジェクト:なし

サンプル python コード


   # the following list is a subset of column headers in the
   # uploaded CSV file
   req_payload = ['location', 'region', 'detail']
   restclient.put('/assets/cmdb/annotations',
                  json_body=json.dumps(req_payload))

仮想ルーティングおよび転送

この一連の API で Virtual Routing and Forwarding(VRF)を管理します。


(注)  


これらの API は、サイト管理者のみ使用できます。


VRF オブジェクト

VRF オブジェクトの属性については、以下で説明します。

属性

タイプ

説明

id

int

VRF の固有識別子。

name

文字列

ユーザーが指定した VRF の名前。

tenant_Id

int

親テナントの ID。

root_app_scope_id

string

関連付けられているルート範囲の ID。

created_At

integer

VRF が作成されたときの Unix タイムスタンプ。

updated_at

integer

VRF が最後に更新されたときの Unix タイムスタンプ。

VRF の取得

このエンドポイントは、VRF のリストを返します。この API は、sensor_management または flow_inventory_query 機能を備えた API キーで使用できます。

GET/openapi/v1/vrfs

パラメータ:(なし)

応答オブジェクト:VRF オブジェクトのリストを返します。

サンプル python コード


  resp = restclient.get('/vrfs')

VRF を作成します

このエンドポイントは、新しい VRF を作成するために使用されます。関連付けられたルート範囲は、VRF ID に一致するクエリを使用して自動的に作成されます。この API は、sensor_management 機能を持つ API キーで使用できます。

POST/openapi/v1/vrfs

パラメータ:

名前

タイプ

説明

id

int

(オプション)VRF の固有識別子。指定しない場合、Secure Workload クラスタは新しく作成された VRF の一意の ID を生成します。ベストプラクティスは、呼び出し元が一意の ID を明示的に指定する代わりに、Cisco Secure Workload にこれらの ID を生成させることです。

tenant_Id

int

(オプション)親テナントの ID。

name

文字列

ユーザーが指定した VRF の名前。

apply_monitoring_rules

boolean

(オプション)収集ルールを VRF に適用するかどうか。デフォルトは「false」です。

tenant_id はオプションです。指定しない場合、VRF は VRF と同じ ID を持つテナント(必要に応じて自動作成される)に追加されます。tenant_id が指定されている場合、テナントは自動作成されず、テナントが存在しない場合はエラーが返されます。

応答オブジェクト:新しく作成された VRF オブジェクトを返します。

サンプル python コード


  req_payload = {
      "tenant_id": <tenant_id>,
      "name": "Test",
      "apply_monitoring_rules": True
  }
  resp = restclient.post('/vrfs', json_body=json.dumps(req_payload))

特定の VRF の取得

このエンドポイントは、指定された VRF ID の情報を返します。この API は、sensor_management または flow_inventory_query 機能を備えた API キーで使用できます。

GET /openapi/v1/vrfs/{vrf_id}

パラメータ:要求 URL には、次のパラメータが含まれています。

名前

タイプ

説明

vrf-id

int

VRF の固有識別子。

応答オブジェクト:指定された ID に関連付けられている VRF オブジェクトを返します。

サンプル python コード


  vrf_id = 676767
  resp = restclient.get('/vrfs/%d'% vrf_id)

VRF の更新

このエンドポイントは、VRF を更新します。この API は、sensor_management 機能を備えた API キーで使用できます。

PUT/openapi/v1/vrfs/{vrf_id}

パラメータ:要求 URL には、次のパラメータが含まれています。

名前

タイプ

説明

vrf-id

int

VRF の固有識別子。

JSON リクエストの本文には、次のパラメータが含まれています

名前

タイプ

説明

name

文字列

ユーザーが指定した VRF の名前。

apply_monitoring_rules

boolean

(オプション)収集ルールを VRF に適用するかどうか。

応答オブジェクト:指定された ID に関連付けられている変更された VRF オブジェクトを返します。

サンプル python コード


  vrf_id = 676767
  req_payload = {
      "name": "Test",
      "apply_monitoring_rules": True
  }
  resp = restclient.put('/vrfs/%d'% vrf_id,
                        json_body=json.dumps(req_payload))

特定の VRF の削除

このエンドポイントは、VRF を削除します。関連付けられたルート範囲がある場合、これは失敗します。この API は、sensor_management 機能を備えた API キーで使用できます。

DELETE /openapi/v1/vrfs/{vrf_id}

パラメータ:次のパラメータは URL の一部です。

名前

タイプ

説明

vrf-id

int

VRF の固有識別子。

サンプル python コード


  vrf_id = 676767
  resp = restclient.delete('/vrfs/%d'% vrf_id)

オーケストレーション

この一連の API を使用して、Secure Workload クラスタ展開における外部オーケストレータのインベントリ学習を管理できます。API キーに関連付けられた external_integration 機能が必要です。

現在サポートされているオーケストレーションタイプは、「vcenter」(VCenter 6.5 以降)、「kubernetes」、「dns」、「f5」、「netscaler」、「infoblox」および「Cisco FMC」です。詳細については、外部オーケストレータの説明を参照してください。

オーケストレーション オブジェクト

オーケストレータ オブジェクトの属性について次に説明します。一部のフィールドは、特定のオーケストレータタイプにのみ適用されます。以下の表に制限事項を示します。

属性

タイプ

説明

id

string

オーケストレーションの固有識別子。

name

文字列

ユーザーが指定したオーケストレーションの名前。

type

string

オーケストレータのタイプ:サポートされる値(vcenter、kubernetes、f5、netscaler、infoblox、dns)

description

文字列

オーケストレーションのユーザー指定の説明。

username

string

オーケストレーション エンドポイントのユーザー名。(dns の場合は不要)

password

string

オーケストレーション エンドポイントのパスワード。(dns の場合は不要)

証明書

string

認証に使用されるクライアント証明書(dns の場合は不要)

キー

string

クライアント証明書に対応するキー(dns の場合は不要)

ca_certificate

string

オーケストレーション エンドポイントを検証する CA 証明書(dns の場合は不要)

auth_token

string

不透明な認証トークン(ベアラートークン)(kubernetes にのみ適用)

insecure

boolean

厳密な SSL 検証を無効にする

delta_interval

整数

秒単位のデルタポーリング間隔の Secure Workload Inventory Manager は、delta_interval 秒ごとに増分変更のポーリングを実行します。このパラメータは、Infoblox および Cisco Secure Firewall Management Center には適用されないことに注意してください。

full_snapshot_interval

整数

秒単位のフルスナップショット間隔の Secure Workload Inventory Manager は、オーケストレータからフル更新ポーリングを実行します。

verbose_tsdb_metrics

boolean

エンドポイントごとの TSDB メトリックス

hosts_list

Array

オーケストレータへの Secure Workload の接続方法を指定する { “host_name”, port_number} ペアの配列

use_secureconnector_tunnel

boolean

Secure Connector トンネルを介したこのオーケストレータのホストへのトンネル接続

route_domain

integer

F5 ロードバランサでポーリングするルートドメイン番号(「f5」にのみ適用)

dns_zones

配列

DNS サーバーからポーリングする DNS ゾーンを含む文字列の配列( dns のみ)。各 DNS ゾーンエントリは、a で終わる必要があります。

enable_enforcement

boolean

ファイアウォールやロードバランサなど、ポリシーの適用をサポートする外部オーケストレータにのみ適用されます。たとえば、Cisco Secure Firewall Management Center、F5 BIGIP、および Citrix Netscaler などがあります。デフォルトでは、このフラグは false(ポリシーの強制は無効)です。true の場合、ワークスペースに対してポリシーの適用が実行されると、外部オーケストレータは指定されたロードバランサ アプライアンスにポリシーを展開します。

ingress_controllers

オブジェクト

Ingress コントローラ オブジェクトの配列。

fmc_enforcement_mode

string

Cisco Secure Firewall Management Center 外部オーケストレータにのみ適用され、マージ(デフォルト)またはオーバーライドのいずれかである必要があります。最初のインスタンスは、既存のプレフィルタルールより先にすべての Secure Workload ポリシールールを配置するように、Cisco Secure Firewall Management Center ポリシーエンフォーサに指示します。後者のインスタンスは、ユーザーによって作成されたすべてのプレフィルタルールを削除します。

infoblox_config

オブジェクト

Infoblox 外部オーケストレータにのみ適用されます。Infoblox Config レコードタイプセレクタ。

ポッドセレクタ

属性

タイプ

説明

名前空間

string

Ingress コントローラポッドが実行されている名前空間。

ラベル

配列

Ingress コントローラポッドのラベルを指定する {“key”, “value”} ペアの配列。

コントローラ設定

属性

タイプ

説明

ingress_class

string

Ingress コントローラが満たす入力クラスの名前。

名前空間

string

名前空間は、Ingress コントローラが満たす名前空間の名前です。

http_ports

配列

HTTP ポートの配列。

https_ports

配列

HTTPS ポートの配列。

Infoblox 設定

enable_network_record

bool

デフォルト値は true です。false の場合、ネットワークタイプのレコードは無効になります。

enable_host_record

bool

デフォルト値は true です。false の場合、ホストタイプのレコードは無効になります。

enable_a_record

bool

デフォルト値は true です。false の場合、A タイプのレコードは無効になります。

enable_aaaa_record

bool

デフォルト値は true です。false の場合、AAAA タイプのレコードは無効になります。

** オーケストレータオブジェクトの読み取り専用ステータスフィールド **

属性

タイプ

説明

authentication_failure

bool

Secure Workload オーケストレータへの接続ステータス:true はオーケストレータへの接続が成功したことを示します。このフィールドが false の場合、authentication_failure_error フィールドには、接続失敗の理由を説明する詳細なエラーメッセージが表示されます。

authentication_failure_error

string

オーケストレータとの接続エラーやクレデンシャルエラーのデバッグに役立つ詳細なエラーメッセージ

scope_id

string

インベントリが公開および表示されるテナントルート範囲 ID

オーケストレーションの取得

このエンドポイントは、Secure Workload アプライアンスによって認識されているオーケストレータのリストを返します。この API は、 external_integration 機能を備えた API キーで使用できます。

GET/openapi/v1/orchestrator/{scope}

パラメータ:(なし)

指定されたルート範囲のオーケストレータ オブジェクトのリストを返します。scope はルート範囲 ID にする必要があります。

オーケストレータの作成

このエンドポイントは、オーケストレータを作成するために使用されます。

POST/openapi/v1/orchestrator/{scope}

vCenter オーケストレータのサンプル Python コード


  req_payload = {
      "name": "VCenter Orchestrator"
      "type": "vcenter",
      "hosts_list": [ { "host_name": "8.8.8.8", "port_number": 443}],
      "username":"admin",
      "password":"admin"
  }
  resp = restclient.post('/orchestrator/Default', json_body=json.dumps(req_payload))

DNS オーケストレータのサンプル Python コード


  req_payload = {
      "name": "DNS Server"
      "type": "dns",
      "hosts_list": [ { "host_name": "8.8.8.8", "port_number": 53}],
      "dns_zones": [ "lab.corp.com.", "dev.corp.com." ]
  }
  resp = restclient.post('/orchestrator/Default', json_body=json.dumps(req_payload))

Kubernetes オーケストレータのサンプル Python コード


  req_payload = {
      "name": "k8s"
      "type": "kubernetes",
      "hosts_list": [ { "host_name": "8.8.8.8", "port_number": 53}],
      "certificate": "",
      "key": "",
      "ca_certificate": "",
  }
  resp = restclient.post('/orchestrator/Default', json_body=json.dumps(req_payload))

Ingress コントローラを使用した Kubernetes オーケストレータのサンプル Python コード

認証の詳細を作成するには、Kubernetes/OpenShift 外部オーケストレータに関する情報を参照してください。


  req_payload = {
      "name": "k8s",
      "type": "kubernetes",
      "hosts_list": [ { "host_name": "8.8.8.8", "port_number": 53}],
      "certificate": "",
      "key": "",
      "ca_certificate": "",
      "ingress_controllers": [
          {
              "pod_selector": {
                  "namespace": "ingress-nginx",
                  "labels": [{ "key": "app", "value": "nginx-ingress"}],
              }
          }
      ]
  }
  resp = restclient.post('/orchestrator/Default', json_body=json.dumps(req_payload))

複数の Ingress コントローラを使用した Kubernetes オーケストレータのサンプル Python コード

認証の詳細を作成するには、Kubernetes/OpenShift 外部オーケストレータに関する情報を参照してください。


  req_payload = {
      "name": "k8s",
      "type": "kubernetes",
      "hosts_list": [ { "host_name": "8.8.8.8", "port_number": 53}],
      "certificate": "",
      "key": "",
      "ca_certificate": "",
      "ingress_controllers": [
          {
              "pod_selector": {
                  "namespace": "ingress-nginx",
                  "labels": [{ "key": "app", "value": "nginx-ingress"}],
              },
              "controller_config": {
                  "ingress_class": "nginx-class",
              }
          },
          {
              "pod_selector": {
                  "namespace": "ingress-haproxy",
                  "labels": [{ "key": "app", "value": "haproxy-ingress"}],
              },
              "controller_config": {
                  "ingress_class": "haproxy-class",
                  "http_ports": [8080],
                  "https_ports": [8443],
                  "namespace": "haproxy-watching-namespace"
              }
          }
      ],
  }
  resp = restclient.post('/orchestrator/Default', json_body=json.dumps(req_payload))

  ** Type AWS and EKS are no longer supported in external orchestrators. They have been ported to
     connectors.

特定のオーケストレーションの取得

このエンドポイントは、オーケストレーションのインスタンスを返します。

GET/openapi/v1/orchestrator/{scope}/{orchestrator_id}

指定された ID に関連付けられているオーケストレーション オブジェクトを返します。

オーケストレータの更新

このエンドポイントはオーケストレータを更新します。

PUT/openapi/v1/orchestrator/{scope}/{orchestrator_id}

パラメータ:

POST パラメータと同じ

特定のオーケストレーションの削除

このエンドポイントは、指定されたオーケストレーションを削除します。

DELETE /openapi/v1/orchestrator/{scope}/{orchestrator_id}

オーケストレータのゴールデンルール

この一連の API を使用して、外部 Kubernetes オーケストレータのゴールデンルールを管理できます。ゴールデンルールは、許可リスト強制モードで Kubernetes コントロールプレーンの接続を確保するために必要です。API キーに関連付けられた external_integration 機能が必要です。

ゴールデンルールで現在サポートされているオーケストレータタイプは「kubernetes」のみです。Kubernetes 以外のオーケストレータに対するこのエンドポイントへの要求は失敗します。

オーケストレータのゴールデン ルール オブジェクト

オーケストレーション オブジェクトの属性については、以下で説明します。

属性

タイプ

説明

kubelet_port

integer

Kubelet ノードのローカル API ポート

サービス

配列

Kubernetes サービスオブジェクトの配列

オーケストレータのゴールデンルールの取得

このエンドポイントは、オーケストレータに関連付けられているゴールデンルールを返します。この API は、external_integration 機能を備えた API キーで使用できます。

GET /openapi/v1/orchestrator/{scope}/{id}/gr

パラメータ:(なし)

単一のゴールデン ルール オブジェクトを返します。

ゴールデンルールの作成または更新

このエンドポイントは、既存のオーケストレータのゴールデンルールを作成または更新するために使用されます。

POST /openapi/v1/orchestrator/{scope}/{id}/gr

パラメータ:

属性

タイプ

説明

kubelet_port

integer

Kubelet ノードのローカル API ポート

サービス

配列

Kubernetes サービスオブジェクトの配列

サンプル python コード


  req_payload = {
              "kubelet_port":10255,
              "services": [
                        {
				"description": "kube-dns",
				"addresses":   [ "10.0.1.1:53/TCP", "10.0.1.1:53/UDP" ],
				"consumed_by":  [ "NODES", "PODS"],
			}
             ]
  }
  resp = restclient.post('/orchestrator/{scope_id}/{orchestrator_id}/gr', json_body=json.dumps(req_payload))

FMC オーケストレータドメイン

この一連の API を使用して、外部 FMC オーケストレータのドメインを管理できます。特定の FMC ドメインでの適用を有効にするには、FMC ドメインが必要です。API キーに関連付けられた external_integration 機能が必要です。

現在サポートされている FMC ドメインのオーケストレータタイプは「fmc」のみです。FMC 以外のオーケストレータに対するこのエンドポイントへの要求は失敗します。

オーケストレータ FMC ドメインオブジェクト

オーケストレーション オブジェクトの属性については、以下で説明します。

属性

タイプ

説明

fmc_domains

配列

FMC ドメインオブジェクトの配列

FMC ドメインオブジェクトの属性については、以下で説明します。

属性

タイプ

説明

name

文字列

FMC ドメインの名前

enforcement_enabled

boolean

このフラグはデフォルトで false に設定されています。true の場合、外部オーケストレータは、ワークスペースに対してポリシーの適用が実行されるときに、「name」に一致するドメインにポリシーを展開します。

URL 属性については、以下で説明します。

属性

タイプ

説明

scope

string

インベントリが公開および表示されるテナントルート範囲の名前または ID

orchestrator_id

string

FMC オーケストレータのオーケストレータ ID

FMC ドメインの取得

このエンドポイントは、FMC オーケストレータに関連付けられている FMC で構成されている FMC ドメインを返します。この API は、 external_integration 機能を備えた API キーで使用できます。

GET /openapi/v1/orchestrator/{scope}/{orchestrator_id}/fmcdomains

パラメータ:(なし)

FMC ドメインオブジェクトの属性のリストを含む JSON オブジェクトを返します。

FMC 外部オーケストレータの FMC ドメイン設定の更新

このエンドポイントは、既存の FMC 外部オーケストレータの FMC ドメイン属性を更新します。

PUT /openapi/v1/orchestrator/{scope}/{orchestrator_id}/fmcdomains

パラメータ:

属性

タイプ

説明

fmc_domains

配列

FMC ドメインオブジェクトの配列

FMC ドメインオブジェクトの属性については、以下で説明します。

属性

タイプ

説明

name

文字列

FMC ドメインの名前

enforcement_enabled

boolean

このフラグはデフォルトで false に設定されています。true の場合、外部オーケストレータは、ワークスペースに対してポリシーの適用が実行されるときに、「name」に一致するドメインにポリシーを展開します。

URL 属性については、以下で説明します。

属性

タイプ

説明

scope

string

インベントリが公開および表示されるテナントルート範囲の名前または ID

orchestrator_id

string

FMC オーケストレータのオーケストレータ ID

サンプル python コード


  req_payload = {
        "fmc_domains":    [
        {
            "enforcement_enabled": False,
            "name": "Global/Eng"
        },
        {
            "enforcement_enabled": True,
            "name": "Global/Prod"
        }
    ]
  }
  resp = restclient.put('/orchestrator/{scope}/{orchestrator_id}/fmcdomains', json_body=json.dumps(req_payload))

RBAC(ロールベース アクセス コントロール)に関する考慮事項

ルート範囲下でオーケストレータにアクセスするには、要求に使用される API キーに要求の権限が必要です。すべてのオーケストレータ API 呼び出しは範囲が指定され、URL の一部として常にルート範囲 ID が必要です。オーケストレータは常にルート範囲レベルに存在し、サブ範囲の下に作成することはできません。特定のテナントルート範囲の下で作成されたオーケストレータ(およびこれらのオーケストレータによって学習されたインベントリ)は、他のテナントからは見えません。

複数のルートドメイン(vrfs)が設定されている可能性がある F5 ロードバランサの場合、F5 ルート ドメイン フィルタリング ロジックは、すべてのパーティションにわたって F5 上のすべてのエンティティをスキャンしますが、 F5 オーケストレータの route_domain フィールドで指定されたルートドメインとして評価されないエンティティ(サービス、snat プール、プール、およびバックエンド)は破棄します。

高可用性とフェールオーバーに関する考慮事項

hosts_list パラメータを使用すると、オーケストレータに複数のサーバーアドレスを設定できます。複数のサーバーアドレスの場合の Secure Workload サーバー選択ロジックは、オーケストレータタイプごとに異なります。

vCenter、Kubernetes、DNS、F5、NetScaler、Infoblox の場合、選択は最初の正常なエンドポイントに基づいて行われます。接続は永続的ではないため(Kubernetes を除く)、Secure Connector Orchestrator Manager は、ポーリング周期ごとにホストをスキャンし、hosts_list で検出された最初の正常なエンドポイントをポーリングします。Kubernetes の場合、永続的なイベントチャネルが維持され、接続が失敗すると、次の正常なエンドポイントを使用して、すべてのホストのスキャンと後続の完全なポーリングが実行されます。

Kubernetes RBAC リソースに関する考慮事項

Kubernetes クライアントは、次のリソースの GET/LIST/WATCH を試みます。

指定する Kubernetes 認証の資格情報には、次のリソースに対する最小限の権限セットが必要です。

リソース

Verbs

daemonsets

[get list watch]

deployments

[get list watch]

endpoints

[get list watch]

namespaces

[get list watch]

nodes

[get list watch]

pods

[get list watch]

replicasets

[get list watch]

replicationcontrollers

[get list watch]

services

[get list watch]

statefulsets

[get list watch]

daemonsets.apps

[get list watch]

deployments.apps

[get list watch]

endpoints.apps

[get list watch]

namespaces.apps

[get list watch]

nodes.apps

[get list watch]

pods.apps

[get list watch]

replicasets.apps

[get list watch]

replicationcontrollers.apps

[get list watch]

services.apps

[get list watch]

statefulsets.apps

[get list watch]

daemonsets.extensions

[get list watch]

deployments.extensions

[get list watch]

endpoints.extensions

[get list watch]

namespaces.extensions

[get list watch]

nodes.extensions

[get list watch]

pods.extensions

[get list watch]

replicasets.extensions

[get list watch]

replicationcontrollers.extensions

[get list watch]

services.extensions

[get list watch]

statefulsets.extensions

[get list watch]

Service Health

この API を使用して、Secure Workload クラスタで使用される全サービスの正常性をサービスの依存関係とともに取得できます。


(注)  


この API は、サイト管理者ユーザーのみが使用できます。


サービス正常性の取得

このエンドポイントは、サービス正常性情報を含む JSON オブジェクトを返します。

GET /openapi/v1/service_status

パラメータ:(なし)

応答オブジェクト: サービス正常性情報を含む JSON オブジェクト

サンプル python コード


  resp = restclient.get('/service_status')

Secure Connector

OpenAPI は、Secure Connector の機能を管理するエンドポイントを公開します。これらのエンドポイントでは、external_integration 機能が API キーに関連付けられている必要があります。


(注)  


Secure Connector API は、サイトレベルでは使用できません。これらはルート範囲レベルでのみ使用できます。


ステータスの取得

このエンドポイントは、指定されたルート範囲の Secure Connector トンネルの現在のステータスを返します。

GET /openapi/v1/secureconnector/name/{ROOT_SCOPE_NAME}/status

GET /openapi/v1/secureconnector/{ROOT_SCOPE_ID}/status

指定されたルート範囲に対する読み取りアクセス許可が必要です。

返されるステータスは、次のスキーマを持つ JSON オブジェクトです。

キー

タイプ

active

boolean

Secure Connector トンネルは現在アクティブです。

peer

string

トンネルの Secure Connector クライアント側の <ip>:<port>

start_time

int

トンネルが開始された時のタイムスタンプ(秒単位のエポック時間)

last_heartbeat

int

クライアントから最後に受信したハートビートのタイムスタンプ(秒単位のエポック時間)

トークンを取得

このエンドポイントは、指定されたルート範囲の Secure Connector クライアントをブートストラップするために使用される新しい 1 回限りの期間限定トークンを返します。

GET /openapi/v1/secureconnector/name/{ROOT_SCOPE_NAME}/token

GET /openapi/v1/secureconnector/{ROOT_SCOPE_ID}/token

指定されたルート範囲に対する OWNER 権限が必要です。

返されるトークンは、暗号で署名されたトークンを含む文字列で、1 時間有効です。有効なトークンは、Secure Connector クライアントをブートストラップするために 1 回だけ使用できます。

証明書のローテーション

このエンドポイントは、指定されたルート範囲の新しい証明書の作成を強制的に実行します。新しい証明書は Secure Connector サーバーによって使用され、このルート範囲のクライアントからの証明書署名要求に署名するために使用されます。

POST /openapi/v1/secureconnector/name/{ROOT_SCOPE_NAME}/rotate_certs?invalidate_old= ˓→{true|false}

POST /openapi/v1/secureconnector/{ROOT_SCOPE_ID}/rotate_certs?invalidate_old= ˓→{true|false}

指定されたルート範囲に対する OWNER 権限が必要です。

このエンドポイントが呼び出されると、このルート範囲のクライアントとサーバー間の通信は、すぐに新しい証明書を使用するように移行します。

invalidate_old が false に設定されている場合、既存のクライアントは新しい公開キー/秘密キーのペアを自動的に作成し、既存の証明書を使用して、新しい公開キーの新しい証明書に署名します。

invalidate_old が true に設定されている場合、既存の証明書はすぐに無効になります。既存のクライアントはサーバーに接続できなくなり、新しいトークンを使用して再度ブートストラップする必要があります。詳細については、「Secure Connector の展開」を参照してください。

Kubernetes 脆弱性スキャン

ポッド脆弱性スキャンに使用される Kubernetes レジストリの取得

このエンドポイントは、特定の VRF の Cisco Secure Workload クラスタに表示されるすべての Kubernetes レジストリのリストを返します。

GET /openapi/kubernetes/{root_scope_name_or_id}/vulnerability_scanning/registry 

パラメータ:JSON クエリの本文には、次のキーが含まれています。

名前

タイプ

説明

root_scope_name_or_id

string

ルート範囲の名前または ID

応答オブジェクト:次の属性を持つレジストリオブジェクトの配列を返します。

属性

タイプ

説明

id

string

レジストリの ID

クラスタ

アレイ

レジストリを使用する Kubernetes クラスタオブジェクトの配列

connection_status

string

レジストリ接続ステータスの定義

credential_status

string

ログイン情報が提供されているかどうかを示すステータス

last_scanned

Int64

エポック時間の最後のスキャナ

url

string

レジストリの URL

Kubernetes クラスタオブジェクト

属性

タイプ

説明

id

string

Kubernetes クラスタの ID

connector_id

string

Kubernetes クラスタのオンボーディングに使用されるコネクタの ID

connector_type

string

Kubernetes クラスタのオンボーディングに使用されるコネクタのタイプ

name

文字列

Kubernetes クラスタの名前

サンプル Python コード


   root_app_scope_name = 'Tetration'
   restclient.get('/kubernetes/%s/vulnerability_scanning/registry' % root_app_scope_name)

Kubernetes レジストリへのログイン情報の追加

このエンドポイントを使用すると、Kubernetes レジストリにログイン情報を追加できます。受け入れられるログイン情報は、レジストリタイプに基づいています。

次に例を示します。

レジストリタイプ:AWS、受け入れられるログイン情報タイプ:aws_auth ログイン情報オブジェクト

レジストリタイプ:OTHER、受け入れられるログイン情報タイプ:basic_auth ログイン情報オブジェクト

PUT /openapi/kubernetes/{root_scope_name_or_id}/vulnerability_scanning/registry/{registry_id}

パラメータ:JSON クエリの本文には、次のキーが含まれています。

名前

タイプ

説明

root_scope_name_or_id

string

ルート範囲の名前または ID

registry_id

string

Kubernetes レジストリ ID

registry_credential

object

ログイン情報オブジェクト

ログイン情報オブジェクト

属性

タイプ

説明

basic_auth

object

Basic 認証ログイン情報オブジェクト

aws_auth

object

AWS 認証ログイン情報オブジェクト

azure_auth

object

Azure 認証ログイン情報オブジェクト

gcp_auth

object

GCP 認証ログイン情報オブジェクト

basic_auth オブジェクト

属性

タイプ

説明

username

string

ユーザ名(Username)

password

string

[パスワード(Password)]

aws_auth オブジェクト

属性

タイプ

説明

aws_access_key_id

string

AWS ログイン情報アクセスキー

aws_secret_access_key

string

AWS ログイン情報アクセスシークレット

azure_auth オブジェクト:

属性

タイプ

説明

azure_tenant_id

string

Azure テナント ID

azure_client_id

string

Azure クライアント ID

azure_client_secret

string

Azure クライアントシークレット

gcp_auth オブジェクト:

属性

タイプ

説明

gcp_service_account

object

GCP サービスアカウント

サンプル Python コード


root_app_scope_name = 'Tetration'
registry_id = ‘64cdc7a7362f57192dcc1625’
pay_load = {
        "registry_credential": {
            "basic_auth": {
                "username": "username",
                "password": "password",
            }
        }
    }
restclient.put('/kubernetes/%s/vulnerability_scanning/registry/%s' % root_app_scope_name, registry_id, json_body=json.dumps(pay_load))
 

Kubernetes ポッドスキャナの取得

このエンドポイントは、特定の VRF の Cisco Secure Workload クラスタに表示されるすべての Kubernetes ポッドスキャナのリストを返します。

GET /openapi/kubernetes/{root_scope_name_or_id}/vulnerability_scanning/scanner 

パラメータ:JSON クエリの本文には、次のキーが含まれています。

名前

タイプ

説明

root_scope_name_or_id

string

ルート範囲の名前または ID

応答オブジェクト:次の属性を持つレジストリオブジェクトの配列を返します。

属性

タイプ

説明

id

string

スキャナの ID

kubernetes_cluster

object

Kubernetes クラスタオブジェクト

health_status

string

スキャナの正常性状態の定義

health_object

string

正常性ステータスオブジェクト

scanner_action

string

スキャナが ENABLED または DISABLED であるかどうかの通知

name

文字列

スキャナの名前

正常性オブジェクト

属性

タイプ

説明

last_checkin

string

エポック時間に最後に報告された内容

scanner_sensor_name

string

スキャナが実行されている Kubernetes ノード名

scanner_sensor_uuid

string

Kubernetes ノードで実行されているエージェントの ID

status

string

正常性がスキャナによって報告された場合の通知

サンプル Python コード


root_app_scope_name = 'Tetration'
restclient.get('/kubernetes/%s/vulnerability_scanning/scanner % root_app_scope_name)
 

スキャナフィルタクエリとアクションの編集

このエンドポイントを使用すると、Kubernetes スキャナフィルタクエリとアクションを編集できます。

PUT /openapi/kubernetes/{root_scope_name_or_id}/vulnerability_scanning/scanner/{scanner_id}

パラメータ:JSON クエリの本文には、次のキーが含まれています。

名前

タイプ

説明

rootAppScopeName

string

ルート範囲の名前または ID

scanner_id

string

Kubernetes スキャナ ID

scanner_action

string

スキャナを有効化または無効化。想定される値は ENABLED または DISABLED

filter_query

object

脆弱性スキャンのためにポッドをフィルタ処理するフィルタクエリオブジェクト

サンプル Python コード


root_app_scope_name = 'Tetration'
scanner_id = ‘64cdc7a7362f57192dcc1625’
pay_load = {
        “scanner_action”: “ENABLED”
        "filter_query": {
            "type": "contains",
            "field": "user_orchestrator_system/pod_name",
            "value": "pod"
        }
}
restclient.put('/kubernetes/%s/vulnerability_scanning/scanner/%s' % root_app_scope_name, scanner_id, json_body=json.dumps(pay_load))
 

外部オーケストレータのポリシー適用ステータス

この一連の API は、F5 BIG-IPCitrix Netscaler などのロードバランサ外部オーケストレータにポリシー適用ステータスを提供するために使用されます。


(注)  


これらの API を使用するには、VRF にアタッチされた範囲にアクセスできる必要があります。


すべての外部オーケストレータのポリシー適用ステータスの取得

このエンドポイントは、指定された VRF に属するすべての外部オーケストレータのポリシー適用ステータスを返します。この API は、external_integration 機能を備えた API キーで使用できます。

GET /openapi/v1/tnp_policy_status/{vrfID}

パラメータ:要求 URL には、次のパラメータが含まれています。

名前

タイプ

説明

vrfID

integer

ルート範囲の VRF ID。

応答オブジェクト:ステータスが ENFORCED または FAILED または IGNORED のネットワークポリシーのリストを返します。

サンプル python コード


  vrf_id = 676767
  restclient.get('/tnp_policy_status/%d' % vrf_id)

外部オーケストレータのポリシー適用ステータスの取得

このエンドポイントは、指定された VRF に属する外部オーケストレータのポリシー適用ステータスを返します。この API は、external_integration 機能を備えた API キーで使用できます。

GET /openapi/v1/tnp_policy_status/{vrfID}/{orchestratorID}

パラメータ:要求 URL には、次のパラメータが含まれています。

名前

タイプ

説明

vrfID

integer

ルート範囲の VRF ID。

orchestratorID

string

外部オーケストレータの ID。

応答オブジェクト:ステータスが ENFORCED または FAILED または IGNORED のネットワークポリシーのリストを返します。

サンプル python コード


  vrf_id = 676767
  orchestrator_id = '5ee3c991497d4f3b00f1ee07'
  restclient.get('/tnp_policy_status/%d/%s' % (vrf_id, orchestrator_id))

管理対象データタップとデータシンクの証明書のダウンロード

この一連の API は、管理対象データタップとデータシンクの証明書をダウンロードするために使用されます。


(注)  


これらの API を使用するには、VRF にアタッチされた範囲にアクセスできる必要があります。


特定の VRF ID に対するマネージドデータタップのリストの取得

このエンドポイントは、指定された VRF のマネージドデータタップのリストを返します。この API は、external_integration 機能を備えた API キーで使用できます。

GET /openapi/v1/mdt/{vrfID}

パラメータ:(なし)

マネージドデータタップ ID などの属性を持つマネージドデータタップのリストを返します。

指定された MDT ID のマネージドデータタップ証明書のダウンロード

このエンドポイントは、指定されたマネージドデータタップ ID の証明書をダウンロードするために使用されます。MDT ID は、上記のドキュメントで説明されているように、/openapi/v1/mdt/{vrfID} エンドポイントを使用して取得できます。この API は、external_integration 機能を備えた API キーで使用できます。

GET /openapi/v1/mdt/{vrfID}/{mdtID}/certs

パラメータ:

名前

タイプ

説明

format

string

キーストアと信頼ストアのフォーマット。値:jks(デフォルト値)または cert

次のファイルを含む tar.gz ファイルを返します。

jks 形式の場合:truststore.jks、topic.txt、passphrase.txt、keystone.jks、kafkaBrokerIps.txt、consumer_name.txt、consumer_group_id.txt .

jks 形式の場合:KafkaConsumerCA.cert、KafkaConsumerPrivateKey.key、kafkaCA.cert、kafkaBrokerIps.txt、topic.txt

KafkaConsumerCA.cert は公開証明書ファイルであり、KafkaConsumerPrivateKey.key ファイルには秘密キーがあります。kafkaCA.cert には CA 証明書があり、kafkaBrokerIps.txt には Kafka ブローカーの IP アドレスとポートのリストがあります。topic.txt ファイルには、MDT からデータを取得するために使用する必要があるトピックの名前が含まれています。truststore.jks および keystone.jks は、Java キーストアファイルです。

特定の VRF ID に対する DataSink のリストの取得

このエンドポイントは、指定された VRF の DataSink のリストを返します。この API は、external_integration 機能を備えた API キーで使用できます。

GET /openapi/v1/datasinks/{vrfID}

パラメータ:(なし)

DataSink ID などの属性を持つ DataSink のリストを返します。

指定された DataSink ID の DataSink 証明書のダウンロード

このエンドポイントは、指定された DataSink ID の証明書をダウンロードするために使用されます。DataSink ID は、上記のドキュメントで説明されているように、/openapi/v1/datasinks/{vrfID} エンドポイントを使用して取得できます。この API は、external_integration 機能を備えた API キーで使用できます。

GET /openapi/v1/datasinks/{vrfID}/{dsID}/certs

パラメータ:(なし)

userCA.cert、userPrivateKey.key、intermediateCA.cert、kafkaCA.cert、kafkaBrokerIps.txt、topic.txt ファイルを含む tar.gz ファイルを返します。

userCA.cert は公開証明書ファイルであり、KafkaConsumerPrivateKey.key ファイルには秘密キーがあります。intermediateCA. cert および kafkaCA.cert にはそれぞれ中間 CA 証明書とルート CA 証明書があります。kafkaBrokerIps.txt には Kafka ブローカーの IP アドレスとポートのリストがあります。topic.txt ファイルには、DataSink からデータを取得するために必要なトピックの名前があります。

変更ログ

この API は、ログ項目を変更するための読み取りアクセスを提供します。この API には、API キーに関連付けられた user_role_scope_management 機能が必要です。


(注)  


この API は、サイト管理者とルート範囲の所有者のみが使用できます。


変更ログオブジェクト

変更ログオブジェクトの属性の説明は以下のとおりです。

属性

タイプ

説明

id

string

変更ログ項目の固有識別子。

association_chain

オブジェクトの配列

この変更に関連する名前と ID のリスト。

scope

string

変更の範囲(Secure Workload の範囲とは異なります)。

action

string

アクションを変更します。

details

string

利用可能な場合、追加アクションの詳細。

created_At

integer

変更ログ項目が作成されたときの UNIX タイムスタンプ。

modifier

オブジェクト

変更を行うユーザー。

modified

オブジェクト

変更されたフィールドと値。

original

オブジェクト

変更前のフィールドと値。

version

integer

バージョン ID。

検索

このエンドポイントは、指定された条件に一致する変更ログのリストを返します。

GET /openapi/v1/change_logs

パラメータ:要求 URL には、次のパラメータが含まれています。

名前

タイプ

説明

root_app_scope_id

string

(オプション)ルート範囲の所有者に必要です。ルート範囲で結果をフィルタリングします。

association_name

string

(オプション)ルート範囲の所有者に必要です。指定した項目タイプを返します。例:「H4Users」

history_action

string

(オプション)アクションを変更します。例:「update」

details

string

(オプション)アクションの詳細。例:「soft-delete」

before_epoch

integer

(オプション)この UNIX タイムスタンプより前に作成された結果を含めます。

after_epoch

integer

(オプション)この UNIX タイムスタンプの後に作成された結果を含めます。

offset

integer

(オプション)スキップする結果の数。

limit

integer

(オプション)結果の制限数。デフォルトは 1000 です。

応答オブジェクト:変更ログオブジェクトのリストを返します。

応答

この応答は、本文の JSON オブジェクトで、次のプロパティがあります。

名前

タイプ

説明

total_count

integer

オフセットまたは制限を適用する前に一致した項目の総数。

Items

オブジェクトの配列

結果のリスト。

サンプル python コード

過去 1 日以内の指定されたルート範囲内の最後の 100 件の範囲オブジェクトの変更を取得します。

root_app_scope_id = '5ce480db497d4f1ca1fc2b2b'
one_day_ago = int(time.time() - 24*60*60)
resp = restclient.get('/change_logs', params={'root_app_scope_id': root_app_scope_id,
                                               'association_name': 'AppScope',
                                               'after_epoch': one_day_ago,
                                               'limit': 100})

2 番目の 1000 件の範囲オブジェクトの変更を取得します。

root_app_scope_id = '5ce480db497d4f1ca1fc2b2b'
resp = restclient.get('/change_logs', params={'root_app_scope_id': root_app_scope_id,
                                              'association_name': 'AppScope',
                                              'offset': 1000})

これらの結果をさらに絞り込み、新しい範囲の作成のみを表示します。

root_app_scope_id = '5ce480db497d4f1ca1fc2b2b'
one_day_ago = int(time.time() - 24 * 60 * 60)
resp = restclient.get('/change_logs', params={'root_app_scope_id': root_app_scope_id,
                                              'association_name': 'AppScope',
                                              'history_action': 'create',
                                              'after_epoch': one_day_ago,
                                              'limit': 100})

サイト管理者は、制限とオフセットを使用して、すべての範囲にわたるすべての変更を繰り返し取得できます。

resp = restclient.get('/change_logs', params={'offset': 100, 'limit': 100})

ルーティング不可能なエンドポイント

以下の API は、ルーティング不可能なエンドポイントを管理したり、IP やサブネットをルーティング不可能であるとマークしたり、ユーザーによってルーティング不可能とマークされたエンドポイントのリストを取得したり、ルーティング不可能なエンドポイントとされた IP やサブネットのマークを解除したりするために使用されます。API キーに関連付けられた user_data_upload 機能が必要です。

ルーティング不可能なエンドポイントオブジェクト

ルーティング不可能なエンドポイントオブジェクトの属性について、以下で説明します。

属性

タイプ

説明

id

string

ルーティング不可能なエンドポイントの一意の識別子。

name

文字列

ルーティング不可能なエンドポイントのユーザー指定の名前。

subnet

string

IPv4/IPv6 サブネット。

vrf-id

long

ルーティング不可能なエンドポイントが属する VRF の ID。

address_type

string

サブネットアドレスタイプに基づく IPv4/IPv6

host_uuid

string

エージェントの一意の ID

description

string

ルーティング不可能なエンドポイントのユーザー指定の説明。

ルーティング不可能なエンドポイントの取得

このエンドポイントは、指定されたテナント内のルーティング不可能なエンドポイントのリストを返します。

GET /openapi/v1/non_routable_endpoints/{rootScopeName}

パラメータ:(なし)

ルーティング不可能なエンドポイントの作成

このエンドポイントは、ルーティング不可能なエンドポイントを作成するために使用されます。

POST /openapi/v1/non_routable_endpoints/{rootScopeName}

パラメータ:

属性

タイプ

説明

name

文字列

ルーティング不可能なエンドポイントのユーザー指定の名前。

subnet

string

IPv4 または IPv6 サブネット。

address_type(オプション)

string

サブネットアドレスタイプに基づく IPv4 または IPv6。

host_uuid(オプション)

string

エージェントの一意の ID

description(オプション)

string

ルーティング不可能なエンドポイントのユーザー指定の説明。

* オプションのフィールドが指定されていない場合、null 値が入力されます。

サンプル python コード


  req_payload = {
    "name": "nre-1",
    "subnet": "1.1.1.1/30",
    "address_type": IPV4,
    "description": "sample parameters test"
  }
  resp = restclient.post('/openapi/v1/non_routable_endpoints/Default', json_body=json.dumps(req_payload))

名前を使用したルーティング不可能な特定のエンドポイントの取得

このエンドポイントは、指定された名前のルーティング不可能なエンドポイントを返します。

GET /openapi/v1/non_routable_endpoints/{rootScopeName}/name/{name}

パラメータ:(なし)

ID を使用したルーティング不可能な特定のエンドポイントの取得

このエンドポイントは、指定された ID のルーティング不可能なエンドポイントを返します。

GET /openapi/v1/non_routable_endpoints/{rootScopeName}/id/{id}

パラメータ:(なし)

ルーティング不可能な特定のエンドポイント名の更新

このエンドポイントは、ルーティング不可能なエンドポイントを更新するために使用されます。既存のルーティング不可能なエンドポイントの ID または名前を使用して、エンドポイント名前を更新します。

PUT /openapi/v1/non_routable_endpoints/{rootScopeName}

パラメータ:

属性

タイプ

説明

id

string

ルーティング不可能なエンドポイントの一意の識別子。

name

文字列

ルーティング不可能なエンドポイントのユーザー指定の名前。

new_name

string

更新する新しい名前

サンプル python コード


  req_payload = {
    "name": "nre-1",
    "new_name": "nre-updated",
  }
  resp = restclient.put('/openapi/v1/non_routable_endpoints/Default', json_body=json.dumps(req_payload))


  req_payload = {
    "id": "5f706964a5b5f16ed4b0aacb",
    "new_name": "nre-updated",
  }
  resp = restclient.put('/openapi/v1/non_routable_endpoints/Default', json_body=json.dumps(req_payload))

名前を使用したルーティング不可能なエンドポイントの削除

このエンドポイントは、特定のルーティング不可能なエンドポイントを削除します。

DELETE /openapi/v1/non_routable_endpoints/{rootScopeName}/name/{name}

ID を使用した特定のルーティング不可能なエンドポイントの削除

このエンドポイントは、特定のルーティング不可能なエンドポイントを削除します。

DELETE /openapi/v1/non_routable_endpoints/{rootScopeName}/id/{id}

外部アプライアンスおよびコネクタの設定およびコマンドのスキーマ

設定グループ API

設定グループ API は、アプライアンスおよびコネクタ API の設定スキーマを提供します。これらの API には、API キーに関連付けられている sensor_management または external_integration 機能が必要です。

設定のスキーマを取得する API

このエンドポイントは、選択された設定のタイプやグループの静的設定スキーマを返します。

GET /openapi/v1/config_groups/schema/<type>

ここで、<type> はアプライアンス設定タイプです。

パラメータ:要求 URL には、次のパラメータが含まれています。

名前

タイプ

説明

type

string

"VM1"、"VM3"、"NTP"、"LOG"、"LDAP"、"NETFLOW"、"IPFIX"、"NETSCALER"、"F5"、"AWS"、"ENDPOINT"、"SLACK_NOTIFIER"、"GCP_CONNECTOR"、"PAGERDUTY_NOTIFIER"、"SYSLOG_NOTIFIER"、"KINESIS_NOTIFIER"、"EMAIL_NOTIFIER"、"ISE"、"MERAKI"、"SLACK_NOTIFIER_OVERRIDE"、"PAGERDUTY_NOTIFIER_OVERRIDE"、"SYSLOG_NOTIFER_OVERRIDE"、"KINESIS_NOTIFER_OVERRIDE"、"AZURE_CONNECTOR"、"EMAIL_NOTIFIER_OVERRIDE"、"SYSLOG_SEVERITY_MAPPING"、"SERVICENOW"、"SYNC_INTERVAL"、"ALERT"、"VM3_ERSPAN"、"AWS_CONNECTOR"、"VM0" から設定タイプを指定します

応答オブジェクト:選択された設定タイプの設定スキーマを返します。

サンプル応答

resp = restclient.get('/config_groups/schema/LOG')
  if resp.status_code == 200:
    parsed_resp = json.loads(resp.content)
    print json.dumps(parsed_resp)

サンプル応答

{
    "type": "LOG",
    "name": "Log",
    "mode": "TEST",
    "config": {
      "secured": {},
      "unsecured": {
        "log-level": "info",
        "max-log-size": 10,
        "max-log-age": 30,
        "max-log-backups": 20 }
    },
    "fill_ins": [
      {
        "field": "log-level",
        "label": "Logging Level",
        "placeholder": "info",
        "type": "user_fill_in",
        "input_type": "dropdown",
        "possible_values": [
          "trace",
          "debug",
          "info",
          "warn",
          "error"
        ]
    },
      {
        "field": "max-log-size",
        "label": "Max Log File Size (in MB)",
        "placeholder": 10,
        "type": "user_fill_in",
        "input_type": "number",
        "min": 1,
        "max": 10240
      },
      {"field": "max-log-age",
        "label": "Log Rotation (in days)",
        "placeholder": 30,
        "type": "user_fill_in",
        "input_type": "number",
        "min": 1,
        "max": 365
      },
      {
        "field": "max-log-backups",
        "label": "Log Rotation (in instances)",
        "placeholder": 20,
        "type": "user_fill_in",
        "input_type": "number",
        "min": 1,
        "max": 100 
}
    ]
  }

トラブルシューティング コマンドのスキーマを取得する API

このエンドポイントは、選択したタイプのトラブルシューティング コマンドの、静的なトラブルシューティング コマンドの設定スキーマを返します。

GET /openapi/v1/config_groups/command_schema/<type>

リクエストペイロードで、<type> はトラブルシューティング コマンドの設定タイプです。

パラメータ:

リクエスト URL には次のパラメータが含まれています

名前

タイプ

説明

type

string

"SHOW LOG"、"SHOW_SERVICE_LOG"、"SHOW_RUNNING_CONF"、"SHOW_SERVICE_RUNNING_CONF"、"SHOW_SYS_COMMANDS"、"SHOW_DOCKER_COMMANDS"、"SHOW_DOCKER_INSTANCE_COMMANDS"、"OPER_DOCKER_INSTANCE_COMMANDS"、"SHOW_SUPERVISOR_COMMANDS"、"SHOW_SUPERVISOR_SERVICE_COMMANDS"、"OPER_SUPERVISOR_SERVICE_COMMANDS"、"NETWORK_CONNECTIVITY_COMMANDS"、"LIST_FILES"、"LIST_SERVICE_FILES"、"PACKET_CAPTURE"、"SHOW_DATA_EXPORT_LGO"、"SHOW_DATAEXPORT_RUNNING_CONF"、"SHOW_DATA_EXPORT_SYS_COMMANDS"、"UPDATE_LISTENING_PORT"、"UPDATE_TAN_LOG_CONF"、"SNAPSHOT_APPLIANCE"、"SNAPSHOT_CONNECTOR"、"SHOW_AWS_DOWNLOADER_LOG"、"CONTROLLER_PROFILING"、"SERVICE_PROFILING"、"RESTART_CONNECTOR_CONTAINER"、"RESTART_CONNECTOR_SERVICE"、"CONNECTOR_ALERT_INTERVAL_APPLIANCE"、"CONNECTOR_ALERT_INTERVAL_CONNECTOR"、"EXEC_SCRIPT"、"SHOW_SEGMENTATION_POLICIES" からコマンドタイプを指定します

応答オブジェクト:選択された設定タイプの設定スキーマを返します。

サンプル応答

resp = restclient.get('/config_groups/command_schema/SHOW_LOG')
  if resp.status_code == 200:
    parsed_resp = json.loads(resp.content)
    print json.dumps(parsed_resp)

サンプル応答

{
    "name": "Show logs",
    "desc": "Show the contents of a log file",
    "long_desc": "Show the contents of a log file and optionally grep the file for a specified pattern. The output is tailed for the last 5000 lines.",
    "valid_appliances": [
      "TETRATION_DATA_INGEST",
      "TETRATION_EDGE",
      "TETRATION_EXPORT"
    ],
    "valid_connectors": [
      "netflow",
      "netscaler",
      "f5",
      "aws",
      "anyconnect",
      "slack",
      "kinesis",
      "syslog",
      "email",
      "pagerduty",
      "ise",
      "asa",
      "meraki",
      "servicenow",
      "wad"
    ],
    "arg_fillins": [
      {
        "field": "pattern",
        "label": "Grep Pattern",
        "input_type": "text",
        "optional": true
      }
    ],
    "output_type": "FILE",
    "output_ext": "LOG"
  }

外部アプライアンス

外部アプライアンス API

外部アプライアンス API は、Cisco Secure Workload 外部アプライアンスの管理に関連付けられています。これらの API のセットには、API キーに関連付けられている sensor_management または external_integration 機能が必要です。

アプライアンスのリストを取得する API

このエンドポイントは、アプライアンスのリストを返します。

GET /openapi/v1/ext_appliances?root_scope_id=<root_scope_id>&type=<type>

ここで、<root_scope_id> は「範囲の取得」の API から取得できる root_scope_id です。<type> はアプライアンスタイプを決定する文字列です。

パラメータ:要求 URL には、次のパラメータが含まれています。

名前

タイプ

説明

root_scope_id

string

ルート範囲を指定します

type

string

アプライアンスタイプを指定します。“TETRATION_EDGE”、“TETRATION_DATA_INGEST”、“TETRATION_EXPORT”、“TETRATION_ERSPAN”、または “TETRATION_INTERNAL” の値を使用できます

応答オブジェクト:アプライアンスのリストを返します。

サンプル応答

resp = restclient.get('/ext_appliances?root_scope_id=63bf8d2f497d4f7287dbd335&type=TETRATION_INTERNAL')
  if resp.status_code == 200:
    parsed_resp = json.loads(resp.content)
    print json.dumps(parsed_resp)

サンプル応答

[
    {
      "root_scope_id": "63bf8d2f497d4f7287dbd335",
      "type": "tetration_internal",
      "status": {
        "state": "active",
        "controller_state": "up",
        "message": "",
        "display_state": "active"
      },
      "auto_upgrade": true,
      "created_at": 1673498141,
      "updated_at": 1673498141,
      "registered_at": 1673498141,
      "last_checkin_at": 0,
      "last_rpm_sent_at": 0,
      "upgrade_attempts": 0,
      "delete_attempts": 0,
      "last_delete_msg_sent_at": 0,
      "taas": false,
      "deleted": false,
      "deleted_at": 0,
      "connector_limit": 5000,
      "available_slots": 5000,
      "internal": true,
      "id": "63bf8e1d6419d06bef39bc85",
      "ha_peer_appliance_id": "",
      "display_type": "Tetration Internal"
    }
  ]
アプライアンスを作成する API

このエンドポイントは、アプライアンスを作成します。

POST /openapi/v1/ext_appliances

リクエストペイロードで、<config> スキーマを取得するには、アプライアンススキーマを取得する APIの応答からいずれかの “valid_config” を選択し、設定のスキーマを取得する APIに “valid_config” を適用します。

パラメータ:要求 URL には、次のパラメータが含まれています。

名前

タイプ

説明

name

文字列

名前を指定します

root_scope_id

string

ルート範囲を指定します

type

string

アプライアンスタイプを指定します。“TETRATION_EDGE”、“TETRATION_DATA_INGEST”、“TETRATION_EXPORT”、“TETRATION_ERSPAN”、または “TETRATION_INTERNAL” の値を使用できます

config

set

入力された設定スキーマを JSON 形式で提供します

taas

boolean

アプライアンスが TAAS 環境用かどうかを示します

version

string

バージョンを指定します

応答オブジェクト:作成されたアプライアンスを返します。

サンプル応答

req_payload = {
    "name":"Data Ingest Appliance",
    "type":"tetration_data_ingest",
    "root_scope_id":"63c41ff2497d4f5f5be73662",
    "config":{
      "VM3":{
        "secured":{},
        "unsecured":{
          "cidr":[
            "172.26.231.141/23",
            "172.26.231.142/23",
            "172.26.231.143/23"
          ],
          "gateway":[
            "172.26.231.140",
            "172.26.231.140",
            "172.26.231.140"
          ],
          "cidr_v6":[],
          "gateway_v6":[],
          "dns":[
            "testserver"
          ],
          "search_domains":[],
          "hostname":"",
          "use_proxy_for_tetration":false,
          "https_proxy":"",
          "no_proxy":[],
          "docker_subnet":""
        }
      }
    }
  }
  resp = restclient.post('/ext_appliances', json_body=json.dumps(req_payload))
  if resp.status_code == 200:
    parsed_resp = json.loads(resp.content)
    print json.dumps(parsed_resp)

サンプル応答

 {
    "root_scope_id":"63c41ff2497d4f5f5be73662",
    "type":"tetration_data_ingest",
    "status":{
      "state":"pending_dio",
      "controller_state":"down",
      "message":"Setting up appliance",
      "display_state":"preparing"
    },
    "auto_upgrade":true,
    "created_at":1674183549,
    "updated_at":1674183549,
    "registered_at":0,
    "last_checkin_at":0,
    "last_rpm_sent_at":0,
    "upgrade_attempts":0,
    "delete_attempts":0,
    "last_delete_msg_sent_at":0,
    "name":"Data Ingest Appliance",
    "taas":false,
    "deleted":false,
    "deleted_at":0,
    "connector_limit":3,
    "available_slots":0,
    "internal":false,
    "id":"63ca037dbca44e263daeb5d0",
    "ha_peer_appliance_id":"",
    "display_type":"Tetration Data Ingest"
  }
アプライアンスを削除する API

このエンドポイントは、指定されたアプライアンスを削除します。

DELETE /openapi/v1/ext_appliances/<id>

ここで、<id> はアプライアンスのリストを取得する APIから取得できる appliance_id です。

パラメータ:要求 URL には、次のパラメータが含まれています。

名前

タイプ

説明

id

string

アプライアンス ID を指定します

応答オブジェクト:削除されたアプライアンスのステータスを返します。

サンプル応答

resp = restclient.delete('/ext_appliances/63be3b1ade36423c12bff6e1')
  if resp.status_code == 200:
    parsed_resp = json.loads(resp.content)
    print json.dumps(parsed_resp)

サンプル応答

 {
    "status": 200,
    "code": 1000,
    "message": "deleted"
  }
ID でアプライアンスを取得する API

このエンドポイントは、指定された ID を持つアプライアンスを取得します。

GET /openapi/v1/ext_appliances/<id>

ここで、<id> はアプライアンスのリストを取得する APIから取得できる appliance_id です。

パラメータ:要求 URL には、次のパラメータが含まれています。

名前

タイプ

説明

id

string

アプライアンス ID を指定します

応答オブジェクト:指定された ID を持つアプライアンスを返します。

サンプル応答

resp = restclient.get('/ext_appliances/63bf8e1d6419d06bef39bc85')
  if resp.status_code == 200:
    parsed_resp = json.loads(resp.content)
    print json.dumps(parsed_resp)

サンプル応答

{
    "root_scope_id": "63bf8d2f497d4f7287dbd335",
    "type": "tetration_internal",
    "status": {
      "state": "active",
      "controller_state": "up",
      "message": "",
      "display_state": "active"
    },
    "auto_upgrade": true,
    "created_at": 1673498141,
    "updated_at": 1673498141,
    "registered_at": 1673498141,
    "last_checkin_at": 0,
    "last_rpm_sent_at": 0,
    "upgrade_attempts": 0,
    "delete_attempts": 0,
    "last_delete_msg_sent_at": 0,
    "taas": false,
    "deleted": false,
    "deleted_at": 0,
    "connector_limit": 5000,
    "available_slots": 5000,
    "internal": true,
    "id": "63bf8e1d6419d06bef39bc85",
    "ha_peer_appliance_id": "",
    "display_type": "Tetration Internal"
  }
アプライアンス名を変更する API

このエンドポイントは、指定された ID を持つアプライアンスの名前を変更します。

PUT /openapi/v1/ext_appliances/<id>

ここで、<id> はアプライアンスのリストを取得する APIから取得できる appliance_id です。

パラメータ:要求 URL には、次のパラメータが含まれています。

名前

タイプ

説明

id

string

アプライアンス ID を指定します

name

文字列

アプライアンスの新しい名前を指定します

応答オブジェクト:指定された ID を持つアプライアンスと新しい名前を返します。

サンプル応答

req_payload = {
    "name": "new_name",
  }
  resp = restclient.put('/ext_appliances/63bf8e1d6419d06bef39bc85', json_body=json.dumps(req_payload))
  if resp.status_code == 200:
    parsed_resp = json.loads(resp.content)
    print json.dumps(parsed_resp)

サンプル応答

{
    "root_scope_id": "63bf8d2f497d4f7287dbd335",
    "type": "tetration_internal",
    "status": {
      "state": "active",
      "controller_state": "up",
      "message": "",
      "display_state": "active"
    },
    "auto_upgrade": true,
    "created_at": 1673498141,
    "updated_at": 1673498141,
    "registered_at": 1673498141,
    "last_checkin_at": 0,
    "last_rpm_sent_at": 0,
    "upgrade_attempts": 0,
     "delete_attempts": 0,
    "last_delete_msg_sent_at": 0,
    "name": "new_name",
    "taas": false,
    "deleted": false,
    "deleted_at": 0,
    "connector_limit": 5000,
    "available_slots": 5000,
    "internal": true,
    "id": "63bf8e1d6419d06bef39bc85",
    "ha_peer_appliance_id": "",
    "display_type": "Tetration Internal"
  }
設定タイプでの設定を取得する API

このエンドポイントは、指定された ID と設定タイプを持つアプライアンスの設定を取得します。

GET /openapi/v1/ext_appliances/<id>/config?config_type=<config_type>

ここで、<id> はアプライアンスのリストを取得する APIから取得できる appliance_id です。<config_type> はアプライアンススキーマを取得する APIから取得できる "valid_config" です。

パラメータ:要求 URL には、次のパラメータが含まれています。

名前

タイプ

説明

id

string

アプライアンス ID を指定します

config_type

string

設定タイプを指定します。使用できるすべての値については、設定のスキーマを取得する APIの説明にリストされている値を参照してください

応答オブジェクト:指定されたアプライアンス ID と設定タイプを持つ設定を返します。

サンプル応答

resp = restclient.get('/ext_appliances/63c1272039042a1c0ddd3e20/config?config_type=VM3_ERSPAN')
  if resp.status_code == 200:
    parsed_resp = json.loads(resp.content)
    print json.dumps(parsed_resp)

サンプル応答

[
    {
      "mode": "TEST_AND_APPLY",
      "name": "VM3_ERSPAN",
      "root_scope_id": "63bf8d2f497d4f7287dbd335",
      "vrf_id": 1,
      "appliance_id": "63c1272039042a1c0ddd3e20",
      "deleted": false,
      "type": "VM3_ERSPAN",
      "state": "COMMIT",
      "attempts": 0,
      "config": {
        "secured": {},
        "unsecured": {
          "cidr": [
            "172.26.231.141/23",
            "172.26.231.142/23",
            "172.26.231.143/23"
          ],
          "gateway": [
            "172.26.231.140",
            "172.26.231.140",
            "172.26.231.140"
          ],
          "cidr_v6": [],
          "gateway_v6": [],
          "dns": [
            "test"
          ],
          "search_domains": [],
          "hostname": "hjtest",
          "https_proxy": "",
          "no_proxy": []
        }
      },
      "push_to_dio_at": 0,
      "created_at": 1673602848,
      "updated_at": 1673602848,
      "discovery_completed_at": 0,
      "committed_at": 0,
      "delete_at": 0,
      "error_at": 0,
      "hidden": false,
      "discovery_phase": 0,
      "internal": false,
      "id": "63c1272039042a1c0ddd3e21"
    }
  ]
新しい設定を外部アプライアンスに追加する API

このエンドポイントは、指定された ID を持つアプライアンスに新しい設定を追加します

POST /openapi/v1/ext_appliances/<id>/config

ここで、<id> はアプライアンスのリストを取得する APIから取得できる appliance_id です。リクエストペイロードでは、<type> はアプライアンススキーマを取得する APIから取得できる "valid_config" です。<config> スキーマを取得するには、アプライアンススキーマを取得する APIの応答からいずれかの "valid_config" を選択し、設定のスキーマを取得する APIに "valid_config" を適用します。

パラメータ:要求 URL には、次のパラメータが含まれています。

名前

タイプ

説明

name

文字列

設定名を指定します

type

string

設定タイプを指定します。使用できるすべての値については、設定のスキーマを取得する APIの説明にリストされている値を参照してください

config

set

入力された設定スキーマを JSON 形式で提供します

応答オブジェクト:更新された設定を返します。

サンプル応答

req_payload = {
    "name": "new_config",
    "type": "VM3_ERSPAN",
    "config": {}
  }
  resp = restclient.post('/ext_appliances/63c1272039042a1c0ddd3e20/config', json_body=json.dumps(req_payload))
  if resp.status_code == 200:
    parsed_resp = json.loads(resp.content)
    print json.dumps(parsed_resp)

サンプル応答

 {
    "prev_id": "63c1272039042a1c0ddd3e21",
    "mode": "TEST_AND_APPLY",
    "name": "new_config",
    "root_scope_id": "63bf8d2f497d4f7287dbd335",
    "vrf_id": 1,
    "appliance_id": "63c1272039042a1c0ddd3e20",
    "deleted": false,
    "type": "VM3_ERSPAN",
    "state": "COMMIT",
    "attempts": 0,
    "config": {
      "secured": {},
      "unsecured": null
    },
    "push_to_dio_at": 0,
    "created_at": 1673661042,
    "updated_at": 1673661042,
    "discovery_completed_at": 0,
    "committed_at": 0,
    "delete_at": 0,
    "error_at": 0,
    "hidden": false,
    "discovery_phase": 0,
    "internal": false,
    "id": "63c20a7239042a0991b871b7"
  }
設定を削除する API

このエンドポイントは、指定されたアプライアンスから設定を削除します。

DELETE /openapi/v1/ext_appliances/<id>/config/<config_id>

ここで、<id> はアプライアンスのリストを取得する APIから取得できる appliance_id です。<config_id> は設定タイプでの設定を取得する APIから取得できる id です。

パラメータ:要求 URL には、次のパラメータが含まれています。

名前

タイプ

説明

id

string

アプライアンス ID を指定します

config_id

string

設定 ID を指定します

応答オブジェクト:指定されたアプライアンスの削除された設定のステータスを返します。

サンプル応答

resp = restclient.delete('/ext_appliances/63c1272039042a1c0ddd3e20/config/63c1272039042a1c0ddd3e21')
  if resp.status_code == 200:
    parsed_resp = json.loads(resp.content)
    print json.dumps(parsed_resp)

サンプル応答

{
    "status": 200,
    "code": 1000,
    "message": "deleted"
  }
設定を取得する API

このエンドポイントは、指定された ID を持つ設定を取得します。

GET /openapi/v1/ext_appliances/<id>/config/<config_id>

ここで、<id> はアプライアンスのリストを取得する APIから取得できる appliance_id です。<config_id> は設定タイプでの設定を取得する APIから取得できる id です。

パラメータ:要求 URL には、次のパラメータが含まれています。

名前

タイプ

説明

id

string

アプライアンス ID を指定します

config_id

string

設定 ID を指定します

応答オブジェクト:指定された ID を持つ設定を返します。

サンプル応答

resp = restclient.get('/ext_appliances/63c1272039042a1c0ddd3e20/config/63c1272039042a1c0ddd3e21')
  if resp.status_code == 200:
    parsed_resp = json.loads(resp.content)
    print json.dumps(parsed_resp)
b

サンプル応答

{
    "mode": "TEST_AND_APPLY",
    "name": "VM3_ERSPAN",
    "root_scope_id": "63bf8d2f497d4f7287dbd335",
    "vrf_id": 1,
    "appliance_id": "63c1272039042a1c0ddd3e20",
    "deleted": false,
    "type": "VM3_ERSPAN",
    "state": "COMMIT",
    "attempts": 0,
    "config": {
      "secured": {},
      "unsecured": {
        "cidr": [
          "172.26.231.141/23",
          "172.26.231.142/23",
          "172.26.231.143/23"
        ],
        "gateway": [
          "172.26.231.140",
          "172.26.231.140",
          "172.26.231.140"
        ],
        "cidr_v6": [],
        "gateway_v6": [],
        "dns": [
          "test"
        ],
        "search_domains": [],
        "hostname": "hjtest",
        "https_proxy": "",
        "no_proxy": []
      }
    },
    "push_to_dio_at": 0,
    "created_at": 1673602848,
    "updated_at": 1673602848,
    "discovery_completed_at": 0,
    "committed_at": 0,
    "delete_at": 0,
    "error_at": 0,
    "hidden": false,
    "discovery_phase": 0,
    "internal": false,
    "id": "63c1272039042a1c0ddd3e21"
  }
アプライアンススキーマを取得する API

このエンドポイントは、指定されたタイプを持つアプライアンススキーマを取得します。

GET /openapi/v1/ext_appliances/schema/<type>

ここで、<type> はアプライアンスタイプを決定する文字列です。

パラメータ:要求 URL には、次のパラメータが含まれています。

名前

タイプ

説明

type

string

アプライアンスタイプを指定します。"TETRATION_EDGE"、"TETRATION_DATA_INGEST"、"TETRATION_EXPORT"、"TETRATION_ERSPAN"、または "TETRATION_INTERNAL" の値を使用できます

応答オブジェクト:設定スキーマを返します。

サンプル応答

resp = restclient.get('/ext_appliances/schema/TETRATION_ERSPAN')
  if resp.status_code == 200:
    parsed_resp = json.loads(resp.content)
    print json.dumps(parsed_resp)

サンプル応答

 {
    "name": "Data Ingest for ERSPAN",
    "type": "tetration_erspan",
    "desc": "Data Ingest Appliance for ERSPAN",
    "long_desc": "Data Ingest appliance for ERSPAN is a software appliance that can export flow data from ERSPAN appliance.",
    "valid_config": [
      "VM3_ERSPAN"
    ],
    "deploy_config": [
      "VM3_ERSPAN"
    ],
    "connectors": [
      "ERSPAN"
    ],
    "limit_connectors_per_appliance": 0,
    "limit_per_rootscope": 8,
    "limit_per_rootscope_taas": 4,
    "limit_per_cluster": 150,
    "cco_url": "https://software.cisco.com/download/home/286309796/type/286309874/release/3.7.1.26.devel"
  }
アプライアンスで使用可能なトラブルシューティング コマンドを表示する API

このエンドポイントは、指定されたアプライアンスで使用できるトラブルシューティング コマンドのリストを返します。

GET /openapi/v1/ext_appliances/<id>/commands/available

ここで、<id> はアプライアンスのリストを取得する APIから取得できる appliance_id です。

パラメータ:要求 URL には、次のパラメータが含まれています。

名前

タイプ

説明

id

string

アプライアンス ID を指定します

応答オブジェクト:指定されたアプライアンスで使用できるトラブルシューティング コマンドのリストを返します。

サンプル応答

resp = restclient.get('/ext_appliances/63c6ef42bca44e2b5e729191/commands/available')
  if resp.status_code == 200:
    parsed_resp = json.loads(resp.content)
    print json.dumps(parsed_resp)

サンプル応答

[
    {
      "type": "UPDATE_LISTENING_PORT",
      "name": "Update the listening port on a connector"
    },
    {
      "type": "SNAPSHOT_APPLIANCE",
      "name": "Collect Snapshot from Appliance"
    },
    {
      "type": "LIST_FILES",
      "name": "List a directory"
    },
    {
      "type": "CONTROLLER_PROFILING",
      "name": "Collect controller profile"
    },
    {
      "type": "SHOW_LOG",
      "name": "Show logs"
    },
    {
      "type": "SHOW_SUPERVISOR_COMMANDS",
      "name": "Execute supervisorctl command"
    },
    {
      "type": "PACKET_CAPTURE",
      "name": "Packet capture"
    },
    {
      "type": "NETWORK_CONNECTIVITY_COMMANDS",
      "name": "Test network connectivity"
    },
    {
      "type": "SHOW_DOCKER_COMMANDS",
      "name": "Execute docker command"
    },
    {
      "type": "CONNECTOR_ALERT_INTERVAL_APPLIANCE",
      "name": "Override connector alert interval for Appliance"
    },
    {
      "type": "SHOW_RUNNING_CONF",
      "name": "Show running configuration"
    },
    {
      "type": "SHOW_SYS_COMMANDS",
      "name": "Execute system command"
    }
  ]
トラブルシューティング コマンドを一覧表示する API

このエンドポイントは、指定されたアプライアンスに対して有効になっているトラブルシューティング コマンドのリストを返します。

GET /openapi/v1/ext_appliances/<id>/commands

ここで、<id> はアプライアンスのリストを取得する APIから取得できる appliance_id です。

パラメータ:要求 URL には、次のパラメータが含まれています。

名前

タイプ

説明

id

string

アプライアンス ID を指定します

応答オブジェクト:指定されたアプライアンスに対して有効になっているトラブルシューティング コマンドのリストを返します。

サンプル応答

resp = restclient.get('/ext_appliances/63be3b1ade36423c12bff6e1/commands')
  if resp.status_code == 200:
    parsed_resp = json.loads(resp.content)
    print json.dumps(parsed_resp)

サンプル応答

[
    {
      "appliance_id": "63be3b1ade36423c12bff6e1",
      "state": "pending",
      "level": "APPLIANCE",
      "command": "SHOW_LOG",
      "arg_string": "",
      "args": {},
      "tailed": false,
      "rc": 0,
      "push_to_dio_at": 0,
      "attempts": 0,
      "deleted": false,
      "deleted_at": 0,
      "created_at": 1673595392,
      "total_chunk": 0,
      "id": "63c10a0039042a6aee1b008c"
    }
  ]
トラブルシューティング コマンドを作成する API

このエンドポイントは、指定されたアプライアンスで使用できるトラブルシューティング コマンドを作成します。

POST /openapi/v1/ext_appliances/<id>/commands

ここで、<id> はアプライアンスのリストを取得する APIから取得できる appliance_id です。リクエストペイロードで、<command> はトラブルシューティング コマンドのスキーマを取得する APIの応答の "valid_appliances" フィールドから取得できるトラブルシューティング コマンド タイプです。<arguments> はコマンドスキーマの入力された JSON オブジェクトであり、トラブルシューティング コマンドのスキーマを取得する APIから取得できます。

パラメータ:要求 URL には、次のパラメータが含まれています。

名前

タイプ

説明

id

string

アプライアンス ID を指定します

command

string

コマンドタイプを指定します

引数

set

入力されたコマンドスキーマを JSON 形式で提供します

応答オブジェクト:指定されたアプライアンスの作成されたトラブルシューティング コマンドを返します。

サンプル応答

req_payload = {
    "command": "SHOW_LOG",
    "arguments": {}
  }
  resp = restclient.post('/ext_appliances/63be3b1ade36423c12bff6e1/commands', json_body=json.dumps(req_payload))
  if resp.status_code == 200:
    parsed_resp = json.loads(resp.content)
    print json.dumps(parsed_resp)

サンプル応答

 {
    "appliance_id": "63be3b1ade36423c12bff6e1",
    "state": "pending",
    "level": "APPLIANCE",
    "command": "SHOW_LOG",
    "args": {},
    "tailed": false,
    "rc": 0,
    "push_to_dio_at": 0,
    "attempts": 0,
    "deleted": false,
    "deleted_at": 0,
    "created_at": 1673595392,
    "total_chunk": 0,
    "id": "63c10a0039042a6aee1b008c"
  }
トラブルシューティング コマンドを削除する API

このエンドポイントは、指定されたアプライアンスに対して有効になっているトラブルシューティング コマンドを削除します。

DELETE /openapi/v1/ext_appliances/<id>/commands/<command_id>

ここで、<id> はアプライアンスのリストを取得する APIから取得できる appliance_id です。<command_id> はトラブルシューティング コマンドを一覧表示する APIから取得できる id です。

パラメータ:要求 URL には、次のパラメータが含まれています。

名前

タイプ

説明

id

string

アプライアンス ID を指定します

command_id

string

コマンド ID を指定します

応答オブジェクト:指定されたアプライアンスの削除されたトラブルシューティング コマンドのステータスを返します。

サンプル応答

resp = restclient.delete('/ext_appliances/63be3b1ade36423c12bff6e1/commands/63c10a0039042a6aee1b008c')
  if resp.status_code == 200:
    parsed_resp = json.loads(resp.content)
    print json.dumps(parsed_resp)

サンプル応答

 {
    "status": 200,
    "code": 1000,
    "message": "deleted"
  }
トラブルシューティング コマンドを返す API

このエンドポイントは、指定されたアプライアンスに対して選択されたトラブルシューティング コマンドを返します。

GET /openapi/v1/ext_appliances/<id>/commands/<command_id>

ここで、<id> はアプライアンスのリストを取得する APIから取得できる appliance_id です。<command_id> はトラブルシューティング コマンドを一覧表示する APIから取得できる id です。

パラメータ:要求 URL には、次のパラメータが含まれています。

名前

タイプ

説明

id

string

アプライアンス ID を指定します

command_id

string

コマンド ID を指定します

応答オブジェクト:指定されたアプライアンスに対して選択されたトラブルシューティング コマンドを返します。

サンプル応答

resp = restclient.get('/ext_appliances/63be3b1ade36423c12bff6e1/commands/63c10fd139042a1c0ddd3e1f')
  if resp.status_code == 200:
    parsed_resp = json.loads(resp.content)
    print json.dumps(parsed_resp)

サンプル応答

{
    "appliance_id": "63be3b1ade36423c12bff6e1",
    "state": "pending",
    "level": "APPLIANCE",
    "command": "SHOW_LOG",
    "arg_string": "",
    "args": {},
    "tailed": false,
    "rc": 0,
    "push_to_dio_at": 0,
    "attempts": 0,
    "deleted": false,
    "deleted_at": 0,
    "created_at": 1673596881,
    "total_chunk": 0,
    "id": "63c10fd139042a1c0ddd3e1f"
  }
アプライアンスコマンドの出力をファイルとしてダウンロードする API

このエンドポイントは、コマンドの出力をファイルとしてダウンロードします。

GET /openapi/v1/appliances/<id>/commands/{command_id}/download

ここで、<id> はアプライアンスのリストを取得する APIから取得できる appliance_id です。<command_id> はトラブルシューティング コマンドを一覧表示する APIから取得できる id です。すべてのコマンドにダウンロード可能な出力があるわけではありません。トラブルシューティング コマンドのスキーマを取得する APIによって提供されるコマンドスキーマを確認してください。"output_type": "FILE" はダウンロード可能なコンテンツがあることを示し、"output_ext" はファイルタイプを示しています。

パラメータ:要求 URL には、次のパラメータが含まれています。

名前

タイプ

説明

id

string

アプライアンス ID を指定します

command_id

string

コマンド ID を指定します

応答オブジェクト:コマンド出力をファイルとしてダウンロードします。

サンプル応答

resp = restclient.download('downloadFile', '/appliances/63c6ef42bca44e2b5e729191/commands/63cace941a49bd4c0e0cf45a/download')

コネクタ

コネクタ API

コネクタ API は、Cisco Secure Workload コネクタの管理に関連付けられています。これらの API のセットには、API キーに関連付けられている sensor_management または external_integration 機能が必要です。

すべてのタイプのコネクタを取得する API

このエンドポイントは、指定されたルート範囲のすべてのタイプのコネクタを取得します。

GET /openapi/v1/connectors/cards?root_scope_id=<root_scope_id>

ここで、<root_scope_id> は範囲の取得の API から取得できる root_scope_id です。

パラメータ:要求 URL には、次のパラメータが含まれています。

名前

タイプ

説明

root_scope_id

string

ルート範囲を指定します

応答オブジェクト:指定されたルート範囲 ID を持つすべてのタイプのコネクタを返します。

サンプル応答

resp = restclient.get('/connectors/cards?root_scope_id=63bf8d2f497d4f7287dbd335')
  if resp.status_code == 200:
    parsed_resp = json.loads(resp.content)
    print json.dumps(parsed_resp)

サンプル応答

[{
    "type": "NETFLOW",
    "name": "NetFlow",
    "desc": "Collect telemetry from network devices",
    "long_desc": "Collect NetFlow V9 and/or IPFIX telemetry from network devices such as routers and switches.",
    "group": "Flow Ingest",
    "index": 0,
    "appliance_type": "tetration_data_ingest",
    "state": "disabled",
    "limit_per_appliance": 3,
    "limit_per_rootscope": 10,
    "limit_per_cluster": 100,
    "config": [
      "LOG",
      "ALERT"
    ],
    "max_instances": 0,
    "noteworthy": false,
    "hidden": false,
    "capabilities": [
      "Flow Visibility"
    ],
    "connector_count": 0,
    "group_order": 0
  },
  {
    "type": "NETSCALER",
    "name": "NetScaler",
    "desc": "Collect telemetry from Citrix ADC",
    "long_desc": "Collect telemetry from Citrix ADC, stitch client and server side flows.",
    "group": "Flow Ingest",
    "index": 2,
    "appliance_type": "tetration_data_ingest",
    "state": "disabled",
    "limit_per_appliance": 3,
    "limit_per_rootscope": 10,
    "limit_per_cluster": 100,
    "config": [
      "LOG",
      "ALERT"
    ],
    "max_instances": 0,
    "noteworthy": false,
    "hidden": false,
    "capabilities": [
      "Flow Visibility",
      "Flow Stitching",
      "ADM"
    ],
    "connector_count": 0,
    "group_order": 0
  },
  {
    "type": "F5",
    "name": "F5",
    "desc": "Collect telemetry from F5 BIG-IP",
    "long_desc": "Collect telemetry from F5 BIG-IP, stitch client and server side flows, enrich client inventory with user attributes.",
    "group": "Flow Ingest",
    "index": 1,
    "appliance_type": "tetration_data_ingest",
    "state": "disabled",
    "limit_per_appliance": 3,
    "limit_per_rootscope": 10,
    "limit_per_cluster": 100,
    "config": [
      "LDAP",
      "LOG",
      "ALERT"
    ],
    "max_instances": 0,
    "noteworthy": false,
    "hidden": false,
    "capabilities": [
      "Flow Visibility",
      "User Insights",
      "Flow Stitching",
      "ADM"
    ],
    "connector_count": 0,
    "group_order": 0
  },
  {
    "type": "ANYCONNECT",
    "name": "AnyConnect",
    "desc": "Collect telemetry from AnyConnect NVM",
    "long_desc": "Collect telemetry data from Cisco AnyConnect Network Visibility Module (NVM) and enrich endpoint inventories with user attributes",
    "group": "Endpoints",
    "index": 0,
    "appliance_type": "tetration_data_ingest",
    "state": "disabled",
    "limit_per_appliance": 1,
    "limit_per_rootscope": 50,
    "limit_per_cluster": 500,
    "config": [
      "ENDPOINT",
      "LDAP",
      "LOG",
      "ALERT"
    ],
    "max_instances": 0,
    "noteworthy": false,
    "hidden": false,
    "capabilities": [
      "Flow Visibility",
      "Process Annotation",
      "User Insights",
      "Endpoint Insights",
      "Inventory Enrichment"
    ],
    "connector_count": 0,
    "group_order": 1
  },
  {
    "type": "ASA",
    "name": "Cisco Secure Firewall",
    "desc": "Collect telemetry from Cisco Secure Firewall",
    "long_desc": "Collect telemetry from Cisco Secure Firewall, stitch client and server side flows. Recommended usage with ISE connector for flow visibility.",
    "group": "Flow Ingest",
    "index": 3,
    "appliance_type": "tetration_data_ingest",
    "state": "disabled",
    "limit_per_appliance": 1,
    "limit_per_rootscope": 10,
    "limit_per_cluster": 100,
    "config": [
      "LOG",
      "ALERT"
    ],
    "max_instances": 0,
    "noteworthy": false,
    "hidden": false,
    "capabilities": [
      "Flow Visibility",
      "Flow Stitching",
      "ADM"
    ],
    "connector_count": 0,
    "group_order": 0
  },
  {
    "type": "SLACK",
    "name": "Slack",
    "desc": "Send alerts to Slack",
    "long_desc": "Send Tetration Alerts to Slack.",
    "group": "Alerts",
    "index": 2,
    "appliance_type": "tetration_edge",
    "state": "disabled",
    "limit_per_appliance": 1,
    "limit_per_rootscope": 1,
    "limit_per_cluster": 150,
    "config": [
      "SLACK_NOTIFIER",
      "ALERT"
    ],
    "max_instances": 0,
    "noteworthy": false,
    "hidden": false,
    "capabilities": [
      "Alert Destination"
    ],
    "connector_count": 0,
    "group_order": 3
  },
  {
    "type": "KINESIS",
    "name": "Kinesis",
    "desc": "Send alerts to Kinesis",
    "long_desc": "Send Tetration Alerts to Kinesis.",
    "group": "Alerts",
    "index": 4,
    "appliance_type": "tetration_edge",
    "state": "disabled",
    "limit_per_appliance": 1,
    "limit_per_rootscope": 1,
    "limit_per_cluster": 150,
    "config": [
      "KINESIS_NOTIFIER",
      "ALERT"
    ],
    "max_instances": 0,
    "noteworthy": false,
    "hidden": false,
    "capabilities": [
      "Alert Destination"
    ],
    "connector_count": 0,
    "group_order": 3
  },
  {
    "type": "SYSLOG",
    "name": "Syslog",
    "desc": "Send alerts to Syslog server",
    "long_desc": "Send Tetration Alerts to Syslog server.",
    "group": "Alerts",
    "index": 0,
    "appliance_type": "tetration_edge",
    "state": "disabled",
    "limit_per_appliance": 1,
    "limit_per_rootscope": 1,
    "limit_per_cluster": 150,
    "config": [
      "SYSLOG_NOTIFIER",
      "SYSLOG_SEVERITY_MAPPING",
      "ALERT"
    ],
    "max_instances": 0,
    "noteworthy": false,
    "hidden": false,
    "capabilities": [
      "Alert Destination"
    ],
    "connector_count": 0,
    "group_order": 3
  },
  {
    "type": "EMAIL",
    "name": "Email",
    "desc": "Send alerts to Email",
    "long_desc": "Send Tetration Alerts to Email.",
    "group": "Alerts",
    "index": 1,
    "appliance_type": "tetration_edge",
    "state": "disabled",
    "limit_per_appliance": 1,
    "limit_per_rootscope": 1,
    "limit_per_cluster": 150,
    "config": [
      "EMAIL_NOTIFIER",
      "ALERT"
    ],
    "max_instances": 0,
    "noteworthy": false,
    "hidden": false,
    "capabilities": [
      "Alert Destination"
    ],
    "connector_count": 0,
    "group_order": 3
  },
  {
    "type": "PAGERDUTY",
    "name": "Pager Duty",
    "desc": "Send alerts to Pager Duty",
    "long_desc": "Send Tetration Alerts to Pager Duty",
    "group": "Alerts",
    "index": 3,
    "appliance_type": "tetration_edge",
    "state": "disabled",
    "limit_per_appliance": 1,
    "limit_per_rootscope": 1,
    "limit_per_cluster": 150,
    "config": [
      "PAGERDUTY_NOTIFIER",
      "ALERT"
    ],
    "max_instances": 0,
    "noteworthy": false,
    "hidden": false,
    "capabilities": [
      "Alert Destination"
    ],
    "connector_count": 0,
    "group_order": 3
  },
  {
    "type": "ISE",
    "name": "ISE",
    "desc": "Collect endpoints and inventories from Cisco ISE",
    "long_desc": "Collect information about endpoints and inventories managed by Cisco ISE appliances and enrich endpoint inventories with user attributes and secure group tags (SGT). Recommended usage with Cisco Secure Firewall connector for flow visibility.",
    "group": "Endpoints",
    "index": 1,
    "appliance_type": "tetration_edge",
    "state": "disabled",
    "limit_per_appliance": 1,
    "limit_per_rootscope": 1,
    "limit_per_cluster": 150,
    "config": [
      "LDAP",
      "LOG",
      "ALERT"
    ],
    "instance_spec": "ISE",
    "max_instances": 20,
    "noteworthy": false,
    "hidden": false,
    "capabilities": [
      "User Insights",
      "Inventory Enrichment",
      "Endpoint Insights",
      "Software Compliance Posture",
      "MDM Insights"
    ],
    "connector_count": 0,
    "group_order": 1
  },
  {
    "type": "MERAKI",
    "name": "Meraki",
    "desc": "Collect telemetry from Meraki firewalls",
    "long_desc": "Collect telemetry data from Meraki firewalls.",
    "group": "Flow Ingest",
    "index": 5,
    "appliance_type": "tetration_data_ingest",
    "state": "disabled",
    "limit_per_appliance": 1,
    "limit_per_rootscope": 10,
    "limit_per_cluster": 100,
    "config": [
      "LOG",
      "ALERT"
    ],
    "max_instances": 0,
    "noteworthy": false,
    "hidden": false,
    "capabilities": [
      "Flow Visibility"
    ],
    "connector_count": 0,
    "group_order": 0
  },
  {
    "type": "SERVICENOW",
    "name": "ServiceNow",
    "desc": "Collect ServiceNow CMDB records for inventories",
    "long_desc": "Collect CMDB information and service records from ServiceNow instance and enriches endpoint inventories with cmdb attributes.",
    "group": "Inventory Enrichment",
    "index": 1,
    "appliance_type": "tetration_edge",
    "state": "disabled",
    "limit_per_appliance": 1,
    "limit_per_rootscope": 1,
    "limit_per_cluster": 150,
    "config": [
      "SERVICENOW",
      "SYNC_INTERVAL",
      "LOG",
      "ALERT"
    ],
    "instance_spec": "SERVICENOW",
    "max_instances": 10,
    "noteworthy": false,
    "hidden": false,
    "capabilities": [
      "User Insights",
      "Inventory Enrichment",
      "Endpoint Insights",
      "Software Compliance Posture"
    ],
    "connector_count": 0,
    "group_order": 2
  },
  {
    "type": "ERSPAN",
    "name": "ERSPAN",
    "desc": "Collect ERSPAN traffic",
    "long_desc": "",
    "group": "Flow Ingest",
    "index": 7,
    "appliance_type": "tetration_erspan",
    "state": "enabled",
    "limit_per_appliance": 3,
    "limit_per_rootscope": 24,
    "limit_per_cluster": 450,
    "config": [],
    "max_instances": 0,
    "noteworthy": false,
    "hidden": false,
    "capabilities": [],
    "connector_count": 3,
    "group_order": 0
  },
  {
    "type": "AWS_CONNECTOR",
    "name": "AWS",
    "desc": "AWS Connector",
    "long_desc": "",
    "group": "Cloud",
    "index": 0,
    "appliance_type": "tetration_internal",
    "state": "disabled",
    "limit_per_appliance": 5000,
    "limit_per_rootscope": 5000,
    "limit_per_cluster": 100000,
    "config": [
      "AWS_CONNECTOR"
    ],
    "max_instances": 0,
    "noteworthy": true,
    "pre_release_tag": "BETA",
    "hidden": false,
    "capabilities": [
      "Flow Visibility",
      "Segmentation",
      "Managed K8s",
      "Inventory Enrichment"
    ],
    "connector_count": 0,
    "group_order": 5
  },
  {
    "type": "AZURE_CONNECTOR",
    "name": "Azure",
    "desc": "Azure Connector",
    "long_desc": "",
    "group": "Cloud",
    "index": 1,
    "appliance_type": "tetration_internal",
    "state": "disabled",
    "limit_per_appliance": 5000,
    "limit_per_rootscope": 5000,
    "limit_per_cluster": 100000,
    "config": [
      "AZURE_CONNECTOR"
    ],
    "max_instances": 0,
    "noteworthy": true,
    "pre_release_tag": "BETA",
    "hidden": false,
    "capabilities": [
      "Flow Visibility",
      "Segmentation",
      "Managed K8s",
      "Inventory Enrichment"
    ],
    "connector_count": 0,
    "group_order": 5
  },
  {
    "type": "GCP_CONNECTOR",
    "name": "GCP",
    "desc": "GCP Connector",
    "long_desc": "",
    "group": "Cloud",
    "index": 2,
    "appliance_type": "tetration_internal",
    "state": "disabled",
    "limit_per_appliance": 5000,
    "limit_per_rootscope": 5000,
    "limit_per_cluster": 100000,
    "config": [
      "GCP_CONNECTOR"
    ],
    "max_instances": 0,
    "noteworthy": true,
    "pre_release_tag": "BETA",
    "hidden": false,
    "capabilities": [
      "Managed K8s"
    ],
    "connector_count": 0,
    "group_order": 5
  }]
コネクタを削除する API

このエンドポイントは、指定されたコネクタを削除します。

DELETE /openapi/v1/connectors/<id>

ここで、<id> はコネクタを取得する APIから取得できる id です。

パラメータ:要求 URL には、次のパラメータが含まれています。

名前

タイプ

説明

id

string

コネクタ ID を指定します

応答オブジェクト:削除されたコネクタのステータスを返します。

サンプル応答

resp = restclient.delete('/connectors/63c12e316419d0131767e21c')
  if resp.status_code == 200:
    parsed_resp = json.loads(resp.content)
    print json.dumps(parsed_resp)

サンプル応答

 {
    "status": 200,
    "code": 1000,
    "message": "deleted"
  }
ID でコネクタを取得する API

このエンドポイントは、指定された ID を持つコネクタを取得します。

GET /openapi/v1/connectors/<id>

ここで、<id> はコネクタを取得する APIから取得できる id です。

パラメータ:要求 URL には、次のパラメータが含まれています。

名前

タイプ

説明

id

string

コネクタ ID を指定します

応答オブジェクト:指定された ID を持つコネクタを返します。

サンプル応答

 resp = restclient.get('/connectors/63c12e316419d0131767e21b')
  if resp.status_code == 200:
    parsed_resp = json.loads(resp.content)
    print json.dumps(parsed_resp)

サンプル応答

 {
    "name": "ERSPAN",
    "updated_at": 0,
    "created_at": 1673604657,
    "appliance_id": "63c1272039042a1c0ddd3e20",
    "root_scope_id": "63bf8d2f497d4f7287dbd335",
    "vrf_id": 1,
    "type": "ERSPAN",
    "ip_bindings": [],
    "internal": false,
    "id": "63c12e316419d0131767e21b"
  }
コネクタ名を変更する API

このエンドポイントは、指定された ID を持つコネクタの名前を変更します。

PUT /openapi/v1/connectors/<id>

ここで、<id> はコネクタを取得する APIから取得できる id です。

パラメータ:要求 URL には、次のパラメータが含まれています。

名前

タイプ

説明

id

string

コネクタ ID を指定します

name

文字列

コネクタの新しい名前を指定します

応答オブジェクト:指定された ID を持つコネクタと新しい名前を返します。

サンプル応答

req_payload = {
    "name": "ERSPAN2",
  }
  resp = restclient.put('/ext_appliances/63c12e316419d0131767e21b', json_body=json.dumps(req_payload))
  if resp.status_code == 200:
    parsed_resp = json.loads(resp.content)
    print json.dumps(parsed_resp)

サンプル応答

{
    "name": "ERSPAN2",
    "updated_at": 0,
    "created_at": 1673604657,
    "appliance_id": "63c1272039042a1c0ddd3e20",
    "root_scope_id": "63bf8d2f497d4f7287dbd335",
    "vrf_id": 1,
    "type": "ERSPAN",
    "ip_bindings": [],
    "internal": false,
    "id": "63c12e316419d0131767e21b"
  }
詳細を含むコネクタ情報を取得する API

このエンドポイントは、詳細を含むコネクタ情報を取得します。

GET /openapi/v1/connectors/cards/<type>?root_scope_id=<root_scope_id>

ここで、<root_scope_id> は範囲の取得の API から取得できる root_scope_id です。リクエストペイロードで、<type> はコネクタタイプを決定する文字列です。

パラメータ:要求 URL には、次のパラメータが含まれています。

名前

タイプ

説明

root_scope_id

string

ルート範囲を指定します

type

string

コネクタタイプを指定します。"NETFLOW"、"NETSCALER"、"F5"、"AWS"、"ANYCONNECT"、"ASA"、"SLACK"、"KINESIS"、"SYSLOG"、"EMAIL"、"MERAKI"、"PAGERDUTY"、"ISE"、"SERVICENOW"、"ERSPAN"、"AWS_CONNECTOR"、"AZURE_CONNECTOR"、"GCP_CONNECTOR" のいずれかの値を使用できます

応答オブジェクト:指定された範囲のコネクタを返します。

サンプル応答

resp = restclient.get('/connectors/cards/NETFLOW?root_scope_id=63bf8d2f497d4f7287dbd335')
  if resp.status_code == 200:
    parsed_resp = json.loads(resp.content)
    print json.dumps(parsed_resp)

サンプル応答

{
    "type": "NETFLOW",
    "name": "NetFlow",
    "desc": "Collect telemetry from network devices",
    "long_desc": "Collect NetFlow V9 and/or IPFIX telemetry from network devices such as routers and switches.",
    "group": "Flow Ingest",
    "index": 0,
    "appliance_type": "tetration_data_ingest",
    "state": "disabled",
    "limit_per_appliance": 3,
    "limit_per_rootscope": 10,
    "limit_per_cluster": 100,
    "config": [
      "LOG",
      "ALERT"
    ],
    "max_instances": 0,
    "noteworthy": false,
    "hidden": false,
    "capabilities": [
      "Flow Visibility"
    ],
    "connector_count": 0,
    "info": {
      "help": "NetFlow connector collects telemetry data from various network devices (such as routers, switches).<br> It supports ingest of telemetry data in IPFIX and NetFlow V9 protocols. This connector can be used to discover inventory as it provides a network context. The connector helps convert data from flow exports and send them securely as Tetration Flow records into an instance of Tetration. <br><br><b> Connector Alerts: </b><br> When Connector Alerts are enabled, you may receive the following alerts: <br>   1. NetFlow Connector is down (due to missing heartbeats). <br>   2. Informational alert on high CPU/Memory usage."
    },
    "group_order": 0
  }
コネクタを取得する API

このエンドポイントは、指定されたアプライアンスのすべてのコネクタを返します。

GET /openapi/v1/connectors?root_scope_id=<root_scope_id>&appliance_id=<appliance_id>&type=<type>&state=<state>

ここで、<root_scope_id> は範囲の取得の API から取得できる root_scope_id です。<appliance_id> はアプライアンスのリストを取得する APIから取得できる appliance_id です。<type> はアプライアンススキーマを取得する APIの "connectors" フィールドから取得できるコネクタタイプを決定する文字列です。<state> はコネクタの状態のフィルタです。

パラメータ:要求 URL には、次のパラメータが含まれています。

名前

タイプ

説明

root_scope_id

string

ルート範囲を指定します

appliance_id

string

アプライアンス ID を指定します

type

string

コネクタタイプを指定します。“NETFLOW”、“NETSCALER”、“F5”、“AWS”、“ANYCONNECT”、“ASA”、“SLACK”、“KINESIS”、“SYSLOG”、“EMAIL”、“MERAKI”、“PAGERDUTY”、“ISE”、“SERVICENOW”、“ERSPAN”、“AWS_CONNECTOR”、“AZURE_CONNECTOR”、“GCP_CONNECTOR” のいずれかの値を使用できます

state

string

コネクタの状態をフィルタします。“ENABLED”、“DISABLED”、または “UNAVAILABLE”のいずれかの値を使用できます

応答オブジェクト:指定されたアプライアンスのすべてのコネクタを返します。

サンプル応答

resp = restclient.get('root_scope_id=63bf8d2f497d4f7287dbd335&appliance_id=63c1272039042a1c0ddd3e20&type=ERSPAN&state=ENABLED')
  if resp.status_code == 200:
    parsed_resp = json.loads(resp.content)
    print json.dumps(parsed_resp)

サンプル応答

[
    {
      "name": "ERSPAN",
      "updated_at": 0,
      "created_at": 1673604657,
      "appliance_id": "63c1272039042a1c0ddd3e20",
      "root_scope_id": "63bf8d2f497d4f7287dbd335",
      "vrf_id": 1,
      "type": "ERSPAN",
      "ip_bindings": [],
      "state": "enabled",
      "internal": false,
      "id": "63c12e316419d0131767e21b"
    },
    {
      "name": "ERSPAN",
      "updated_at": 0,
      "created_at": 1673604657,
      "appliance_id": "63c1272039042a1c0ddd3e20",
      "root_scope_id": "63bf8d2f497d4f7287dbd335",
      "vrf_id": 1,
      "type": "ERSPAN",
      "ip_bindings": [],
      "state": "enabled",
      "internal": false,
      "id": "63c12e316419d0131767e21c"
    },
    {
      "name": "ERSPAN",
      "updated_at": 0,
      "created_at": 1673604657,
      "appliance_id": "63c1272039042a1c0ddd3e20",
      "root_scope_id": "63bf8d2f497d4f7287dbd335",
      "vrf_id": 1,
      "type": "ERSPAN",
      "ip_bindings": [],
      "state": "enabled",
      "internal": false,
      "id": "63c12e316419d0131767e21d"
    }
  ]
コネクタを作成する API

このエンドポイントは、指定されたアプライアンスのコネクタを作成します。

POST /openapi/v1/connectors

リクエストペイロードで、<root_scope_id> は範囲の取得の API から取得できる root_scope_id です。<appliance_id> はアプライアンスのリストを取得する APIから取得できる appliance_id です。<type> はアプライアンススキーマを取得する APIの "connectors" フィールドから取得できるコネクタタイプを決定する文字列です。

パラメータ:要求 URL には、次のパラメータが含まれています。

名前

タイプ

説明

name

文字列

名前を指定します

root_scope_id

string

ルート範囲を指定します

appliance_id

string

アプライアンス ID を指定します

type

string

コネクタタイプを指定します。“NETFLOW”、“NETSCALER”、“F5”、“AWS”、“ANYCONNECT”、“ASA”、“SLACK”、“KINESIS”、“SYSLOG”、“EMAIL”、“MERAKI”、“PAGERDUTY”、“ISE”、“SERVICENOW”、“ERSPAN”、“AWS_CONNECTOR”、“AZURE_CONNECTOR”、“GCP_CONNECTOR” のいずれかの値を使用できます

version

string

バージョンを指定します

応答オブジェクト:作成されたコネクタを返します。

サンプル応答

req_payload = {
    "root_scope_id": "63c41ff2497d4f5f5be73662",
    "appliance_id": "63c6ef42bca44e2b5e729191",
    "type": "NETFLOW",
    "name": "netflowtest",
    "version": "1.1.1"
  }
  resp = restclient.post('/connectors', json_body=json.dumps(req_payload))
  if resp.status_code == 200:
    parsed_resp = json.loads(resp.content)
    print json.dumps(parsed_resp)

サンプル応答

{
    "name": "netflowtest",
    "updated_at": 0,
    "created_at": 1674187875,
    "appliance_id": "63c6ef42bca44e2b5e729191",
    "root_scope_id": "63c41ff2497d4f5f5be73662",
    "vrf_id": 1,
    "type": "NETFLOW",
    "ip_bindings": [],
    "sources": [],
    "internal": false,
    "id": "63ca14631a49bd4c0e0cefa2"
  }
コネクタ設定タイプでの設定を取得する API

このエンドポイントは、指定された ID を持つコネクタの設定を取得します。

GET /openapi/v1/connectors/<id>/config?config_type=<config_type>

ここで、<id> はアプライアンスのリストを取得する APIから取得できる id です。<config_type> はアプライアンススキーマを取得する APIから取得できる "valid_config" です。

パラメータ:要求 URL には、次のパラメータが含まれています。

名前

タイプ

説明

id

string

コネクタ ID を指定します

config_type

string

設定タイプを指定します。使用できるすべての値については、設定のスキーマを取得する APIの説明にリストされている値を参照してください

応答オブジェクト:指定されたコネクタ ID と設定タイプを持つ設定を返します。

サンプル応答

resp = restclient.get('/connectors/63db5418e6ee1167a4c0986c/config?config_type=LOG')
  if resp.status_code == 200:
    parsed_resp = json.loads(resp.content)
    print json.dumps(parsed_resp)

サンプル応答

 [{
    "mode": "TEST_AND_APPLY",
    "name": "Log instance 2/1/23 22:29",
    "root_scope_id": "63d98f45497d4f53005b24fa",
    "vrf_id": 1,
    "appliance_id": "63dad690e6ee1131f255e985",
    "connector_id": "63db5418e6ee1167a4c0986c",
    "service_id": "63db5418e6ee1167a4c0986d",
    "deleted": false,
    "type": "LOG",
    "state": "COMMIT",
    "error_code": "NO_ERROR",
    "error_text": "",
    "attempts": 1,
    "config": {
      "secured": {},
      "unsecured": {
        "log-level": "info",
        "max-log-size": 10,
        "max-log-age": 30,
        "max-log-backups": 20
      }
    },
    "push_to_dio_at": 1675319360,
    "created_at": 1675319360,
    "updated_at": 1675319364,
    "discovery_completed_at": 0,
    "committed_at": 1675319364,
    "delete_at": 0,
    "error_at": 0,
    "hidden": false,
    "discovery_phase": 0,
    "internal": false,
    "id": "63db5840f029813659f9fcf5"
  }]
新しい設定をコネクタに追加する API

このエンドポイントは、指定された ID を持つコネクタに新しい設定を追加します。

POST /openapi/v1/connectors/<id>/config

ここで、<id> はコネクタを取得する APIから取得できる id です。<config_type> はアプライアンススキーマを取得する APIから取得できる "valid_config" です。<config> スキーマを取得するには、すべてのタイプのコネクタを取得する APIの応答からいずれかの "config" を選択し、設定のスキーマを取得する APIに "config" を適用します。

パラメータ:要求 URL には、次のパラメータが含まれています。

名前

タイプ

説明

name

文字列

設定名を指定します

type

string

設定タイプを指定します。使用できるすべての値については、設定のスキーマを取得する APIの説明にリストされている値を参照してください

config

set

入力された設定スキーマを JSON 形式で提供します

応答オブジェクト:更新された設定を返します。

サンプル応答

req_payload = {
    "name": "Log instance 2/1/23 22:29",
    "type": "LOG",
    "config": {
      "secured": {},
      "unsecured": {
        "log-level": "info",
        "max-log-size": 10,
        "max-log-age": 30,
        "max-log-backups": 20
      }
    }
  }
  resp = restclient.post('/connectors/63db5418e6ee1167a4c0986c/config', json_body=json.dumps(req_payload))
  if resp.status_code == 200:
    parsed_resp = json.loads(resp.content)
    print json.dumps(parsed_resp)

サンプル応答

{
    "mode": "TEST_AND_APPLY",
    "name": "Log instance 2/1/23 11:29",
    "root_scope_id": "63d98f45497d4f53005b24fa",
    "vrf_id": 1,
    "appliance_id": "63dad690e6ee1131f255e985",
    "connector_id": "63db5418e6ee1167a4c0986c",
    "deleted": false,
    "type": "LOG",
    "state": "PENDING",
    "attempts": 0,
    "config": {
      "secured": {},
      "unsecured": {
        "log-level": "info",
        "max-log-size": 10,
        "max-log-age": 30,
        "max-log-backups": 20
      }
    },
    "push_to_dio_at": 0,
    "created_at": 1675322272,
    "updated_at": 1675322272,
    "discovery_completed_at": 0,
    "committed_at": 0,
    "delete_at": 0,
    "error_at": 0,
    "hidden": false,
    "discovery_phase": 0,
    "internal": false,
    "id": "63db63a0f029813659f9fcf7"
  }
設定を削除する API

このエンドポイントは、指定されたコネクタから設定を削除します。

DELETE /openapi/v1/connectors/<id>/config/<config_id>

ここで、<id> はコネクタを取得する APIから取得できる id です。<config_id> はコネクタ設定タイプでの設定を取得する APIから取得できる id です。

パラメータ:要求 URL には、次のパラメータが含まれています。

名前

タイプ

説明

id

string

コネクタ ID を指定します

config_id

string

設定 ID を指定します

応答オブジェクト:指定されたコネクタの削除された設定のステータスを返します。

サンプル応答

resp = restclient.delete('/connectors/63c1272039042a1c0ddd3e20/config/63c1272039042a1c0ddd3e21')
  if resp.status_code == 200:
    parsed_resp = json.loads(resp.content)
    print json.dumps(parsed_resp)

サンプル応答

{
    "status": 200,
    "code": 1000,
    "message": "deleted"
  }
設定を取得する API

このエンドポイントは、指定された ID を持つ設定を取得します。

GET /openapi/v1/connectors/<id>/config/<config_id>

ここで、<id> はコネクタを取得する APIから取得できる id です。<config_id> はコネクタ設定タイプでの設定を取得する APIから取得できる id です。

パラメータ:要求 URL には、次のパラメータが含まれています。

名前

タイプ

説明

id

string

アプライアンス ID を指定します

config_id

string

設定 ID を指定します

応答オブジェクト:指定された ID を持つ設定を返します。

サンプル応答

resp = restclient.get('/connectors/63db5418e6ee1167a4c0986c/config/63db5840f029813659f9fcf5')
  if resp.status_code == 200:
    parsed_resp = json.loads(resp.content)
    print json.dumps(parsed_resp)

サンプル応答

{
    "mode": "TEST_AND_APPLY",
    "name": "Log instance 2/1/23 22:29",
    "root_scope_id": "63d98f45497d4f53005b24fa",
    "vrf_id": 1,
    "appliance_id": "63dad690e6ee1131f255e985",
    "connector_id": "63db5418e6ee1167a4c0986c",
    "service_id": "63db5418e6ee1167a4c0986d",
    "deleted": false,
    "type": "LOG",
    "state": "COMMIT",
    "error_code": "NO_ERROR",
    "error_text": "",
    "attempts": 1,
    "config": {
      "secured": {},
      "unsecured": {
        "log-level": "info",
        "max-log-size": 10,
        "max-log-age": 30,
        "max-log-backups": 20
      }
    },
    "push_to_dio_at": 1675319360,
    "created_at": 1675319360,
    "updated_at": 1675319364,
    "discovery_completed_at": 0,
    "committed_at": 1675319364,
    "delete_at": 0,
    "error_at": 0,
    "hidden": false,
    "discovery_phase": 0,
    "internal": false,
    "id": "63db5840f029813659f9fcf5"
  }
コネクタで使用可能なトラブルシューティング コマンドを表示する API

このエンドポイントは、指定されたコネクタで使用できるトラブルシューティング コマンドのリストを返します。

GET /openapi/v1/connectors/<id>/commands/available

ここで、<id> はコネクタを取得する APIから取得できる id です。

パラメータ:要求 URL には、次のパラメータが含まれています。

名前

タイプ

説明

id

string

コネクタ ID を指定します

応答オブジェクト:指定されたコネクタで使用できるトラブルシューティング コマンドのリストを返します。

サンプル応答

resp = restclient.get('/connectors/63c6f2701a49bd2bb0696cab/commands/available')
  if resp.status_code == 200:
    parsed_resp = json.loads(resp.content)
    print json.dumps(parsed_resp)

サンプル応答

[
    {
      "type": "LIST_SERVICE_FILES",
      "name": "List a directory in a service"
    },
    {
      "type": "CONTROLLER_PROFILING",
      "name": "Collect controller profile"
    },
    {
      "type": "SHOW_LOG",
      "name": "Show logs"
    },
    {
      "type": "SHOW_SERVICE_LOG",
      "name": "Show service logs"
    },
    {
      "type": "RESTART_CONNECTOR_CONTAINER",
      "name": "Restart the connector docker container"
    },
    {
      "type": "SHOW_SUPERVISOR_COMMANDS",
      "name": "Execute supervisorctl command"
    },
    {
      "type": "CONNECTOR_ALERT_INTERVAL_CONNECTOR",
      "name": "Override connector alert interval for Connector"
    },
    {
      "type": "SERVICE_PROFILING",
      "name": "Collect connector profile"
    },
    {
      "type": "SNAPSHOT_CONNECTOR",
      "name": "Collect Snapshot from a connector"
    },
    {
      "type": "PACKET_CAPTURE",
      "name": "Packet capture"
    },
    {
      "type": "NETWORK_CONNECTIVITY_COMMANDS",
      "name": "Test network connectivity"
    },
    {
      "type": "SHOW_SERVICE_RUNNING_CONF",
      "name": "Show running configuration of a service"
    },
    {
      "type": "RESTART_CONNECTOR_SERVICE",
      "name": "Restart the connector service"
    },
    {
      "type": "SHOW_SYS_COMMANDS",
      "name": "Execute system command"
    }
  ]
トラブルシューティング コマンドを一覧表示する API

このエンドポイントは、指定されたコネクタに対して有効になっているトラブルシューティング コマンドのリストを返します。

GET /openapi/v1/connectors/<id>/commands

ここで、<id> はコネクタを取得する APIから取得できる id です。

パラメータ:要求 URL には、次のパラメータが含まれています。

名前

タイプ

説明

id

string

コネクタ ID を指定します

応答オブジェクト:指定されたコネクタに対して有効になっているトラブルシューティング コマンドのリストを返します。

サンプル応答

resp = restclient.get('/connectors/63db5418e6ee1167a4c0986c/commands')
  if resp.status_code == 200:
    parsed_resp = json.loads(resp.content)
    print json.dumps(parsed_resp)

サンプル応答

[
    {
      "appliance_id": "63dad690e6ee1131f255e985",
      "connector_id": "63db5418e6ee1167a4c0986c",
      "service_id": "63db5418e6ee1167a4c0986d",
      "state": "success",
      "level": "SERVICE",
      "command": "SHOW_LOG",
      "arg_string": "",
      "args": {
        "pattern": "info"
      },
      "tailed": false,
      "rc": 0,
      "push_to_dio_at": 1675319615,
      "attempts": 1,
      "error_code": "NO_ERROR",
      "error_text": "",
      "deleted": false,
      "deleted_at": 0,
      "created_at": 1675319613,
      "total_chunk": 0,
      "id": "63db593df029813659f9fcf6"
    }
  ]
トラブルシューティング コマンドを作成する API

このエンドポイントは、指定されたコネクタで使用できるトラブルシューティング コマンドを作成します。

POST /openapi/v1/connectors/<id>/commands

ここで、<id> はコネクタを取得する APIから取得できる id です。リクエストペイロードで、<command> はコネクタで使用可能なトラブルシューティング コマンドを表示する APIから取得できるトラブルシューティング コマンド タイプです。<arguments> はコマンドスキーマの入力された JSON オブジェクトであり、トラブルシューティング コマンドのスキーマを取得する APIから取得できます。

パラメータ:要求 URL には、次のパラメータが含まれています。

名前

タイプ

説明

id

string

コネクタ ID を指定します

command

string

コマンドタイプを指定します

引数

set

入力されたコマンドスキーマを JSON 形式で提供します

応答オブジェクト:指定されたアプライアンスの作成されたトラブルシューティング コマンドを返します。

サンプル応答

req_payload = {
    "command": "SHOW_LOG",
    "arguments": {
      "pattern": "info"
    }
  }
  resp = restclient.post('/connectors/63db5418e6ee1167a4c0986c/commands', json_body=json.dumps(req_payload))
  if resp.status_code == 200:
    parsed_resp = json.loads(resp.content)
    print json.dumps(parsed_resp)

サンプル応答

{
    "appliance_id": "63dad690e6ee1131f255e985",
    "connector_id": "63db5418e6ee1167a4c0986c",
    "service_id": "63db5418e6ee1167a4c0986d",
    "state": "pending",
    "level": "SERVICE",
    "command": "SHOW_LOG",
    "args": {
      "pattern": "info"
    },
    "tailed": false,
    "rc": 0,
    "push_to_dio_at": 0,
    "attempts": 0,
    "deleted": false,
    "deleted_at": 0,
    "created_at": 1675319613,
    "total_chunk": 0,
    "id": "63db593df029813659f9fcf6"
  }
トラブルシューティング コマンドを削除する API

このエンドポイントは、指定されたコネクタで使用できるトラブルシューティング コマンドを削除します。

DELETE /openapi/v1/connectors/<id>/commands/<command_id>

ここで、<id> はコネクタを取得する APIから取得できる id です。<command_id> はトラブルシューティング コマンドを一覧表示する APIから取得できる id です。

パラメータ:要求 URL には、次のパラメータが含まれています。

名前

タイプ

説明

id

string

コネクタ ID を指定します

command_id

string

コマンド ID を指定します

応答オブジェクト:指定されたコネクタの削除されたトラブルシューティング コマンドのステータスを返します。

サンプル応答

resp = restclient.delete('/connectors/63c12e316419d0131767e21c/commands/63c10a0039042a6aee1b008c')
  if resp.status_code == 200:
    parsed_resp = json.loads(resp.content)
    print json.dumps(parsed_resp)

サンプル応答

{
    "status": 200,
    "code": 1000,
    "message": "deleted"
  }
トラブルシューティング コマンドを返す API

このエンドポイントは、指定されたコネクタに対して選択されたトラブルシューティング コマンドを返します。

GET /openapi/v1/connectors/<id>/commands/<command_id>

ここで、<id> はコネクタを取得する APIから取得できる id です。<command_id> はトラブルシューティング コマンドを一覧表示する APIから取得できる id です。

パラメータ:要求 URL には、次のパラメータが含まれています。

名前

タイプ

説明

id

string

コネクタ ID を指定します

command_id

string

コマンド ID を指定します

応答オブジェクト:指定されたコネクタに対して選択されたトラブルシューティング コマンドを返します。

サンプル応答

resp = restclient.get('/connectors/63db5418e6ee1167a4c0986c/commands/63db593df029813659f9fcf6')
  if resp.status_code == 200:
    parsed_resp = json.loads(resp.content)
    print json.dumps(parsed_resp)

サンプル応答

{
    "appliance_id": "63dad690e6ee1131f255e985",
    "connector_id": "63db5418e6ee1167a4c0986c",
    "service_id": "63db5418e6ee1167a4c0986d",
    "state": "success",
    "level": "SERVICE",
    "command": "SHOW_LOG",
    "arg_string": "",
    "args": {
      "pattern": "info"
    },
    "tailed": false,
    "rc": 0,
    "push_to_dio_at": 1675319615,
    "attempts": 1,
    "error_code": "NO_ERROR",
    "error_text": "",
    "deleted": false,
    "deleted_at": 0,
    "created_at": 1675319613,
    "total_chunk": 0,
    "id": "63db593df029813659f9fcf6"
  }
コネクタコマンドの出力をファイルとしてダウンロードする API

このエンドポイントは、コマンドの出力をファイルとしてダウンロードします。

GET /openapi/v1/connectors/<id>/commands/{command_id}/download

ここで、<id> はコネクタを取得する APIから取得できる id です。<command_id> はトラブルシューティング コマンドを一覧表示する APIから取得できる id です。すべてのコマンドにダウンロード可能な出力があるわけではありません。トラブルシューティング コマンドのスキーマを取得する APIによって提供されるコマンドスキーマを確認してください。"output_type": "FILE" はダウンロード可能なコンテンツがあることを示し、"output_ext" はファイルタイプを示しています。

パラメータ:要求 URL には、次のパラメータが含まれています。

名前

タイプ

説明

id

string

コネクタ ID を指定します

command_id

string

コマンド ID を指定します

応答オブジェクト:指定されたコネクタに対して選択されたトラブルシューティング コマンドを返します。

サンプル応答

resp = restclient.download('downloadFile', '/connectors/63c6ef42bca44e2b5e729191/commands/63cace941a49bd4c0e0cf45a/download')