Trust Center拡張機能の使用

ソリューションをTrust Centerと統合するために、セキュリティパートナーは Snowflake Native App Framework を使用して、1つまたは複数の追加スキャナーパッケージを提供するアプリケーションを作成できます。これらのアプリケーションは、 Trust Center拡張機能 と呼ばれます。

Trust Center拡張機能を作成して、セキュリティ、プライバシー、ガバナンス、コンプライアンスソリューションを要件に合わせてカスタマイズし、組織内で拡張機能を共有できます。また、より広く使用できる拡張機能を作成し、特定のSnowflakeアカウントまたは Snowflake Marketplace にリストすることもできます。詳細については、 Trust Center拡張機能を開発する をご参照ください。

ユーザーは、スキャナーパッケージを含むサードパーティの拡張機能を発見、インストール、管理できます。詳細については、 Trust Center拡張機能をインストールする をご参照ください。

アクセス制御の要件

Trust Center拡張機能を作成および管理するには、 ACCOUNTADMIN ロール を持つユーザーが、ロールに以下の権限を付与する必要があります。

Trust Center拡張機能を開発する

スキャナーパッケージを使用してTrust Center拡張機能を開発し、展開できます。ネイティブアプリのバージョン管理 を使用してTrust Center拡張機能をバージョン管理できます。拡張機能は ネイティブアプリの権限モデル も使用して、カスタマーアカウント内のテーブルやアカウント使用状況ビューなど、データやメタデータにアクセスします。

前提条件

スキャナーパッケージを使用して拡張機能を開発する前に、以下の前提条件を完了してください。

  • ネイティブアプリ の開発方法を理解する。

  • Snowflake ストアドプロシージャ を作成して使用する方法を理解する。

  • 拡張機能プロバイダーアカウントとして機能するSnowflakeアカウントを作成または特定する。すべてのネイティブアプリにはプロバイダーアカウントが必要です。

スキャナーパッケージマニフェストとスキャナーを作成する

ステップ1:拡張機能マニフェストファイルを作成する

さまざまなスキャナーパッケージとスキャナーに関する情報とメタデータを含むマニフェストファイルを作成します。

  1. マニフェストファイルを作成します。

    マニフェストファイルには以下の要件があります。

    • マニフェストファイルの名前は tc_extension_manifest.yml にする必要があります。

    • tc_extension_manifest.yml ファイルは、ネイティブアプリ manifest.yml ファイルが存在する名前付きステージのディレクトリ構造のルートに存在している必要があります。

    マニフェストファイルには、スキャナーパッケージのプロパティと、スキャナーパッケージに含まれるすべてのスキャナーがリストされます。

    マニフェストファイルに次の定義を使用します。

    manifest_version: '2.0'
    scanner_packages:
    - id: ''
      name: ''
      short_description: ''
      description: ''
      scanners:
        - id: ''
          name: ''
          short_description: ''
          description: ''
          type: 'VULNERABILITY'
          callback:
            schema: ''
            name: ''
            version: ''
    
    Copy

    マニフェストファイルには次のプロパティがあります。

    プロパティ

    説明

    最大文字数

    manifest_version

    現在、 2.0 のみが有効です。

    該当なし

    scanner_packages.id

    スキャナーパッケージの一意の識別子。プロバイダーは、スキャナーパッケージの有効期間中、維持する必要があります。ASCII 英数字とアンダースコア文字のみがサポートされています。カスタマーがスキャナーパッケージに適用するすべての構成は、この ID を使用してTrust Centerに永続化されます。

    25

    scanner_packages.name

    スキャナーパッケージの名前。

    30

    scanner_packages.short_description

    スキャナーパッケージの簡単な説明。

    150

    scanner_packages.description

    スキャナーパッケージの説明。

    700

    scanner_packages.scanners.id

    スキャナーの一意の識別子。プロバイダーは、スキャナーの有効期間中、維持する必要があります。ASCII 英数字とアンダースコア文字のみがサポートされています。カスタマーがスキャナーに適用するすべての構成は、この ID を使用してTrust Centerに永続化されます。

    25

    scanner_packages.scanners.name

    スキャナーの名前。

    30

    scanner_packages.scanners.short_description

    スキャナーの簡単な説明。

    150

    scanner_packages.scanners.description

    スキャナーの長い説明。

    1,500

    scanner_packages.scanners.type

    スキャナーのタイプ。現在のところ、 VULNERABILITY のみサポートされています。

    ---

    scanner_packages.scanners.callback

    スキャナーのコールバックセクション。すべてのスキャナーには、 schemaname 、および version を指定する callback セクションが必要です。

    該当なし

    scanner_packages.scanners.callback.schema

    ストアドプロシージャのスキーマ。スキーマが setup_script.sql ファイルに存在する必要があります。このファイルの詳細については、 ステップ3:拡張機能を作成する をご参照ください。

    該当なし

    scanner_packages.scanners.callback.name

    ストアドプロシージャの名前。ストアドプロシージャには次の要件が適用されます。

    • 現在、 scan という名前である必要があります。

    • ここで定義されているストアドプロシージャ名は、 callback.schema で指定されているスキーマの下の setup_script.sql ファイルに存在する必要があります。

    該当なし

    scanner_packages.scanners.callback.version

    ストアドプロシージャのバージョン。現在のところ、 1.0 のみサポートされています。

    該当なし

