❄️

3分でわかるSnowflake第7回 データ共有とセキュリティ:RBAC・データマスキング・Reader Accountサクッと解説

に公開

対象読者

  • データエンジニア、データアナリスト、セキュリティ担当者
  • Snowflakeを利用する企業のIT管理者
  • データガバナンスやコンプライアンスを重視する組織

説明すること / 説明しないこと

説明すること

  • Snowflakeのデータ共有の仕組みと活用方法
  • RBAC(ロールベースアクセス制御)の基本と実装例
  • データマスキングとカラムレベルセキュリティの設定方法
  • セキュリティ強化のベストプラクティスと失敗回避策

説明しないこと

  • Snowflakeの内部実装や暗号化アルゴリズムの詳細
  • 他社DWHとの詳細な比較やベンチマーク
  • 高度なSQLチューニングやパフォーマンス最適化手法

1. なぜデータ共有とセキュリティが重要なのか

Snowflakeは、データをコピーせずに共有できる仕組みと高度なアクセス制御機能を提供し、セキュリティを確保しながら効率的なデータ活用を実現します。これにより、企業はガバナンスを維持しつつ、迅速な意思決定を支援できます。

本記事では以下を解説します:

  • データ共有の仕組み
  • RBAC(ロールベースアクセス制御)
  • データマスキングとカラムレベルセキュリティ

2. データ共有の仕組み

Snowflakeでは、データをコピーせずに他アカウントと共有できます。

共有の種類

  • アカウント間共有:Snowflakeアカウント同士でデータを共有
  • Reader Account:Snowflakeを持たない外部ユーザー向けに専用アカウントを作成

特徴

  • データは常にプロデューサー側で管理
  • コンシューマーは自分のコンピュートリソースでクエリ実行
  • リアルタイムで最新データを参照可能

3. サンプルSQL:データ共有

CREATE SHARE my_share;
GRANT USAGE ON DATABASE sales_db TO SHARE my_share;
GRANT SELECT ON ALL TABLES IN SCHEMA sales_db.public TO SHARE my_share;
ALTER SHARE my_share ADD ACCOUNT = 'consumer_account_id';

4. RBAC(ロールベースアクセス制御)

SnowflakeはRBACモデルを採用し、ユーザーやロールに基づいてアクセスを制御します。

標準ロール

  • ACCOUNTADMIN:アカウント全体の管理
  • SYSADMIN:オブジェクト管理(DB、テーブル)
  • SECURITYADMIN:ユーザー・ロール管理
  • USERADMIN:ユーザー作成
  • PUBLIC:全ユーザーに付与される基本ロール

サンプルSQL:ロール管理

CREATE ROLE analyst;
GRANT SELECT ON TABLE sales_db.public.orders TO ROLE analyst;
GRANT ROLE analyst TO USER john_doe;

5. データマスキングとカラムレベルセキュリティ

Snowflakeはマスキングポリシーを使って、ユーザーのロールに応じてデータをマスクできます。

サンプルSQL:マスキングポリシー

CREATE MASKING POLICY mask_email AS (val STRING) 
RETURNS STRING ->
CASE
  WHEN CURRENT_ROLE() IN ('ANALYST') THEN '***MASKED***'
  ELSE val
END;

ALTER TABLE customers MODIFY COLUMN email SET MASKING POLICY mask_email;

6. ベストプラクティス

  • 最小権限の原則を徹底
    → セキュリティリスクを最小化
  • カスタムロールを活用
    → 部門やプロジェクト単位でロール設計
  • 共有データはビューを利用
    → 不要なカラムを除外し、セキュリティを強化

7. よくある失敗と回避策

失敗1:PUBLICロールに過剰な権限を付与

  • 回避策:PUBLICには基本権限のみ

失敗2:Reader Accountのコスト管理を怠る

  • 回避策:Reader Accountの利用状況を定期的に監視

8. 次回予告

次回は 「Snowflakeの高度な機能とベストプラクティス」 を解説します。
Streams、Tasks、Materialized Viewsを使った自動化とパフォーマンス改善を紹介します。

Discussion