グループへのコンピュート リソースの割り当て
この記事では、 専用 アクセス モードを使用して、グループに割り当てられたコンピュート リソースを作成する方法について説明します。
専用グループ アクセス モードを使用すると、ユーザーは標準アクセス モード クラスターの運用効率を得ると同時に、 Databricks Runtime for ML、 Spark 機械学習ライブラリ (MLlib)、 RDD API、R など、標準アクセス モードでサポートされていない言語とワークロードを安全にサポートできます。
必要条件
専用グループアクセスモードを使用するには:
- ワークスペースは Unity Catalog に対して有効になっている必要があります。
- Databricks Runtime 15.4 以降を使用する必要があります。
- 割り当てられたグループは、グループ クラスターで使用されるノートブック、 ML エクスペリメント、およびその他のワークスペース アーティファクトを保持できるワークスペース フォルダーに対する
CAN MANAGE
アクセス許可を持っている必要があります。
専用アクセスモードとは何ですか?
専用アクセスモードは、シングルユーザーアクセスモードの最新バージョンです。専用アクセスを使用すると、コンピュート リソースを 1 人のユーザーまたはグループに割り当てて、割り当てられたユーザーのみがコンピュート リソースを使用できるようになります。
ユーザーがグループ専用のコンピュート リソース (a グループ クラスター) に接続している場合、ユーザーのアクセス許可は自動的にグループのアクセス許可にダウンスコープされ、ユーザーはリソースをグループの他のメンバーと安全に共有できます。
グループ専用のコンピュートリソースを作成する
- 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 Catalog 接続認証情報の使用、 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 が無効になっているワークスペース (isWorkspaceAclsEnabled == false) では、ワークスペース ACL が無効になっている場合、セキュリティとデータ アクセス制御が本質的に欠如しているため、サポートされていません。
- ノートブックコンテキストで実行される
%run
コマンドおよびその他のアクションは、常にグループの権限ではなく、ユーザーの権限を使用します。これは、これらのアクションがクラスターの環境ではなく、ノートブック環境によって処理されるためです。dbutils.notebook.run()
などの代替コマンドはクラスターで実行されるため、グループのアクセス許可が使用されます。 is_member(<group>)
関数は、グループ クラスター自体のメンバーではないため、グループ クラスターで呼び出されたときにfalse
を返します。グループ クラスター モードと他のアクセス モードの両方でメンバーシップを正しく確認するには、is_member(<group>) OR current_user() == <group>
.- コンピュート ログをボリュームに配信することはできません。
- モデルサービングエンドポイントの作成とアクセスはサポートされていません。