この記事では、 専用 アクセス モードを使用して、グループに割り当てられたコンピューティング リソースを作成する方法について説明します。
専用グループ アクセス モードを使用すると、ユーザーは標準アクセス モード クラスターの運用効率を得ることができます。一方、Databricks Runtime for ML、RDD API、R など、標準アクセス モードではサポートされていない言語とワークロードも安全にサポートできます。
必要条件
専用グループ アクセス モードを使うには:
- ワークスペースが Unity Catalog に対して有効にされている必要があります。
- Databricks Runtime 15.4 以降を使う必要があります。
- 割り当てられたグループには、ワークスペース フォルダーに対して、ノートブック、ML 実験、グループ クラスターで使われる他のワークスペース成果物を保持できる
CAN MANAGE
アクセス許可が必要です。
専用アクセス モードとは
専用アクセス モードは、シングル ユーザー アクセス モードの最新バージョンです。 専用アクセスを使うと、コンピューティング リソースを単一のユーザーまたはグループに割り当てることができ、割り当てられたユーザーのみがコンピューティング リソースを使用できます。
ユーザーがグループ専用のコンピューティング リソース (グループ クラスター) に接続されている場合、ユーザーのアクセス許可はグループのアクセス許可のスコープを自動的に下げて、ユーザーがグループの他のメンバーとリソースを安全に共有できるようにします。
グループ専用のコンピューティング リソースを作成する
- Azure Databricks ワークスペースで、[ コンピューティング ] に移動し、[ コンピューティングの作成] をクリックします。
- [ 詳細設定 ] セクションを展開します。
- [アクセス モード] で、[手動] をクリックし、ドロップダウン メニューから [専用] (旧称: シングル ユーザー) を選択します。
- [ 単一ユーザーまたはグループ ] フィールドで、このリソースに割り当てるグループを選択します。
- その他の必要なコンピューティング設定を構成し、[ 作成] をクリックします。
グループ クラスターの管理に関するベスト プラクティス
グループ クラスターを使うと、ユーザーのアクセス許可のスコープはグループまで引き下げられるため、Databricks では、グループ クラスターで使う予定のグループごとに /Workspace/Groups/<groupName>
フォルダーを作成することをお勧めします。 その後、フォルダーに対する CAN MANAGE
アクセス許可をグループに割り当てます。 これにより、グループはアクセス許可エラーを回避できます。 グループのすべてのノートブックとワークスペース資産は、グループ フォルダーで管理する必要があります。
また、次のワークロードをグループ クラスターで実行するように変更する必要もあります。
- MLflow: グループ フォルダーからノートブックを実行するか、
mlflow.set_tracking_uri("/Workspace/Groups/<groupName>")
を実行するようにします。 - AutoML: あなたのAutoML実行用に、省略可能な
experiment_dir
パラメーターを“/Workspace/Groups/<groupName>”
に設定します。 -
dbutils.notebook.run
: 実行中のノートブックに対するREAD
アクセス許可をグループが持つようにします。
グループ クラスターでのアクセス許可の動作
グループ クラスターで実行されるすべてのコマンド、クエリ、およびその他のアクションでは、個々のユーザーではなく、グループに割り当てられたアクセス許可が使用されます。
すべてのグループ メンバーが Spark API と共有コンピューティング環境にフル アクセスできるため、個々のユーザーアクセス許可を適用できません。 ユーザーベースのアクセス許可が適用されている場合、1 人のメンバーが制限されたデータに対してクエリを実行でき、アクセス権のない別のメンバーは共有環境を介して結果を取得できます。 そのため、グループ自体は、グループのメンバーであるユーザーではなく、アクションを正常に実行するために必要なアクセス許可を持っている必要があります。
たとえば、グループには、テーブルのクエリ、シークレット スコープまたはシークレットへのアクセス、Unity カタログ接続資格情報の使用、Git フォルダーへのアクセス、ワークスペース オブジェクトの作成を行う明示的なアクセス許可が必要です。
グループのアクセス許可の例
グループ クラスターを使用してデータ オブジェクトを作成すると、そのグループがオブジェクトの所有者として割り当てられます。
たとえば、ノートブックがグループ クラスターにアタッチされている場合に、次のコマンドを実行します。
use catalog main;
create schema group_cluster_group_schema;
それから、次のクエリを実行してスキーマの所有者を調べます。
describe schema group_cluster_group_schema;
監査グループの専用コンピューティング アクティビティ
グループ クラスターがワークロードを実行するときは、2 つの主要な ID が関係します。
- グループ クラスターでワークロードを実行しているユーザー
- 実際のワークロード アクションの実行に使用されるアクセス許可を持つグループ
監査ログ システム テーブルには、次のパラメーターの下にこれらの ID が記録されます。
-
identity_metadata.run_by
: アクションを実行する認証ユーザー -
identity_metadata.run_as
: アクセス許可がアクションに使われる認可グループ。
次の例のクエリでは、グループ クラスターで実行されたアクションの ID メタデータを取得します。
select action_name, event_time, user_identity.email, identity_metadata
from system.access.audit
where user_identity.email = "uc-group-cluster-group" AND service_name = "unityCatalog"
order by event_time desc limit 100;
他のクエリの例については、監査ログ システム テーブルのリファレンスを参照してください。 監査ログ システム テーブルのリファレンスを参照してください。
既知の問題
グループ クラスターから作成されたワークスペース ファイルとフォルダーでは、割り当てられたオブジェクト所有者が Unknown
になります。
read
、write
、delete
などのオブジェクトに対する後続の操作は、アクセス許可が拒否されたエラーで失敗します。
既知の制限事項
専用グループ アクセスには、次の制限があります。
- API と SDK を使用して作成されたジョブにグループ アクセスを割り当てることはできません。 これは、ジョブの
run_as
パラメーターがサポートするユーザーまたはサービス プリンシパルが 1 つだけであるためです。 - Git リポジトリの チェックアウトにジョブが使用する一時ディレクトリが書き込み可能ではないため、Git を使用するジョブは失敗します。 代わりに Git フォルダー を使用してください。
- 系列システム テーブルでは、グループ クラスターで実行されるワークロードの
identity_metadata.run_as
(承認グループ) またはidentity_metadata.run_by
(認証ユーザー) は記録されません。 - お客様のストレージに配信される監査ログには、グループ クラスターで実行されるワークロードの
identity_metadata.run_as
(承認グループ) またはidentity_metadata.run_by
(認証ユーザー) は記録されません。 ID メタデータを確認するには、system.access.audit
テーブルを使う必要があります。 - グループ クラスターにアタッチされている場合、カタログ エクスプローラーでは、そのグループのみがアクセスできる資産でのフィルター処理は行われません。
- グループ メンバーではないグループ マネージャーは、グループ クラスターを作成、編集、または削除できません。 これを行うことができるのは、ワークスペース管理者とグループ メンバーだけです。
- グループの名前が変更された場合は、そのグループ名を参照しているコンピューティング ポリシーを手動で更新する必要があります。
- ワークスペース ACL が無効になっているときは、セキュリティとデータ アクセスの制御が本質的に行われないため、ACL が無効になっている (isWorkspaceAclsEnabled == false) ワークスペースでは、グループ クラスターはサポートされません。
- ノートブック コンテキストで実行される
%run
コマンドとその他のアクションでは、グループのアクセス許可ではなく、常にユーザーのアクセス許可が使用されます。 これは、これらのアクションは、クラスターの環境ではなく、ノートブック環境によって処理されるためです。dbutils.notebook.run()
などの代替コマンドはクラスター上で実行されるため、グループのアクセス許可が使用されます。 -
is_member(<group>)
関数は、グループがそれ自体のメンバーではないため、グループ クラスターで呼び出されたときにfalse
を返します。 グループ クラスターとその他のアクセス モードの両方のメンバーシップを正しく確認するには、is_member(<group>) OR current_user() == <group>
を使用します。 - コンピューティング ログをボリュームに配信することはできません。
- エンドポイントにサービスを提供するモデルの作成とアクセスはサポートされていません。
- ベクター検索エンドポイントまたはインデックスの作成とアクセスはサポートされていません。
- グループ クラスターでは、ファイルとフォルダーの削除はサポートされていません。