次の例は、マニフェストファイルの内容を示しています。

manifest_version: '2.0'
scanner_packages:
  - id: 'se_extension'
    name: 'Security Extension'
    short_description: 'Enhances security features and capabilities.'
    description: 'This extension provides additional security features and capabilities to the platform.'
    scanners:
      - id: 'es_check'
        name: 'NA event sharing check'
        short_description: 'Checks for NA event sharing configurations.'
        description: 'This scanner checks for event sharing configurations in the North America region.'
        type: 'VULNERABILITY'
        callback:
          schema: 'security_essentials_na_consumer_es_check'
          name: 'scan'
          version: '1.0'
      - id: 'se_mfa'
        name: 'MFA Required for Users'
        short_description: 'Ensures that MFA is required for all users.'
        description: 'This scanner checks that Multi-Factor Authentication (MFA) is enforced for all users in the system.'
        type: 'VULNERABILITY'
        callback:
          schema: 'security_essentials_mfa_required_for_users_check'
          name: 'scan'
          version: '1.0'
      - id: 'se_client'
        name: 'Client Security'
        short_description: 'Ensures that client security best practices are followed.'
        description: 'This scanner checks that client security best practices are enforced for all clients in the system.'
        type: 'VULNERABILITY'
        callback:
          schema: 'security_essentials_client_security'
          name: 'scan'
          version: '1.0'
      - id: 'cis_1_4'
        name: 'Extension CIS 1_4'
        short_description: 'Checks for compliance with CIS Benchmark 1.4.'
        description: 'This scanner checks for compliance with the CIS Benchmark 1.4, ensuring that security best practices are followed.'
        type: 'VULNERABILITY'
        callback:
          schema: 'security_essentials_cis1_4'
          name: 'scan'
          version: '1.0'
      - id: 'cis_3_1'
        name: 'Extension CIS 3_1'
        short_description: 'Checks for compliance with CIS Benchmark 3.1.'
        description: 'This scanner checks for compliance with the CIS Benchmark 3.1, ensuring that security best practices are followed.'
        type: 'VULNERABILITY'
        callback:
          schema: 'security_essentials_cis3_1'
          name: 'scan'
          version: '1.0'
Copy

ステップ2:スキャナーを作成する

バージョン管理されたスキーマ と、スキャナーロジックを実装するストアドプロシージャを作成します。

