Azure Database for PostgreSQL - フレキシブル サーバーでユーザーを作成する

適用対象: Azure Database for PostgreSQL - フレキシブル サーバー

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

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

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

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 フレキシブル サーバーでより多くの管理者ユーザーを作成する方法

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

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

  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
    

次のステップ

新しいユーザーのマシンの IP アドレスについてファイアウォールを開き、接続できるようにします。