Cortex Codeのデータガバナンススキル

Cortex Codeには、Snowflakeアカウント内のデータを理解、保護、監視できるように設計されたデータガバナンススキルが組み込まれています。これらのスキルはSnowflake環境で直接機能します。必要なものを簡単な英語で記述すると、Cortex Codeが必要なクエリ、分類、分析を生成して実行します。どのスキルを実行するかを知っている必要はありません。質問に答えるために必要なスキルをCortex Codeが自動的に選択します。

はじめるにあたり

  1. Cortex Code CLIをインストールして、アカウントに接続します

  2. :ref:`アクセス制御の要件を満たしている<label-dg_skills_access_control_requirements>`ことを確認します。

  3. コマンドラインから質問を開始します。以下のプロンプトの例は、どれもCortex Codeでそのまま使用できます。Cortex Codeは、質問に基づいて適切なスキルを自動的に選択します。特別なコマンドは必要ありません。

一般的なデータガバナンス

データガバナンススキルは、Snowflakeアカウント全体のアクセス制御、監査証跡、権限、ロール階層、コンプライアンス監視に関する質問に答えることができます。Cortex Codeは、効果的なクエリパターンを持つ埋め込みセマンティックモデルを使用し、スキルを利用してSnowflakeのACCOUNT_USAGEビューに対してSQLクエリを実行します。

Cortex Codeは以下のタスクを支援します。

  • 誰がどのデータにいつアクセスしたかを監査する — ユーザーアクセスのパターンを把握し、クエリの履歴を記録し、時間外のアクティビティや異常なアクティビティを特定します。

  • 権限とロール階層を分析する — 権限の付与、ロールの割り当て、権限の構造を精査して、ユーザーの最小権限アクセスを確実に実施します。

  • コンプライアンス体制をモニターする — アカウント全体のマスキングポリシー、行アクセスポリシー、集約ポリシー、タグの使用状況を分析します。

  • オブジェクトの依存関係を調査する — データベース、スキーマ、テーブル、ビューが相互にどのように関連しているかを理解します。

  • DDLの変更を追跡する — 誰がいつオブジェクトを作成、変更、または削除したかを確認します。

プロンプトの例

"Who has accessed the SALES.NA.CUSTOMERS table in the last 30 days?"
"Show me all users with the ACCOUNTADMIN role"
"What tables were accessed outside of business hours last week?"
"List all grants to the ANALYST_ROLE"
"Which users have run DDL operations on the FINANCE database in the last 7 days?"
"Show me the role hierarchy for my account"
"What masking policies are applied across my account?"
"Which tables have no row access policies attached?"
"Show me all tag references in the ANALYTICS database"

機密データの分類

機密データ分類のデータガバナンススキルは、Snowflakeテーブル内の個人を特定できる情報(PII)やその他の機密データを検出して分類できます。Snowflakeのネイティブの:doc:`SYSTEM$CLASSIFY </sql-reference/stored-procedures/system_classify>`関数を使用してテーブルをスキャンし、メールアドレス、電話番号、社会保障番号、住所などのデータを含む列を特定します。また、継続的なモニタリングのために自動分類プロファイルを設定することもできます。

Cortex Codeは以下のタスクを支援します。

  • テーブル内のPIIを発見する — 個々のテーブルまたはスキーマ全体をスキャンして、メールアドレス、名前、電話番号、クレジットカード番号、社会保障番号などの機密データを含む列を検索します。

  • 既存の分類結果を分析する — :doc:`DATA_CLASSIFICATION_LATEST </sql-reference/account-usage/data_classification_latest>`ビューをクエリして、どのようなPIIがすでに検出されているか、どのテーブルに最も機密性の高い列があるか、どのような機密データのカテゴリが存在するかを確認します。

  • 自動分類を設定する — 新しい機密データがないかデータベースを継続的に監視し、必要に応じて列に自動タグ付けを行う分類プロファイルを作成します。

  • カスタム分類子を作成する — Snowflakeの組み込みカテゴリではカバーされていない、ドメイン固有の機密データ(従業員IDs、内部コード、カスタムフォーマットなど)に対する正規表現ベースの分類子を定義します。

  • 分類精度をテストおよび検証する — 運用環境にデプロイする前に、代表的なテーブルに対して分類子を実行し、検出精度を確認します。

プロンプトの例

"Scan SALES.NA.ORDERS for PII"
"Does the CUSTOMERS table contain any sensitive data?"
"What PII exists across my ANALYTICS database?"
"Show me all columns classified as EMAIL or PHONE in my account"
"Which tables have the most sensitive columns?"
"Create a classification profile for the PROD_DB database"
"Set up auto-classification with auto-tagging enabled"
"Create a custom classifier for employee IDs that match the pattern EMP-XXXXX"
"Show me classification results for the NA.FINANCE schema"
"Which tables need re-classification (older than 90 days)?"