スキャナーパッケージに複数のスキャナーが含まれている場合は、スキャナーごとに次の手順を実行し、スキャナーごとに異なるバージョン管理されたスキーマを使用します。

  1. スキャナーロジックをホストするバージョン管理されたスキーマを作成します。

    スキーマの名前は、 拡張機能マニフェストファイル でスキャナーに指定されたスキーマと同じである必要があります。

    例えば、次の SQL ステートメントは、 security_essentials_mfa_required_for_users という名前のバージョン管理されたスキーマを作成します。

    CREATE OR ALTER VERSIONED SCHEMA security_essentials_mfa_required_for_users;
    
    Copy
  2. スキャナーロジックを実装するストアドプロシージャを作成します。

    次の例では、 security_essentials_mfa_required_for_users スキーマで scan という名前のストアドプロシージャを作成します。

    CREATE OR REPLACE PROCEDURE security_essentials_mfa_required_for_users.scan(
        run_id VARCHAR)
      RETURNS TABLE(
        risk_id VARCHAR,
        risk_name VARCHAR,
        total_at_risk_count NUMBER,
        scanner_type VARCHAR,
        risk_description VARCHAR,
        suggested_action VARCHAR,
        impact VARCHAR,
        severity VARCHAR,
        at_risk_entities ARRAY
      )
      LANGUAGE SQL
      AS
      $$
        -- Scanning logic --
      $$;
    
    Copy

    ストアドプロシージャが、重大度とリスク ID の組み合わせごとに1行だけを返すことを確認します。

    返されるテーブルには、次の列が必要です。

    説明

    risk_id

    VARCHAR

    リスクの識別子。

    risk_name

    VARCHAR

    リスクの名前。

    total_at_risk_count

    NUMBER

    スキャナーのリスクのあるエンティティの総数。スキャナーが違反を検出しないシナリオでは、値は 0 です。リスクのあるエンティティの最大数は1,000で、 配列 内にあるすべての値の最大合計サイズは128 MB です。

    scanner_type

    VARCHAR

    現在、 VULNERABILITY スキャナータイプのみがサポートされています。

    risk_description

    VARCHAR

    リスクの説明。

    suggested_action

    VARCHAR

    修復のために提案されるアクション。

    impact

    VARCHAR

    リスクに対処しない場合に考えられる結果。

    severity

    VARCHAR

    リスクの重大度レベル。可能な値は、 LOW 、 MEDIUM 、 HIGH 、および CRITICAL です。

    at_risk_entities

    OBJECT 値の ARRAY

    配列の OBJECT 値の構造は次のとおりです。

    [
      {
        "entity_id": <id>,
        "entity_name": "<name>",
        "entity_object_type": "<type>",
        "entity_detail": {
          ..., -- custom data
        }
      },
      ...
    ]
    

    OBJECT 値には、次のキーと値のペアが含まれています。

    • entity_id - リスクのあるエンティティの ID に対応するオプションのフィールド。

    • entity_name - リスクのあるエンティティの名前に対応する必須フィールド。

    • entity_object_type - リスクのあるエンティティのタイプに対応する必須フィールド。例: APPLICATIONTASK, NETWORK_POLICYSECURITY_INTEGRATIONROLEPROCEDUREQUERYDRIVERPARAMETERTABLESTAGEDATA_MASKING_POLICY 、または ROW_ACCESS_POLICY

    • entity_detail - エンティティを記述するカスタムデータ。

    配列の最大サイズは128 MB です。

    スキャナーが違反を検出しないシナリオでは、値は空のリストになります。

ステップ3:拡張機能を作成する

拡張機能 は、スキャナーパッケージをネイティブアプリでバンドルし、Trust Centerにアクセスできるようにし、Trust Centerが必要なストアドプロシージャを呼び出せるように権限を構成します。

拡張機能を作成するには、次のステップを実行します。

  1. セットアップスクリプトを作成する の指示に従って、拡張機能用の setup_script.sql ファイルを作成します。

    setup_script.sql ファイルで、 trust_center_integration_role という名前のアプリケーションロールを作成します。

    次に、 バージョン管理されたスキーマとストアドプロシージャ に必要な権限をそのアプリケーションロールに付与します。

    次の例は、アプリケーションロール trust_center_integration_role を作成し、必要な権限を付与する方法を示しています。

    CREATE APPLICATION ROLE IF NOT EXISTS trust_center_integration_role;
    
    GRANT USAGE ON SCHEMA security_essentials_mfa_required_for_users
      TO APPLICATION ROLE trust_center_integration_role;
    
    GRANT USAGE ON PROCEDURE security_essentials_mfa_required_for_users.scan(VARCHAR)
      TO APPLICATION ROLE trust_center_integration_role;
    
    Copy

    権限は、パッケージ内のすべてのスキャナーに必要です。

  2. アプリのマニフェストファイルの作成 の指示に従って、拡張機能用の manifest.yml ファイルを作成します。

    次の例は、Trust Center拡張機能の manifest.yml ファイルの内容を示しています。

    manifest_version: 1
    artifacts:
      setup_script: setup_script.sql
      readme: README.md
    privileges:
      - IMPORTED PRIVILEGES ON SNOWFLAKE DB:
        description: "Required access to SNOWFLAKE.ACCOUNT_USAGE views to scan for vulnerabilities"
    
    Copy
  3. アプリケーションパッケージを作成する の指示に従って、拡張機能用のアプリケーションパッケージを作成します。

  4. バージョンの登録 の指示に従って、アプリケーションパッケージのバージョンを登録します。

    アプリケーションパッケージにバージョンが登録されていることを確認するには、 SHOW VERSIONS IN APPLICATION PACKAGE を実行できます。

  5. バージョンまたはパッチからアプリを作成 の指示に従って、登録されたバージョンに基づくアプリケーションを作成します。

    アプリケーションオブジェクトが作成されたことを確認するには、 SHOW APPLICATIONS を実行できます。

