この記事では、Azure Database for PostgreSQL フレキシブル サーバー インスタンス内でユーザーを作成する方法について説明します。
Azure サブスクリプション ユーザーとその特権を作成および管理する方法を学習したいとします。 その場合は、 Azure ロールベースのアクセス制御 (Azure RBAC) に関する記事 にアクセスするか、 ロールをカスタマイズする方法を確認できます。
サーバー管理者アカウント
Azure Database for PostgreSQL フレキシブル サーバー インスタンスを初めて作成したときに、サーバー管理者のユーザー名とパスワードを指定しました。 詳細については、 Azure Database for PostgreSQL の作成に関 するページを参照して、詳細な方法を確認してください。 サーバー管理者ユーザー名はカスタム名であるため、Azure portal から選択したサーバー管理者ユーザー名を見つけることができます。
Azure Database for PostgreSQL フレキシブル サーバー インスタンスは、3 つの既定のロールが定義された状態で作成されます。 次のコマンドを実行すると、これらのロールを確認できます。 SELECT rolname FROM pg_roles;
- azure_pg_admin
- azuresu
- サーバー管理者ユーザー
サーバー管理者ユーザーは、azure_pg_admin ロールのメンバーです。 ただし、サーバー管理者アカウントは azuresu ロールの一部ではありません。 このサービスはマネージド PaaS サービスであるため、スーパー ユーザー ロールの一部は Microsoft だけです。
PostgreSQL エンジンは、 PostgreSQL 製品ドキュメントで説明されているように、権限を使用してデータベース オブジェクトへのアクセスを制御します。 Azure Database for PostgreSQL では、サーバー管理者ユーザーに次の特権が付与されます。
- サインイン、NOSUPERUSER、INHERIT、CREATEDB、CREATEROLE
サーバー管理者ユーザー アカウントを使用して、より多くのユーザーを作成し、それらのユーザーにazure_pg_adminロールを付与できます。 また、サーバー管理者アカウントを使用して、個々のデータベースとスキーマにアクセスできる特権の低いユーザーとロールを作成できます。
Azure Database for PostgreSQL でより多くの管理者ユーザーを作成する方法
接続情報と管理者ユーザー名を取得します。 Azure Database for PostgreSQL フレキシブル サーバー インスタンスに接続するには、完全なサーバー名と管理者のサインイン資格情報が必要です。 サーバー名とサインイン情報は、Azure portal のサーバー の [概要 ] ページまたは [プロパティ ] ページから簡単に見つけることができます。
管理者アカウントとパスワードを使用して、Azure Database for PostgreSQL フレキシブル サーバー インスタンスに接続します。 pgAdmin や psql などの任意のクライアント ツールを使用します。 接続方法がわからない場合は、「 Azure Database for PostgreSQL の作成」を参照してください。
次の SQL コードを編集して実行します。 新しいユーザー名を <new_user>プレースホルダーの値に置き換え、プレースホルダーパスワードを独自の強力なパスワードに置き換えます。
CREATE USER <new_user> CREATEDB CREATEROLE PASSWORD '<StrongPassword!>'; GRANT azure_pg_admin TO <new_user>;
Azure Database for PostgreSQL でデータベース ユーザーを作成する方法
接続情報と管理者ユーザー名を取得します。 Azure Database for PostgreSQL フレキシブル サーバー インスタンスに接続するには、完全なサーバー名と管理者のサインイン資格情報が必要です。 サーバー名とサインイン情報は、Azure portal のサーバー の [概要 ] ページまたは [プロパティ ] ページから簡単に見つけることができます。
管理者アカウントとパスワードを使用して、Azure Database for PostgreSQL フレキシブル サーバー インスタンスに接続します。 pgAdmin や psql などの任意のクライアント ツールを使用します。
次の SQL コードを編集して実行します。 プレースホルダーの値
<db_user>
を目的の新しいユーザー名に置き換え、プレースホルダーの値<newdb>
独自のデータベース名に置き換えます。 プレースホルダーのパスワードを、独自の強力なパスワードに置き換えます。次の SQL コードでは、新しいデータベースが作成され、Azure Database for PostgreSQL フレキシブル サーバー インスタンスに新しいユーザーが作成され、そのユーザーの新しいデータベースへの接続特権が付与されます。
CREATE DATABASE <newdb>; CREATE USER <db_user> PASSWORD '<StrongPassword!>'; GRANT CONNECT ON DATABASE <newdb> TO <db_user>;
管理者アカウントを使用して、データベース内のオブジェクトをセキュリティで保護するために、他の特権を付与することが必要になる場合があります。 データベース ロールと権限の詳細については、 PostgreSQL のドキュメント を参照してください。 例えば次が挙げられます。
GRANT ALL PRIVILEGES ON DATABASE <newdb> TO <db_user>;
ユーザーがテーブル "ロール" を作成した場合、そのテーブルはそのユーザーに属します。 別のユーザーがテーブルにアクセスする必要がある場合は、テーブル レベルで他のユーザーに権限を付与する必要があります。
例えば次が挙げられます。
GRANT SELECT ON ALL TABLES IN SCHEMA <schema_name> TO <db_user>;
新しいユーザー名とパスワードを使用して、指定されたデータベースを指定してサーバーにサインインします。 この例では、psql コマンド ラインを示します。 このコマンドを使用すると、ユーザー名のパスワードの入力を求められます。 独自のサーバー名、データベース名、およびユーザー名を置き換えます。
psql --host=mydemoserver.postgres.database.azure.com --port=5432 --username=db_user --dbname=newdb