データ保護ポリシー

データ保護ポリシーのデータガバナンススキルは、Snowflakeのマスキングポリシー、行アクセスポリシー、および投影ポリシーの作成、監査、管理に役立ちます。新しいポリシーの構築と既存ポリシーの監査の両方について、ベストプラクティス、検証済みのパターン(属性ベースのアクセス制御など)、およびガイド付きワークフローを提供します。また、PCI-DSS、HIPAA、GDPR、CCPA、SOX、およびFERPAのコンプライアンス参照資料も含まれています。

Cortex Codeは以下のタスクを支援します。

  • マスキングポリシーを作成する — :code:`IS_ROLE_IN_SESSION()`やメモ化可能な関数などのベストプラクティスを使用して、クエリ実行ユーザーのロールに基づいて機密データを動的にマスキングする、列レベルのマスキングポリシーを構築します。

  • 行アクセスポリシーを作成する — ロールメンバーシップ、属性、またはルックアップテーブルに基づいて、ユーザーが表示できる行を制限します。

  • 投影ポリシーを作成する — クエリ結果に列を表示できるかどうかを制御します。

  • 既存ポリシーを監査する — アカウント内のすべてのポリシーをリスト化し、セキュリティベストプラクティスのチェックリストに照らして評価し、避けるべき典型的なパターンを特定します(例えば、IS_ROLE_IN_SESSIONの代わりにCURRENT_ROLE関数を使用するなど)。

  • 分散したポリシーを統合する — テーブル固有のポリシーから、ガバナンスデータベースに一元化された再利用可能な汎用ポリシーに移行します。

  • 規制要件を満たす — 特定のコンプライアンスフレームワークに合わせたポリシーテンプレートとガイダンスを取得します(医療向けのHIPAA、支払いデータのPCI-DSS、EU個人データのGDPRなど)。

プロンプトの例

"Create a masking policy for the EMAIL column in the SALES.NA.CUSTOMERS table"
"Help me set up row access policies for the FINANCE schema"
"Audit all masking policies in my account"
"Are there any anti-patterns in my existing data policies?"
"Create a HIPAA-compliant masking policy for PHI columns"
"Show me the best practice for role-based masking"
"I need a projection policy to prevent the SSN column from appearing in query results"
"Help me consolidate my scattered masking policies into reusable ones"
"What's the recommended pattern for Attribute-Based Access Control (ABAC)?"
"Generate a policy health report for my account"

データ品質

データ品質のデータガバナンススキルは、データメトリック関数(DMFs)を使用して、Snowflakeスキーマ全体のデータ品質を監視および分析します。これにより、健全性のスコアリング、失敗したメトリックの根本原因分析、回帰検出、トレンド分析、SLAアラート、移行検証のためのテーブル比較、データセットの人気度分析が提供されます。

Cortex Codeは以下のタスクを支援します。

  • スキーマの健全性をチェックする — スキーマの全体的なデータ品質スコアを取得し、合格しているメトリックと失敗しているメトリックの数、および監視されているテーブルを表示する。

  • 品質障害を調査する — 失敗しているメトリックについて掘り下げ、どのテーブルと列に問題があり、何が問題なのかを把握して、修正の推奨事項を取得します。

  • 品質の回帰を検出する — 現在の品質を以前の測定値と比較して品質が改善されたか低下したかを確認し、新しく発生した失敗を特定します。

  • 品質トレンドを追跡する — 品質スコアを時系列で表示し、時間の経過とともに品質が向上しているか、安定しているか、低下しているかを把握します。

  • SLAアラートを設定する — データ品質がしきい値を下回ったときに通知する、Snowflakeの自動ALERTオブジェクトを作成します。

  • テーブルを比較する — データ移行の検証、開発環境データと本番環境データの照合、または2つのテーブルバージョン間での行レベルの相違点(追加、削除、変更された行、スキーマの違い)の検出を行います。

  • データセットの人気度を分析する — 最も使用されているテーブルと最も使用されていないテーブルを特定し、未使用のデータや古いデータを見つけ、誰がどのデータセットを消費しているかを把握します。

プロンプトの例

