メインコンテンツまでスキップ

権限を管理する

備考

プレビュー

この機能は次のリージョンでパブリック プレビュー段階にあります: us-east-1us-west-2eu-west-1

Lakebase オートスケールは、オートスケール コンピュート、ゼロへのスケール、分岐、即時復元を備えた Lakebase の新しいバージョンです。 Lakebase プロビジョニングとの機能の比較については、 「バージョン間の選択」を参照してください。

Lakebase プロジェクトで Postgres ロールにデータベース権限を付与する方法を学習します。

前提条件: 権限を付与する前に、Postgres ロールを作成しておく必要があります。Lakebase UI を使用してネイティブの Postgres パスワード ロールを作成することも、 databricks_auth拡張機能を使用して Databricks ID の OAuth ロールを作成することもできます。「Postgres ロールの作成」を参照してください。

注記

Lakebase Postgres は 2 つの権限レイヤーを使用します。

  • プロジェクト権限は、 ブランチの作成やコンピュートの管理など、プラットフォーム レベルのアクションを制御します。 CAN MANAGE 権限には、すべての CAN CREATE 機能と完全な管理制御が含まれます。
  • Postgres ロールは、 データベース自体内のデータへのアクセスを制御します。

これらの権限は独立しており、ビジネスニーズに応じて個別に付与できます。

このページでは、Postgres ロールを通じて管理される データベース権限 について説明します。 プロジェクト権限 については、 「プロジェクト権限の管理」を参照してください。

新しいユーザーのアクセスを設定するためのステップバイステップのチュートリアルについては、 「チュートリアル: 新しいユーザーにプロジェクトとデータベースのアクセスを許可する」を参照してください。

事前に作成されたロールとデフォルトの権限

プロジェクトを作成すると、Lakebase によってアクセス レベルの異なる複数の Postgres ロールが自動的に作成されます。これらのデフォルト ロールを理解すると、追加の権限を付与するタイミングを決定するのに役立ちます。

事前に作成されたロール:

ロール

LOGIN

CREATEDB

CREATEROLE

複製

BYPASSRLS

<project_owner_role>

databricks_superuser

デフォルトの権限:

  • <project_owner_role> : プロジェクト作成者の Databricks ID (例: user@databricks.com )。デフォルトのdatabricks_postgresデータベースを所有します。databricks_superuserのメンバー (CREATEDB、CREATEROLE、および BYPASSRLS 権限を継承します)。さらに、ログインおよびレプリケーション権限も持っています。
  • databricks_superuser : すべてのデータベース、スキーマ、テーブル、およびシーケンスに対するすべての権限(付与付き)を持つ管理ロール。pg_stat_statements_reset()EXECUTE 。CREATEDB、CREATEROLE、および BYPASSRLS 権限を持ちます。ログインできません(NOLOGIN)。このロールは自動化されたアプリケーションでは使用しないでください。

詳細:事前作成されたロール

Postgresロールに権限を付与する

Postgres ロールを作成した後、ロールが特定のデータベース、スキーマ、およびテーブルにアクセスできるようにデータベース権限を付与する必要があります。デフォルトでは、新しく作成された Postgres ロールにはデータベース権限がありません。

権限を割り当てるには、標準の Postgres GRANTコマンドを使用します。

テーブルへの読み取りアクセスを許可します。

SQL
GRANT SELECT ON TABLE schema_name.table_name TO role_name;

テーブルへの書き込みアクセスを許可します。

SQL
GRANT INSERT, UPDATE, DELETE ON TABLE schema_name.table_name TO role_name;

データベースに対するすべての権限を付与します。

SQL
GRANT ALL PRIVILEGES ON DATABASE database_name TO role_name;

スキーマ レベルの権限を付与します。

SQL
-- Allow creating objects in a schema
GRANT CREATE ON SCHEMA schema_name TO role_name;

-- Allow using a schema (required to access objects within it)
GRANT USAGE ON SCHEMA schema_name TO role_name;

スキーマ内の既存のすべてのテーブルに対する権限を付与します。

SQL
-- Grant read access to all existing tables in a schema
GRANT SELECT ON ALL TABLES IN SCHEMA schema_name TO role_name;

