排他アクセスは、データアクセスを暗黙的ではなくオプトインにするパターンです。 通常の Unity カタログのアクセス許可では、アクセス許可はユーザーに従います。ユーザーは時間の経過と共にアクセス許可を蓄積し、あらゆる場所にアクセスするため、アクセス権は、直接付与されたアクセス許可と、ユーザーがメンバーであるすべてのグループから継承するアクセス許可の合計になります。 排他的アクセス パターンを使用すると、意図的なアクションが必要な機密データへのアクセスをモデル化できます。ユーザーは、データに永続的にアクセスするのではなく、データに到達するためのロールを積極的に引き受ける必要があります。 これにより、ユーザーが独自の ID としてデータにアクセスしたり、ユース ケース、臨床試験、プロジェクト、またはクライアント間でデータを混在させないようにすることができます。
このパターンを説明するために、関連する個別の ID には 2 つの用語を使用します。 これらは説明ラベルであり、正式なAzure Databricks用語ではありません。
- アクセス ロール: 機密データに対するアクセス許可を保持するメンバーがいないグループ。 ユーザーは、このロールを使用してデータにアクセスします。 アクセス ロールは空のままである必要があります。アクセス ロールのメンバーはアクセス許可を直接継承し、ロールを引き受 けることなく 機密データにアクセスできるため、排他アクセスは実行されません。 Azure Databricksでは、アクセス ロールがグループとして実装されます。
- メンバー グループ: アクセス ロールを引き受けるユーザーがメンバーであるグループ。 メンバー グループにアクセス ロールに対して Assume を付与すると、そのすべてのメンバーがロールを引き受けられます。 メンバー グループは、要件ではなく便利です。また、個々のユーザーまたはサービス プリンシパルに直接 Assume を付与することもできます。 これにより、プリンシパルごとに Assume の許可設定を管理する必要がなくなります。
構成が完了すると、ユーザーは、ロール スイッチャー、グループに割り当てられた専用アクセス モード クラスター、CLI、API、またはサード パーティ製の BI ツールのいずれかの方法を使用してアクセス ロールを引き受けます。 「ロールの切り替え」を参照してください。
Azure Databricksでは、アクセス ロールを作成するための 2 つの方法がサポートされています。 組織が ID を管理する方法に最も適したものを選択します。
- アカウントローカルアクセスロール:アクセスロールとしてAzure Databricksアカウントローカルグループを作成します。 Azure Databricksでグループを作成する場合は、新しいMicrosoft Entra ID グループを作成するよりも簡単です (たとえば、Microsoft Entra IDの変更で IT チケットや内部レビューが必要な場合など)。
- Microsoft Entra IDから同期されたアクセス ロール: SCIM 経由でAzure Databricksに同期される、空のMicrosoft Entra ID グループをアクセス ロールとして使用します。 Microsoft Entra IDでグループを既に管理していて、そこにすべてのグループ ライフサイクルを保持したい場合に最適です。
Requirements
- Unity カタログ対応ワークスペース。
- グループを作成し、Assume を付与するためのアカウント管理者またはワークスペース管理者のアクセス許可。
方法 1: アカウント ローカル アクセス ロール
このアプローチでは、アクセス ロールは、Azure Databricks内で完全に管理されるAzure Databricksアカウントローカル グループです。 メンバー グループには、アクセス ロールを引き受けるアクセス許可を持つ任意のグループを指定できます。通常は、機密データへのアクセスを許可されたユーザーを含むMicrosoft Entra IDから同期されたグループです。
手順 1: アクセス ロールを作成してワークスペースに割り当てる
アクセス ロールとして機能するメンバーを持たないアカウント レベルのグループを作成します。 Databricks では、アクセス ロールと通常のグループを区別するために、一貫性のある名前付けプレフィックス ( role- など) を使用することをお勧めします。 たとえば、許可されたユーザーのメンバー グループが clinical-trial-1-dsされている場合は、アクセス ロールに role-clinical-trial-1-ds名前を付けます。
アクセス ロールを作成するには:
アカウント コンソール
- アカウント管理者として、アカウント コンソールにログインします。
- サイドバーで、[ユーザー管理] をクリックします。
- [グループ] タブで、[グループの追加] をクリックします。
- アクセス ロールの名前を入力します。 メンバーを追加しないでください。
- [Confirm](確認) をクリックします。
アカウント グループ API
databricks api post /api/2.0/account/scim/v2/Groups --json '{
"displayName": "<access-role-name>"
}'
アクセス ロールを作成したら、アクセス ロールを使用可能なワークスペースに割り当てます。 「グループをワークスペースに割り当てる」を参照してください。
手順 2: データとワークスペース資産へのアクセスを許可する
標準のAzure Databricks ツールを使用して、機密データとワークスペース資産に対するアクセス ロールのアクセス許可を付与します。
-
Unity Catalog のセキュリティ保護可能なオブジェクト:
GRANTステートメントまたはカタログ エクスプローラーを使用して、アクセスロールに UC の権限を付与します。 - ワークスペース資産: アクセス制御リスト (ACL) を使用して、ノートブック、ジョブ、SQL ウェアハウス、およびその他のワークスペース オブジェクトに対するアクセス ロールのアクセス許可を付与します。
たとえば、Unity カタログ テーブルを読み取るためのアクセス ロールのアクセス許可を付与するには、次のようにします。
GRANT USE SCHEMA ON <catalog>.<schema> TO `<access-role-name>`;
GRANT SELECT ON TABLE <catalog>.<schema>.<table> TO `<access-role-name>`;
手順 3: Assume 権限を付与する
このロールを引き受ける必要があるユーザー、サービス プリンシパル、またはメンバー グループに、Assume アクセス許可を付与します。 「グループのアクセス許可の管理」を参照してください。
手順 4: ユーザーがロールを引き受けます
アクセスロールに対する Assume 権限を持つユーザーは、そのロールを引き受けることができます。 使用可能な方法については、 ロールの切り替えを 参照してください。
方法 2: Microsoft Entra IDから同期されたアクセス ロール
このアプローチを使用して、個別のAzure Databricks管理アクセス ロールを作成するのではなく、Microsoft Entra IDでアクセス ロールを管理し、SCIM を使用してAzure Databricksに同期します。 アクセス ロールとメンバー グループの両方がMicrosoft Entra IDで生成されます。
このアプローチでは:
- アクセス ロールは、Azure Databricksに同期され、機密データに対するアクセス許可が付与された空のMicrosoft Entra ID グループです。
- メンバー グループは、アクセス ロールを引き受けるユーザーがメンバーである既存のMicrosoft Entra ID グループです。 メンバー グループにアクセス ロールに対して Assume を付与すると、そのメンバーはすべて自動的に Assume を継承します。
Note
アクセス ロールは、Microsoft Entra IDで空のままにする必要があります。 Microsoft Entra IDのアクセス ロールに追加されたメンバーは、Azure Databricksに同期され、ロールのアクセス許可を直接継承します。つまり、ロールを引き受けなくても機密データにアクセスできます。 これにより、排他アクセス モデルが中断されます。
手順 1: Microsoft Entra IDでグループを設定する
グループを設定する方法は、Azure Databricksで既にアクセス許可を持っている既存のMicrosoft Entra ID グループを新たに開始するか、または再利用するかによって異なります。
新しいセットアップ
ID プロバイダーで次の手順を実行します。
- アクセス ロールとして機能する空のグループを作成します。 たとえば、
role-clinical-trial-1-dsと指定します。 - メンバーがアクセス ロールを引き受けることができるようにするメンバー グループを特定または作成します。 たとえば、
clinical-trial-1-dsと指定します。 - SCIM コネクタを使用して、両方のグループをAzure Databricksに同期します。 SCIM を使用して Microsoft Entra ID からユーザーとグループを同期するを参照してください。
既存のものを再利用する
Azure Databricksの機密データに対するアクセス許可がメンバーに付与されているMicrosoft Entra IDから同期されたグループが既にある場合は、このバリアントを使用します。 既存のグループをアクセス ロールとして再利用すると、すべてのアクセス許可が新しいグループに再付与されるのを回避できます。
ID プロバイダーで次の手順を実行します。
- メンバー グループとして機能する新しいMicrosoft Entra ID グループを作成します。 たとえば、既存のグループが
clinical-trial-1-dsされている場合は、clinical-trial-1-ds-membersを作成します。 - 既存のMicrosoft Entra ID グループのすべてのメンバーを新しいメンバー グループに移動します。
- 既存のMicrosoft Entra ID グループがMicrosoft Entra IDで空になり、アクセス ロールになります。 既存のAzure Databricksアクセス許可が保持されるため、以下の手順 3 をスキップできます。
- SCIM コネクタを使用して、両方のグループをAzure Databricksに同期します。 SCIM を使用して Microsoft Entra ID からユーザーとグループを同期するを参照してください。
手順 2: 両方のグループをワークスペースに割り当てる
アクセス ロールとメンバー グループの両方を、使用可能なワークスペースに割り当てます。 「グループをワークスペースに割り当てる」を参照してください。
手順 3: データとワークスペース資産へのアクセスを許可する
Note
手順 1 で既存のMicrosoft Entra ID グループを再利用した場合、アクセス ロールには既にAzure Databricksアクセス許可があり、この手順は省略できます。
方法 1、手順 2 と同じ手順に従って、機密データとワークスペース資産に 対するアクセス ロール のアクセス許可を付与します。
手順 4: メンバー グループに Assume アクセス許可を付与する
メンバー グループにアクセス ロールに対する [想定] アクセス許可を付与します。 メンバー グループのすべてのメンバーは自動的に Assume を継承します。 「グループのアクセス許可の管理」を参照してください。
手順 5: ユーザーがロールを引き受けます
メンバー グループのメンバーは、アクセス ロールを引き受けることができます。 使用可能な方法については、 ロールの切り替えを 参照してください。
次のステップ
- 権限の引き受け管理: UI または API を使用して、アクセス ロールに対して Assume を付与または取り消します。 「グループのアクセス許可の管理」を参照してください。
- ロールを想定する: ロール スイッチャー、専用アクセス モード クラスター、CLI、API、またはサードパーティの BI ツールを使用します。 「ロールの切り替え」を参照してください。
- ワークスペース アセットの共有を制限: アクセス ロールを引き受けたユーザーが、そのロールが所有するワークスペース アセットを共有できないようにします。 ワークスペース資産共有コントロールを参照してください。
- 制限事項: ロールを引き受ける場合にサポートされない Azure Databricks の機能と、グループ管理におけるワークスペース SCIM API の未対応部分など、その他の制約を確認します。 ロールベースのアクセス制御 (RBAC) の制限事項を参照してください。