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

Important

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 が返されます。

Permissions API は、プロジェクト ID ( my-app など) によってプロジェクトを識別します。 この値は、[プロジェクトの取得] API と [プロジェクトの一覧表示] API によって返されるプロジェクトの状態の project_id フィールドで確認できます。

project_id フィールドは REST API 応答で使用できますが、SDK または CLI 応答オブジェクトでは使用できません。 SDK を使用している場合は、name プレフィックスを削除することで、projects/ フィールドからプロジェクト ID を抽出できます (たとえば、projects/my-appmy-appになります)。

REST API

Project のアクセス許可では、/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 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"
      }
    ]
  }'

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

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

# 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 (ソフトウェア開発キット)

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

次のステップ