-- Grant write access to all existing tables in a schema
GRANT INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA schema_name TO role_name;

スキーマ内の将来のテーブルに対する権限を付与します。

SQL
-- Grants permissions on future tables created by the current user.
ALTER DEFAULT PRIVILEGES IN SCHEMA schema_name GRANT SELECT ON TABLES TO role_name;

-- Grants permissions on future tables created by table_creator_role_name.
-- Note that only members of table_creator_role_name can run this command.
ALTER DEFAULT PRIVILEGES FOR ROLE table_creator_role_name IN SCHEMA schema_name GRANT SELECT ON TABLES TO role_name;

権限を取り消す:

SQL
REVOKE CONNECT ON DATABASE database_name FROM role_name;

詳細: PostgreSQL 権限ドキュメント

データベースの所有権

Postgres では、データベース所有者は、データベースを作成したか、所有権が割り当てられたロールです。データベースの所有権により包括的な権限が付与されます:

データベース所有者に付与される権限:

  • フルコントロール : データベースの削除を含む、データベースに対する完全なコントロール
  • すべての権限 : データベースに対する自動ALL PRIVILEGES ( CREATECONNECTTEMPORARY )
  • 権限の付与 : データベースに対する権限を他のロールに付与および取り消す機能
  • スキーマ作成 : データベース内にスキーマを作成できます
  • オブジェクトの所有権 : データベースにデフォルトで作成されるすべてのオブジェクトを所有します
  • データベースの変更 : データベースの設定とプロパティを変更できます

Lakebase プロジェクトの場合:

  • Databricks ID ロール (例: user@databricks.com ) は、デフォルトのdatabricks_postgresデータベースを所有しています
  • データベース所有者は、 GRANTステートメントを使用して権限を他のロールに委任できます。

詳しくは、PostgreSQLドキュメントの権限を参照してください。

Postgresの権限を確認する

これらの SQL クエリを使用して、プロジェクト内の権限とロールのメンバーシップを確認します。

すべての役割とその属性を一覧表示する

データベース内のすべてのロールとその機能を表示します。

SQL
SELECT rolname, rolsuper, rolinherit, rolcreaterole, rolcreatedb, rolcanlogin
FROM pg_roles
ORDER BY rolname;

ロールメンバーシップを確認する

特定のユーザーが属するロールを確認します。

SQL
SELECT r.rolname as "Role name"
FROM pg_roles r
JOIN pg_auth_members m ON r.oid = m.roleid
WHERE m.member = (SELECT oid FROM pg_roles WHERE rolname = '<your_role>');

ロールのテーブル権限を確認する

publicスキーマ内のテーブルに対するロールの権限を表示します。

SQL
SELECT
schemaname,
tablename,
has_table_privilege('<your_role>', schemaname||'.'||tablename, 'SELECT') as can_select,
has_table_privilege('<your_role>', schemaname||'.'||tablename, 'INSERT') as can_insert,
has_table_privilege('<your_role>', schemaname||'.'||tablename, 'UPDATE') as can_update,
has_table_privilege('<your_role>', schemaname||'.'||tablename, 'DELETE') as can_delete
FROM pg_tables
WHERE schemaname = 'public';

データベース接続権限を確認する

ロールがデータベースに接続できるかどうかを確認します。

SQL
SELECT has_database_privilege('<your_role>', 'lakebase', 'CONNECT');

ロールのメンバーを一覧表示する

databricks_superuserのメンバーであるすべてのロールを表示します:

SQL
SELECT
pg_get_userbyid(member) as member_role
FROM pg_auth_members
WHERE roleid = (SELECT oid FROM pg_roles WHERE rolname = 'databricks_superuser');

ロール継承階層を確認し、詳細な権限マトリックスを表示し、ロール管理者を検索するための追加の高度なクエリについては、Lakebase プロビジョニング ドキュメントの「Postgres ロールの管理」を参照してください。

次のステップ

  • Postgres ロールの管理- データベース アクセス用の追加の Postgres ロールを作成する
  • プロジェクトに接続- OAuthトークンまたはPostgresパスワードを使用してデータベースに接続します
  • データのクエリ- SQL エディタ、psql、またはその他の Postgres ツールを使用してデータベースをクエリします。