Tutorial: Unity Catalog metastore admin tasks for Databricks SQL | Databricks on AWS [2022/10/21時点]の翻訳です。
本書は抄訳であり内容の正確性を保証するものではありません。正確な内容に関しては原文を参照ください。
このチュートリアルでは、Databricksメタストア管理者がUnity Catalogを用いてカタログ、データベース、テーブルを設定するのに必要な全てのステップをガイドします。全てのステップを完了するためにデータエクスプローラのUIを使用します。
Unity Catalogメタストア管理者として、Unity Catalogのメタストアに関連づけられた全てのセキュリティ保護可能なオブジェクトに対してアクセス権を設定することができます。Databricksアカウント管理者は、アカウントコンソールでメタストア管理者のロールを割り当てることができます。メタストア管理者はDatabricksアカウント管理者、Databricksワークスペース管理者であることが多いですが、これらのロールのデフォルトのアクセス権は異なります。
本書では以下の内容をデモンストレーションします:
- データオブジェクトを発見するためにデータエクスプローラを活用
- Unity Catalogでカタログを作成
- Unity Catalogでデータベースを作成
- Unity Catalogでテーブルを作成するためにCSVをアップロード
- カタログ、データベース、テーブルのアクセス権の管理
要件
このデモを完了するには以下が必要となります。
- Unity Catalogが有効化されたDatabricksワークスペース
- Databricksアカウントコンソールで定義されたメタストアに対する管理者権限
- メタストアに関連づけられたワークスペースのDatabricks SQLへのアクセス権
- Unity Catalogで定義された1つ以上のユーザー、グループ
メタストア管理者の権限によって、メタストアのすべてのデータオブジェクトを操作できるようになります。メタストア管理者権限を持たない別のDatabricks SQLユーザーでこのチュートリアルを行うことで、アクセス権の変更がどのようにして、さまざまなアセットに対するさまざまなアクションに対するアクセス権を即座に更新するのかを確認することができます。
ステップ1: データエクスプローラUIへのナビゲートおよびデータオブジェクトの参照
カタログ、データベース、テーブル、ビューを参照するためにデータエクスプローラを使用することができます。Unity Catalogでは2レベルのネストがあります: カタログはデータベースを保持し、データベースはテーブルとビューを保持します。これらに含まれているオブジェクト、データのプレビュー、アクセス権を確認するために、これらのデータオブジェクトの名前をクリックするためにデータエクスプローラを使用することができます。
- サイドバーのペルソナスイッチャーでSQLペルソナを選択します。
- サイドバーでDataをクリックします。
- ワークスペースで現在定義されているカタログを確認します。
hive_metastore
とsamples
は特別なカタログであることに注意してください。 - カタログ内のすべてのデータベースを参照するためにカタログ名をクリックします。
- カタログの現在のオーナーと権限を確認するためにPermissionsタブをクリックします。
- データベースのすべてのテーブルを参照するためにデータベース名をクリックします。
- テーブルのフィールドを参照するためにテーブル名をクリックします。
- テーブルのデータのプレビューを参照するためにSample Dataタブをクリックします。
ステップ2: メタストアに新規カタログを作成
カタログを追加するためにデータエクスプローラのUIを使うことができます。CREATE CATALOGをご覧ください。
- データエクスプローラの右側には、
Catalogs > catalog_name > database_name >
というパターンで現在参照しているデータオブジェクトの階層の形ですべてのアセットへのリンクが含まれています。メタストアの階層構造のトップレベルに戻るにはCatalogsをクリックします。 - 画面の右上にあるCreate catalogをクリックします。
- ユニークなカタログ名を入力します。
- オプションでコメントを入力します。
- Createをクリックします。
新規に作成したカタログには2つのスキーマ(データベース)が含まれています: default
とinformation_schema
です。このシステムテーブルの詳細に関しては、Information schemaをご覧ください。
ステップ3: カタログに新規スキーマを作成
データベーシウを追加するためにデータエクスプローラのUIを使うことができます。SQLを使うにはCREATE SCHEMAをご覧ください。
- 画面の左にあるリストからカタログ名をクリックします。
- 画面の右上のCreate databaseをクリックします。
- ユニークなデータベース名を入力します。
- オプションでコメントを入力します。
- Createをクリックします。
ステップ4: CSVからテーブルを作成
Databricksでは、Unity CatalogのテーブルにCSVファイルをアップロードできるUIを提供しています。100メガバイト以下のCSVを利用することができます。UIを使用するにはSQLウェアハウスが稼働している必要があります。詳細に関してはLoad data using the add data UIをご覧ください。
SQLを用いてテーブルを作成位したい場合には、CREATE TABLEをご覧いただき、このステップはスキップしてください。
- Search tables検索フィールドの左にある + をクリックします。展開されるメニューからCreate table via uploadを選択します。
- インタラクティブなボックスでファイルをドロップするかブラウズするかして、お使いのコンピュータからCSVファイルを追加します。
- ファイルのアップロードには数秒を要します。
- ステップ2で作成したカタログを選択するために最初のドロップダウンを使用します。
- ステップ3で作成したデータベースを選択するために2つ目のドロップダウンを使用します。
- テーブルに対してカスタムの名称を指定することができます。
- テーブルにヘッダー行がある場合には、First row contains the headerがチェックされていることを確認します。そうでない場合には、チェックを外します。
- オプションで、カラムに対してカスタム名称を指定します。
- ファイルからのデータが適切にプレビューされていない場合には、設定を調整するためにAdvanced attributesをクリックします。
- Createをクリックします。
ステップ5: カタログ、データベース、テーブルに権限を付与
Databricks SQLのエンドユーザーが自身のタスクを完了するのに必要な最低限の権限は、期待される結果に応じて変化します。個々のユーザーやグループに対してアクセス権を割り当てることができます。別のDatabricks SQLユーザーでこのチュートリアルを行うことで、アクセス権の変更がどのようにして、さまざまなアセットに対するさまざまなアクションに対するアクセス権を即座に更新するのかを確認することができます。
ステップ5a: カタログにUSE CATALOG
権限を付与
カタログでアクションを実行するユーザーはUSE CATALOG
権限を有している必要があります。
- データエクスプローラに戻るためにサイドバーのDataをクリックします。
- ステップ2で作成したカタログの名称をクリックします。
- カタログに付与されている権限を確認するためにPermissionsタブをクリックします。
- Grantをクリックします。
- 追加したいユーザーやグループを選択するためにドロップダウンを使用します。
-
USE CATALOG
権限の隣のボックスをクリックします。 - Grantをクリックします。
ステップ5b: データベースにUSE SCHEMA
権限を付与
USE SCHEMA
は、データベースを参照するユーザーが必要とする最低限の権限です。これによって、ユーザーはデータベースに含まれるテーブルやビューを操作できるようになります。クエリーやUIから新規にテーブルやビューを定義するには、ユーザーはCREATE TABLE
権限を有している必要があります。
- ステップ3で作成したデータベース名をクリックします。
- データベースに付与されている権限を確認するためにPermissionsタブをクリックします。
- Grantをクリックします。
- 追加したいユーザーやグループを選択するためにドロップダウンを使用します。
-
USE SCHEMA
権限の隣のボックスをクリックします。 - Grantをクリックします。
ステップ5c: テーブルにSELECT
権限を付与
ユーザーは権限を有しているテーブルやビューのみを参照することができます。SELECT
は、テーブルやビューを参照、クエリーするために必要な最低限の権限です。MODIFY
権限を持つユーザーは、データの追加、削除、変更を行うことができ、テーブル全体を削除することができます。
- ステップ4で作成したテーブル名をクリックします。
- テーブルに付与されている権限を確認するためにPermissionsタブをクリックします。
- Grantをクリックします。
- 追加したいユーザーやグループを選択するためにドロップダウンを使用します。
-
SELECT
権限の隣のボックスをクリックします。 - Grantをクリックします。
次のステップ
プロダクションデータに対するセキュアなアクセスは、最小権限の原則に従うべきです。このチュートリアルでは、エンドユーザーがオープンにプロダクションデータにクエリーできるようにカタログ、データベース、テーブルを設定しましたが、誤ってこれらのデータを破損、削除する能力は拒否しました。多くのエンドユーザーは、大部分が読み取り専用のクエリーを行うので、アクセスできるデータの多くに対してこのような設定を行うべきです。
また、ユーザーは派生データセットをデータベースに保存する必要があることがあります。プロダクションテーブルとは別に新規データベースを作成し、これらのテーブルを分離することをお勧めします。これをテストするには、新規にデータベースを作成し、同じユーザーに対して、CREATE TABLE
やCREATE VIEW
権限を付与します。これでユーザーは、ステップ4で作成したテーブルに対するクエリーの結果を新規テーブルやビューとして保存できるようになります。
ユーザーグループがテーブルで一緒に作業する必要がある場合には、特定のテーブルに対してMODIFY
権限を付与します。
個々のユーザーではなくグループに対する権限を管理することをお勧めします。