Azure HorizonDB でユーザーを管理する (プレビュー)

この記事では、Azure HorizonDB クラスター内にユーザーを作成する方法について説明します。

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

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

Azure HorizonDB クラスターを初めて作成するときは、クラスター管理者の認証名とパスワードを指定します。 詳細については、「Azure HorizonDB クラスターを作成するを参照して、詳細なアプローチを確認してください。 クラスター管理者の認証名はカスタム名であるため、Azure ポータルで選択したサーバー管理者ユーザー名を確認できます。

Azure HorizonDB クラスターは、3 つの既定のロールで作成されます。 次のコマンドを実行すると、これらのロールを確認できます。 SELECT rolname FROM pg_roles;

  • azure_pg_admin
  • azuresu
  • あなたのサーバー管理者ユーザー

管理者認証情報は、azure_pg_admin ロールに属しています。 ただし、管理者アカウントは azuresu ロールの一部ではありません。 このサービスはマネージド PaaS サービスであるため、スーパー ユーザー ロールの一部は Microsoft だけです。

PostgreSQL エンジンは、 PostgreSQL 製品ドキュメントで説明されているように、権限を使用してデータベース オブジェクトへのアクセスを制御します。 Azure HorizonDB では、サーバー管理者ユーザーには、LOGIN、NOSUPERUSER、INHERIT、CREATEDB、CREATEROLE の特権が付与されます。

クラスター管理者認証では、より多くのユーザーを作成し、それらのユーザーに azure_pg_admin ロールを付与できます。 また、クラスター管理者認証では、個々のデータベースとスキーマにアクセスできる特権の少ないユーザーとロールを作成できます。

Azure HorizonDB でより多くの管理者ユーザーを作成する方法

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

  2. 管理者アカウントとパスワードを使用して、Azure HorizonDB クラスターに接続します。 pgAdmin や psql などの任意のクライアント ツールを使用します。 接続方法がわからない場合は、「Azure HorizonDB クラスターの作成」を参照>。

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

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

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

Note

リソース名(例:テーブル名、データベース名)やリソースタグには、個人情報、機密情報を含めないでください。 これらの項目に入力したデータは顧客データとはみなされません。

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

  2. 管理者アカウントとパスワードを使用して、Azure HorizonDB クラスターに接続します。 PostgreSQL for Visual Studio Code、pgAdmin、psql など、任意のクライアント ツールを使用します。

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

    この SQL コードは新しいデータベースを作成し、その後、Azure HorizonDB クラスターに新しいユーザーを作成し、そのユーザーの新しいデータベースへの接続特権を付与します。

    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="{clustername}.{clusteridentifier}.{region}.horizondb.azure.com" --port=5432 --username=db_user --dbname=newdb