0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

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

Posted at

対象読者

  • データエンジニア、データアナリスト、セキュリティ担当者
  • 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を使った自動化とパフォーマンス改善を紹介します。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?