Trust Center拡張機能の使用¶
ソリューションをTrust Centerと統合するために、セキュリティパートナーは Snowflake Native App Framework を使用して、1つまたは複数の追加スキャナーパッケージを提供するアプリケーションを作成できます。これらのアプリケーションは、 Trust Center拡張機能 と呼ばれます。
Trust Center拡張機能を作成して、セキュリティ、プライバシー、ガバナンス、コンプライアンスソリューションを要件に合わせてカスタマイズし、組織内で拡張機能を共有できます。また、より広く使用できる拡張機能を作成し、特定のSnowflakeアカウントまたは Snowflake Marketplace にリストすることもできます。詳細については、 Trust Center拡張機能を開発する をご参照ください。
ユーザーは、スキャナーパッケージを含むサードパーティの拡張機能を発見、インストール、管理できます。詳細については、 Trust Center拡張機能をインストールする をご参照ください。
アクセス制御の要件¶
Trust Center拡張機能を作成および管理するには、 ACCOUNTADMIN ロール を持つユーザーが、ロールに以下の権限を付与する必要があります。
SNOWFLAKE.TRUST_CENTER_ADMIN アプリケーションロール
CREATE APPLICATION PACKAGE
CREATE APPLICATION
Trust Center拡張機能を開発する¶
スキャナーパッケージを使用してTrust Center拡張機能を開発し、展開できます。ネイティブアプリのバージョン管理 を使用してTrust Center拡張機能をバージョン管理できます。拡張機能は ネイティブアプリの権限モデル も使用して、カスタマーアカウント内のテーブルやアカウント使用状況ビューなど、データやメタデータにアクセスします。
前提条件¶
スキャナーパッケージを使用して拡張機能を開発する前に、以下の前提条件を完了してください。
ネイティブアプリ の開発方法を理解する。
Snowflake ストアドプロシージャ を作成して使用する方法を理解する。
拡張機能プロバイダーアカウントとして機能するSnowflakeアカウントを作成または特定する。すべてのネイティブアプリにはプロバイダーアカウントが必要です。
スキャナーパッケージマニフェストとスキャナーを作成する¶
ステップ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: ''
マニフェストファイルには次のプロパティがあります。
プロパティ
説明
最大文字数
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スキャナーのコールバックセクション。すべてのスキャナーには、
schema、name、および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'
ステップ2:スキャナーを作成する¶
バージョン管理されたスキーマ と、スキャナーロジックを実装するストアドプロシージャを作成します。
スキャナーパッケージに複数のスキャナーが含まれている場合は、スキャナーごとに次の手順を実行し、スキャナーごとに異なるバージョン管理されたスキーマを使用します。
スキャナーロジックをホストするバージョン管理されたスキーマを作成します。
スキーマの名前は、 拡張機能マニフェストファイル でスキャナーに指定されたスキーマと同じである必要があります。
例えば、次の SQL ステートメントは、
security_essentials_mfa_required_for_usersという名前のバージョン管理されたスキーマを作成します。CREATE OR ALTER VERSIONED SCHEMA security_essentials_mfa_required_for_users;
スキャナーロジックを実装するストアドプロシージャを作成します。
次の例では、
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 -- $$;
ストアドプロシージャが、重大度とリスク ID の組み合わせごとに1行だけを返すことを確認します。
返されるテーブルには、次の列が必要です。
列
型
説明
risk_idVARCHAR
リスクの識別子。
risk_nameVARCHAR
リスクの名前。
total_at_risk_countNUMBER
スキャナーのリスクのあるエンティティの総数。スキャナーが違反を検出しないシナリオでは、値は
0です。リスクのあるエンティティの最大数は1,000で、 配列 内にあるすべての値の最大合計サイズは128 MB です。scanner_typeVARCHAR
現在、
VULNERABILITYスキャナータイプのみがサポートされています。risk_descriptionVARCHAR
リスクの説明。
suggested_actionVARCHAR
修復のために提案されるアクション。
impactVARCHAR
リスクに対処しない場合に考えられる結果。
severityVARCHAR
リスクの重大度レベル。可能な値は、 LOW 、 MEDIUM 、 HIGH 、および CRITICAL です。
at_risk_entitiesOBJECT 値の 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- リスクのあるエンティティのタイプに対応する必須フィールド。例:APPLICATION、TASK, NETWORK_POLICY、SECURITY_INTEGRATION、ROLE、PROCEDURE、QUERY、DRIVER、PARAMETER、TABLE、STAGE、DATA_MASKING_POLICY、またはROW_ACCESS_POLICY。entity_detail- エンティティを記述するカスタムデータ。
配列の最大サイズは128 MB です。
スキャナーが違反を検出しないシナリオでは、値は空のリストになります。
ステップ3:拡張機能を作成する¶
拡張機能 は、スキャナーパッケージをネイティブアプリでバンドルし、Trust Centerにアクセスできるようにし、Trust Centerが必要なストアドプロシージャを呼び出せるように権限を構成します。
拡張機能を作成するには、次のステップを実行します。
セットアップスクリプトを作成する の指示に従って、拡張機能用の
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;
権限は、パッケージ内のすべてのスキャナーに必要です。
アプリのマニフェストファイルの作成 の指示に従って、拡張機能用の
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"
アプリケーションパッケージを作成する の指示に従って、拡張機能用のアプリケーションパッケージを作成します。
バージョンの登録 の指示に従って、アプリケーションパッケージのバージョンを登録します。
アプリケーションパッケージにバージョンが登録されていることを確認するには、 SHOW VERSIONS IN APPLICATION PACKAGE を実行できます。
バージョンまたはパッチからアプリを作成 の指示に従って、登録されたバージョンに基づくアプリケーションを作成します。
アプリケーションオブジェクトが作成されたことを確認するには、 SHOW APPLICATIONS を実行できます。
ステップ4:権限を付与する¶
拡張機能をインストールしたら、次のステップを実行して必要な権限を付与します。
Snowsightを使用してアクセスリクエストを管理する の指示に従って、拡張機能がリクエストする権限を付与します。
拡張機能の名前空間内の
trust_center_integration_roleアプリケーションロールを SNOWFLAKE アプリケーションに付与するには、 GRANT APPLICATION ROLE コマンドを実行します。GRANT APPLICATION ROLE <extension_name>.trust_center_integration_role TO APPLICATION snowflake;
例えば、
tc_extension.trust_center_integration_roleアプリケーションロールを SNOWFLAKE アプリケーションに付与するには、次のコマンドを実行します。GRANT APPLICATION ROLE tc_extension.trust_center_integration_role TO APPLICATION snowflake;
ステップ5:拡張機能を登録する¶
次のストアドプロシージャを呼び出すと、拡張機能を登録または登録解除できます。
Trust Centerに拡張機能を登録するには、次のステップを完了します。
SNOWFLAKE.TRUST_CENTER_ADMIN アプリケーションロールが付与されたロールに切り替えます。
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');
EXTENSIONS ビュー をクエリすると、登録済みの拡張機能に関する情報を表示できます。
注釈
拡張機能の登録を解除するには、 SNOWFLAKE.TRUST_CENTER.DEREGISTER_EXTENSION ストアドプロシージャを呼び出します。
利用可能なスキャナーパッケージを表示 の指示に従って、拡張機能が提供するスキャナーパッケージが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つまたは複数のスキャナーパッケージを含めることができます。
拡張機能を見つけてインストールするには、次のステップに従います。
SNOWFLAKE.TRUST_CENTER_ADMIN アプリケーションロールが付与されているロールに切り替えます。
このロールの付与に関する情報については、 必要な権限 を参照してください。
ナビゲーションメニューで Governance & security » Trust Center を選択します。
Manage scanners タブを選択します。
アカウントで利用可能な拡張機能のリストを表示するには、 Extensions を選択します。
インストールする拡張機能を選択します。
拡張機能のSnowflake Marketplaceページが開きます。
Get を選択し、リストにアクセスします。
オプション: Application name には、名前を入力します。
拡張機能をインストールするには、 Get を選択します。
インストールが完了すると、 Snowsight 通知が表示され、アカウントに関連付けられたメールアドレスにメールが送信されます。
ネイティブアプリのインストールの詳細については、 コンシューマーとしてのSnowflake Native Appsの使用と管理 をご参照ください。
ステップ2:新しいスキャナーパッケージを管理する¶
拡張機能をインストールすると、1つ以上のスキャナーパッケージをインストールできます。新しくインストールされたスキャナーパッケージを表示するには、次の手順を実行します。
SNOWFLAKE.TRUST_CENTER_ADMIN アプリケーションロールが付与されているロールに切り替えます。
このロールの付与に関する情報については、 必要な権限 を参照してください。
ナビゲーションメニューで Governance & security » Trust Center を選択します。
Manage scanners タブを選択します。
スキャナーパッケージのリストでは、新しいスキャナーパッケージごとに次の情報が表示されます。
NAME - 新しいスキャナーパッケージの名前。
SOURCE - インストールした拡張機能の名前。
SCANNERS - スキャナーパッケージ内の有効および無効なスキャナーの数。
STATUS - スキャナーパッケージのステータス。デフォルトでは、新しくインストールされたスキャナーパッケージは無効になっています。
新しいスキャナーパッケージを有効にするには、次の手順を実行します。
スキャナーパッケージのリストで、スキャナーパッケージを選択します。
スキャナーパッケージページで、 Enable package を選択します。
新しいスキャナーパッケージに必要な権限を付与するには、 Grant を選択します。
Enable を選択します。
有効にする新しいスキャナーパッケージごとに、これらの手順を繰り返します。
Trust Center内の他のスキャナーパッケージと同じ方法で、新しいスキャナーパッケージを管理できます。例えば、新しいスキャナーパッケージをスケジュールしたり、無効にしたりすることができます。詳細については、 スキャナパッケージの管理 をご参照ください。
他のスキャナーと同じ方法で、新しいスキャナーパッケージ内のスキャナーを管理できます。例えば、スキャナーを有効化、無効化、スケジュールすることができます。詳細については、 スキャナーの管理 をご参照ください。
拡張機能に関連付けられたネイティブアプリを直接モニターおよび管理することもできます。詳細については、 アプリを管理する をご参照ください。
SNOWFLAKE.TRUST_CENTER.FINDINGS ビューをクエリすると、拡張機能でインストールされたスキャナーパッケージによって生成された調査結果を表示できます。例えば、次のクエリは、 extension_id が 4486988721 である拡張機能でインストールされているスキャナーパッケージの調査結果を返します。
SELECT * FROM snowflake.trust_center.findings WHERE extension_id = 4486988721;
登録された拡張機能の識別子を見つけるには、 EXTENSIONS ビュー をクエリします。
Trust Centerの調査結果の詳細については、 調査結果 および セキュリティリスクの表示 をご参照ください。
拡張機能のインストールと登録のトラブルシューティング¶
SNOWFLAKE.TRUST_CENTER.FINDINGS ビューに対するクエリが COMPLETION_STATUS 列に FAILED を返す場合、スキャナーの実行は失敗しています。スキャナーの失敗で考えられる原因の1つは、拡張機能に必要な権限が付与されていないことです。拡張機能に ステップ4:権限を付与する で説明されている権限が付与されていることを確認します。
必要な権限を付与した後、スキャナーパッケージを再度実行して新しい調査結果を生成します。SNOWFLAKE.TRUST_CENTER.FINDINGS ビューに対するクエリで依然として COMPLETION_STATUS 列に FAILED が返される場合は、Snowflakeサポートにお問い合わせください。