Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Oprávnění projektu Lakebase je možné spravovat programově pomocí standardního rozhraní API pro oprávnění Azure Databricks, rozhraní příkazového řádku Azure Databricks, sady SDK Azure Databricks a Terraformu.
Přehled typů oprávnění, výchozích oprávnění a jak spravovat oprávnění v uživatelském rozhraní Lakebase najdete v Správa oprávnění projektu.
Úrovně oprávnění
Udělovatelné úrovně oprávnění pro projekty Lakebase jsou CAN_USE a CAN_MANAGE.
CAN_CREATE je zděděná úroveň, která automaticky proudí z pracovního prostoru všem uživatelům a nelze ji explicitně udělit ani odvolat v projektu. Pokusy o udělení CAN_CREATE prostřednictvím rozhraní API vrátí HTTP 400.
Rozhraní API pro oprávnění identifikuje projekty podle ID projektu (například my-app). Tuto hodnotu najdete v poli project_id stavu projektu vráceném rozhraním API Get project a List projects.
Poznámka:
Pole project_id je k dispozici v odpovědích rozhraní REST API, ale zatím není k dispozici v objektech odpovědí sady SDK nebo rozhraní příkazového řádku. Pokud používáte sadu SDK, můžete id projektu name z pole extrahovat odebráním projects/ předpony (například projects/my-app se stane my-app).
REST API
Oprávnění projektů používají standardní rozhraní API pro správu oprávnění v Azure Databricks na adrese /api/2.0/permissions/database-projects/{project_id}.
Získání aktuálních oprávnění
curl -X GET "https://${DATABRICKS_HOST}/api/2.0/permissions/database-projects/${PROJECT_ID}" \
-H "Authorization: Bearer ${DATABRICKS_TOKEN}" | jq
Udělení nebo aktualizace oprávnění (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"
}
]
}'
Pokud chcete udělit oprávnění ke skupině nebo služebnímu účelu, nahraďte user_name s group_name nebo service_principal_name.
Poznámka:
FUNKCE PATCH je doplňková a nemůže downgradovat stávající vyšší oprávnění. Například aplikace opravy CAN_USE na uživatele, který už má CAN_MANAGE, nemá žádný vliv. Pokud chcete downgradovat nebo odebrat oprávnění, použijte místo toho put.
Nahraďte všechna explicitní oprávnění (PUT)
Výstraha
FUNKCE PUT nahrazuje celý explicitní seznam ACL. Jakýkoli uživatel, skupina nebo instanční objekt, který není součástí textu žádosti, ztratí explicitně udělené oprávnění. Zděděná oprávnění (například správci pracovního prostoru) nejsou ovlivněná.
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"
}
]
}'
Úplné referenční informace k rozhraní API pro oprávnění najdete v tématu Rozhraní API pro oprávnění.
CLI
Příkazy databricks permissions (které obalují rozhraní API pro oprávnění) použijte ke správě oprávnění projektu z příkazového řádku.
Udělení nebo aktualizace oprávnění
# 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"
}
]
}'
Získání aktuálních oprávnění
databricks permissions get database-projects ${PROJECT_ID}
Poznámka:
Použijte databricks permissions (ne databricks postgres) pro řízení seznamu ACL projektu. Podpříkaz databricks postgres spravuje prostředky projektu (větve, výpočty atd.), nikoli oprávnění.
sada SDK
Ke správě oprávnění projektu použijte rozhraní WorkspaceClient.permissions v sadě Python, Java nebo Go SDK.
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 SDK (vývojová sada pro 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,
})