"What is the data quality score for ANALYTICS.REPORTING?"
"Why is the SALES.CUSTOMERS.ORDERS table failing quality checks?"
"Has data quality improved or gotten worse in the DB.FINANCE schema this month?"
"Show me quality trends for PROD_DB.SALES over the last 30 days"
"Set up an alert if data quality in ANALYTICS.CORE drops below 90%"
"Compare STAGING.ORDERS_V1 with STAGING.ORDERS_V2"
"Find the differences between dev and prod versions of the SALES.ORDERS.CUSTOMERS table"
"Which tables in my account are the most popular?"
"Are there any unused tables in the SANDBOX database?"
"Show me the root cause of quality failures in SALES.ORDERS"

系列

系列のデータガバナンススキルは、Snowflakeアカウント全体で、上流(データの出どころ)と下流(データに依存するもの)の両方のデータ依存関係をトレースします。テーブルレベルおよび列レベルの系列、リスクスコアリングを使用した影響分析、変更検出を使用した根本原因分析、信頼スコアリングを使用したデータ検出に対応しています。

Cortex Codeは以下のタスクを支援します。

  • 変更の影響を評価する — テーブルを変更する前に、そのテーブルに依存するすべての下流オブジェクトを、使用頻度や影響を受けるユーザー数とともにリスク(CRITICAL、MODERATE、LOW)でランク付けして表示します。

  • 上流へトレースしてデータの問題をデバッグする — レポートに間違った数値が表示された場合は、変換レイヤーを遡ってデータをトレースし、最近のスキーマやデータの変更といった問題の発生源を特定する。

  • 信頼できるデータセットを発見して確認する — スキーマ層(本番、ステージング、未加工、サンドボックス)、使用パターン、データの鮮度に基づく信頼スコアを使用して、特定の分析に使用するのに最適なテーブルを見つけます。

  • 列レベルの依存関係をトレースする — 特定の列を消費しているのが下流のどの列かを把握したり、ある列について変換レイヤーを遡って元のソースまでトレースしたりします。

  • 系列の最近の変更を検出する — スキーマの変更、データの変更、および系列パス全体でのDDL操作を特定し、データ品質の問題と関連付けます。

プロンプトの例

"What will break if I change RAW_DB.SALES.ORDERS?"
"What depends on the SALES.SCH1.CUSTOMERS table?"
"Where does ANALYTICS_DB.REPORTING.REVENUE come from?"
"Why is the REVENUE_SUMMARY table showing wrong numbers?"
"Which table should I use for customer revenue analysis?"
"Is STAGING_DB.TRANSFORM.ORDERS_ENRICHED trustworthy?"
"What uses the AMOUNT column in SALES.ORDERS?"
"Where does the TOTAL_SALES column in the REVENUE report come from?"
"Show me the full lineage for SUMMIT.DEMO.SHIPMENTS"
"Has the DISCOUNT_PCT column in ORDERS changed recently?"

アクセス制御の要件

Cortex Codeからデータガバナンススキルを正常に呼び出すには、以下が必要です。

  • Cortex Codeに必要な権限とロール

  • 対象となるスキーマ、テーブル、およびビューへのアクセス。

    • 機密データの分類に関する質問については、テーブルまたはビューに対するOWNERSHIPまたはUSAGE権限が必要です。

    • データ保護ポリシーについては、そのテーブルが含まれるスキーマに対するCREATE MASKING POLICYまたはCREATE ROW ACCESS POLICY権限が必要です。

  • ACCOUNT_USAGEスキーマ内のビューへのアクセス。デフォルトでは、ACCOUNTADMINシステムロールのみがACCOUNT_USAGEスキーマ内のビューにアクセスする権限を持っています。これらのビューにアクセスする機能を他のユーザーに付与するには、次のいずれかを実行できます。

    • ユーザーのロールに、SNOWFLAKEデータベースに対するIMPORTED PRIVILEGES権限を付与します。これは、ユーザーがすべてのACCOUNT_USAGEビューを表示できるようにする広範な権限の付与ですが、ORGANIZATION_USAGEスキーマ内のビューへのアクセスも付与します。

    • ビューへのアクセスに必要なデータベースロールを付与します。ガバナンス関連のすべてのトピックにCortex Codeを使用する場合、ユーザーにはOBJECT_VIEWER、USAGE_VIEWER、GOVERNANCE_VIEWER、およびSECURITY_VIEWERのデータベースロールすべてが必要です。ユーザーがデータガバナンスの特定の側面について知ることを制限するには、これらのロールのサブセットを付与します。各ロールがアクセスできるビューのリストについては、:ref:`label-db_roles_account_usage`を参照してください。

最良の結果を得るためのヒント

  • オブジェクト名を具体的に指定する — 最も正確な結果を得るには、:code:`DATABASE.SCHEMA.TABLE`のような完全修飾名を使用します。

  • 幅広く開始してから掘り下げる — ヘルスチェックや概要から始め、その後フォローアップの質問をして具体的な問題を調査します。