Databricksのワークスペース管理 - アカウント管理者、ワークスペース管理者、メタストア管理者のベストプラクティス

[Databricks Workspace Administration \- Best Practices for Account, Workspace and Metastore Admins \- The Databricks Blog](https://www.databricks.com/blog/2022/08/26/databricks-workspace-administration-best-practices-for-account-workspace-and-metastore-admins.html)の翻訳です。

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

# 3人の管理者の物語

*このブログは、Databricks管理者に適したトピックを議論する管理者基本シリーズの一部となります。他の記事には、[ワークスペース管理のベストプラクティス](https://qiita.com/taka_yayoi/items/f2aedc25516c43767f7f)、[DR Strategies with Terraform](https://www.databricks.com/blog/2022/05/09/how-illimity-bank-built-a-disaster-recovery-strategy-on-the-lakehouse.html)などがあります！間もなく公開されるコンテンツも楽しみにして下さい。* 過去の管理者向けブログでは、事前の設計とDR、CI/CDのような自動化の観点、システムのヘルスチェックを通じた強固なワークスペース構成をどのように確立、維持するのかを議論しました。管理において同様に重要な観点は、特にレイクハウスにおいて多数の異なるタイプの管理者のペルソナが存在する場合には、ワークスペース内をどのように組織立てるのかということになります。この記事では、以下の方法などワークスペースを管理する際の管理観点での検討事項について説明します。

- 新たなユーザーやユースケースを長期にわたって対応できる様にオンボーディングするためのポリシーとガードレールのセットアップ
- リソース使用量のガバナンス
- 許可されたデータアクセスの保証
- 投資を最適にするための計算資源使用量の最適化

それぞれのロールを理解するために、我々は最初にアカウント管理者とワークスペース管理者の違い、これらのロールが管理する固有のコンポーネントを理解する必要があります。

# アカウント管理者 vs ワークスペース管理者 vs メタストア管理者

管理的な検討事項は、アカウント(多くの場合あなたの組織と1:1にマッピングされるハイレベルの構成要素)とワークスペース(LOBなどさまざまな方法でマッピングされるより詳細な分離レベル)の両方に分割されます。これらの3つのロールにおける役目の違いを見ていきましょう。
![](https://cms.databricks.com/sites/default/files/inline-images/db-320-blog-img1.png)
*図1: アカウントコンソール*

これを別の方法で説明するために、以下の様に**アカウント管理者**の主要な責任範囲をブレークダウンすることができます。

- アカウントレベルのプリンシパル(グループ/ユーザー/サービス)とSSOのプロビジョニング。**アイデンティティフェデレーション**は、アカウントから直接ワークスペースにアカウントレベルのアイデンティティを割り当てることを意味します。
- メタストアの設定。
- 監査ログのセットアップ。
- アカウントレベルの使用量(DBU、課金)のモニタリング。
- 必要な組織論に沿ったワークスペースの作成。
- その他のワークスペースレベルオブジェクト(ストレージ、認証情報、ネットワークなど)の管理。
- プロダクションワークロードから人間の介在を排除するためにIaaCを用いた開発ワークロードの自動化。
![](https://cms.databricks.com/sites/default/files/inline-images/db-320-blog-img-2.png)
*図2 アカウントのアーティファクト*

一方、**ワークスペース管理者**の主要な検討事項は以下のとおりとなります。

- ワークスペースレベルで適切な**ロール**(ユーザー/管理者)を**プリンシパル**に割り当て。
- ワークスペースレベルで適切な[資格情報](https://docs.databricks.com/administration-guide/users-groups/users.html#manage-user-entitlements)(ACL)をプリンシパルに割り当て。
- (オプション)ワークスペースレベルでのSSOの設定。
- プリンシパルが以下を行えることを許可するためのクラスターポリシーの定義。
    - 計算リソース(クラスター/ウェアハウス/プール)の定義
    - オーケストレーション(ジョブ/パイプライン/ワークフロー)の定義
- ワークスペースレベルの機能のオン/オフ。
- 資格情報をプリンシパルに割り当て。
    - データアクセス(内部/外部Hiveメタストアを用いている場合)
    - プリンシパルの計算リソースへのアクセスの管理。
- Reposの様な機能向け外部URLの管理(許可リストを含む)。
- セキュリティ、データ保護のコントロール
    - 誤ってチームにデータを公開してしまうことを防ぐためにDBFSのオフあるいは制限。
    - データ漏洩を防ぐために(ノートブックやDBSQLから)結果データのデータダウンロードの抑止。
    - [アクセスコントロール](https://docs.databricks.com/administration-guide/access-control/index.html)(ワークスペースオブジェクト、クラスター、プール、ジョブ、テーブルなど)の有効化。
- クラスターレベルのログデリバリーの定義(理想的にはクラスターポリシーを通じたクラスターログのストレージ設定)。

![](https://cms.databricks.com/sites/default/files/inline-images/db-320-blog-img-3.png)
*図3 ワークスペースのアーティファクト*

アカウント管理者とワークスペース管理者の違いを要約するために、以下のテーブルではいくつかのキーとなる次元における二つのペルソナの違いをまとめています。

|  | アカウント管理者 | メタストア管理者 | ワークスペース管理者 |
|:--|:--|:--|:--|
| ワークスペース管理  | <ul><li>ワークスペースの作成、アップデート、削除<li>他の管理者追加も可能</ul>  |  対象外 | <ul><li>ワークスペース内のアセットのみを管理</ul>  |
| ユーザー管理  |  <ul><li>ユーザー、グループ、サービスプリンシパルの作成、あるいは、IDPからデータを同期するためにSCIMを使用<li>Permission Assignment APIによるワークスペースへのプリンシパルの許可</ul> | 対象外  | <ul><li>お使いの全ての(セキュリティ保護可能な)データ資産に対する中央ガバナンスとしてUCを使うことをお勧めします。Unity Catalog(UC)にリンクされた全てのワークスペースでアイデンティティフェデレーションがオンになります。<li>アイデンティティフェデレーションが有効化されたワークスペースに対しては、全てのプリンシパルに対してアカウントレベルのSCIMをセットアップし、ワークスペースレベルのSCIMをストップします。<li>非UCのワークスペースにおいてはワークスペースレベルでSCIMを使うことができます(しかし、これらのユーザーもアカウントレベルのアイデンティティにプロモーションされます)。<li>ワークスペースレベルで作成されたグループは「ローカルの」ワークスペースレベルのグループと見做され、Unity Catalogにアクセスすることはできません。</ul>  |
| データのアクセスと管理  |  <ul><li>メタストアの作成<li>メタストアへのワークスペースへのリンク<li>メタストアのオーナーシップをメタストア管理者/グループに委任</ul> | Unity Catalogを用いることで以下のことが可能となります。<ul><li>メタストアにある全てのセキュリティ保護可能なオブジェクト(カタログ、スキーマ、テーブル、ビュー)に対する権限の管理<li>データスチュワード/オーナーに対してカタログ、スキーマ(データベース)、テーブル、外部ロケーション、ストレージ認証情報へのアクセスの許可(委任)</ul>  | <ul><li>現在Hiveメタストアを使用しているお客様は、AWSのインスタンスプロファイル、Azureのサービスプリンシパル、テーブルACL、クレディンシャルパススルーの様なさまざまな方法でデータアクセスを保護することができます。<li>Unity Catalogを用いることで、これはアカウントレベルで定義され、全てのセキュリティ保護可能オブジェクトに対して、ACLにANSIのGRANTを使用することができます。</ul>  |
| クラスター管理  | 対象外  | 対象外  |  <ul><li>DE/ML/SQL向けにS/M/Lサイズのワークロードを行うために、さまざまなペルソナ/サイズでのクラスターを作成します。<li>デフォルトのユーザーグループから*クラスター作成権限*を削除します。<li>クラスターポリシーを作成し、適切なグループにポリシーへのアクセスを許可<li>グループに対してSQLウェアハウスの使用権限を付与します。</ul> |
| ワークフロー管理  | 対象外  |対象外   |  <ul><li>ジョブ/DLT/all-purposeクラスターポリシーが存在し、グループがそれらにアクセスできることを確実にします。<li>ユーザーが再起動できるall-purposeクラスターを事前に作成しておきます。</ul>  |
| 予算管理  | <ul><li>ワークスペース/sku/クラスタータグごとのよさオンをセットアップします。<li>アカウントコンソールごとの使用量をモニタリングします。(*ロードマップ*)<li>DBSQL経由でクエリーするための課金使用量システムテーブル(*ロードマップ*)</ul>  | 対象外  | 対象外  |
| 最適化/チューニング  | 対象外  |  対象外 |  <ul><li>計算資源の最大化、最新のDBRの活用、Photonの活用<li>インフラストラクチャの投資を最大限に活用できる様にベストプラクティスと最適化に従うために、LOBやCOEと連携</ul> |

![](https://cms.databricks.com/sites/default/files/inline-images/db-320-blog-img-4.png)
*図4 Databricksの管理者ペルソナの責任範囲*

# 計算資源需要のピークに合わせたワークスペースのサイジング

クラスターノードの最大数は、VPC内で利用できるIPの再代数によって決定されるので、適切にVPCをサイジングすることは設計時の重要な検討事項となります。それぞれのノードは2つのIP(AzureとAWSの場合)を必要とします。お使いのクラウドにおける詳細情報があります：[AWS](https://qiita.com/taka_yayoi/items/f23bd799e1960e2eccbe#vpc%E3%81%AE%E3%82%B5%E3%82%A4%E3%82%BA)、[Azure](https://docs.microsoft.com/ja-jp/azure/databricks/administration-guide/cloud-configurations/azure/vnet-inject#--address-space-and-maximum-cluster-nodes)、[GCP](https://docs.gcp.databricks.com/administration-guide/cloud-configurations/gcp/network-sizing.html)。これを説明するために、ここではAWS上のDatabricksの例を使用します。CIDRをIPにマッピングするために[こちら](https://www.ipaddressguide.com/cidr)を使います。E2ワークスペースで許可されているVPCのCIDRレンジは`/25` - `/16`です。少なくとも2つの異なるアベイラビリティゾーンで2つのプライベートサブネットが設定される必要があります。サブネットマスクは、`/16` - `/17`の間にある必要があります。VPCは論理的な分離ユニットであり、2つのVPCが通信する、すなわちピアリングする必要がないのであれば、同じレンジを持つことができます。しかし、通信する必要がある場合には、IPのオーバーラップを避ける必要があります。CIDRレンジ`/16`のVPCの例を見てみましょう。

<table>
<tr><td>VPC CIDR /16</td><td>このVPCの最大IP数: <b>65,536</b> </td><td>シングルノード、マルチノードのクラスターはサブネットで起動します。</td></tr>
<tr><td>2つのAZ</td><td>それぞれのAZが /17 である場合: => 32,768 * 2 = <b>65,536</b>のIPとなり、他のサブネットは作成不可となります。</td><td>32,768 IP => それぞれのサブネットで最大16,384ノードとなります。</td></tr>
<tr><td></td><td>代わりにそれぞれのAZが /23 である場合: => 512 * 2 = <b>1,024</b>のIPとなり、65,536 - 1,024 = 64,512IPが残ります。</td><td>512 IP => サブネットごとに最大256ノードとなります。</td></tr>
<tr><td>4つのAZ</td><td>それぞれのAZが /18である場合: 16,384 * 4 = <b>65,536</b>のIPとなり、他のサブネットは作成不可となります。</td><td>16,384 IP => サブネットごとに最大8192ノードとなります。</td></tr>
</table>

# ワークスペース管理者によるコントロールと敏捷性のバランスを取る

計算資源が、クラウドインフラストラクチャの投資においてもっとも高価なコンポーネントとなります。データの民主化によって、イノベーションとセルフサービスの促進がデータドリブンの文化に向けた第一歩となりました。しかし、マルチテナントの環境においては、経験の少ないユーザーや不注意によるヒューマンエラーによって、コストの浪費や不用意な露出が生じる場合があります。コントロールが厳密すぎると、アクセスのボトルネックを生み出し、イノベーションを押し殺すことになります。このため、管理者は、固有のリスクなしにセルフサービスを可能とするガードレールを設定する必要があります。さらに、これらのコントロールに対する準拠状況をモニタリングできる様になっているべきです。ここで、ユーザーが許可された範囲内でオペレーションを行い、彼らの意思決定プロセスを大幅にシンプルにする様に、ルールを定義し資格情報をマッピングする[クラスターポリシー](https://qiita.com/taka_yayoi/items/93d7597d7fc739b48bb7)が非常に役に立ちます。不要なカオスを回避するために、プロセスによって一過性の例外を管理できる様に真に効率的になるようにプロセスにってバックあっっぷされるべきであることに注意する必要があります。このプロセスにおける重要なステップの一つが、ワークスペースにあるデフォルトの*users*グループから*allow-cluster-create*の資格を削除し、ユーザーがクラスターポリシーで管理された計算資源のみを活用できる様にするというものです。以下に、[クラスターポリシーのベストプラクティス](https://docs.databricks.com/administration-guide/clusters/policies-best-practices.html)における重要な推奨事項を要約します。

- 標準的なクラスターテンプレートを提供するためにTシャツサイズを使用します。
    - ワークロードの規模ごと(スモール、ミディアム、ラージ)
    - ペルソナごと(DE/ML/BI)
    - 習熟度ごと(シチズン/高度)
- 以下を利用を強制することがでガバナンスを管理します。
    - タグ：チーム、ユーザー、ユースケースごとの属性
        - ネーミングは標準化すべきです
        - 一貫性のあるレポートのためにいくつかの属性を[必須](https://qiita.com/taka_yayoi/items/8d951b660cd87c6c5f18#%E5%BF%85%E9%A0%88%E3%82%BF%E3%82%B0%E3%81%AE%E5%BC%B7%E5%88%B6)にします
- 以下を制限することでコンサンプションをコントロールします。
    - [DBU消費率とポリシーの目的](https://qiita.com/taka_yayoi/items/93d7597d7fc739b48bb7#%E3%82%AF%E3%83%A9%E3%82%B9%E3%82%BF%E3%83%BC%E3%83%9D%E3%83%AA%E3%82%B7%E3%83%BC%E4%BB%AE%E6%83%B3%E5%B1%9E%E6%80%A7%E3%83%91%E3%82%B9)
    - 自動停止のタイムアウト、スケーリングの最小、最大サイズ

# 計算資源の検討

固定されたオンプレミスの計算インフラストラクチャと異なり、クラウドではワークロードや対象のSLAにおいて適切な計算資源にマッチするための柔軟性と弾力性を提供します。以下の図ではさまざまなオプションを示しています。入力はワークロードタイプや環境のようなパラメータであり、出力はベストフィットする計算資源のタイプやサイズとなります。
![](https://cms.databricks.com/sites/default/files/inline-images/db-320-blog-img-5.png)
*図5 適切な計算資源の決定*

例えば、望ましくは最新のDBRを用いた自動化ジョブクラスターでプロダクションのDEワークロードを実行すべきです。以下のテーブルでは、いくつかの一般的なシナリオを示しています。
![](https://cms.databricks.com/sites/default/files/inline-images/db-320-blog-img-6.png)

# ワークフローの検討

計算資源の要件を明確にしたので、以下のことを検討する必要が出てきます。

- ワークフローをどの様に定義してトリガーするのか。
- どの様にタスクが計算資源を[再利用](https://docs.databricks.com/release-notes/product/2022/january.html#improved-cluster-management-for-jobs-that-orchestrate-multiple-tasks)できるのか。
- どの様にタスクの依存関係を管理するのか。
- どの様に失敗したタスクのリトライを行うのか。
- どの様にバージョンをアップグレードし、[パッチ](https://kb.databricks.com/cloud/security-vulns-db-ec2-instances.html)を適用するのか。

これらはユースケースを取り巻くデータエンジニアリングとDevOpsの検討事項であり、多くの場合管理者にとっての直接の懸念事項となります。以下の様にモニタリングすべき検疫タスクが存在します。

- ワークスペースには設定ジョブの総数に[制限](https://docs.databricks.com/release-notes/product/2022/july.html#increased-limit-for-the-number-of-jobs-in-your-databricks-workspaces)があります。しかし、これらのジョブの多くは呼び出されず、実際に使用されるジョブにスペースを提供するためにクリーンアップする必要があります。
- 全てのプロダクションジョブは[サービスプリンシパル](https://docs.databricks.com/dev-tools/service-principals.html)として実行されるべきであり、プロダクション環境へのユーザーのアクセスは強く制限されるべきです。[ジョブのアクセス権](https://docs.databricks.com/security/access-control/jobs-acl.html#job-permissions)をレビューしてください。
- ジョブは失敗することがあるので、全てのジョブには失敗時のアラートとオプションとしてリトライを設定すべきです。[こちら](https://docs.databricks.com/dev-tools/api/latest/jobs.html#operation/JobsCreate)にある`email_notifications`、`max_retries`や他のプロパティをレビューしてください。
- 全てのジョブはクラスターポリシーに関連づけられ、課金のために適切にタグづけされるべきです。

# DLT: 大規模高信頼パイプラインにおける理想のフレームワークの例

さまざまな業界の数千の大小のクライアントと取り組みをする中で、開発や本格運用における共通のデータの課題が明らかとなり、これを解決するためにDatabricksはDelta Live Tables(DLT)を開発しました。これは、`どのように`ではなく`何`を指定する宣言型パイプラインを作成できる様にすることで、ETLワークロードの開発と維持をシンプルにするためのマネージドプラットフォームです。こによって、データエンジニアのタスクをシンプルにし、管理者にとってはサポートケースが削減されることになります。
![](https://cms.databricks.com/sites/default/files/inline-images/db-320-blog-img-7.png)
*図6 DLTはパイプライン管理の管理者のロールをシンプルにします*

DLTは定期的な*optimize & vacuum*ジョブのような一般的な管理機能を、追加のケアをすることなしに[メンテナンス](https://qiita.com/taka_yayoi/items/ab79b80936f8e87403d6#delta-live-tables%E3%81%AF%E7%A7%81%E3%81%AE%E3%83%86%E3%83%BC%E3%83%96%E3%83%AB%E3%81%AB%E5%AF%BE%E3%81%99%E3%82%8B%E3%83%A1%E3%83%B3%E3%83%86%E3%83%8A%E3%83%B3%E3%82%B9%E3%82%BF%E3%82%B9%E3%82%AF%E3%82%92%E5%AE%9F%E8%A1%8C%E3%81%97%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%E3%81%8B)ジョブとしてパイプライン定義に組み込みます。DLTは[リネージュ](https://qiita.com/taka_yayoi/items/5ae5824cfab30caf9795#%E3%83%AA%E3%83%8D%E3%83%BC%E3%82%B8%E3%83%A5)、モニタリング、[データ品質チェック](https://qiita.com/taka_yayoi/items/5ae5824cfab30caf9795#%E3%83%87%E3%83%BC%E3%82%BF%E5%93%81%E8%B3%AA)の様なシンプルなオペレーションに対するパイプラインの深い可視性を提供します。例えば、クラスターが停止すると、プラットフォームはデータエンジニアが明確にプロビジョニングしなくても、(Productionモードでは)[自動リトライ](https://qiita.com/taka_yayoi/items/80ee29197d26e177bbeb#%E9%96%8B%E7%99%BA%E3%83%97%E3%83%AD%E3%83%80%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3%E3%83%A2%E3%83%BC%E3%83%89)を行います。[強化オートスケーリング](https://qiita.com/taka_yayoi/items/80ee29197d26e177bbeb#databricks%E3%81%AE%E5%BC%B7%E5%8C%96%E3%82%AA%E3%83%BC%E3%83%88%E3%82%B9%E3%82%B1%E3%83%BC%E3%83%AA%E3%83%B3%E3%82%B0)は、クラスターのアップサイズを必要とする突然のデータバーストをハンドリングすることができ、適切にダウンスケールします。言い換えると、自動化されたクラスターのスケーリングとパイプラインの耐障害性はプラットフォームの機能となっています。ターンテーブルのレーテンシーによって、パイプラインをバッチやストリーミングで実行し、コードではなく設定を管理することで開発用パイプラインを比較的容易にプロダクションに移行することができます。[DLT固有のクラスターポリシー](https://docs.databricks.com/workflows/delta-live-tables/delta-live-tables-cookbook.html#define-limits-on-pipeline-clusters)を活用することで、お使いのパイプラインのコストをコントロールすることができます。また、DLTはランタイムエンジンを[自動でアップグレード](https://qiita.com/taka_yayoi/items/1d4fbce0258e5e22dc9e#delta-live-tables%E3%83%A9%E3%83%B3%E3%82%BF%E3%82%A4%E3%83%A0%E3%81%AE%E3%82%A2%E3%83%83%E3%83%97%E3%82%B0%E3%83%AC%E3%83%BC%E3%83%89%E3%83%97%E3%83%AD%E3%82%BB%E3%82%B9)するので、管理者やデータエンジニアの責任範囲を削減し、ビジネス価値の創出によりフォーカスできる様にします。

# UC: 理想的なデータガバナンスフレームワークの例

[Unity Catalog](https://www.databricks.com/jp/product/unity-catalog)(UC)を用いることで、企業はこれまでは不可能であったシンプルなGRANT文を通じて単一のアカウント配下のすべてのワークスペースのテーブルとファイルに対して共通のセキュリティモデルを導入することができます。DE/DSクラスターやSQLウェアハウスからデータ、テーブル、ファイルに対するアクセスを許可・監査することで、企業はクラウドごとのプリミティブに依存することなしに、自身の監査、モニタリング戦略をシンプルにすることができます。UCが提供する主要な機能には以下の様なものが含まれます。
![](https://cms.databricks.com/sites/default/files/inline-images/db-320-blog-img-8.png)
*図7 UCはデータガバナンス管理に対する管理者のロールをシンプルにします*

UCは定義の集中管理、モニタリング、メタストアのデータに対する検索可能性によって管理者の作業(アカウントレベル、ワークスペースレベルの両方において)をシンプルにし、アタッチされるワークスペースの数に関係なしに容易にセキュアにデータを共有できるようにします。[一度定義すればどこでもセキュアにする](https://qiita.com/taka_yayoi/items/15aede468bdca58ec6a3)モデルを活用することで、あるワークスペースにおいて誤ってユーザーに権限を付与することで、意図しない形でデータが利用されるようなシナリオにおいて、誤ったデータ露出を回避するために更なる利点を提供します。これらすべては、[アカウントレベルのアイデンティティ](https://docs.databricks.com/administration-guide/users-groups/index.html)と[データのアクセス権](https://docs.databricks.com/data-governance/unity-catalog/manage-privileges/index.html#data-permissions)を活用することで達成されています。[UCの監査ログ](https://docs.databricks.com/data-governance/unity-catalog/audit.html#unity-catalog-audit-log-events)によって、すべてのオブジェクトに対するすべてのレベルのすべてのユーザーによるすべてのアクション、もし、[verbose audit logging](https://docs.databricks.com/administration-guide/account-settings/audit-logs.html#configure-verbose-audit-logs)を有効化しているのであれば、ノートブックやDatabricks SQLで実行された個々のコマンドもキャプチャされます。セキュリティ保護可能オブジェクトに対するアクセスは、メタストア管理者あるいはオブジェクトのオーナー、オブジェクトを格納するカタログやスキーマのオーナーによって許可されます。アカウント管理者は、唯一の役割が適切なアクセス権限を許可することである**メタストア管理者**にグループを指名することで、メタストアのロールを委任することをお勧めします。


# 推奨事項とベストプラクティス

- [アカウント管理者](https://docs.databricks.com/administration-guide/account-settings-e2/admin-users.html)、[メタストア管理者](https://docs.databricks.com/data-governance/unity-catalog/key-concepts.html#metastore-admin)、[ワークスペース管理者](https://docs.databricks.com/data-governance/unity-catalog/key-concepts.html#workspace-admin)のロールと責任範囲は適切に定義され、互いに補完し合うものです。自動化、変更リクエスト、エスカレーションのようなワークフローは、ワークスペースがLOBごとにセットアップされているのか、中央のCOEによって管理されているのかに応じて、適切なオーナーに割り当てられるべきです。
- すべてのワークスペースのプリンシパルの集中管理を実現し、管理をシンプルにできるので、アカウントレベルのアイデンティを有効化すべきです。アカウントレベルで[SSO](https://docs.databricks.com/administration-guide/users-groups/single-sign-on/index.html#set-up-single-sign-on)、[SCIM](https://docs.databricks.com/dev-tools/api/latest/scim/scim-account.html4)、[監査ログ](https://docs.databricks.com/administration-guide/account-settings/audit-logs.html)の様な機能をセットアップすることをお勧めします。SSOフェデレーション機能が利用できる様になるまでは、[依然としてワークスペースレベルのSSOが必要](https://docs.databricks.com/administration-guide/users-groups/index.html#how-do-you-manage-sso-for-workspace--and-account-level-identities)となります。
- [クラスターポリシー](https://qiita.com/taka_yayoi/items/93d7597d7fc739b48bb7)は効果的なセルフサービスのためのガードレールを提供するパワフルなレバーであり、ワークスペース管理者のロールをシンプルなものにします。いくつかのサンプルポリシーを[こちら](https://qiita.com/taka_yayoi/items/93d7597d7fc739b48bb7#%E3%82%AF%E3%83%A9%E3%82%B9%E3%82%BF%E3%83%BC%E3%83%9D%E3%83%AA%E3%82%B7%E3%83%BC%E3%81%AE%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB)で提供しています。アカウント管理者は、主にペルソナ/Tシャツサイズに基づき、理想的には[Terraform](https://registry.terraform.io/providers/databrickslabs/databricks/latest/docs/resources/cluster_policy)のような自動化ツールを通じてシンプルなデフォルトポリシーを提供すべきです。ワークスペース管理者はそのリストに対して、より細かいコントロールを追加することができます。適切なプロセスと組み合わせることで、すべての例外シナリオに適切に対応することができます。
- アカウント管理者はアカウントコンソールからすべてのワークスペースのすべてのワークロードタイプの現在のコンサンプションを確認し、トラッキングします。課金や分析のために、すべての情報が中央のクラウドストレージにデリバリーされる様に[利用課金ログデリバリー](https://qiita.com/taka_yayoi/items/90c7767025ee3feb3640)をセットアップすることをお勧めします。アカウントレベルでBudget API(プレビュー)を設定することで、管理者はワークスペース、SKU、クラスタータグレベルで閾値を作成し、割り当てられた予算内に収まる様にタイムリーなアクションを取れる様にコンサンプションのアラートを受け取れる様にすべきです。計算リソースの利用率に関して改善が必要になった際に、改善対象を特定に役立つようにさらにきめ細かいレベルで使用量を追跡するために[Overwatch](https://databrickslabs.github.io/overwatch/)の様なツールを活用してください。
- Databricksプラットフォームでは、共通する管理者の機能をプラットフォームの中で抽象化することでさまざまなデータペルソナの作業を改革しシンプルにし続けています。我々のお勧めは新たなパイプラインには[Delta Live Tables](https://www.databricks.com/jp/product/delta-live-tables)を用い、すべてのユーザーとデータアクセス管理には[Unity Catalog](https://www.databricks.com/jp/product/unity-catalog)を使うというものです。

最後になりますが、これらのベストプラクティスの大部分、この記事で述べた事柄の大部分においては、調整、チームワークが成功の同義語となります。アカウント管理者とワークスペース管理者がサイロの中に存在することは理論上は可能ですが、これは一般的なレイクハウスの原則に反するだけでなく、関連するすべての人の日々が困難なものとなります。本書から持ち帰るべき最も重要な提言は、企業のアカウント / ワークスペース管理者 + プロジェクト / データリード + ユーザーをつなげることです。Teams/Slackチャンネル、メールエイリアスの様なメカニズム、週次のミートアップなどが有効であることが証明されています。我々Databricksが目撃した最も効果的な組織においては、技術におけるオープンさを受け入れるだけでなく、オペレーションにおけるオープンさについても重きを置いています。間も無く公開されるロギングやデータ漏洩に関する推奨事項や管理にフォーカスしたプラットフォーム機能に関する管理者向け記事を楽しみにしていて下さい。

### Databricks 無料トライアル

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