組み込みの Azure Database for PostgreSQL サーバー ロールについて説明する
PostgreSQL は、ロールを使用してデータベース アクセスを管理します。 ロールには、データベース ユーザーまたはユーザーのグループを指定できます。 ロールは次のことができます。
- テーブルや関数などのデータベース オブジェクトを所有します。
- これらのオブジェクトに対する権限を他のロールに割り当てます。
- 別のロールにメンバーシップを付与し、メンバー ロールに権限を付与します。
Azure Database for PostgreSQL サーバーは、次の 3 つの既定のロールで作成されます。
- azure_pg_admin
- アズレス
- サーバー管理者ユーザー - azure_pg_admin ロールの一部
次のクエリを実行して、すべてのサーバー ロールを表示します。
SELECT * FROM pg_roles;
手記
Azure Database for PostgreSQL はマネージド PaaS サービスであり、Azuresu (スーパー ユーザー) ロールを持つのは Microsoft ユーザーだけです。
サーバーを作成すると、サーバー管理者ユーザーも作成されました。 このユーザーは自動的に azure_pg_admin ロールのメンバーになりました。 Azure Database for PostgreSQL サーバー管理者ユーザーには、LOGIN、NOSUPERUSER、INHERIT、CREATEDB、CREATEROLE、REPLICATION という特権があります。
これで、サーバーの作成時に作成したサーバー管理者ユーザー アカウントで、次のことができます。
- さらに多くのユーザーを作成し、それらのユーザーに azure_pg_admin ロールを付与します。
- 個々のデータベースとスキーマにアクセスできる特権の少ないユーザーとロールを作成します。
PostgreSQL には、ユーザーに割り当てることができる既定のロールがいくつか含まれています。 これには、アクセスに一般的に必要な特権が含まれます。
- pg_read_all_settings
- pg_signal_backend
- pg_read_server_files
- pg_write_server_files
- pg_execute_server_program
さらに専門家の役割もあります。
- pg_monitor
- pg_read_all_stats
- pg_stat_scan_tables
- レプリケーション
Azure Database for PostgreSQL で管理者ユーザーを作成する
- Azure Data Studio (または任意のクライアント ツール) で、管理者サインイン資格情報を使用して Azure Database for PostgreSQL サーバーに接続します。
- プレースホルダーをユーザー名とパスワードに置き換えて、次の SQL コードを編集します。
CREATE ROLE <new_user> WITH LOGIN NOSUPERUSER INHERIT CREATEDB CREATEROLE NOREPLICATION PASSWORD '<StrongPassword!>';
GRANT azure_pg_admin TO <new_user>;