このページでは、テストデータを含む 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 コンソールでテストできます。
カスタム モジュールをテストするには、次の手順に従います。
Security Command Center の設定で Security Health Analytics の [モジュール] ページに移動します。
テスト用のカスタム モジュールを開く、または作成します。
- 新しいカスタム モジュールを作成するには、[モジュールの作成] をクリックし、カスタム モジュールを作成するの手順に沿って操作します。
- 既存のカスタム モジュールを開くには、テストするモジュール行の右側にある [アクション] で編集アイコン(edit)をクリックします。
[モジュールのテスト] タブを選択します。
[YAML ファイルをアップロードする] で [参照] をクリックし、サンプル アセットデータを含むファイルをアップロードします。YAML ファイルがアップロードされるとすぐに、テストが実行されます。
[テスト結果のプレビュー] で結果を確認します。
- YAML ファイルに構文またはその他のエラーがある場合は、ブラウザページの一番下の近くにフローティング エラー メッセージが表示されます。
テストが成功すると、次の情報が返されます。
- カスタム モジュールの表示名。
- テストデータ ファイルの
resource
プロパティに指定した任意の名前。 - カスタム モジュールが作成された(または作成される予定の)組織、フォルダ、またはプロジェクト。
テスト結果は保存されず、Security Command Center にも書き込まれません。
次のステップ
- カスタム モジュールを使用するには、Security Health Analytics のカスタム モジュールの使用をご覧ください。
- Google Cloud コンソールで検出結果を操作するには、検出結果を操作するをご覧ください。