はじめに
データガバナンスは、企業がデータを安全かつ効果的に管理するための重要な要素です。特に、Snowflakeのようなクラウドデータウェアハウス(DWH)では、その機能が多岐にわたるため、適切な設計と運用が求められます。本記事では、Snowflakeが提供するデータガバナンス関連機能を「データ品質・可視化」「セキュリティ・制御」「監査・依存関係」の3つの視点から整理し、実務での設計指針を示します。
課題
多くの企業では、Snowflakeのガバナンス機能が多岐にわたるため、どの機能をどの目的で利用すべきかが整理できていません。この結果、セキュリティ設定や品質監視が属人的になりやすく、組織全体での一貫性が欠如することがあります。これにより、データの信頼性や安全性が損なわれるリスクが高まります。
解決アプローチ
Snowflakeのガバナンス機能を以下の3つの視点に分類し、体系的に整理します。
-
データ品質・可視化
- データの品質を監視し、可視化するためのメトリックを設定します。
-
セキュリティ・制御
- 列レベルおよび行レベルのセキュリティを設計し、データへのアクセスを制御します。
-
監査・依存関係
- アクセス履歴やロール依存関係を分析し、監査の設計を行います。
これらの視点を基に、Snowflakeのタグベースマスキングポリシーなど、実務での設計・運用指針を示します。
実装ステップ
snowflakeでは、SQLベースでデータガバナンスを実装します。
1. データ品質監視とメトリック収集
- Query HistoryやInformation Schemaを使用して、データの品質を監視します。
- 例:
SELECT * FROM SNOWFLAKE.ACCOUNT_USAGE.QUERY_HISTORY WHERE EXECUTION_STATUS = 'SUCCESS' AND START_TIME > DATEADD(day, -7, CURRENT_DATE());
2. 列レベル/行レベルセキュリティの設計
- 列レベルおよび行レベルのセキュリティを設計し、必要なアクセス権を設定します。
- 例:
-- 1. 行アクセスポリシーの作成 CREATE OR REPLACE ROW ACCESS POLICY region_filter_policy AS (record_region_id VARCHAR) -- 👈 テーブルの列(ここではREGION_ID)を引数として受け取る RETURNS BOOLEAN -> -- ユーザーのロールが 'ADMIN' の場合はすべての行を表示 (CURRENT_ROLE() = 'ADMIN' OR -- それ以外の場合、ユーザーのロールが行の地域IDと一致する場合のみ表示 CURRENT_ROLE() = record_region_id); -- 2. テーブルへのポリシーの適用 ALTER TABLE sales_data ADD ROW ACCESS POLICY region_filter_policy ON (region_id); -- 👈 sales_dataテーブルの'region_id'列をポリシーの引数(record_region_id)に渡す -- 3. 検証('EAST'ロールのユーザーの場合) USE ROLE EAST; SELECT * FROM sales_data; -- 👈 結果:REGION_IDが 'EAST' の行のみが表示される
3. オブジェクトタグ付けと分類
- データオブジェクトにタグを付け、分類します。これにより、データの管理が容易になります。
- 例:
-- テーブル 'ANALYTICS_VIEW' 全体にタグを割り当て ALTER TABLE ANALYTICS_VIEW SET TAG GOVERNANCE_DB.TAGS_SCHEMA.CONFIDENTIAL_LEVEL = 'PUBLIC';
4. タグベースのマスキングポリシー実装
- タグを基にしたマスキングポリシーを実装し、データのセキュリティを強化します。
- 例:
-- 1. タグベースのマスキングポリシーの作成 CREATE OR REPLACE MASKING POLICY tag_based_masking AS (val VARCHAR) RETURNS VARCHAR -> CASE -- 列に 'PII' タグが設定されている AND ユーザーロールが 'ANALYST' の場合 WHEN SYSTEM$GET_TAG('CONFIDENTIAL_LEVEL', CURRENT_COLUMN_NAME(), 'COLUMN') = 'PII' AND CURRENT_ROLE() = 'ANALYST' THEN 'XXXXXXXXXX' -- 完全マスク -- それ以外(ADMINなど)の場合 ELSE val END; -- 2. マスキングポリシーをタグ自体にバインド(紐づけ) ALTER TAG GOVERNANCE_DB.TAGS_SCHEMA.CONFIDENTIAL_LEVEL SET MASKING POLICY tag_based_masking; -- 👆 この設定により、今後 'CONFIDENTIAL_LEVEL' = 'PII' が設定されたすべての列に、 -- 上記のマスキンクポリシーが自動的に適用されます。
5. アクセス履歴/依存関係分析による監査設計
- アクセス履歴や依存関係を分析し、監査の設計を行います。
- 例:
--過去7日間に、機密性の高い列にアクセスしたユーザーとアクセス元を特定 SELECT * FROM snowflake.account_usage.access_history WHERE -- 過去7日間のアクセスを対象とする query_start_time >= DATEADD(day, -7, CURRENT_TIMESTAMP()) AND -- アクセスされたオブジェクトの中に、PIIタグが付与された列が含まれていることを確認 EXISTS ( SELECT 1 FROM LATERAL FLATTEN(input => base_objects_accessed) AS accessed_obj WHERE accessed_obj.value:objectId = ( -- 'CUSTOMERS'テーブルの'EMAIL'列をPIIとして例示 SELECT t.table_id || '.' || c.column_id FROM snowflake.account_usage.tables t JOIN snowflake.account_usage.columns c ON t.table_id = c.table_id WHERE t.table_name = 'CUSTOMERS' AND c.column_name = 'EMAIL' -- 実際にはタグ情報ビューから取得しますが、ここでは単純化 ) ) ORDER BY query_start_time DESC;
6. 実務におけるガバナンス設計
- 組織全体で再利用可能な「統制設計フレームワーク」を作成します。これには、各機能の利用目的や設定方法を明記します。実務への適用ポイントは以下です。
実務適用のポイント
-
管理境界を明確化する
セキュリティ(ロール・認証)と構造(テーブル・ビュー)の責務を分ける。 -
ACCOUNT_USAGEを中心に統制設計を内包する
Snowflake内部のメタデータを監視対象とし、外部監査ツール依存を減らす。 -
タグ駆動設計を採用する
機密区分や責任者情報をタグでメタデータ化し、
マスキング/監査/可視化に一貫して利用する。
7.snowflakeの他社製品と比較した強み
snowflakeのガバナンス機能では、データウェアハウス内で完結した、シンプルで一貫したSQLインターフェースに統合することで、開発者・運用者にとっての使いやすさと、ポリシー管理の確実性において優位性を持っています。これにより、データガバナンスの実施が簡素化され、組織全体のデータ管理が向上します。
まとめ
Snowflakeにおけるデータガバナンスは、データ品質、セキュリティ、監査の3つの視点から体系的に整理することが重要です。具体的な実装ステップを通じて、企業は一貫したデータガバナンスを実現し、データの信頼性と安全性を高めることができます。
ご案内
snowflakeのガバナンス機能について、実務でどのように設計し、どの管理主体に運用して貰うべきか、詳細が気になる方はぜひ気軽にお問い合わせください。
表形式でまとめた資料を無料でお渡しさせていただきます。
※私個人で作成したものであり、参考程度にご活用願います。
参考資料
- Snowflake Data Governance Guide
- Snowflake Documentation: Access Control Overview
- Managing Organizations and Accounts
🌐 運営ブログのご紹介
📘 MyWay Going(マイウェイ・ゴーイング)
データ連携基盤・ETL・DB設計を専門とするフリーランスエンジニアのポートフォリオサイトです。
Qiitaでの技術発信を軸に、活動実績まとめ・案件進行で得た学び・キャリア構築ノウハウを掲載しています。
気になる方はぜひご覧ください🙌
▶️ 技術発信のハイライト・活動実績・フリーランスとしての取り組みを整理
👉 MyWay Going|データエンジニア活動実績とキャリア戦略