ステップ4:権限を付与する

拡張機能をインストールしたら、次のステップを実行して必要な権限を付与します。

  1. Snowsightを使用してアクセスリクエストを管理する の指示に従って、拡張機能がリクエストする権限を付与します。

  2. 拡張機能の名前空間内の trust_center_integration_role アプリケーションロールを SNOWFLAKE アプリケーションに付与するには、 GRANT APPLICATION ROLE コマンドを実行します。

    GRANT APPLICATION ROLE <extension_name>.trust_center_integration_role
      TO APPLICATION snowflake;
    
    Copy

    例えば、 tc_extension.trust_center_integration_role アプリケーションロールを SNOWFLAKE アプリケーションに付与するには、次のコマンドを実行します。

    GRANT APPLICATION ROLE tc_extension.trust_center_integration_role
      TO APPLICATION snowflake;
    
    Copy

ステップ5:拡張機能を登録する

次のストアドプロシージャを呼び出すと、拡張機能を登録または登録解除できます。

Trust Centerに拡張機能を登録するには、次のステップを完了します。

  1. SNOWFLAKE.TRUST_CENTER_ADMIN アプリケーションロールが付与されたロールに切り替えます。

  2. SNOWFLAKE.TRUST_CENTER.REGISTER_EXTENSION ストアドプロシージャを呼び出します。

    拡張機能の詳細を表示するには、 SHOW APPLICATIONS コマンドを実行できます。アプリケーションパッケージまたはリスト識別子は source 列にあります。

    例えば、 my_tc_package という名前のアプリケーションパッケージからインストールされた tc_extension という名前の拡張機能を登録するには、次のストアドプロシージャを呼び出します。

    CALL SNOWFLAKE.TRUST_CENTER.REGISTER_EXTENSION(
      'APPLICATION PACKAGE',
      'my_tc_package',
      'tc_extension');
    
    Copy

    EXTENSIONS ビュー をクエリすると、登録済みの拡張機能に関する情報を表示できます。

    注釈

    拡張機能の登録を解除するには、 SNOWFLAKE.TRUST_CENTER.DEREGISTER_EXTENSION ストアドプロシージャを呼び出します。

  3. 利用可能なスキャナーパッケージを表示 の指示に従って、拡張機能が提供するスキャナーパッケージがTrust Centerスキャナーパッケージのリストにあることを確認します。

ステップ6:拡張機能をテストする

権限を付与し、スキャナーパッケージを有効にしたら、拡張機能をテストし、 SNOWFLAKE.TRUST_CENTER.FINDINGS ビューをクエリして、スキャナーによって生成された結果を確認します。スキャナーの実行に失敗した場合は、 ERROR_CODE および ERROR_MESSAGE を確認して、スキャナーの失敗をデバッグできます。

DATA_SHARING_USAGE スキーマ のビューを使用して、Trust Center拡張機能のテレメトリーデータをモニターすることもできます。例えば、 APPLICATION_STATE ビュー をクエリすることで拡張機能のインストール済みインスタンスの数を確認したり、 LISTING_ACCESS_HISTORY ビュー をクエリすることで拡張機能のコンシューマーの使用状況をモニターしたりできます。

Trust Center拡張機能をインストールする

スキャナーパッケージを含むサードパーティの拡張機能を発見、インストール、管理できます。

サードパーティのスキャナーパッケージをインストールおよび管理する

ステップ1:拡張機能を見つけてインストールする

Snowflake Marketplace に公開された、またはプライベートリストを使用して共有されたTrust Center拡張機能を見つけてインストールできます。Trust Center拡張機能には、1つまたは複数のスキャナーパッケージを含めることができます。

