Azure Database for PostgreSQL の組み込みサーバー ロールについて説明する
PostgreSQL では、データベース アクセスの管理にロールが使われます。 ロールは、データベース ユーザーまたはユーザーのグループにできます。 ロールは次のことができます。
- テーブルや関数などのデータベース オブジェクトを所有します。
- それらのオブジェクトに対する特権を他のロールに割り当てます。
- 別のロールにメンバーシップを付与し、メンバー ロールがそれらの特権を持つことを許可します。
作成された Azure Database for PostgreSQL サーバーには、3 つの既定のロールがあります。
- azure_pg_admin
- azuresu
- サーバー管理者ユーザー - azure_pg_admin ロールの一部
すべてのサーバー ロールを表示するには、次のクエリを実行します。
SELECT * FROM pg_roles;
Note
Azure Database for PostgreSQL はマネージド PaaS サービスであり、Microsoft ユーザーだけが azuresu (スーパー ユーザー) ロールを持ちます。
サーバーを作成したときに、サーバー管理者ユーザーも作成されました。 このユーザーは、自動的に 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>;