チュートリアル: 新しいユーザーにプロジェクトとデータベースへのアクセスを許可する
プレビュー
Lakebase Postgres (オートスケール Preview) は 、次のリージョンで利用できます: us-east-1 、 us-west-2 、 eu-west-1 。
Lakebase オートスケール Preview は Lakebase の新しいバージョンです。 オートスケールコンピュート、分岐、インスタントリストアなどの高度な機能をサポートします。 Lakebase の以前のバージョンについては、 「Lakebase プロビジョニング プレビュー」を参照してください。 どのバージョンが適しているかを判断するには、バージョンの選択を参照してください。
Lakebase プロジェクトとデータベースへのアクセス権を持つ新しいユーザーを設定する方法を学習します。このチュートリアルでは、プロジェクト レベルの権限 (Lakebase リソースを管理するため) とデータベース レベルの権限 (Postgres を介してデータにアクセスするため) の両方について説明します。
2つの許可システムについて
Lakebase Postgres は 2 つの権限レイヤーを使用します。
-
プロジェクト権限 (ACL) : ブランチの作成、コンピュートの管理、プロジェクト設定の管理など、プラットフォーム レベルのアクションを制御します。 これらは Lakebase アプリを通じて管理されます。
-
Postgres ロール権限 : データベース自体内のデータへのアクセスを制御します。これらは標準の Postgres
GRANTコマンドを通じて管理されます。
これらのシステムには 自動同期機能はありません 。組織の要件に応じて、これらの権限を個別にまたはまとめて付与できます。
- プラットフォーム アクセスとデータベース アクセスを必要とするユーザーに両方のレイヤーを付与します。
- インフラストラクチャを管理するが、データをクエリする必要がないユーザーには、プロジェクト権限のみを付与します。
- データのクエリを実行する必要があるが、Lakebase リソースを管理する必要がないユーザーには、データベース アクセスのみを許可します (接続の詳細を含む
psqlなどのツールを使用して接続できます)。
このチュートリアルでは、両方のアクセス層を設定する方法を説明します。
- ユーザーが Lakebase プラットフォーム リソースを操作できるようにプロジェクト権限を付与します (このチュートリアルでは、フル アクセスに CAN MANAGE を使用します)
- データベースに接続してクエリを実行するための適切なデータベース権限を持つ Postgres ロールを作成します。
デフォルトの権限
すべてのワークスペース ユーザーは、デフォルトで CAN CREATE 権限を継承し、プロジェクトの表示と作成を許可します。プロジェクトのリソースとデータベースへの追加アクセス権を付与するには、追加の権限を明示的に割り当てる必要があります。
前提条件
- データベースを備えたLakebaseプロジェクト
- ワークスペース管理者またはプロジェクトに対するCAN MANAGE権限
- プロジェクトが作成された同じワークスペース内のユーザーのDatabricks ID (電子メール アドレス)
シナリオ: 読み取り/書き込みアクセス権を持つデータアナリストを追加する
以下を必要とするAlex Lopezという名前のデータ アナリストを追加する手順を見てみましょう。
- ブランチ、コンピュート、データベースを作成および管理する機能 ( CAN MANAGE )
- Postgres データベースの
publicスキーマ内のテーブルへの読み取りおよび書き込みアクセス - 分析用の新しいテーブルを作成する機能
ステップ 1: プロジェクト権限を付与する
まず、ユーザーに CAN MANAGE 権限を付与して、プロジェクト管理アクションを実行できるようにします。
- Lakebase アプリでプロジェクトに移動します。
- 左側のサイドバーの 「設定」を クリックします。
- 「プロジェクト権限」 セクションまでスクロールします。
- [権限を付与] をクリックします。
- ユーザーを検索して選択します。
- CAN MANAGE 権限を選択します。
- 付与 をクリックします。

