Security Health Analytics のカスタム モジュールをテストする

このページでは、テストデータを含む YAML ファイルをアップロードして、Security Health Analytics カスタム モジュールを Google Cloud コンソールでテストする方法について説明します。

始める前に

カスタム モジュールをテストするには、次の前提条件を満たす必要があります。

  • Security Health Analytics のカスタム モジュールの使用に適用される一般的な前提条件には、次のものがあります。

    • プレミアム サービスティアの有効化
    • Security Command Center API の有効化

    前提条件の詳細については、Security Health Analytics カスタム モジュールの使用をご覧ください。

  • ユーザー アカウントには、Security Command Center とカスタム モジュールの操作するだけではなく、securitycenter.securityhealthanalyticscustommodules.test 権限も含むようにする、1 つ以上の Identity and Access Management(IAM)ロールを付与する必要があります。カスタム モジュールの操作に必要な権限とロールの詳細については、必要な IAM 権限をご覧ください。

  • カスタム モジュールをテストするための API 呼び出しには割り当てが適用されます。詳細については、カスタム モジュールの割り当てをご覧ください。

YAML ファイルにテストリソースを作成する

カスタム モジュールをテストするには、YAML ファイルで疑似リソース定義、架空のポリシー定義、またはその両方を定義します。

定義は、実際のリソースまたはポリシー インスタンスに対応していませんが、定義はカスタム モジュールで指定されたリソースまたはポリシーのタイプのスキーマに準拠していなければなりません。

テスト定義で、指定する必要があるプロパティは、カスタム モジュールが評価するプロパティだけです。カスタム モジュールが参照しないリソース プロパティを含める必要はありません。

カスタム モジュールで CEL 式をテストするには、テスト ファイル内で CEL 式が true に解決するプロパティ値を指定します。

テストデータの形式

ファイルは最初の行に testData: で始まり、その後に 1 つ以上の - asset 定義が続きます。

testData:
- asset:
    resource: ARBITRARY_ASSET_NAME_1
    assetType: RESOURCE_TYPE_1
    resourceData:
      PROPERTIES_TO_TEST_1: PROPERTY_VALUE_1
        SUB_PROPERTY: SUB_PROPERTY_VALUE
      PROPERTIES_TO_TEST_2: PROPERTY_VALUE_2
- asset:
    resource: ARBITRARY_ASSET_NAME_2
    assetType: RESOURCE_TYPE_2
    iamPolicyData:
      PROPERTIES_TO_TEST_3: PROPERTY_VALUE_3
      PROPERTIES_TO_TEST_4: PROPERTY_VALUE_4

以下を置き換えます。

  • ARBITRARY_ASSET_NAME_N: テストが成功した場合にテスト結果に表示される任意の値。
  • RESOURCE_TYPE_N: カスタム モジュールが確認するアセットまたはリソースのタイプ。API のサービス エンドポイントのドメイン名とリソース名(たとえば、cloudkms.googleapis.com/CryptoKey)として指定されます。
  • PROPERTIES_TO_TEST_N: 検出結果をトリガーする、カスタム モジュールの検出ロジックで使用されるプロパティ。
  • PROPERTY_VALUE_N: 検出結果をトリガーするプロパティの値。
  • SUB_PROPERTY: ターゲット リソースがリソース定義で参照している別のリソースのサブプロパティまたはプロパティ。

テスト定義の例

このセクションには、テストリソース定義とテストポリシー定義の例が記載されています。2 つの例は別々のファイルで定義されていますが、リソースとポリシーの asset 定義を単一の testData ファイル内で組み合わせることができます。

リソース定義の例

次の例では、CryptoKey リソースの rotationPeriod プロパティが 2592000 秒(30 日)を超えているかどうかを確認するカスタム モジュールをテストします。定義の他のプロパティはカスタム モジュールで使用されませんが、リソースのスキーマに準拠するために必要です。この例でテストするカスタム モジュールの完全な定義については、カスタム モジュールの定義の例をご覧ください。

testData:
- asset:
    resource: THE CRYPTOKEY TEST WAS SUCCESSFUL!
    assetType: cloudkms.googleapis.com/CryptoKey
    resourceData:
      nextRotationTime:  '2020-02-05T12:00:55.192645Z'
      primary:
        state: 'ENABLED'
      purpose: 'ENCRYPT_DECRYPT'
      rotationPeriod: '2592001s'

ポリシー定義の例

以下は、IAM ポリシーのテスト定義の例です。

testData:
- asset:
    resource: //cloudresourcemanager.googleapis.com/projects/fake-project
    assetType: cloudresourcemanager.googleapis.com/Project
    iamPolicyData:
      bindings:
      - role: "roles/viewer"
        members:
        - "serviceAccount:fake-service-account@compute-system.iam.gserviceaccount.com"
        - "user:fake-email-account"

カスタム モジュールをテストする

新しいカスタム モジュールまたは既存のカスタム モジュールは Google Cloud コンソールでテストできます。

カスタム モジュールをテストするには、次の手順に従います。

  1. Security Command Center の設定で Security Health Analytics の [モジュール] ページに移動します。

    [モジュール] に移動する

  2. テスト用のカスタム モジュールを開く、または作成します。

    • 新しいカスタム モジュールを作成するには、[モジュールの作成] をクリックし、カスタム モジュールを作成するの手順に沿って操作します。
    • 既存のカスタム モジュールを開くには、テストするモジュール行の右側にある [アクション] で編集アイコン()をクリックします。
  3. [モジュールのテスト] タブを選択します。

  4. [YAML ファイルをアップロードする] で [参照] をクリックし、サンプル アセットデータを含むファイルをアップロードします。YAML ファイルがアップロードされるとすぐに、テストが実行されます。

  5. [テスト結果のプレビュー] で結果を確認します。

    • YAML ファイルに構文またはその他のエラーがある場合は、ブラウザページの一番下の近くにフローティング エラー メッセージが表示されます。
    • テストが成功すると、次の情報が返されます。

      • カスタム モジュールの表示名。
      • テストデータ ファイルの resource プロパティに指定した任意の名前。
      • カスタム モジュールが作成された(または作成される予定の)組織、フォルダ、またはプロジェクト。

    テスト結果は保存されず、Security Command Center にも書き込まれません。

次のステップ