次の方法で共有


プログラムでアクセス許可を付与する

Important

Lakebase 自動スケールは、 eastuseastus2centralussouthcentraluswestuswestus2canadacentralbrazilsouthnortheuropeuksouthwesteuropeaustraliaeastcentralindiasoutheastasiaの各リージョンで使用できます。

Lakebase 自動スケールは、自動スケール コンピューティング、ゼロへのスケール、分岐、インスタント リストアを備えた最新バージョンの Lakebase です。 Lakebase プロビジョニング済みユーザーの場合は、「 Lakebase Provisioned」を参照してください。

Lakebase プロジェクトのアクセス許可は、標準の Azure Databricks Permissions API、Azure Databricks CLI、Azure Databricks SDK、Terraform を使用してプログラムで管理できます。

アクセス許可の種類、既定のアクセス許可、および Lakebase UI でアクセス許可を管理する方法の概要については、「 プロジェクトのアクセス許可の管理」を参照してください。

アクセス許可レベル

Lakebase プロジェクトの許可可能なアクセス許可レベルは、CAN_USECAN_MANAGE です。 CAN_CREATE は継承されたレベルであり、ワークスペースからすべてのユーザーに自動的に流れ、プロジェクトで明示的に許可または取り消すことはできません。 CAN_CREATE のアクセス権付与を試みると、API から HTTP 400 が返されます。

プロジェクト ID は UUID (たとえば、 a446ad92-e936-454b-a31c-a0742e53dd5c) です。 databricks postgres list-projectsを使用してデータを取得し、uidフィールドを確認してください。

REST API

プロジェクトのアクセス許可では、 /api/2.0/permissions/database-projects/{project_id}で標準の Azure Databricks Permissions API を使用します。

現在のアクセス許可を取得する

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

アクセス許可の付与または更新 (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"
      }
    ]
  }'

グループまたはサービス プリンシパルにアクセス許可を付与するには、 user_namegroup_name または service_principal_nameに置き換えます。

PATCH は追加的であり、既存の上位のアクセス許可をダウングレードすることはできません。 たとえば、既にCAN_USEを保持しているユーザーにCAN_MANAGEの修正プログラムを適用しても効果はありません。 アクセス許可をダウングレードまたは削除するには、代わりに PUT を使用します。

すべての明示的なアクセス許可を置き換える (PUT)

Warnung

PUT は、明示的な ACL 全体を置き換えます。 要求本文に含まれていないユーザー、グループ、またはサービス プリンシパルは、明示的に許可されたアクセス許可を失います。 継承されたアクセス許可 (ワークスペース管理者など) は影響を受けません。

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

完全なアクセス許可 API リファレンスについては、「 アクセス許可 API」を参照してください。

CLI

コマンド ラインからプロジェクトのアクセス許可を管理するには、 databricks permissions コマンド (Permissions API をラップ) を使用します。

アクセス許可の付与または更新

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

現在のアクセス許可を取得する

databricks permissions get database-projects ${PROJECT_ID}

プロジェクトの ACL 管理には databricks permissions ( databricks postgresではなく) を使用します。 databricks postgres サブコマンドは、アクセス許可ではなく、プロジェクト リソース (ブランチ、コンピューティングなど) を管理します。

SDK

Python、Java、または Go SDK の WorkspaceClient.permissions インターフェイスを使用して、プロジェクトのアクセス許可を管理します。

Python SDK

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

Java SDK

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

Go SDK (ソフトウェア開発キット)

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

databricks_permissions属性を持つdatabase_project_name リソースを使用して、プロジェクトのアクセス許可をコードとしてのインフラストラクチャとして管理します。 プロジェクトの作成、グループの例、宣言型の動作など、Terraform の完全なワークフローについては、「 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"
  }
}

完全なリソース リファレンスについては、 Terraform レジストリのdatabricks_permissionsを参照してください。

次のステップ