Partage via


Accorder des autorisations par programmation

Important

La mise à l’échelle automatique Lakebase est disponible dans les régions suivantes : eastus, eastus2, centralus, southcentralus, westus, westus2, canadacentral, brazilsouth, northeurope, uksouth, westeurope, australiaeast, centralindia, southeastasia

La version Lakebase Autoscaling est la dernière de Lakebase, avec l'évolutivité automatique, la mise à l’échelle jusqu'à zéro, la création de branches et la restauration instantanée. Si vous êtes un utilisateur Lakebase Provisionné, consultez Lakebase Provisioned.

Les autorisations de projet Lakebase peuvent être gérées par programmation à l’aide de l’API Azure Databricks Permissions standard, de l’interface CLI Azure Databricks, des kits sdk Azure Databricks et de Terraform.

Pour obtenir une vue d’ensemble des types d’autorisations, des autorisations par défaut et de la gestion des autorisations dans l’interface utilisateur Lakebase, consultez Gérer les autorisations de projet.

Niveaux d’autorisation

Les niveaux d’autorisation pouvant être accordés pour les projets Lakebase sont CAN_USE et CAN_MANAGE. CAN_CREATE est un niveau hérité qui circule automatiquement de l’espace de travail vers tous les utilisateurs et ne peut pas être explicitement accordé ou révoqué sur un projet. Tente d’accorder CAN_CREATE via l’API retourne HTTP 400.

Les ID de projet sont des UUID (par exemple, a446ad92-e936-454b-a31c-a0742e53dd5c). Récupérez le vôtre databricks postgres list-projects et consultez le champ uid.

API REST

Les autorisations de projet utilisent l’API Azure Databricks Permissions standard à l’adresse /api/2.0/permissions/database-projects/{project_id}.

Obtenir les autorisations actuelles

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

Accorder ou mettre à jour des autorisations (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"
      }
    ]
  }'

Pour accorder des autorisations à un groupe ou un principal de service, remplacez user_name par group_name ou service_principal_name.

Note

PATCH est additif et ne peut pas rétrograder une autorisation supérieure existante. Par exemple, l'application de correctif CAN_USE sur un utilisateur qui détient déjà CAN_MANAGE n’a aucun effet. Pour rétrograder ou supprimer une autorisation, utilisez PUT au lieu de cela.

Remplacer toutes les autorisations explicites (PUT)

Avertissement

PUT remplace l'ensemble de l'ACL explicite. Tout utilisateur, groupe ou principal de service non inclus dans le corps de la demande perd son autorisation explicitement accordée. Les autorisations héritées (telles que les administrateurs d’espace de travail) ne sont pas affectées.

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

Pour obtenir la référence complète de l’API Autorisations, consultez l’API Autorisations.

CLI

Utilisez les databricks permissions commandes (qui encapsulent l’API Autorisations) pour gérer les autorisations de projet à partir de la ligne de commande.

Accorder ou mettre à jour des autorisations

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

Obtenir les autorisations actuelles

databricks permissions get database-projects ${PROJECT_ID}

Note

Utilisez databricks permissions (non databricks postgres) pour la gestion de liste de contrôle d’accès au projet. La databricks postgres sous-commande gère les ressources de projet (branches, calculs, etc.), et non les autorisations.

SDK

Utilisez l’interface dans le WorkspaceClient.permissions Kit de développement logiciel (SDK) Python, Java ou Go pour gérer les autorisations de projet.

Kit de développement logiciel (SDK) Python

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

Kit de développement logiciel (SDK) Java

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

Kit de développement logiciel (SDK) Go

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

Utilisez la ressource databricks_permissions avec un attribut database_project_name pour gérer les autorisations de projet comme infrastructure sous forme de code. Pour obtenir un flux de travail Terraform complet, notamment la création de projet, des exemples de groupes et un comportement déclaratif, consultez Gérer les autorisations de projet avec 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"
  }
}

Pour obtenir la référence complète des ressources, consultez databricks_permissions sur le Registre Terraform.

Étapes suivantes