クラスターで Hive メタストア テーブルのアクセス制御を有効にする (レガシ)
この記事では、クラスター上の組み込みの Hive メタストアに対してテーブル アクセス制御を有効にする方法について説明します。
クラスターでテーブル アクセス制御が有効になった後に Hive メタストア セキュリティ保護可能オブジェクトに対する特権を設定する方法については、「Hive メタストアの特権とセキュリティ保護可能なオブジェクト (レガシ)」を参照してください。
注意
Hive メタストア テーブルのアクセス制御は、レガシ データ ガバナンス モデルです。 Databricks では、ガバナンス モデルがシンプルでアカウント中心である Unity Catalog を代わりに使用することをお勧めします。 Hive メタストアによって管理されるテーブルは Unity Catalog メタストアにアップグレードできます。
クラスターのテーブル アクセス制御を有効にする
テーブル アクセス制御は、次の 2 つのバージョンで使用できます。
- SQL のみのテーブル アクセス制御。これはユーザーを SLO コマンドに制限します。
- Python および SQL アクセス制御。これを使用すると、ユーザーは SQL、Python、PySpark のコマンドを実行できます。
Machine Learning Runtime では、テーブルのアクセス制御はサポートされていません。
重要
クラスターに対してテーブル アクセス制御が有効になっている場合でも、Azure Databricks ワークスペース管理者はファイル レベル データにアクセスできます。
SQL のみのテーブル アクセス制御
このバージョンのテーブル アクセス制御では、ユーザーは SQL コマンドだけに制限されます。
クラスターで SQL のみのアクセス制御を有効にし、SQL コマンドのみを使用するようにそのクラスターを制限するには、クラスターの Spark conf で次のフラグを設定します。
spark.databricks.acl.sqlOnly true
注意
SQL のみのテーブル アクセス制御へのアクセスは、管理者設定ページでの [テーブルのアクセス制御を有効にする] 設定の影響は受けません。 この設定では、Python および SQL テーブル アクセス制御のワークスペース全体の有効化のみが制御されます。
Python および SQL テーブルのアクセス制御
このバージョンのテーブル アクセス制御を使用すると、ユーザーは SQL のほか、データフレーム API を使用する Python コマンドを実行できます。 クラスターでこれを有効にすると、そのクラスター上のユーザーは次のように制約されます。
- Spark にアクセスするには、Spark SQL API またはデータフレーム API のみを使用する必要があります。 どちらの場合も、Hive メタストア オブジェクトに付与できる Azure Databricks 特権に従って、テーブルとビューへのアクセスが管理者によって制限されます。
- ファイル システムの機密性の高い部分にアクセスしたり、80 および 443 以外のポートへのネットワーク接続を確立することが禁じられている特権の低いユーザーとして、クラスター ノードでコマンドを実行する必要があります。
- 80 および 443 以外のポートでネットワーク接続を作成できるのは、組み込みの Spark 関数のみです。
- PySpark JDBC コネクタを経由して外部データベースからデータを読み取りできるのは、ワークスペース管理者ユーザーまたは ANY FILE 特権を持つユーザーのみです。
- Python プロセスでその他の送信ポートにアクセスできるようにする場合は、Spark 構成
spark.databricks.pyspark.iptable.outbound.whitelisted.ports
を、アクセスを許可するポートに設定できます。 サポートされている構成値の形式は[port[:port][,port[:port]]...]
(例:21,22,9000:9999
) です。 ポートは有効な範囲内 (0-65535
) である必要があります。
これらの制限を回避しようとすると、例外が発生して失敗します。 ユーザーがクラスターを介して特権のないデータにアクセスできないように、これらの制限が適用されます。
ワークスペースのテーブル アクセス制御を有効にする
ユーザーが Python と SQL テーブル アクセス制御を構成する前に、Azure Databricks ワークスペースで Azure Databricks ワークスペースのテーブル アクセス制御を有効にし、テーブル アクセス制御が無効なクラスターへのユーザー アクセスを拒否する必要があります。
- [設定] ページに移動します。
- [セキュリティ] タブをクリックします。
- [テーブルのアクセス制御] オプションをオンにします。
テーブルのアクセス制御を適用する
アクセスさせたいデータにのみユーザーをアクセスさせるには、テーブルのアクセス制御が有効になっているクラスターにユーザーを制限する必要があります。 具体的には、次のことを確認する必要があります。
- ユーザーに、クラスターを作成するアクセス許可がないこと。 ユーザーがテーブルのアクセス制御なしでクラスターを作成すると、そのクラスターから任意のデータにアクセスできるようになります。
- テーブル アクセス制御が有効になっていないクラスターでは、ユーザーは [アタッチ可能] アクセス許可を持っていません。
詳細については、「コンピューティングのアクセス許可」を参照してください。
テーブル アクセス制御に対して有効になっているクラスターを作成する
共有アクセス モードのクラスターでは、テーブル アクセス制御が既定で有効になっています。
REST API を使用してクラスターを作成するには、「新規クラスターを作成する」を参照してください。
データ オブジェクトに対する特権の設定
「Hive メタストアの特権とセキュリティ保護可能なオブジェクト (レガシ)」を参照してください。