Bevilja behörigheter programmatiskt

Viktigt!

Lakebase Autoscaling är den senaste versionen av Lakebase, med automatisk skalningsberäkning, skalning till noll, förgrening och omedelbar återställning. Information om regioner som stöds finns i Regiontillgänglighet. Om du är en Lakebase Provisioned-användare kan du läsa Lakebase Provisioned.

Lakebase-projektbehörigheter kan hanteras programmatiskt med hjälp av API:et för standardbehörigheter Azure Databricks, Azure Databricks CLI, Azure Databricks SDK:er och Terraform.

En översikt över behörighetstyper, standardbehörigheter och hur du hanterar behörigheter i Lakebase-användargränssnittet finns i Hantera projektbehörigheter.

Behörighetsnivåer

Behörighetsnivåer som kan beviljas för Lakebase-projekt är CAN_USE och CAN_MANAGE. CAN_CREATE är en ärvd nivå som flödar automatiskt från arbetsytan till alla användare och inte uttryckligen kan beviljas eller återkallas i ett projekt. Försök att bevilja CAN_CREATE via API:et returnerar HTTP 400.

API:et Behörigheter identifierar projekt efter projekt-ID (till exempel my-app). Du hittar det här värdet i project_id fältet för projektstatusen som returneras av API:erna Hämta projekt och Lista projekt.

Anmärkning

Fältet project_id är tillgängligt i REST API-svar men är ännu inte tillgängligt i SDK- eller CLI-svarsobjekt. Om du använder ett SDK kan du extrahera projekt-ID:t från name fältet genom att ta bort prefixet projects/ (till exempel projects/my-app blir my-app).

REST-API

Projektbehörigheter använder standard Azure Databricks-behörighets-API:et på /api/2.0/permissions/database-projects/{project_id}.

Hämta aktuella behörigheter

curl -X GET "https://${DATABRICKS_HOST}/api/2.0/permissions/database-projects/${PROJECT_ID}" \
  -H "Authorization: Bearer ${DATABRICKS_TOKEN}" | jq

Bevilja eller uppdatera behörigheter (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"
      }
    ]
  }'

Om du vill bevilja behörigheter till en grupp eller tjänstens huvudnamn ersätter du user_name med group_name eller service_principal_name.

Anmärkning

PATCH är additiv och kan inte nedgradera en befintlig högre behörighet. Till exempel har att applicera en korrigering av CAN_USE för en användare som redan innehar CAN_MANAGE ingen effekt. Om du vill nedgradera eller ta bort en behörighet använder du PUT i stället.

Ersätt alla explicita behörigheter (PUT)

Varning

PUT ersätter hela den explicita ACL:en. Alla användare, grupper eller tjänstens huvudnamn som inte ingår i begärandetexten förlorar sin uttryckligen beviljade behörighet. Ärvda behörigheter (till exempel arbetsyteadministratörer) påverkas inte.

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"
      }
    ]
  }'

Fullständig api-referens för behörigheter finns i Behörighets-API.

CLI

databricks permissions Använd kommandona (som omsluter behörighets-API:et) för att hantera projektbehörigheter från kommandoraden.

Bevilja eller uppdatera behörigheter

# 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"
      }
    ]
  }'

Hämta aktuella behörigheter

databricks permissions get database-projects ${PROJECT_ID}

Anmärkning

Använd databricks permissions (inte databricks postgres) för projekt-ACL-hantering. Underkommandot databricks postgres hanterar projektresurser (grenar, beräkningar osv.), inte behörigheter.

SDK

Använd gränssnittet WorkspaceClient.permissions i Python, Java eller Go SDK för att hantera projektbehörigheter.

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-mjukvaruutvecklingskit

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,
})

Nästa steg