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

Postgresオブジェクトの所有権を移転する

備考

Lakebaseオートスケールは、オートスケールコンピュート、ゼロへのスケール、分岐、即時復元を備えたLakebaseの最新バージョンです。 サポートされているリージョンについては、 「リージョンの提供状況」を参照してください。Lakebaseプロビジョニング ユーザーの場合は、 Lakebaseプロビジョニング」を参照してください。

Lakebaseでは、一時的な共有ロールを中間ステップとして使用し、ロール間でPostgresオブジェクトの所有権を移転します。標準のALTER TABLE ... OWNER TOコマンドでは、これを直接行うことはできません。

注記

このページでは、 Databricksロールへの所有権の譲渡について説明します。 所有権を変更せずにオブジェクトへのアクセス権を付与するには、 「データベース権限の管理」を参照してください。

前提条件

  • 対象のDatabricksグループはワークスペース内に存在します。 グループを作成するには: レイクハウスで、 [設定] > [アイデンティティ] に移動し、 > [グループ] > [グループの追加] に アクセスします。
  • 現在のオブジェクト所有者は、対象グループのメンバーです。メンバーを追加するには: レイクハウスで、 [設定] > [ID] に移動し、 > [グループ] > [グループ] > [メンバーの追加] にアクセスします。
  • DatabricksグループにはPostgresロールが存在します。 グループにPostgresロールを追加するには、 「Databricks ID用のOAuthロールを作成する」を参照してください。

単一オブジェクトの所有権を移転する

  1. <current_owner>ロール(現在テーブルを所有しているロール)として接続し、一時的な共有所有権ロールを作成します。

    SQL
    CREATE ROLE temp_table_owners NOLOGIN;
  2. 一時ロールにスキーマ権限を付与する:

    SQL
    GRANT USAGE, CREATE ON SCHEMA public TO temp_table_owners;
  3. 現在の所有者と対象グループに、一時的な役割でのメンバーシップを付与する。

    SQL
    GRANT temp_table_owners TO "<current_owner>";
    GRANT temp_table_owners TO "<databricks_group_name>";
  4. テーブルの所有権を一時的なロールに譲渡します。

    SQL
    ALTER TABLE <target_table> OWNER TO temp_table_owners;
  5. Lakebaseプロジェクトで、 [接続] をクリックし、[役割]ドロップダウンで<databricks_group_name> ロール を選択して、 OAuthコピー]を クリックします。 。

  6. <databricks_group_name>ロールとして接続します:

    Bash
    export PGPASSWORD='<oauth_token>'
    psql -h <lakebase_hostname> -p 5432 \
    -d <database_name> \
    -U "<databricks_group_name>" \
    --set=sslmode=require
  7. テーブルをDatabricksロールに転送します。

    SQL
    ALTER TABLE <target_table> OWNER TO "<databricks_group_name>";
  8. 送金内容を確認してください。

    Text
    \dt

    <target_table> 所有者 列には<databricks_group_name>表示されます。

複数のオブジェクトの所有権を移転する

REASSIGN OWNED ロールが所有するすべてのオブジェクト(テーブル、ビュー、マテリアライズドビュー、シーケンス、関数、スキーマ、型など)を転送します。

  1. <current_owner>ロールとして接続し、一時的な共有所有権ロールを作成します。

    SQL
    CREATE ROLE temp_table_owners NOLOGIN;
  2. 一時ロールにスキーマ権限を付与する:

    SQL
    GRANT USAGE, CREATE ON SCHEMA public TO temp_table_owners;
  3. 現在の所有者と対象グループに、一時的な役割でのメンバーシップを付与する。

    SQL
    GRANT temp_table_owners TO "<current_owner>";
    GRANT temp_table_owners TO "<databricks_group_name>";
  4. 現在の所有者が所有するすべてのオブジェクトを一時的な役割に再割り当てします。

    SQL
    REASSIGN OWNED BY "<current_owner>" TO temp_table_owners;
  5. Lakebaseプロジェクトで、 [接続] をクリックし、[役割]ドロップダウンで<databricks_group_name> ロール を選択して、 OAuthコピー]を クリックします。 。

  6. <databricks_group_name>ロールとして接続します:

    Bash
    export PGPASSWORD='<oauth_token>'
    psql -h <lakebase_hostname> -p 5432 \
    -d <database_name> \
    -U "<databricks_group_name>" \
    --set=sslmode=require
  7. すべてのオブジェクトを一時ロールからDatabricksグループに再割り当てします。

    SQL
    REASSIGN OWNED BY temp_table_owners TO "<databricks_group_name>";
注記

REASSIGN OWNED 以下の動作をします。

  • 現在のデータベースコンテキストで実行されます。所有権を移転する必要のある各データベースで実行してください。
  • 所有権のみを再割り当てします。既存のGRANT権限やデフォルトの権限は変更されません。

次のステップ