Lakebase プロジェクトのアクセス許可は、標準の Azure Databricks Permissions API、Azure Databricks CLI、Azure Databricks SDK、Terraform を使用してプログラムで管理できます。
アクセス許可の種類、既定のアクセス許可、および Lakebase UI でアクセス許可を管理する方法の概要については、「 プロジェクトのアクセス許可の管理」を参照してください。
アクセス許可レベル
Lakebase プロジェクトの許可可能なアクセス許可レベルは、CAN_USE と CAN_MANAGE です。
CAN_CREATE は継承されたレベルであり、ワークスペースからすべてのユーザーに自動的に流れ、プロジェクトで明示的に許可または取り消すことはできません。
CAN_CREATE のアクセス権付与を試みると、API から HTTP 400 が返されます。
Permissions API は、プロジェクト ID ( my-app など) によってプロジェクトを識別します。 この値は、[プロジェクトの取得] API と [プロジェクトの一覧表示] API によって返されるプロジェクトの状態の project_id フィールドで確認できます。
注
project_id フィールドは REST API 応答で使用できますが、SDK または CLI 応答オブジェクトでは使用できません。 SDK を使用している場合は、name プレフィックスを削除することで、projects/ フィールドからプロジェクト ID を抽出できます (たとえば、projects/my-appがmy-appになります)。
REST API
Project のアクセス許可では、/api/2.0/permissions/database-projects/{project_id} の標準Azure Databricks Permissions 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_USEを保持しているユーザーにCAN_MANAGEの修正プログラムを適用しても効果はありません。 アクセス許可をダウングレードまたは削除するには、代わりに PUT を使用します。
すべての明示的なアクセス許可を置き換える (PUT)
Warnung
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"
}
]
}'
完全なアクセス許可 API リファレンスについては、「 アクセス許可 API」を参照してください。
CLI
コマンド ラインからプロジェクトのアクセス許可を管理するには、 databricks permissions コマンド (Permissions API をラップ) を使用します。
アクセス許可の付与または更新
# PROJECT_ID is your project ID (e.g., my-app).
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
from databricks.sdk import WorkspaceClient
from databricks.sdk.service.iam import AccessControlRequest, PermissionLevel
w = WorkspaceClient()
# Your project ID (e.g., "my-app")
PROJECT_ID = "<project-id>"
# 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,
)
],
)
Java SDK
import com.databricks.sdk.WorkspaceClient;
import com.databricks.sdk.service.iam.*;
WorkspaceClient w = new WorkspaceClient();
// Your project ID (e.g., "my-app")
String projectId = "<project-id>";
// Grant CAN_USE to a user (PATCH is additive and cannot downgrade)
w.permissions().update(new UpdateObjectPermissions()
.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)
);
Go SDK (ソフトウェア開発キット)
import (
"github.com/databricks/databricks-sdk-go"
"github.com/databricks/databricks-sdk-go/service/iam"
)
w, _ := databricks.NewWorkspaceClient()
// Your project ID (e.g., "my-app")
projectID := "<project-id>"
// Grant CAN_USE to a user (Update is additive and cannot downgrade)
_, err := w.Permissions.Update(ctx, iam.UpdateObjectPermissions{
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,
})