Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Importante
O Dimensionamento Automático do Lakebase é a versão mais recente do Lakebase, com computação de dimensionamento automático, escala para zero, ramificação e restauração instantânea. Para regiões com suporte, consulte a disponibilidade da região. Se você for um usuário provisionado do Lakebase, consulte Lakebase Provisioned.
As permissões de projeto do Lakebase podem ser gerenciadas programaticamente usando a API de Permissões de Azure Databricks padrão, a CLI Azure Databricks, os SDKs Azure Databricks e o Terraform.
Para obter uma visão geral dos tipos de permissão, permissões padrão e como gerenciar permissões na interface do usuário do Lakebase, consulte Gerenciar permissões de projeto.
Níveis de permissão
Os níveis de permissão que podem ser concedidos para projetos do 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 explicitamente concedido ou revogado em um projeto. As tentativas de concessão CAN_CREATE por meio da API retornam HTTP 400.
A API de Permissões identifica projetos por ID do projeto (por exemplo, my-app). Você pode encontrar esse valor no project_id campo do status do projeto retornado pelas APIs de projetos Get project e List.
Observação
O project_id campo está disponível em respostas da API REST, mas ainda não está disponível em objetos de resposta do SDK ou da CLI. Se você estiver usando um SDK, poderá extrair a ID do projeto do name campo removendo o projects/ prefixo (por exemplo, projects/my-app torna-se my-app).
API REST
As permissões de projeto usam a API de Permissões padrão do Azure Databricks em /api/2.0/permissions/database-projects/{project_id}.
Obter permissões atuais
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)
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.
Observação
PATCH é incremental e não pode reduzir uma permissão mais elevada existente. Por exemplo, aplicar o patch CAN_USE em um usuário que já possui CAN_MANAGE não tem efeito. Para fazer downgrade ou remover uma permissão, use PUT.
Substitua todas as permissões explícitas (PUT)
Aviso
PUT substitui toda a Lista de Controle de Acesso (ACL) explícita. Qualquer usuário, grupo ou entidade de serviço não incluído no corpo da solicitação perde a permissão explicitamente concedida. Permissões herdadas (como administradores de workspace) não são afetadas.
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 a API de Permissões.
CLI
Use os databricks permissions comandos (que encapsulam a API de Permissões) para gerenciar permissões de projeto da linha de comando.
Conceder ou atualizar permissões
# 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"
}
]
}'
Obter permissões atuais
databricks permissions get database-projects ${PROJECT_ID}
Observação
Use databricks permissions (não databricks postgres) para o gerenciamento de ACL do projeto. O databricks postgres subcomando gerencia recursos de projeto (branches, computação etc.), não permissões.
SDK
Use a interface WorkspaceClient.permissions no SDK de Python, Java ou Go para gerenciar permissões de projeto.
SDK do Python
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,
)
],
)
SDK do Java
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)
);
SDK do Go
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,
})