この記事では、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 でより多くの管理者ユーザーを作成する方法
接続情報と管理者ユーザー名を取得します。 Azure HorizonDB クラスターに接続するには、完全なサーバー名と管理者のサインイン資格情報が必要です。 サーバー名とサインイン情報は、Azure portal のサーバー の [概要 ] ページまたは [プロパティ ] ページから簡単に見つけることができます。
管理者アカウントとパスワードを使用して、Azure HorizonDB クラスターに接続します。 pgAdmin や psql などの任意のクライアント ツールを使用します。 接続方法がわからない場合は、「Azure HorizonDB クラスターの作成」を参照>。
次の SQL コードを編集して実行します。 新しいユーザー名を
<new_user>プレースホルダーの値に置き換え、プレースホルダー のパスワードを独自の強力なパスワードに置き換えます。CREATE USER <new_user> CREATEDB CREATEROLE PASSWORD '<StrongPassword!>'; GRANT azure_pg_admin TO <new_user>;
Azure HorizonDB でデータベース ユーザーを作成する方法
Note
リソース名(例:テーブル名、データベース名)やリソースタグには、個人情報、機密情報を含めないでください。 これらの項目に入力したデータは顧客データとはみなされません。
接続情報と管理者ユーザー名を取得します。 Azure HorizonDB クラスターに接続するには、完全なサーバー名と管理者のサインイン資格情報が必要です。 サーバー名とサインイン情報は、Azure portal のサーバー の [概要 ] ページまたは [プロパティ ] ページから簡単に見つけることができます。
管理者アカウントとパスワードを使用して、Azure HorizonDB クラスターに接続します。 PostgreSQL for Visual Studio Code、pgAdmin、psql など、任意のクライアント ツールを使用します。
次の SQL コードを編集して実行します。 プレースホルダーの値
<db_user>を目的の新しいユーザー名に置き換え、プレースホルダーの値<newdb>独自のデータベース名に置き換えます。 プレースホルダーのパスワードを、独自の強力なパスワードに置き換えます。この SQL コードは新しいデータベースを作成し、その後、Azure HorizonDB クラスターに新しいユーザーを作成し、そのユーザーの新しいデータベースへの接続特権を付与します。
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="{clustername}.{clusteridentifier}.{region}.horizondb.azure.com" --port=5432 --username=db_user --dbname=newdb