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:スキャナーを作成する

Create a versioned schema and a stored procedure that implements the scanner logic.

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

  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. Create the setup script の指示に従って、拡張機能用の 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. Create and manage an application package の指示に従って、拡張機能用のアプリケーションパッケージを作成します。

  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 アプリケーションロールが付与されているロールに切り替えます。

    このロールの付与に関する情報については、 Required roles を参照してください。

  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 アプリケーションロールが付与されているロールに切り替えます。

    このロールの付与に関する情報については、 Required roles を参照してください。

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

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

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

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

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

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

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

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

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

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

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

    4. Enable を選択します。

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

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

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

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

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

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

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

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

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

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

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