Share via


Machtigingen programmatisch verlenen

Belangrijk

nl-NL: Lakebase Autoscaling is beschikbaar in de volgende regio's: eastus, eastus2, centralus, southcentralus, westus, westus2, canadacentral, brazilsouth, northeurope, uksouth, westeurope, australiaeast, centralindia, southeastasia.

Lakebase Autoscaling is de nieuwste versie van Lakebase, met automatisch schalen van rekenkracht, schaal-tot-nul, branching-functionaliteit en direct herstellen. Als u een door Lakebase ingericht gebruiker bent, raadpleegt u Lakebase Ingericht.

Machtigingen voor Lakebase-projecten kunnen programmatisch worden beheerd met behulp van de standaard Azure Databricks Permissions-API, de Azure Databricks CLI, Azure Databricks SDK's en Terraform.

Zie Projectmachtigingen beheren voor een overzicht van machtigingstypen, standaardmachtigingen en het beheren van machtigingen in de Gebruikersinterface van Lakebase.

Machtigingsniveaus

De toe te kennen machtigingsniveaus voor Lakebase-projecten zijn CAN_USE en CAN_MANAGE. CAN_CREATE is een overgenomen niveau dat automatisch van de werkruimte naar alle gebruikers stroomt en niet expliciet kan worden verleend of ingetrokken voor een project. Pogingen om CAN_CREATE te verlenen via de API geven een HTTP 400 foutmelding.

Project-id's zijn UUID's (bijvoorbeeld a446ad92-e936-454b-a31c-a0742e53dd5c). Haal uw gegevens op met databricks postgres list-projects en kijk naar het uid veld.

REST API

Projectmachtigingen maken gebruik van de standaard Azure Databricks Permissions-API op /api/2.0/permissions/database-projects/{project_id}.

Huidige machtigingen ophalen

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

Machtigingen verlenen of bijwerken (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"
      }
    ]
  }'

Verleen machtigingen aan een groep of service-principal door user_name te vervangen door group_name of service_principal_name.

Opmerking

PATCH is additief en kan een bestaande hogere machtiging niet downgraden. Het toepassen van CAN_USE op een gebruiker die al CAN_MANAGE bezit, heeft bijvoorbeeld geen effect. Als u een machtiging wilt downgraden of verwijderen, gebruikt u IN plaats daarvan PUT.

Alle expliciete machtigingen (PUT) vervangen

Waarschuwing

PUT vervangt de volledige expliciete ACL. Elke gebruiker, groep of service-principal die niet in de aanvraagbody is opgenomen, verliest de expliciet verleende machtiging. Overgenomen machtigingen (zoals werkruimtebeheerders) worden niet beïnvloed.

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

Zie Permissions-API voor de volledige naslaginformatie over de Permissions-API.

CLI

Gebruik de databricks permissions opdrachten (die de Machtigingen-API verpakken) om projectmachtigingen vanaf de opdrachtregel te beheren.

Machtigingen verlenen of bijwerken

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

Huidige machtigingen ophalen

databricks permissions get database-projects ${PROJECT_ID}

Opmerking

Gebruik databricks permissions (niet databricks postgres) voor project-ACL-beheer. De databricks postgres subopdracht beheert projectresources (vertakkingen, berekeningen, enzovoort), geen machtigingen.

SDK

Gebruik de WorkspaceClient.permissions interface in de Python-, Java- of Go-SDK om projectmachtigingen te beheren.

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 Softwareontwikkelingskit

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

Gebruik de databricks_permissions resource met een database_project_name kenmerk om projectmachtigingen als infrastructuur als code te beheren. Zie Projectmachtigingen beheren met Terraform voor een volledige Terraform-werkstroom, waaronder het maken van projecten, groepsvoorbeelden en declaratief gedrag.

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

Zie databricks_permissions in het Terraform-register voor de volledige bronverwijzing.

Volgende stappen