Unity Catalogにおける権限継承を用いてアクセスポリシー管理をシンプルに

[Simplify Access Policy Management With Privilege Inheritance in Unity Catalog \- The Databricks Blog](https://www.databricks.com/blog/2022/10/21/simplify-access-policy-management-privilege-inheritance-unity-catalog.html)の翻訳です。

:::note warn
本書は抄訳であり内容の正確性を保証するものではありません。正確な内容に関しては原文を参照ください。
:::

AWSとAzureでは正式提供となっている[Unity Catalog](https://www.databricks.com/jp/product/unity-catalog)は、レイクハウスにおけるデータ、分析、AIに対して統合されたガバナンスソリューションを提供します。数千の我々のお客様はすでに、馴染み深いSQLインタフェースによるシンプルなアクセス管理や監査コントロール、[プラットフォーム横断のデータ共有](https://qiita.com/taka_yayoi/items/bd0d482838650a792f5e)、[自動化されたリネージュ](https://qiita.com/taka_yayoi/items/679b71fc425481b5359c)によるシームレスなデータの可視性、容易なデータ検索と自動生成されるデータの洞察によってデータチームの生産性を倍増できることから、Unity Catalogを活用しています。

この記事では、大規模なアクセスポリシー管理をシンプルにするための、Unity Catalogにおける**権限継承(privilege inheritance)** を管理者がどの様に活用できるのかを探索します。

# Unity Catalogにおける権限継承

データベース(スキーマ)に含まれるテーブルやビューのようなオブジェクトのそれぞれのアクセス権限を管理する場合、特に数多くのデータベースに数百、数千のデータオブジェクトが含まれている場合、データ管理者にとって苦痛で時間を浪費するものとなります。権限継承によって、これらのオブジェクトに対するセットアップと管理を容易なものにします。管理者は、データベース(スキーマ)に対するユーザーグループのアクセスを割り当てることができ、アクセス権限はスキーマに含まれているテーブルカスケードし、言い換えると継承します。これには、現時点で存在しているテーブルや今後作成されるものも含まれており、カタログやスキーマにおいて安全なアクセス権のデフォルト値を容易に設定する方法を提供します。

Unity Catalogの拡張された3レベル名前空間(`<catalog>.<schema>.<table>`)と組み合わせると、権限継承は必要な場合に適切に活用できるようになるので、権限継承はデータ管理者によってさらにパワフルなツールとなります。以下の例では、カタログ`main`にあるすべてのスキーマのテーブルとビューに対して、`finance`グループのメンバーに対して`SELECT`権限を許可することができます。

```sql:SQL
GRANT SELECT ON CATALOG main TO finance;
```

あるいは、以下の例に示す様により小規模なアクセススコープとしてスキーマレベルで権限を許可することができます。

```sql:SQL
GRANT SELECT ON SCHEMA main.default TO finance;
```

この継承モデルによって、お手元のデータに対してデフォルトのアクセするルールを容易にセットアップする手段を提供します。以下のコマンドでは、機械学習チームがスキーマ内にテーブルを作成し、他のテーブルを読み込むことを可能とします。

```sql:SQL
CREATE CATALOG ml;
CREATE SCHEMA ml.sandbox;
GRANT USE_CATALOG ON CATALOG ml TO ml_users;
GRANT USE_SCHEMA ON SCHEMA ml.sandbox TO ml_users;
GRANT CREATE TABLE ON SCHEMA ml.sandbox TO ml_users;
GRANT SELECT ON SCHEMA ml.sandbox TO ml_users;
```

従来通り、Unity Catalogメタストア管理者、オブジェクトのオーナー、オブジェクトを格納するカタログやスキーマのオーナーによって権限を付与することはできます。また、権限を管理するために、SQLコマンド、Unity Catalog CLI、新たなData Explorer UIを活用することができます。
![](https://cms.databricks.com/sites/default/files/inline-images/db-369-blog-img-1.png)

# Unity Catalogにおける新規、あるいは変更された権限タイプ

`CREATE`と`USAGE`がより特定の権限タイプで置き換えられていることに気づくことでしょう。例えば、`CREATE`はメタストアレベルでは`CREATE CATALOG`、カタログレベルでは`CREATE SCHEMA`、スキーマレベルでは`CREATE TABLE`で置き換えられています。同様に、`USAGE`はカタログレベルでは`USE CATALOG`、スキーマレベルでは`USE SCHEMA`で置き換えられています。これによって、Unity Catalogでそれぞれのレベルでユーザーが行えることを正確にコントロールするために必要な柔軟性を提供します。

また、許可する対象に現存する(そして将来の)権限タイプのすべてを許可するための、カタログレベル配下に割り当てることができる新たな`ALL PRIVILEGES`があります。権限タイプの完全なリストに関しては、トピック*Unity Catalogの権限とセキュリティ保護可能オブジェクト*([AWS](https://docs.databricks.com/data-governance/unity-catalog/manage-privileges/privileges.html)、[Azure](https://learn.microsoft.com/ja-jp/azure/databricks/data-governance/unity-catalog/manage-privileges/privileges))を参照ください。

パブリックプレビューの期間中(2022/8/25以前)にUnity Catalogメタストアを作成している場合には、権限継承を利用できる様にするために、権限モデルバージョン1.0をアップグレードすることができます。権限モデルをアップグレードするまでは、既存のワークロードはそのままで動作し続けます。権限継承や新機能を活用できる様にするために、権限モデルバージョン1.0にアップグレードすることをお勧めします。詳細はトピック*権限モデルのアップグレード*([AWS](https://docs.databricks.com/data-governance/unity-catalog/manage-privileges/upgrade-privilege-model.html)、[Azure](https://learn.microsoft.com/ja-jp/azure/databricks/data-governance/unity-catalog/manage-privileges/upgrade-privilege-model))を参照ください。

# Unity Catalogを始めてみる

Unity Catalogを使い始めるにはセットアップガイド([AWS](https://qiita.com/taka_yayoi/items/3f2df6ddea81521ee786)、[Azure](https://learn.microsoft.com/ja-jp/azure/databricks/data-governance/unity-catalog/get-started))をご覧ください。Unity Catalogの権限の詳細に関しては、*Unity Catalogの権限とセキュリティ保護可能オブジェクト*([AWS](https://docs.databricks.com/data-governance/unity-catalog/manage-privileges/privileges.html)、[Azure](https://learn.microsoft.com/ja-jp/azure/databricks/data-governance/unity-catalog/manage-privileges/privileges))を参照ください。

また、いくつかの共通するUnity Catalog管理タスクをウォークスルーするためのノートブックをインポートすることができます。

- [Unity Catalog Quickstart \(SQL\)](https://docs.databricks.com/_static/notebooks/unity-catalog-example-notebook.html)
- [Unity Catalog Quickstart \(Python\)](https://docs.databricks.com/_static/notebooks/unity-catalog-quickstart-python.html)
- [Creating an External Table in Unity Catalog \(AWS\)](https://docs.databricks.com/_static/notebooks/unity-catalog-external-table-example-aws.html)
- [Creating an External Table in Unity Catalog \(Azure\)](https://docs.databricks.com/_static/notebooks/unity-catalog-external-table-example-azure.html)

# Unity Catalogにおけるアクセスポリシー管理の直近のロードマップ

- **属性ベースのアクセスコントロール:** お手元のデータ資産に付与されたタグ(属性)に基づいてアクセスポリシーを定義します。
- **行フィルタリング、列マスキング:** 行のフィルターと行のマスクを定義するために標準SQL関数を用いることで、行・列に対するきめ細かいアクセスコントロールを実現します。

### Databricks 無料トライアル

[Databricks 無料トライアル](https://databricks.com/jp/try-databricks)