Pular para o conteúdo principal

Conceder permissões programaticamente

info

O dimensionamento automático do Lakebase está disponível nas seguintes regiões: us-east-1, us-east-2, us-west-2, ca-central-1, sa-east-1, eu-central-1, eu-west-1, eu-west-2, ap-south-1, ap-southeast-1, ap-southeast-2.

O Lakebase autoscale é a versão mais recente do Lakebase com recursos como autoscale compute, escala-to-zero, branching e instant restore. Para comparação de recursos com o provisionamento do Lakebase, veja escolhendo entre versões.

As permissões do projeto Lakebase podem ser gerenciadas programaticamente usando a API de Permissões padrão Databricks , a CLI Databricks , os SDKs Databricks e Terraform.

Para obter uma visão geral dos tipos de permissão, permissões default e como gerenciar permissões na interface do usuário do Lakebase, consulte Gerenciar permissões do projeto.

Níveis de permissão

Os níveis de permissão concedíveis para projetos Lakebase são CAN_USE e CAN_MANAGE. CAN_CREATE é um nível herdado que flui automaticamente do workspace para todos os usuários e não pode ser concedido ou revogado explicitamente em um projeto. As tentativas de conceder CAN_CREATE através da API retornam HTTP 400.

Os IDs de projeto são UUIDs (por exemplo, a446ad92-e936-454b-a31c-a0742e53dd5c). Recupere o seu com databricks postgres list-projects e veja o campo uid .

API REST

As permissões do projeto usam a API de permissões padrão do Databricks em /api/2.0/permissions/database-projects/{project_id}.

Obter permissões atuais

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

Conceder ou atualizar permissões (PATCH)

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

Para conceder permissões a um grupo ou entidade de serviço, substitua user_name por group_name ou service_principal_name.

nota

O PATCH é aditivo e não pode rebaixar uma permissão superior existente. Por exemplo, atribuir CAN_USE a um usuário que já possui CAN_MANAGE não tem efeito. Para rebaixar ou remover uma permissão, use o método PUT.

Substituir todas as permissões explícitas (PUT)

atenção

O comando PUT substitui toda a ACL explícita. Qualquer usuário, grupo ou entidade de serviço que não esteja incluído no corpo da solicitação perde a permissão concedida explicitamente. Permissões herdadas (como administradores workspace ) não são afetadas.

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

Para obter a referência completa da API de Permissões, consulte API de Permissões.

CLI

Use o comando databricks permissions (que encapsula a API de Permissões) para gerenciar as permissões do projeto a partir da linha de comando.

Conceder ou atualizar permissões

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

Obter permissões atuais

Bash
databricks permissions get database-projects ${PROJECT_ID}
nota

Use databricks permissions (não databricks postgres) para gerenciamento de ACL de projeto. O subcomando databricks postgres gerencia o recurso do projeto (branches, compute, etc.), não as permissões.

SDK

Use a interface WorkspaceClient.permissions no SDK Python, Java ou Go para gerenciar permissões de projeto.

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

Terraform

Use o recurso databricks_permissions com um atributo database_project_name para gerenciar permissões de projeto como Infrastructure-as-Code. Para obter um fluxo de trabalho completo Terraform , incluindo criação de projetos, exemplos de grupos e comportamento declarativo, consulte gerenciar permissões de projeto com Terraform.

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

Para obter a referência completa do recurso, consulte databricks_permissions no Terraform Registry.

Próximos passos