背景・目的
前回、【Databricks】Unity Catalogを作成してみたの記事で、Unity Catalogのセットアップを行いました。
前回に引き続き、Unity Catalogについて操作していきたいと思います。
今回、実施する内容は下記のとおりです。
- ユーザーとグループの追加
- クラスターまたはSQLウェアハウスの作成
- 最初のテーブルを作成し、アクセス許可を管理する
- ノートブックの例: 最初のテーブルを作成し、アクセス許可を管理する
まとめ
- Databricksクラスタは下記の2つがある。
- All-Purpose:対話型ノートブックを実行し、複数人で共有し使用する
- Databricksジョブスケジューラ:高速で堅牢な自動化ジョブの実行に使用する。ジョブ単位にクラスタを起動し使用する。
- SQL Warehouseは、SQLを実行できるコンピュートリソース。
- クラスタポリシーは、クラスタ作成権限を制御するために使用するツール。
概要
本検証で登場する概念、用語について整理します。
クラスター
クラスターを元に整理します。
Databricks クラスターは、データエンジニアリング、データサイエンス、データ分析のワークロードを実行する一連の計算リソースと構成です。運用ETLパイプライン、ストリーミング分析、アドホック分析、機械学習などが含まれます。
これらのワークロードは、ノートブック内の一連のコマンドとして、または自動化された ジョブとして実行します。Databricksでは、All-Purposeクラスターとジョブクラスターが区別されます。All-Purposeクラスターは、対話型ノートブックを使用して共同でデータを分析する場合に使用します。ジョブクラスターは、高速で堅牢な自動化ジョブの実行に使用します。
- All-Purposeクラスターは、UI、CLI、またはREST APIを使用して作成できます。All-Purposeクラスターは手動で終了と再起動ができます。複数のユーザーでクラスターを共有し、共同でインタラクティブ分析を行えます。
- Databricksジョブスケジューラは、新しいジョブクラスターでジョブを実行したときにジョブクラスターを作成し、ジョブが完了したときにそのクラスターを終了します。ジョブクラスターを再起動することはできません。
- Databricksクラスターは、下記のワークロードを実行するコンピュートリソースと構成を指します。
- データエンジニアリング
- データサイエンス
- データ分析
- 下記のようなものが含まれます。
- 運用ETLのパイプライン
- ストリーミング分析
- アドホック分析
- 機械学習
- 下記のクラスタに大別されます。
- All-Purposeクラスタ
- 対話型ノートブック
- 複数のユーザーでクラスタを共有し、共同でインタラクティブに分析が可能
- Databricksジョブスケジューラ
- 高速で堅牢な自動化ジョブの実行に使用する。
- ジョブを実行したときにクラスタを作成し、ジョブが完了するとクラスタが終了する。
- ジョブクラスタを再起動することは出来ない。
- All-Purposeクラスタ
SQL Warehouse
SQLウェアハウスとは何ですか?をもとに整理します。
SQLウェアハウスは、Databricks SQL 内のデータ オブジェクトに対して SQL コマンドを実行 できるコンピュート リソースです。 コンピュート リソースは、処理機能を提供するインフラストラクチャ リソースです。 クラウド上で.
SQLウェアハウス ダッシュボードに移動するには、サイドバーの [エンドポイント アイコン SQLウェアハウス] をクリックします。デフォルトでは、倉庫は州別 (最初に実行中の倉庫) でソートされ、次にアルファベット順にソートされます。
すぐに開始できるように、Databricks では、 スターター ウェアハウスと呼ばれる小さな SQLウェアハウスが自動的に作成されます。 この SQLウェアハウス edit または削除することができます。
- SQL Warehouseは、SQLを実行できるコンピュートリソース
- 作成するには、ワークスペース管理者または、無制限のクラスタ作成アクセス許可を持つユーザである
SQLウェアハウス アクセス制御
SQLウェアハウス アクセス制御では、個々の権限によってユーザーの能力が決まります。
SQLウェアハウスには、下記の4つのアクセス許可レベルがあります。
- 権限なし
- 使用可能
- 所有者
- 管理可能
能力 | 権限なし | 使用可能 | 所有者 | 管理可能 |
---|---|---|---|---|
クエリをすべて表示 | ◯ | ◯ | ||
詳細を表示 | ◯ | ◯ | ◯ | |
監視タブの表示 | ◯ | ◯ | ||
ウェアハウスの開始 | ◯ | ◯ | ◯ | |
ウェアハウスの停止 | ◯ | ◯ | ||
ウェアハウスの削除 | ◯ | ◯ | ||
ウェアハウスの編集 | ◯ | ◯ | ||
ウェアハウスのアクセス許可の変更 | ◯ | ◯ |
クラスタポリシー
クラスターポリシーを管理するをもとに整理します。
クラスターポリシーは、一連のポリシールールに基づいてユーザーまたはグループのクラスター作成権限を制限するために使用されるツールです。
クラスターポリシーを使用すると、次のことが可能です。
- ユーザーによるクラスターの作成を所定の設定に制限します。
- ユーザーによるクラスターの作成を特定の数に制限します。
- (一部の値を修正および非表示にすることによって)ユーザーインターフェースを簡素化し、より多くのユーザーが独自のクラスターを作成できるようにします。
- クラスターごとの最大コストを制限してコストを制御します(時間単位の価格に寄与する値を持つ属性に制限を設定します)。
- ポリシールールを作成し、一定の制限をかけるもの。
- コントロール可能なものは下記の通り
- 所定の設定
- クラスタ数
- 設定項目を非表示にする
- クラスタごとの最大コスト
パーソナルコンピューティングポリシー
パーソナルコンピューティングは、すべてのDatabricksワークスペースでデフォルトで使用できるDatabricksマネージドクラスターポリシーです。このポリシーへのアクセス権をユーザーに付与すると、ユーザーは各自が使用するためにDatabricks内で単一マシンのコンピュートリソースを作成できます。
- すべてのワークスペースでデフォルトで使用できるDatabricksマネジドクラスタポリシー
- 付与されたユーザは単一マシンのコンピュートリソースを作成できる
属性
マネージドクラスター属性とアンマネージドクラスター属性の2つがある。
- マネージドクラスター属性は、下記の制御が可能
- 最大DBU時間メトリクス
- 個々のクラスタレベルでコストを制御できる
- クラスタ作成元の制限
- UI、REST API、ジョブ等の作成元を制御できる
- 最大DBU時間メトリクス
- アンマネージドクラスター属性。下記の制御は不可。
- ライブラリAPI
- クラスタ権限(ACL)
実践
ユーザーとグループの追加
ユーザーとグループの追加を元に試します。
ユーザの追加
-
Databricksのアカウントコンソールにサインインします。
-
ユーザを追加画面で下記を入力し、「ユーザを追加」ボタンをクリックします。
- メール
- 氏名
-
登録したメールアドレス宛にInvitaitonが届くので、リンクをクリックします。
グループの追加
ワークスペースにグループを追加
-
ワークスペース名をクリックします。
-
権限タブをクリックし、「権限を追加」をクリックします。
-
ポップアップが表示されるので、グループと権限を選択し、最後に「保存」をクリックします。権限は、「Admin」と「User」の2つから選べます。
クラスターまたはSQLウェアハウスの作成
テーブルの作成と権限の割り当てを開始する前に、テーブルの作成と権限の割り当てのワークロードを実行するためのコンピュートリソースを作成する必要があります。
Unity Catalogで定義されたテーブルは、きめ細かなアクセス制御によって保護されます。アクセス制御を確実に実施するために、コンピュートリソースが安全な構成に準拠していることが求められます。コンピュートリソースが安全な構成に準拠していない場合、Unity Catalo内のテーブルにアクセスできません。
Databricksには、次の2種類のコンピュートリソースが用意されています。
- クラスターは、データサイエンスとエンジニアリングおよびDatabricks Machine Learningペルソナベースの環境でのワークロードに使用されます(DatabricksノートブックでSQLコマンドを実行する場合など)。
- SQLウェアハウスは、Databricks SQLクエリを実行するために使用されます。
使用している環境に応じて、Databricks SQL用のSQLウェアハウス、またはデータサイエンスとエンジニアリングおよびDatabricks Machine Learning環境用のクラスターのいずれかのコンピュートリソースを使用してUnity Catalogを操作できます。
- 先ずはコンピュートリソースを作成する。コンピュートリソースは下記の2つある。
- クラスタ
- データサイエンス
- データエンジニアリング
- Databricks Machine Learning
- SQLウェアハウス
- クラスタ
- コンピュートリソースは安全な構成である必要がある。
クラスタの作成〜停止
クラスタの作成
-
ワークスペースに上記で作成したユーザでログインします。
-
下記の内容を入力し、最後に「コンピューティングを作成」をクリックします。
- クラスタ名:Cluster1(任意)
- ポリシー:制限なし
- アクセスモード:共有
- バージョン:Runtime 13.2
- ワーカータイプ:m6i.large
- 最小、最大を1
クラスタの停止
SQLウェアハウスの作成〜停止
SQLウェアハウスの作成
-
ワークスペースに上記で作成したユーザでサインインします。
-
下記を入力し、最後に「作成」をクリックします。
-
権限管理のポップアップが表示されるので、作成したadminグループを「管理可能」として付与します。
SQLウェアハウスの停止
最初のテーブルを作成し、アクセス許可を管理する
Unity Catalog を使用すると、SQL または Databricks エクスプローラー UI を使用して、テーブルへのアクセスを宣言によって定義できます。 これは、ワークスペースが同じメタストアを共有している限り、アカウント内のすべての Databricks ワークスペース、クラスター、および SQLウェアハウスからアクセス規則が適用されることを意味する、"一度定義すればどこでもセキュリティで保護する" アプローチに従うように設計されています。
- Unity Catalogにより、SQL、DatabricksのUIを使用して、テーブルへのアクセスを定義可能
- ワークスペースが同じメタストアを共有することで、ワークスペース、クラスタ、SQL Warehouseからアクセス規制が適用される。
-
ノートブック名を変更します。
-
「接続」をクリックすると、ポップアップされるので、SQL Warehouseで作成したクラスタを選択後、「起動してアタッチ」をクリックします。
-
クラスタ起動後(アタッチ後)、下記のコマンドを実行します。
%sql GRANT USE SCHEMA, CREATE TABLE ON SCHEMA main.default TO `<user>@<domain>.com`;
※ @.com を Databricks ユーザー名に置き換えます。ユーザー名はバッククォート (
-
テーブルを作成します。
CREATE TABLE IF NOT EXISTS main.default.department ( deptcode INT, deptname STRING, location STRING );
-
データを登録します。
INSERT INTO main.default.department VALUES (10, 'FINANCE', 'EDINBURGH'), (20, 'SOFTWARE', 'PADDINGTON');
-
上記で作成した「main」カタログ下に、「default」スキーマ、「department」テーブルが作成されています。
-
ポップアップで付与画面が表示されるので、下記を選択し「付与」をクリックします。
-
別のユーザ(「admin」グループに所属している)でテーブルを確認してみます。
考察
今回は、Principalを作成し、クラスタ、テーブル、権限管理を行いました。
次回は、下記を試してみます。
- (オプション)メタストアを追加のワークスペースにリンクする
- (推奨)IdP からアカウントレベルの ID を同期する
- (推奨)メタストアの所有権をグループ に移行する
参考