プログラムで権限を付与する
Lakebase オートスケールは次のリージョンで利用できます: us-east-1 、 us-east-2 、 us-west-2 、 ca-central-1 、 sa-east-1 、 eu-central-1 、 eu-west-1 、 eu-west-2 、 ap-south-1 、 ap-southeast-1 、 ap-southeast-2 。
Lakebase オートスケールは、オートスケール コンピュート、ゼロへのスケール、分岐、即時復元を備えた Lakebase の最新バージョンです。 Lakebase プロビジョニングとの機能の比較については、 「バージョン間の選択」を参照してください。
Lakebase プロジェクトの権限は、標準の Databricks Permissions API、Databricks CLI、Databricks SDK、および Terraform を使用してプログラムで管理できます。
権限の種類、デフォルトの権限、Lakebase UI で権限を管理する方法の概要については、 「プロジェクト権限の管理」を参照してください。
権限レベル
Lakebase プロジェクトに付与できる権限レベルはCAN_USEとCAN_MANAGEです。CAN_CREATEは、ワークスペースからすべてのユーザーに自動的に渡される継承レベルであり、プロジェクトで明示的に付与または取り消すことはできません。API 経由でCAN_CREATE許可しようとすると、HTTP 400 が返されます。
プロジェクト ID は UUID (例: a446ad92-e936-454b-a31c-a0742e53dd5c ) です。databricks postgres list-projectsを使用して取得し、 uidフィールドを確認します。
REST API
プロジェクト権限では、 /api/2.0/permissions/database-projects/{project_id}標準の Databricks 権限 API が使用されます。
現在の権限を取得する
curl -X GET "https://${DATABRICKS_HOST}/api/2.0/permissions/database-projects/${PROJECT_ID}" \
-H "Authorization: Bearer ${DATABRICKS_TOKEN}" | jq
権限の付与または更新 (PATCH)
curl -X PATCH "https://${DATABRICKS_HOST}/api/2.0/permissions/database-projects/${PROJECT_ID}" \
-H "Authorization: Bearer ${DATABRICKS_TOKEN}" \
-H "Content-Type: application/json" \
-d '{
"access_control_list": [
{
"user_name": "user@example.com",
"permission_level": "CAN_USE"
}
]
}'
グループまたはサービスプリンパルシに権限を付与するには、 user_name group_nameまたはservice_principal_nameに置き換えます。
PATCH は追加的なものであり、既存の上位権限をダウングレードすることはできません。たとえば、すでにCAN_MANAGEを保持しているユーザーにCAN_USEをパッチしても効果はありません。権限をダウングレードまたは削除するには、代わりに PUT を使用します。
すべての明示的な権限を置き換える(PUT)
PUT は明示的な ACL 全体を置き換えます。リクエスト本文に含まれていないユーザー、グループ、またはサービスプリンシパルは、明示的に付与されたアクセス許可を失います。 継承された権限 (ワークスペース管理者など) は影響を受けません。
curl -X PUT "https://${DATABRICKS_HOST}/api/2.0/permissions/database-projects/${PROJECT_ID}" \
-H "Authorization: Bearer ${DATABRICKS_TOKEN}" \
-H "Content-Type: application/json" \
-d '{
"access_control_list": [
{
"user_name": "user@example.com",
"permission_level": "CAN_MANAGE"
}
]
}'
完全な Permissions API リファレンスについては、 「Permissions API」を参照してください。
CLI
コマンド ラインからプロジェクトの権限を管理するには、 databricks permissionsコマンド(Permissions APIをラップ)を使用します。
権限の付与または更新
# PROJECT_ID is a UUID. Retrieve it with: databricks postgres list-projects
databricks permissions update database-projects ${PROJECT_ID} \
--json '{
"access_control_list": [
{
"user_name": "user@example.com",
"permission_level": "CAN_USE"
}
]
}'
現在の権限を取得する
databricks permissions get database-projects ${PROJECT_ID}
プロジェクト ACL 管理にはdatabricks permissions ( databricks postgresではない) を使用します。databricks postgresサブコマンドは、権限ではなく、プロジェクト リソース (ブランチ、コンピュートなど) を管理します。
SDK
プロジェクトの権限を管理するには、Python、Java、または Go SDK のWorkspaceClient.permissionsインターフェースを使用します。
- Python SDK
- Java SDK
- Go SDK
from databricks.sdk import WorkspaceClient
from databricks.sdk.service.iam import AccessControlRequest, PermissionLevel
w = WorkspaceClient()
# Retrieve your project UUID from: databricks postgres list-projects
PROJECT_ID = "<project-uuid>"
# Grant CAN_USE to a user (PATCH is additive and cannot downgrade)
w.permissions.update(
request_object_type="database-projects",
request_object_id=PROJECT_ID,
access_control_list=[
AccessControlRequest(
user_name="user@example.com",
permission_level=PermissionLevel.CAN_USE,
)
],
)
# Get current permissions
permissions = w.permissions.get(
request_object_type="database-projects",
request_object_id=PROJECT_ID,
)
print(permissions)
# Revoke or downgrade: use set() (PUT), not update() (PATCH)
# update() with an empty list is a no-op; set() replaces the full explicit ACL
w.permissions.set(
request_object_type="database-projects",
request_object_id=PROJECT_ID,
access_control_list=[
# Include every identity that should retain explicit access
AccessControlRequest(
user_name="owner@example.com",
permission_level=PermissionLevel.CAN_MANAGE,
)
],
)
import com.databricks.sdk.WorkspaceClient;
import com.databricks.sdk.service.iam.*;
WorkspaceClient w = new WorkspaceClient();
// Retrieve your project UUID from: databricks postgres list-projects
String projectId = "<project-uuid>";
// Grant CAN_USE to a user (PATCH is additive and cannot downgrade)
w.permissions().update(new UpdatePermissions()
.setRequestObjectType("database-projects")
.setRequestObjectId(projectId)
.setAccessControlList(List.of(
new AccessControlRequest()
.setUserName("user@example.com")
.setPermissionLevel(PermissionLevel.CAN_USE)
))
);
// Get current permissions
ObjectPermissions permissions = w.permissions().get(
new GetPermissionRequest()
.setRequestObjectType("database-projects")
.setRequestObjectId(projectId)
);
import (
"github.com/databricks/databricks-sdk-go"
"github.com/databricks/databricks-sdk-go/service/iam"
)
w, _ := databricks.NewWorkspaceClient()
// Retrieve your project UUID from: databricks postgres list-projects
projectID := "<project-uuid>"
// Grant CAN_USE to a user (Update is additive and cannot downgrade)
_, err := w.Permissions.Update(ctx, iam.UpdatePermissions{
RequestObjectType: "database-projects",
RequestObjectId: projectID,
AccessControlList: []iam.AccessControlRequest{
{
UserName: "user@example.com",
PermissionLevel: iam.PermissionLevelCanUse,
},
},
})
// Get current permissions
permissions, err := w.Permissions.Get(ctx, iam.GetPermissionRequest{
RequestObjectType: "database-projects",
RequestObjectId: projectID,
})
Terraform
database_project_name属性を持つdatabricks_permissionsリソースを使用して、プロジェクトの権限をInfrastructure-as-Codeとして管理します。 プロジェクトの作成、グループの例、宣言的な動作を含む完全な Terraform ワークフローについては、 「Terraform を使用したプロジェクト権限の管理」をご覧ください。
resource "databricks_permissions" "project_perms" {
database_project_name = databricks_postgres_project.app.project_id
access_control {
user_name = "someone@example.com"
permission_level = "CAN_USE"
}
}
完全なリソース リファレンスについては、 Terraform Registry の databricks_permissions を参照してください。