Bagikan melalui


Memberikan izin secara terprogram

Penting

Lakebase Autoscaling tersedia di wilayah berikut: eastus, , , eastus2centralus, southcentralus, westus, westus2canadacentral, brazilsouth, , northeurope, uksouth, westeurope, , , australiaeast, , centralindia, . southeastasia

Lakebase Autoscaling adalah versi terbaru Lakebase, dengan komputasi penskalaan otomatis, skala-ke-nol, percabangan, dan pemulihan instan. Jika Anda adalah pengguna Lakebase Provisioned, lihat Lakebase Provisioned.

Izin proyek Lakebase dapat dikelola secara terprogram menggunakan API Izin Azure Databricks standar, Azure Databricks CLI, Azure Databricks SDK, 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.

ID proyek adalah UUID (misalnya, a446ad92-e936-454b-a31c-a0742e53dd5c). Ambil milik Anda dengan databricks postgres list-projects dan lihat bidang uid.

REST API

Izin proyek menggunakan API Izin Azure Databricks standar di /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 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"
      }
    ]
  }'

Dapatkan izin 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

WorkspaceClient.permissions Gunakan antarmuka 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()

# 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,
        )
    ],
)

Java SDK

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)
);

Go SDK (Kit Pengembangan Perangkat Lunak)

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

Gunakan sumber daya databricks_permissions dengan atribut database_project_name untuk mengelola izin proyek sebagai infrastruktur sebagai kode. Untuk alur kerja Terraform lengkap termasuk pembuatan proyek, contoh grup, dan perilaku deklaratif, lihat Mengelola izin proyek dengan 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"
  }
}

Untuk referensi sumber daya lengkap, lihat databricks_permissions di Terraform Registry.

Langkah berikutnya