CAN MANAGE で可能なこと:
- ブランチの作成と削除
- コンピュートの管理とプロジェクト設定の構成
- データベースとPostgresロールの作成と管理
- プロジェクト運営の完全なコントロール
CAN MANAGE は、他の多くのアクションを含む、プロジェクトに対する完全な制御を付与します。すべての権限レベルと各レベルで許可される特定のアクションの完全なリストについては、 Lakebase プロジェクト ACL を参照してください。
ステップ 2: ユーザーの Postgres ロールを作成する
次に、Alex が OAuth トークンを使用して Databricks ID を使用して認証できるようにする OAuth ロールを作成します。プロジェクトオーナーとして、ロールを作成するために必要な権限を持っています。
-
Lakebase SQL エディターを開き、プロジェクトに接続します。
-
databricks_auth拡張機能を作成します(まだ有効になっていない場合)。SQLCREATE EXTENSION IF NOT EXISTS databricks_auth; -
databricks_create_role関数を使用して、Alex の OAuth Postgres ロールを作成します。SQLSELECT databricks_create_role('alex.lopez@databricks.com', 'USER');
これにより、次の OAuth ロールが作成されます。
- Databricks ID と同じ名前です (
alex.lopez@databricks.com) - OAuthを使用した認証が可能
- ログイン権限がある
- まだデータベース権限がありません(次に付与します)
OAuth ロールについて:
- OAuth ロールは、時間制限のあるトークンを使用して認証します (1 時間後に期限切れになります)
- ユーザーはLakebaseアプリの接続ダイアログからトークンを取得します
- インタラクティブセッションやワークスペース統合ワークフローに最適
- 詳細については、 「認証について」を参照してください。
ステップ 3: Postgres データベースのアクセス許可を付与する
次に、Alex に必要なデータベース権限を付与します。publicスキーマへの読み取り/書き込みアクセス権を付与します。
-- Grant CONNECT permission on the database
GRANT CONNECT ON DATABASE databricks_postgres TO "alex.lopez@databricks.com";
-- Grant USAGE permission on the public schema (required to access objects in it)
GRANT USAGE ON SCHEMA public TO "alex.lopez@databricks.com";
-- Grant CREATE permission on the public schema (allows creating new tables)
GRANT CREATE ON SCHEMA public TO "alex.lopez@databricks.com";
-- Grant read-write access to all existing tables in public schema
GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA public TO "alex.lopez@databricks.com";
-- Grant permissions on future tables (so Alex can access new tables automatically)
ALTER DEFAULT PRIVILEGES IN SCHEMA public
GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO "alex.lopez@databricks.com";
-- Grant permission to use sequences (needed for SERIAL columns)
GRANT USAGE, SELECT ON ALL SEQUENCES IN SCHEMA public TO "alex.lopez@databricks.com";
-- Grant permissions on future sequences
ALTER DEFAULT PRIVILEGES IN SCHEMA public
GRANT USAGE, SELECT ON SEQUENCES TO "alex.lopez@databricks.com";
これらの権限で許可される内容:
CONNECT: データベースに接続するUSAGEスキーマ上: スキーマ内のオブジェクトにアクセスするCREATEスキーマについて: 新しいテーブル、ビュー、関数を作成するSELECT, INSERT, UPDATE, DELETEテーブル: データの読み取りと書き込み- シーケンス権限: 自動増分列を使用する
ステップ 4: 接続をテストする
Alex にデータベースに接続してアクセスできるかどうか確認してもらいます。
Lakebase SQL エディターの使用:
-
Alex は Lakebase アプリを開き、プロジェクトに移動します。
-
Alex は Lakebase SQL エディターを開きます。
-
SQL エディターでは、Alex は次のクエリを実行して権限を確認できるはずです。
SQL-- Check role memberships
SELECT rolname FROM pg_roles WHERE rolname = 'alex.lopez@databricks.com';
-- Verify can read data
SELECT * FROM your_table LIMIT 5;
-- Verify can write data
INSERT INTO your_table (column1, column2) VALUES ('test', 'value');
-- Verify can create tables
CREATE TABLE alex_analysis (
id SERIAL PRIMARY KEY,
notes TEXT,
created_at TIMESTAMP DEFAULT NOW()
);
あるいは、psql を使用します。
Alex はpsqlなどの外部ツールからも接続できます。
- プロジェクトダッシュボードから、 「接続」 をクリックします。
- ブランチ、コンピュート、データベースを選択します。
- 「ロール」 ドロップダウンから、
alex.lopez@databricks.comを選択します。 psql接続スニペットをコピーします。- OAuthをコピー] を クリックして認証を取得します。
- コピーした
psqlコマンドを使用して接続し、パスワードの入力を求められた場合は OAuth トークンを入力します。 - 上記と同じ検証クエリを実行します。
代替案: 読み取り専用データベースアクセス
データに変更を加えずにクエリを実行するだけのユーザーには、同じプロジェクト権限を付与しますが、より制限の厳しいデータベース権限を使用します。
プロジェクト権限
データベース、ロール、その他のプロジェクト操作の作成を許可するには、 CAN MANAGE を 付与します。
データベース権限
-- Create OAuth role
SELECT databricks_create_role('analyst@databricks.com', 'USER');
-- Grant CONNECT permission
GRANT CONNECT ON DATABASE databricks_postgres TO "analyst@databricks.com";
-- Grant USAGE on the public schema
GRANT USAGE ON SCHEMA public TO "analyst@databricks.com";
-- Grant SELECT-only access to all existing tables
GRANT SELECT ON ALL TABLES IN SCHEMA public TO "analyst@databricks.com";
-- Grant SELECT-only access to future tables
ALTER DEFAULT PRIVILEGES IN SCHEMA public
GRANT SELECT ON TABLES TO "analyst@databricks.com";
-- Grant USAGE on sequences (needed to view sequence values)
GRANT USAGE ON ALL SEQUENCES IN SCHEMA public TO "analyst@databricks.com";
これにより、次の権限が付与されます:
- すべてのテーブルへの読み取りアクセス
- データベース構造の表示
- データの変更はできません(INSERT、UPDATE、DELETE はできません)
- テーブルやその他のオブジェクトを作成できません
グループとサービスプリンシパルの操作
同じプロセスに従って、 Databricksとサービスプリンシパルへのアクセスを許可できます。 Lakebase アプリ UI を通じてプロジェクト権限を付与し、 databricks_create_role()を使用して OAuth ロールを作成し、データベース権限を付与します。詳細については、グループとサービスプリンシパルをご覧ください。
ネイティブのPostgresパスワードロールの使用
OAuth ロールの代わりに、トークンを 1 時間ごとに更新できないアプリケーション、長時間実行されるプロセス、または OAuth をサポートしていない外部ツール用に、ネイティブの Postgres パスワード ロールを作成できます。パスワード ロールの作成と管理の手順については、 「Postgres ロールの管理」を参照してください。