Manage users, service principals, and groups | Databricks on AWS [2022/11/18時点]の翻訳です。
本書は抄訳であり内容の正確性を保証するものではありません。正確な内容に関しては原文を参照ください。
本書では、Databricksのアイデンティティ管理モデルを紹介し、Databricksにおいてどのようにユーザー、グループ、サービスプリンシパルを管理するのかの概要を説明します。
Databricksにおいてどのようにアイデンティティを管理するのがベストなのかを示しているDatabricksにおけるアイデンティティ管理のベストプラクティスもご覧ください。
Databricksにおけるアイデンティティとロール
Databricksのアイデンティティには3つのタイプが存在します:
- ユーザー: Databricksによって識別されるユーザーアイデンティティでありメールアドレスで表現されます。
- サービスプリンシパル: ジョブ、自動化ツール、そして、スクリプト、アプリ、CI/CDプラットフォームのようなシステムで使用するアイデンティティです。
- グループ: ワークスペース、データ、そのほかのセキュリティ保護可能オブジェクトへのグループのアクセスを管理するために、管理者によって使用されるアイデンティティのコレクションです。
Databricksで定義されるロールが5つ存在します:
- アカウント管理者は、ワークスペース、Unity Catalogメタストアの作成、課金、クラウドリソースを含むDatabricksのアカウントレベルの設定を管理することができます。アカウント管理者はアカウントにユーザーを追加し、管理者ロールを割り当てることができます。また、ワークスペースでアイデンティティフェデレーションを使用している場合、ユーザーにワークスペースへのアクセス権を与えることができます。
- ワークスペース管理者は、Databricksワークスペースにユーザーを追加し、ワークスペース管理者ロールや、クラスターの作成や特定のペルソナベースの環境へのアクセス権などの能力を割り当てることができます。
- メタストア管理者は誰がカタログを作成でき、テーブルをクエリーできるのかと言ったUnity Catalogメタストアの全てのセキュリティ保護可能オブジェクトの権限を管理することができます。
- アカウントユーザーはワークスペースを参照し、ワークスペースに接続するためにアカウントコンソールを使用することができます。アカウント管理者とワークスペース管理者はアカウントにユーザーを追加することができます。
- ワークスペースユーザーはワークスペースでデータサイエンス、データエンジニアリング、データ分析タスクを実行します。アカウント管理者とワークスペース管理者は、ワークスペースでアイデンティティフェデレーションを使用している場合、アカウントユーザーにワークスペースへのアクセス権を与えることができます。
誰がDatabricksでアイデンティティを管理できるのか?
Databricksでアイデンティティを管理するには、アカウント管理者かワークスペース管理者である必要があります。以下の表では、ユーザー管理のアクションに必要な特定のアクセス権の詳細を示しています。
アクション | 誰がこのアクションを実行できるのか? |
---|---|
ユーザーとサービスプリンシパルの追加 | アカウント管理者はアカウントにユーザーとサービスプリンシパルを追加することができます。 ワークスペース管理者はワークスペースにユーザーとサービスプリンシパルを追加することができます。 |
ユーザーとサービスプリンシパルの更新 | アカウント管理者はアカウントのユーザーとサービスプリンシパルを更新することができます。 |
ユーザーとサービスプリンシパルの削除 | アカウント管理者はアカウントのユーザーとサービスプリンシパルを削除することができます。 |
グループの追加 | アカウント管理者はアカウントにグループを追加することができます。 ワークスペース管理者はワークスペース管理者のワークスペースにワークスペースローカルグループを追加することができます。 |
グループの更新 | アカウント管理者はアカウントのグループを更新することができます。 ワークスペース管理者はワークスペース管理者のワークスペースのワークスペースローカルグループを更新することができます。 |
グループの削除 | アカウント管理者はアカウントからグループを削除することができます。 ワークスペース管理者はワークスペース管理者のワークスペースからワークスペースローカルグループを削除することができます。 |
アカウントには合わせて最大10,000ユーザーとサービスプリンシパルを持つことができ、最大5000グループを持つことができます。それぞれのワークスペースでは、最大10,000ユーザーとサービスプリンシパル、最大5000グループを持つことができます。
詳細な手順に関しては、以下をご覧ください:
- Databricksにおけるユーザー管理
- Manage service principals
- Databricksにおけるグループの管理
- Sync users and groups from your identity provider
管理者はどのようにユーザーをワークスペースに割り当てるのか?
Databricksワークスペースで作業するために、ユーザー、サービスプリンシパル、グループを有効化するには、アカウント管理者あるいはワークスペース管理者がそれらをワークスペースに割り当てる必要があります。
アカウント管理者は、ワークスペースでアイデンティティフェデレーションが有効化されている場合、ワークスペースに対してアカウントに存在するユーザー、サービスプリンシパル、グループにアクセスを割り当てることができます。また、ワークスペース管理者はアイデンティティフェデレーションが有効化されている自分のワークスペースにユーザー、サービスプリンシパル、グループを割り当てることができます。
逆に、新規ユーザーや新規サービスプリンシパルをワークスペースに直接追加すると、それらのユーザー、サービスプリンシパルは自動でアカウントに追加され、ワークスペースに割り当てられます。この上流のフローはお勧めしません。アカウントにユーザーを追加し、ワークスペースに割り当てる方が分かりやすいです。Databricksはどのようにワークスペースとアカウント間でアイデンティティを同期するのか?をご覧ください。
ワークスペースローカルグループとして知られる、ワークスペースで直接作成されたグループは自動でアカウントに追加されません。アカウントのグループとして手動でワークスペースローカルグループを再作成することができます。グループに対する特別な検討をご覧ください。
アイデンティティフェデレーションが有効化されていないワークスペースにおいては、ワークスペース管理者がワークスペースのスコープ内でワークスペースユーザー、サービスプリンシパル、グループを管理します(レガシーモデル)。彼らはこれらのワークスペースに対してアカウントからユーザーを割り当てるために、アカウントコンソールやアカウントレベルのAPIを使うことはできませんが、すべてのワークスペースレベルのインタフェースを使用することができます。
ユーザーやサービスプリンシパルがワークスペースに追加されると、そのユーザーやサービスプリンシパルはアカウントレベルに同期されます。アカウントレベルでユーザーやサービスプリンシパルが削除されると、そのユーザーはアカウント内の全てのワークスペースに対するアクセス権を失います。ワークスペースにグループが追加されると、そのグループはワークスペースローカルグループとなり、アカウントには追加されません。グループに対する特別な検討をご覧ください。
詳細な手順については以下をご覧ください:
管理者はどのようにワークスペースのアイデンティティフェデレーションを有効化するのか?
ワークスペースでアイデンティティフェデレーションを有効化するには、ワークスペースをUnity Catalogメタストアに割り当てることで、ワークスペースでUnity Catalogを有効化する必要があります。Enable a workspace for Unity Catalogをご覧ください。
Databricksはどのようにワークスペースとアカウント間でアイデンティティを同期するのか?
2022年8月にすべての既存のワークスペースユーザーとサービスプリンシパルは自動でアカウントレベルのユーザー、アカウントレベルのサービスプリンシパルに同期されました。Databricksはワークスペースにユーザーが追加された際には、常にユーザーとサービスプリンシパルをアカウントに同期し続けます。ワークスペースユーザーがアカウントレベルのユーザーや既に存在している管理者とユーザー名(メールアドレス)を共有している場合にはマージされます。
重要!
アカウント管理者がアカウントレベルでユーザーやサービスプリンシパルを削除すると、そのユーザーはアイデンティティフェデレーションが有効化されているかどうかに関係なくワークスペースからも削除されます。アカウントのすべてのワークスペースに対するアクセス権を剥奪したい場合を除いて、アカウントレベルのユーザーやサービスプリンシパルを削除すべきではありません。ユーザー削除による以下の影響に注意してください:
- 当該ユーザーによって生成されたトークンを使用しているアプリケーションやスクリプトはDatabricks APIにアクセスできなくなります。
- 当該ユーザーによって所有されているジョブは失敗します。
- 当該ユーザーによって所有されているクラスターは停止します。
- 当該ユーザーによって作成され
Run as Owner
資格情報で共有されているクエリーやダッシュボードは、共有が失敗しないように新たなオーナーに割り当てる必要があります。
ワークスペースローカルグループはアカウントレベルに同期されません。ワークスペースローカルグループは、ワークスペース管理者のコンソールと(当該ワークスペースでアイデンティティフェデレーションが有効化されている場合)アカウントコンソールのワークスペースアクセス権タブでワークスペースローカルと識別されます。詳細はグループに対する特別な検討をご覧ください。
グループに対する特別な検討
ワークスペースレベルで作成されたユーザーとサービスプリンシパルは自動でアカウントに同期されますが、ワークスペースで作成されたグループは同期されません。代わりに、Databricksには、特殊な挙動を持つアカウントグループとワークスペースローカルグループというコンセプトがあります。
- アカウントグループはアカウント管理者によってのみ作成することができます。アカウントグループはアイデンティティフェデレーションが有効化されたワークスペースに割り当てることができ、アカウント管理者とワークスペース管理者によってワークスペースに割り当てることができます。
- ワークスペースローカルグループはワークスペース管理者によってのみ作成することができます。これらのグループはワークスペース管理者コンソールやアカウントコンソールのワークスペースアクセス権のタブでワークスペースローカルとして識別されます。
アカウントグループではなくワークスペースローカルグループを使用することはお勧めしません。アカウントグループを使用するためにワークスペースのアイデンティティフェデレーションを有効化すべきです。既存ワークスペースでアイデンティティフェデレーションを有効化すると、アカウントグループとワークスペースローカルグループを同時に使用することができますが、Unity Catalogによるワークスペース割り当てとデータアクセス管理の集中管理を活用できるように、ワークスペースローカルグループをアカウントグループに変換することをお勧めします。
管理者ロールの割り当て
アカウント管理者はほかのユーザーをアカウント管理者に割り当てることができます。また、メタストアを作成することでUnity Catalogのメタストア管理者になることもでき、メタストア管理者ロールを別のユーザーやグループに移譲することもできます。
アカウント管理者とワークスペース管理者の両方はほかのユーザーをワークスペースユーザーとして割り当てることができます。ワークスペース管理者のロールは、Databricksのデフォルトグループであり削除できないワークスペースのadmins groupのメンバーシップによって決定されます。
以下もご覧ください:
資格情報の割り当て
資格情報(entitlement)とはユーザー、サービスプリンシパル、グループがDatabricksと特定の方法でインタラクションできるようにするプロパティです。資格情報はワークスペースレベルでユーザーに割り当てられます。以下の表では、資格情報とそれらを管理するために使用するワークスペースUI名とAPIのプロパティ名を一覧しています。資格情報を管理するために、ワークスペースの管理コンソールやワークスペースレベルのSCIM REST APIを使用することができます。
資格情報名(UI) | 資格情報名(API) | デフォルト | 説明 |
---|---|---|---|
Workspace access | workspace-access | デフォルトで生成 | ユーザーやサービスプリンシパルに割り当てると、彼らはData Science & EngineeringやDatabricks Machine Learningのペルソナベースの環境にアクセスできるようになります。 ワークスペース管理者から削除することはできません。 |
Databricks SQL access | databricks-sql-access | デフォルトで生成 | ユーザーやサービスプリンシパルに割り当てると、彼らはDatabricks SQLにアクセスできるようになります。 |
Allow unrestricted cluster creation | allow-cluster-create | デフォルトではユーザーやサービスプリンシパルには許可されません | ユーザーやサービスプリンシパルに割り当てると、彼らはクラスターを作成できるようになります。クラスターレベルのアクセス権を用いて既存のクラスターへのアクセスを制限することができます。 ワークスペース管理者から削除することはできません。 |
Allow pool creation (UIでは利用不可) | allow-instance-pool-create | 個々のユーザー、サービスプリンシパルに割り当てることはできません | グループに割り当てられると、メンバーはインスタンスプールを作成できるようになります。 ワークスペース管理者から削除することはできません。 |
シングルサインオン(SSO)のセットアップ
シングルサインオン(SSO)を用いることで、Oktaのようなサードパーティのアイデンティティプロバイダーを用いてユーザーを認証できるようになります。お使いのアイデンティティプロバイダーがSAML 2.0プロトコル(あるいはアカウントレベルのSSOではOIDCプロトコル)をサポートしているのであれば、アイデンティティプロバイダーと連携するためにDatabricks SSOを活用することができます。
アカウントレベルのアイデンティティのSSOとワークスペースレベルのアイデンティティのSSOは別に管理される必要があります。
Set up single sign-onをご覧ください。