概要
Databricksで利用できるデータストアにおけるデータへの権限付与機能(認可、アクセス制御)を確認するために実施した、データ オブジェクトの特権と動的ビュー関数(行レベルセキュリティ、列レベルセキュリティ)に関する検証内容を共有します。
検証内容としては、下記の記事をベースにしております。
詳細は下記のGithub pagesのページをご確認ください。
コードを実行したい方は、下記のdbcファイルを取り込んでください。
https://github.com/manabian-/databricks_tecks_for_qiita/blob/main/tecks/data_object_privileges_test/data_object_privileges_test.dbc
検証方法
Databricks管理者権限を保持させたユーザーとデータ参照ユーザーの2つのユーザーを用意して、DDL実行等のメタデータのデプロイのノートブック(01_configure_data_object_privileges)を前者のユーザーで、データ参照の検証を後者のユーザーで実行。
下記を事前に実施する必要があります。
- ワークスペースレベルでのテーブルアクセス制御を有効にすること
- クラスター作成権限を拒否して、テーブルアクセス制御が有効なクラスターのみ利用するように設定すること
-
SELECT ON ANY FILE
権限を拒否すること
検証結果
下記のデータストアにおけるデータへの権限付与が可能でした。DatabricksをデータレイクやDWHとして利用する際には、データへのセキュリティ要件を満たすことできそうです。
分類 | 権限付与項目 | 可否 | 実施方法 |
---|---|---|---|
データストアシステムへの権限付与 | SQL命令(DDL、DCL)相当に対する実行の権限付与 | 〇 |
CREATE 権限、あるいは、OWNER 権限を付与する。 |
データストアシステムへの権限付与 | オブジェクト(スキーマ)一覧の閲覧の権限付与 | 〇 |
USAGE 権限とSELECT 権限を付与する。 |
データストアシステムへの権限付与 | データ参照の権限付与 | 〇 |
USAGE 権限とSELECT 権限を付与する。 |
データストアシステムへの権限付与 | データ挿入・更新・削除の権限付与 | 〇 |
MODIFY 権限を付与する。 |
データへの権限付与 | ルールベースによる行レベルセキュリティ | 〇 | 動的ビュー関数を利用。 |
データへの権限付与 | データ権限(認可)テーブルを利用した行レベルセキュリティ | 〇 | 動的ビュー関数を利用。 |
データへの権限付与 | 列への参照権限付与による列レベルセキュリティ | × | |
データへの権限付与 | 動的データマスキングによる列レベルセキュリティ(ルールベース) | 〇 | 動的ビュー関数を利用。 |
データへの権限付与 | 動的データマスキングによる列レベルセキュリティ(データ権限(認可)テーブル) | 〇 | 動的ビュー関数を利用。 |
下記の実行を許容する場合には、USAGE
権限とSELECT
権限だけでなく、READ_METADATA
権限も許可してもよさそうです。
- EXPLAIN
- DESCRIBE TABLE
- SHOW CREATE TABLE
参考リンク
- ワークスペースのテーブル アクセス制御を有効にする - Azure Databricks - Workspace | Microsoft Docs
- テーブルのアクセス制御 - Azure Databricks - Workspace | Microsoft Docs
- クラスターのテーブルアクセス制御を有効にする-Azure Databricks | Microsoft Docs
- データオブジェクトの特権-Azure Databricks | Microsoft Docs
- GRANT-Azure Databricks - Workspace | Microsoft Docs
- DENY-Azure Databricks | Microsoft Docs
- REVOKE - Azure Databricks | Microsoft Docs
- SHOW GRANT - Workspace | Microsoft Docs