Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Lakebase proje izinleri standart Azure Databricks İzinleri API'Azure Databricks CLI, Azure Databricks SDK'lar ve Terraform kullanılarak program aracılığıyla yönetilebilir.
İzin türlerine, varsayılan izinlere ve Lakebase kullanıcı arabirimindeki izinleri yönetmeye genel bakış için bkz. Proje izinlerini yönetme.
İzin düzeyleri
Lakebase projeleri için verilebilir izin düzeyleri CAN_USE ve CAN_MANAGE'dir.
CAN_CREATE , çalışma alanından tüm kullanıcılara otomatik olarak akan ve bir projede açıkça verilmeyen veya iptal edilemeyen devralınan bir düzeydir. API aracılığıyla CAN_CREATE tanımlama girişimleri HTTP 400 hatası döndürür.
İzinler API'si projeleri proje kimliğine (örneğin, my-app) göre tanımlar. Bu değeri Proje al ve Projeleri listele API'leri project_id tarafından döndürülen proje durumunun alanında bulabilirsiniz.
Uyarı
Alanı project_id REST API yanıtlarında kullanılabilir, ancak HENÜZ SDK veya CLI yanıt nesnelerinde kullanılamaz. SDK kullanıyorsanız, proje kimliğini name alanından ön eki çıkartarak ayıklayabilirsiniz (örneğin, projects/ olur projects/my-app).
REST API
Project izinleri, /api/2.0/permissions/database-projects/{project_id} konumunda standart Azure Databricks İzinleri API'sini kullanır.
Geçerli izinleri alma
curl -X GET "https://${DATABRICKS_HOST}/api/2.0/permissions/database-projects/${PROJECT_ID}" \
-H "Authorization: Bearer ${DATABRICKS_TOKEN}" | jq
İzinleri verme veya güncelleştirme (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"
}
]
}'
Bir grup veya hizmet sorumlusuna izin vermek için user_name'i group_name veya service_principal_name ile değiştirin.
Uyarı
PATCH ek bir özelliktir ve mevcut daha yüksek bir izni düşüremez. Örneğin, zaten CAN_USE sahibi olan bir kullanıcıya CAN_MANAGE yaması uygulamanın hiçbir etkisi yoktur. Bir izni düşürmek veya kaldırmak için bunun yerine PUT kullanın.
Tüm açık izinleri değiştirme (PUT)
Uyarı
PUT, tüm açık ACL'nin yerini alır. İstek gövdesine dahil olmayan tüm kullanıcı, grup veya hizmet sorumluları açıkça verilen izni kaybeder. Devralınan izinler (çalışma alanı yöneticileri gibi) etkilenmez.
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"
}
]
}'
İzinler API'si için tam referansa bakın İzinler API'si.
CLI
Komut satırından proje izinlerini yönetmek için İzinler API'sini sarmalayan databricks permissions komutlarını kullanın.
İzinleri verme veya güncelleştirme
# 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"
}
]
}'
Geçerli izinleri alma
databricks permissions get database-projects ${PROJECT_ID}
Uyarı
Proje ACL yönetimi için databricks permissions kullanın, databricks postgres değil. Alt databricks postgres komut, izinleri değil proje kaynaklarını (dallar, hesaplamalar vb.) yönetir.
SDK
Proje izinlerini yönetmek için Python, Java veya Go SDK'sında WorkspaceClient.permissions arabirimini kullanın.
Python SDK'sı
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'sı
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'sı
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,
})