すべてのプロダクト
Search
ドキュメントセンター

ApsaraDB RDS:アカウント権限

最終更新日:May 20, 2024

このトピックでは、ApsaraDB RDSでPostgreSQLインスタンス用に作成された特権アカウントと標準アカウントの権限について説明します。

権限の説明

重要

データベースのセキュリティと安定性を確保するため、RDSインスタンスのデータベースアカウントにはpg_authidテーブルへのアクセス許可が付与されていません。 pg_rolesビューを使用して、データベースロールに関する情報を照会できます。

標準アカウント

RDSインスタンスの標準アカウントの権限は、オープンソースPostgreSQLの非特権アカウントの権限と同じです。 詳細は、「PostgreSQL 公式ドキュメント」をご参照ください。

特権アカウント

RDSインスタンスの特権アカウントには、標準アカウントのすべての権限に加えて、次の権限があります。

  • 2フェーズコミット (2PC) プロセス中に準備されたすべてのトランザクションをコミットします。

    説明
    • トランザクションに複数のデータベースまたはシステム間で実行する必要がある操作が含まれる場合、2PCプロトコルを使用してデータの一貫性を確保します。 2PCプロトコルは、関連するすべてのトランザクションがコミットまたはロールバックされることを保証します。

    • 詳細については、「SQL PREPARE TRANSACTION」をご参照ください。

  • テーブルに対してVACUUMステートメントを手動で実行します。

    説明

    VACUUMステートメントは、削除された行によって占有されているディスク領域を再利用し、統計を更新するために使用されます。 詳細については、「VACUUM」をご参照ください。

    サンプルSQL文

    • VACUUM文を実行して、データベース内のすべてのテーブルをバキュームします。 VACUUMステートメントが実行されると、デフォルトのVACUUMパラメーター設定が使用されます。

      VACUUM;
    • VACUUM FULLステートメントを実行して、データベース内のすべてのテーブルを永続的にバキュームします。 VACUUM FULLステートメントが実行されると、テーブルの物理ストレージが再編成され、未使用のディスク領域が再利用されます。 VACUUM FULLステートメントは、VACUUMステートメントよりも長い期間と多くのシステムリソースを必要とする場合があります。

      真空フル;
    • 特定のテーブルに対してVACUUMステートメントを実行します。 VACUUMステートメントを実行するテーブルを指定し、そのテーブルのカスタムVACUUMパラメーター設定を指定できます。

      VACUUM FULL <table_name>;

      table_nameは、テーブルの名前を指定します。

  • CREATE EVENT TRIGGERステートメントを実行してイベントトリガーを作成するか、イベントトリガーの所有者を特権アカウントの所有者に変更します。

    説明

    イベントトリガーの詳細については、「CREATE event trigger」をご参照ください。

    サンプルSQL文

    • イベントトリガーを作成します。

      シナリオ: test_triggerという名前のイベントトリガーを作成します。 イベントトリガーは、CREATE、ALTER、DROPなどのDDLステートメントが実行されるときにtest_function() 関数を呼び出すために使用されます。

      CREATE EVENT TRIGGER test_trigger
      ON ddl_command_end
      EXECUTE関数test_function(); 
    • イベントトリガーの所有者を変更します。

      ALTER EVENT TRIGGER test_trigger OWNER TO new_owner;

      new_owner: 変更後のイベントトリガーの所有者

  • CREATE EXTENSIONステートメントを実行して、拡張機能を作成します。 サポートされている拡張機能の詳細については、「ApsaraDB RDS For PostgreSQLでサポートされている拡張機能」をご参照ください。

    サンプルSQL文

    拡張の作成 <拡張機能名>;
  • 関数の作成時に関数のLEAKPROOFパラメーターを設定するか、関数のLEAKPROOFパラメーターを変更します。

    説明

    詳細については、「CREATE FUNCTION」をご参照ください。

    サンプルSQL文

    CREATE OR REPLACE FUNCTION test_function()
    リターン無効
    言語sql
    漏出
    AS $$
    -- 関数の実装コード
    $$; 
  • CREATE PUBLICATIONステートメントを実行して、パブリケーションを作成するか、パブリケーションの所有者を変更します。

    説明

    PostgreSQLでは、論理レプリケーション機能を使用してパブリケーションを作成します。 この機能は、データベースの変更を他のデータベースに適用します。

    サンプルSQL文

    • パブリケーションを作成します。 次のステートメントは一例です。 詳細については、「CREATE PUBLICATION」をご参照ください 。

      すべてのテーブルの出版物test_publicationを作成します。
    • パブリケーションの所有者を変更します。

      ALTER PUBLICATION <publication_name> 所有者 <new_owner>;
  • CREATE SUBSCRIPTIONステートメントを実行して、サブスクリプションを作成するか、サブスクリプションの所有者を変更します。

    説明

    PostgreSQLでは、論理レプリケーション機能を使用してサブスクリプションを作成します。 サブスクリプションを使用すると、システムはパブリケーションの変更をサブスクライブしたデータベースに適用できます。

    サンプルSQL文

    • サブスクリプションを作成します。 次のステートメントは一例です。 詳細については、「サブスクリプションの作成」をご参照ください。

      サブスクリプションの作成test_subscription
        CONNECTION 'host=<Publisher endpoint> port=<Publisher port> dbname=<データベース> ユーザー=<アカウント> パスワード=<パスワード>'
        出版物test_publication
        WITH (slot_name = <replication_slot_name>, create_slot = false); 

      test_publicationは、パブリッシャー上のパブリケーションの名前を指定します。

    • サブスクリプションの所有者を変更します。

      ALTERサブスクリプション <subscription_name> 所有者 <new_owner>;
  • テキスト検索機能を使用して、フルテキスト検索とテキストベースの照合を実行します。 詳細については、「全文検索」をご参照ください。

  • データ型の所有者を変更します。

    サンプルSQL文

    ALTER TYPE <type_name> 所有者 <new_owner>;
  • 特権アカウントを作成するか、標準アカウントを特権アカウントに変更します。

    サンプルSQL文

    -- アカウントを作成します。
    パスワードを使用してユーザー <ユーザー名> を作成する '<パスワード>';
    -アカウントを特権アカウントに変更します。
    GRANT pg_rds_superuser TO <user_name>; 
  • 特権アカウントとすべての標準アカウントのバックエンドプロセスを照会し、プロセスのpg_terminate_backend() などの関数を呼び出します。

    サンプルSQL文

    -- アカウントのすべてのバックエンドプロセスを照会する
    SELECT pid, datname, usename, application_name
    pg_stat_activityから
    WHERE usename = '<特権アカウントまたは標準アカウント>';
    
    -- pg_terminate_backend() 関数を呼び出して、プロセスを終了します。
    SELECT pg_terminate_backend(pid); 
  • pg_stat_activityビューから、特権アカウントとすべての標準アカウントのバックエンド接続設定を取得します。

    サンプルSQL文

    SELECT *
    pg_stat_activityから
    WHERE usename = '<特権アカウントまたは標準アカウント>'; 
  • 標準アカウントのオブジェクトに対してGRANTおよびREVOKEステートメントを実行します。 詳細については、「GRANT」および「REVOKE」をご参照ください。

    サンプルSQL文

    -- GRANTステートメントを実行して、DELETEステートメントを実行してテーブルから行を削除することを標準アカウントに許可します。
    <table_name> で <user_name> を許可します。-- REVOKEステートメントを実行して、権限を取り消します。
    REVOKE DELETE ON <table_name> から <user_name>; 
  • SET ROLEステートメントを実行して、現在のセッションの特権アカウントの権限を、指定された標準アカウントの権限に変更します。

    サンプルSQL文

    SET ROLE <標準アカウント>;

参考資料

詳細な方法で権限を管理する方法の詳細については、「ApsaraDB RDS For PostgeSQLインスタンスの権限の管理」をご参照ください。