Databricks アセット バンドルのリソースのアクセス許可を設定する
この記事では、Databricks アセット バンドルで Azure Databricks ジョブ、Delta Live Tables パイプライン、MLOps スタックのアクセス許可を設定する方法について説明します。 「Databricks アセット バンドルとは」をご覧ください。
Azure Databricks のバンドル構成ファイルでは、バンドルで定義されているすべてのリソースに適用するアクセス許可を定義することや、特定のリソースに適用する 1 つ以上のアクセス許可を定義することができます。
Note
重複するアクセス許可は指定できません。 つまり、ユーザー、グループ、またはサービス プリンシパルのアクセス許可を、最上位の permissions
マッピングと resources
マッピングの両方で定義することはできません。
すべてのリソースに適用するアクセス許可を定義する
最上位の permissions
マッピングを使って、resources
で定義されたすべての実験、ジョブ、モデル、パイプラインに適用するアクセス許可を定義できます。 「permissions」を参照してください。
Databricks では、Databricks Asset Bundles リソースのアクセス許可を管理するために、このアプローチをお勧めします。
特定のリソースのアクセス許可を定義する
resources
の実験、ジョブ、モデル、またはパイプライン定義で permissions
マッピングを使い、そのリソースに対する 1 つ以上のアクセス許可を定義できます。
permissions
マッピング内の各アクセス許可には、次の 2 つのマッピングが含まれている必要があります。
user_name
、group_name
、またはservice_principal_name
のいずれかに、ユーザー、グループ、またはサービス プリンシパルの名前をそれぞれ指定します。level
、アクセス許可レベルの名前を指定します。 各リソースで使用できるアクセス許可レベルは次のとおりです。- 実験:
CAN_EDIT
、CAN_MANAGE
およびCAN_READ
。 - ジョブ:
CAN_MANAGE
、CAN_MANAGE_RUN
、CAN_VIEW
、IS_OWNER
。 - モデル:
CAN_EDIT
、CAN_MANAGE
、CAN_MANAGE_STAGING_VERSIONS
、CAN_MANAGE_PRODUCTION_VERSIONS
、およびCAN_READ
。 - パイプライン:
CAN_MANAGE
、CAN_RUN
、CAN_VIEW
、およびIS_OWNER
。
- 実験:
特定のアクセス許可レベルの詳細については、以下を参照してください:
- 実験: MLflow 実験 ACL
- ジョブ: ジョブ ACL
- モデル: MLflow モデル ACL
- パイプライン: Delta Live Tables パイプライン ACL
Note
リソースで使用できるアクセス許可レベルを、最上位レベルの permissions
マッピングを使ってリソースに適用できるとは限りません。 permissions
マッピングの有効なアクセス許可レベルについては、アクセス許可に関する記事を参照してください。
次の構文は、最上位レベルの resources
マッピングまたはターゲット内の resources
マッピングで、各リソースの種類に対して複数のアクセス許可を宣言する方法を示しています (簡潔にするために省略記号は省略記号は省略可能なコンテンツを示します):
# ...
resources:
experiments:
<some-programmatic-identifier-for-this-experiment>:
# ...
permissions:
- user_name: <user-name> # Or:
group_name: <group-name> # Or:
service_principal_name: <service-principal-name>
level: <permission-level>
# ...
jobs:
<some-programmatic-identifier-for-this-job>:
# ...
permissions:
- user_name: <user-name> # Or:
group_name: <group-name> # Or:
service_principal_name: <service-principal-name>
level: <permission-level>
# ...
models:
<some-programmatic-identifier-for-this-model>:
# ...
permissions:
- user_name: <user-name> # Or:
group_name: <group-name> # Or:
service_principal_name: <service-principal-name>
level: <permission-level>
# ...
pipelines:
<some-programmatic-identifier-for-this-pipeline>:
# ...
permissions:
- user_name: <user-name> # Or:
group_name: <group-name-1> # Or:
service_principal_name: <service-principal-name>
level: <permission-level>
# ...
targets:
<some-programmatic-identifier-for-this-target>:
resources:
experiments:
<some-programmatic-identifier-for-this-experiment>:
# ...
permissions:
- user_name: <user-name> # Or:
group_name: <group-name> # Or:
service_principal_name: <service-principal-name>
level: <permission-level>
# ...
jobs:
<some-programmatic-identifier-for-this-job>:
# ...
permissions:
- user_name: <user-name> # Or:
group_name: <group-name> # Or:
service_principal_name: <service-principal-name>
level: <permission-level>
# ...
models:
<some-programmatic-identifier-for-this-model>:
# ...
permissions:
- user_name: <user-name> # Or:
group_name: <group-name> # Or:
service_principal_name: <service-principal-name>
level: <permission-level>
# ...
pipelines:
<some-programmatic-identifier-for-this-pipeline>:
# ...
permissions:
- user_name: <user-name> # Or:
group_name: <group-name> # Or:
service_principal_name: <service-principal-name>
level: <permission-level>
# ...
# ...
最上位レベルの resources
マッピングでリソースに対して宣言されたすべてのアクセス許可は、個々のターゲット内の同じ resources
マッピングに対して宣言されているアクセス許可と組み合わされます。 たとえば、最上位とターゲットの両方で同じリソースに対して次の resources
マッピングを指定します (簡潔にするために省略記号は省略されたコンテンツを示します):
bundle:
name: my-bundle
resources:
jobs:
my-job:
# ...
permissions:
- user_name: someone@example.com
level: CAN_VIEW
# ...
targets:
dev:
# ...
resources:
jobs:
my-job:
# ...
permissions:
- user_name: someone@example.com
level: CAN_RUN
# ...
この例で databricks bundle validate
を実行すると、結果のグラフは次のようになります (簡潔にするために、省略記号は省略された内容を示します)。
{
"...": "...",
"resources": {
"jobs": {
"my-job": {
"permissions": [
{
"level": "CAN_VIEW",
"user_name": "someone@example.com"
},
{
"level": "CAN_RUN",
"user_name": "someone@example.com"
}
],
"...": "..."
}
}
}
}