Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Penting
Lakebase Autoscaling adalah versi terbaru Lakebase, dengan komputasi penskalaan otomatis, skala-ke-nol, percabangan, dan pemulihan instan. Untuk wilayah yang didukung, lihat Ketersediaan wilayah. Jika Anda adalah pengguna Lakebase Provisioned, lihat Lakebase Provisioned.
Izin proyek Lakebase dapat dikelola secara terprogram menggunakan API Izin Azure Databricks standar, CLI Azure Databricks, SDK Azure Databricks, dan Terraform.
Untuk gambaran umum jenis izin, izin default, dan cara mengelola izin di UI Lakebase, lihat Mengelola izin proyek.
Tingkatan izin
Tingkat izin yang dapat diberikan untuk proyek Lakebase adalah CAN_USE dan CAN_MANAGE.
CAN_CREATE adalah tingkat yang diwariskan yang mengalir secara otomatis dari ruang kerja ke semua pengguna dan tidak dapat diberikan atau dicabut secara eksplisit pada proyek. Upaya untuk memberikan CAN_CREATE melalui API mengembalikan HTTP 400.
API Izin mengidentifikasi proyek berdasarkan ID proyek (misalnya, my-app). Anda dapat menemukan nilai ini di project_id bidang status proyek yang dikembalikan oleh API Dapatkan proyek dan Daftar proyek.
Nota
Bidang project_id ini tersedia dalam respons REST API tetapi belum tersedia di objek respons SDK atau CLI. Jika Anda menggunakan SDK, Anda dapat mengekstrak ID proyek dari name bidang dengan menghapus awalan projects/ (misalnya, projects/my-app menjadi my-app).
REST API
Izin proyek menggunakan API Izin Azure Databricks standar pada /api/2.0/permissions/database-projects/{project_id}.
Dapatkan izin akses saat ini
curl -X GET "https://${DATABRICKS_HOST}/api/2.0/permissions/database-projects/${PROJECT_ID}" \
-H "Authorization: Bearer ${DATABRICKS_TOKEN}" | jq
Memberikan atau memperbarui izin (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"
}
]
}'
Untuk memberikan izin kepada grup atau perwakilan layanan, ganti user_name dengan group_name atau service_principal_name.
Nota
PATCH bersifat aditif dan tidak dapat menurunkan tingkat izin yang lebih tinggi yang ada. Misalnya, patching CAN_USE ke pengguna yang sudah memegang CAN_MANAGE tidak berpengaruh. Untuk menurunkan atau menghapus izin, gunakan PUT sebagai gantinya.
Ganti semua izin akses eksplisit (PUT)
Peringatan
PUT menggantikan seluruh ACL eksplisit. Setiap pengguna, grup, atau perwakilan layanan yang tidak disertakan dalam isi permintaan kehilangan izin yang diberikan secara eksplisit. Izin yang diwariskan (seperti admin ruang kerja) tidak terpengaruh.
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"
}
]
}'
Untuk referensi API Izin lengkap, lihat API Izin.
CLI
databricks permissions Gunakan perintah (yang membungkus API Izin) untuk mengelola izin proyek dari baris perintah.
Memberikan atau memperbarui izin
# 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"
}
]
}'
Dapatkan izin akses saat ini
databricks permissions get database-projects ${PROJECT_ID}
Nota
Gunakan databricks permissions (bukan databricks postgres) untuk manajemen ACL proyek.
databricks postgres Subperintah mengelola sumber daya proyek (cabang, komputasi, dll.), bukan izin.
SDK
Gunakan antarmuka WorkspaceClient.permissions di Python, Java, atau Go SDK untuk mengelola izin proyek.
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 (Kit Pengembangan Perangkat Lunak)
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,
})