拡張機能を見つけてインストールするには、次のステップに従います。

  1. Snowsightにサインインします

  2. SNOWFLAKE.TRUST_CENTER_ADMIN アプリケーションロールが付与されているロールに切り替えます。

    このロールの付与に関する情報については、 必要な権限 を参照してください。

  3. ナビゲーションメニューで Governance & security » Trust Center を選択します。

  4. Manage scanners タブを選択します。

  5. アカウントで利用可能な拡張機能のリストを表示するには、 Extensions を選択します。

  6. インストールする拡張機能を選択します。

    拡張機能のSnowflake Marketplaceページが開きます。

  7. Get を選択し、リストにアクセスします。

  8. オプション: Application name には、名前を入力します。

  9. 拡張機能をインストールするには、 Get を選択します。

インストールが完了すると、 Snowsight 通知が表示され、アカウントに関連付けられたメールアドレスにメールが送信されます。

ネイティブアプリのインストールの詳細については、 コンシューマーとしてのSnowflake Native Appsの使用と管理 をご参照ください。

ステップ2:新しいスキャナーパッケージを管理する

拡張機能をインストールすると、1つ以上のスキャナーパッケージをインストールできます。新しくインストールされたスキャナーパッケージを表示するには、次の手順を実行します。

  1. Snowsightにサインインします

  2. SNOWFLAKE.TRUST_CENTER_ADMIN アプリケーションロールが付与されているロールに切り替えます。

    このロールの付与に関する情報については、 必要な権限 を参照してください。

  3. ナビゲーションメニューで Governance & security » Trust Center を選択します。

  4. Manage scanners タブを選択します。

    スキャナーパッケージのリストでは、新しいスキャナーパッケージごとに次の情報が表示されます。

    • NAME - 新しいスキャナーパッケージの名前。

    • SOURCE - インストールした拡張機能の名前。

    • SCANNERS - スキャナーパッケージ内の有効および無効なスキャナーの数。

    • STATUS - スキャナーパッケージのステータス。デフォルトでは、新しくインストールされたスキャナーパッケージは無効になっています。

  5. 新しいスキャナーパッケージを有効にするには、次の手順を実行します。

    1. スキャナーパッケージのリストで、スキャナーパッケージを選択します。

    2. スキャナーパッケージページで、 Enable package を選択します。

    3. 新しいスキャナーパッケージに必要な権限を付与するには、 Grant を選択します。

    4. Enable を選択します。

    有効にする新しいスキャナーパッケージごとに、これらの手順を繰り返します。

Trust Center内の他のスキャナーパッケージと同じ方法で、新しいスキャナーパッケージを管理できます。例えば、新しいスキャナーパッケージをスケジュールしたり、無効にしたりすることができます。詳細については、 スキャナパッケージの管理 をご参照ください。

他のスキャナーと同じ方法で、新しいスキャナーパッケージ内のスキャナーを管理できます。例えば、スキャナーを有効化、無効化、スケジュールすることができます。詳細については、 スキャナーの管理 をご参照ください。

拡張機能に関連付けられたネイティブアプリを直接モニターおよび管理することもできます。詳細については、 アプリを管理する をご参照ください。

SNOWFLAKE.TRUST_CENTER.FINDINGS ビューをクエリすると、拡張機能でインストールされたスキャナーパッケージによって生成された調査結果を表示できます。例えば、次のクエリは、 extension_id4486988721 である拡張機能でインストールされているスキャナーパッケージの調査結果を返します。

SELECT * FROM snowflake.trust_center.findings WHERE extension_id = 4486988721;
Copy

登録された拡張機能の識別子を見つけるには、 EXTENSIONS ビュー をクエリします。

Trust Centerの調査結果の詳細については、 調査結果 および セキュリティリスクの表示 をご参照ください。

拡張機能のインストールと登録のトラブルシューティング

SNOWFLAKE.TRUST_CENTER.FINDINGS ビューに対するクエリが COMPLETION_STATUS 列に FAILED を返す場合、スキャナーの実行は失敗しています。スキャナーの失敗で考えられる原因の1つは、拡張機能に必要な権限が付与されていないことです。拡張機能に ステップ4:権限を付与する で説明されている権限が付与されていることを確認します。

必要な権限を付与した後、スキャナーパッケージを再度実行して新しい調査結果を生成します。SNOWFLAKE.TRUST_CENTER.FINDINGS ビューに対するクエリで依然として COMPLETION_STATUS 列に FAILED が返される場合は、Snowflakeサポートにお問い合わせください。