Azure Database for PostgreSQL フレキシブル サーバーでユーザーを管理する

この記事では、Azure Database for PostgreSQL フレキシブル サーバー内にユーザーを作成する方法について説明します。

Azure サブスクリプションのユーザーとその特権を作成および管理する方法については、Azure のロールベースのアクセス制御 (Azure RBAC) に関する記事を参照するか、ロールをカスタマイズする方法を確認してください。

サーバー管理者アカウント

Azure Database for PostgreSQLフレキシブル サーバーを初めて作成するときは、サーバー管理者のユーザー名とパスワードを指定します。 詳細については、 Azure Database for PostgreSQL の作成に関 するページを参照して、詳細な方法を確認してください。 サーバー管理者ユーザー名はカスタム名であるため、Azure ポータルから選択したサーバー管理者ユーザー名を見つけることができます。

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 でより多くの管理者ユーザーを作成する方法

  1. 接続情報と管理者ユーザー名を取得します。 Azure Database for PostgreSQL フレキシブル サーバーに接続するには、完全なサーバー名と管理者のサインイン資格情報が必要です。 サーバー名とサインイン情報は、Azure portal のサーバー の [概要 ] ページまたは [プロパティ ] ページから簡単に見つけることができます。

  2. 管理者アカウントとパスワードを使用して、Azure Database for PostgreSQLフレキシブル サーバーに接続します。 pgAdmin や psql などの任意のクライアント ツールを使用します。 接続方法がわからない場合は、「 Azure Database for PostgreSQL の作成」を参照してください。

  3. 次の SQL コードを編集して実行します。 新しいユーザー名を <new_user>プレースホルダーの値に置き換え、プレースホルダー のパスワードを独自の強力なパスワードに置き換えます。

    CREATE USER <new_user> CREATEDB CREATEROLE PASSWORD '<StrongPassword!>';
    
    GRANT azure_pg_admin TO <new_user>;
    

Azure Database for PostgreSQL でデータベース ユーザーを作成する方法

  1. 接続情報と管理者ユーザー名を取得します。 Azure Database for PostgreSQL フレキシブル サーバーに接続するには、完全なサーバー名と管理者のサインイン資格情報が必要です。 サーバー名とサインイン情報は、Azure portal のサーバー の [概要 ] ページまたは [プロパティ ] ページから簡単に見つけることができます。

  2. 管理者アカウントとパスワードを使用して、Azure Database for PostgreSQLフレキシブル サーバーに接続します。 pgAdmin や psql などの任意のクライアント ツールを使用します。

  3. 次の 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>;
    
  4. 管理者アカウントを使用して、データベース内のオブジェクトをセキュリティで保護するために、他の特権を付与することが必要になる場合があります。 データベース ロールと権限の詳細については、 PostgreSQL のドキュメント を参照してください。 例えば次が挙げられます。

    GRANT ALL PRIVILEGES ON DATABASE <newdb> TO <db_user>;
    

    ユーザーがテーブル "ロール" を作成した場合、そのテーブルはそのユーザーに属します。 別のユーザーがテーブルにアクセスする必要がある場合は、テーブル レベルで他のユーザーに権限を付与する必要があります。

    例えば次が挙げられます。

    GRANT SELECT ON ALL TABLES IN SCHEMA <schema_name> TO <db_user>;
    
  5. 新しいユーザー名とパスワードを使用して、指定されたデータベースを指定してサーバーにサインインします。 この例では、psql コマンド ラインを示します。 このコマンドを使用すると、ユーザー名のパスワードの入力を求められます。 独自のサーバー名、データベース名、およびユーザー名を置き換えます。

    psql --host=mydemoserver.postgres.database.azure.com --port=5432 --username=db_user --dbname=newdb