Azure SQL Database for PostgreSQL でアクセス許可を付与する
Azure Database for PostgreSQL サーバーでホストされているデータベースへのアクセスをユーザーに許可するには、ロール (ユーザー) を作成し、データベース オブジェクトへの特権を付与または拒否する必要があります。
Azure Database for PostgreSQL でデータベース ユーザーを作成する
Azure Data Studio (または任意のクライアント ツール) で、管理者のサインイン資格情報を使って、Azure Database for PostgreSQL サーバーに接続します。
関連するデータベースを現在のデータベースにして、関連するオプションを指定して
CREATE ROLEを使い、新しいロール (ユーザー) を作成します。例として、次のクエリを実行します。
- testdb という新しいデータベースを作成します。
- 強力なパスワードを使う新しいユーザーを作成します。
- testdb データベースへの接続特権を付与します。
CREATE DATABASE testdb; CREATE ROLE <db_user> WITH LOGIN NOSUPERUSER INHERIT CREATEDB NOCREATEROLE NOREPLICATION PASSWORD '<StrongPassword!>'; GRANT CONNECT ON DATABASE testdb TO <db_user>;このクエリを試す場合、プレースホルダーを自分のユーザー情報に置き換えることができます。
その後、データベース内のオブジェクトに追加の特権を付与することができます。 例:
GRANT SELECT ON ALL TABLES IN SCHEMA <schema_name> TO <db_user>;
CREATE ROLE の構文は次のとおりです。
CREATE ROLE name [ [ WITH ] option [ ... ] ]
WHERE オプション は次のようになります。
SUPERUSER | NOSUPERUSER
| CREATEDB | NOCREATEDB
| CREATEROLE | NOCREATEROLE
| INHERIT | NOINHERIT
| LOGIN | NOLOGIN
| REPLICATION | NOREPLICATION
| BYPASSRLS | NOBYPASSRLS
| CONNECTION LIMIT connlimit
| [ ENCRYPTED ] PASSWORD 'password' | PASSWORD NULL
| VALID UNTIL 'timestamp'
| IN ROLE role_name [, ...]
| ROLE role_name [, ...]
| ADMIN role_name [, ...]
省略可能なパラメーターは次のとおりです。
- SUPERUSER |NOSUPERUSER - Azure Database for PostgreSQL 内で SUPERUSER 特権を割り当てることはできません。 指定しない場合は、NOSUPERUSER が既定値です。
- CREATEDB |NOCREATEDB - ロールがデータベースを作成できるかどうかを示します。 既定値は NOCREATEDB です。
- CREATEROLE |NOCREATEROLE - ロールが新しいロールを作成できるかどうか、つまり CREATE ROLE を実行します。 CREATEROLE 特権が付与された場合、そのロールは他のロールを変更およびドロップすることもできます。 NOCREATEROLE が既定値です。
- INHERIT | NOINHERIT - ロールが直接または間接に所属している他のロールの特権を引き継ぐかどうか。 INHERIT が既定値です。
- ログイン |NOLOGIN - ロールのサインインが許可されているかどうかを示します。 LOGIN 属性を持つロールはデータベース ユーザーです。 LOGIN 属性のないロールは、データベース特権の管理に使用できます。 NOLOGIN が既定値です。
- レプリケーション |NOREPLICATION - ロールがレプリケーション ロールであるかどうかを示します。 レプリケーション モードでサーバーに接続し、レプリケーション スロットを作成またはドロップするには、ロールにこの属性が必要です。 REPLICATION 属性は、レプリケーションのみに使用することが推奨される特権ロールです。 NOREPLICATION が既定値です。 このロールを作成するには、azure_pg_ 管理者のメンバーである必要があります。
- BYPASSRLS |NOBYPASSRLS - ロールがすべての行レベル セキュリティ (RLS) ポリシーをバイパスするかどうかを指定します。
- CONNECTION LIMIT connlimit - サインインできるロールが行うことができる同時接続の数を指定します。 -1 が既定値です。 このパラメーターでは、コンカレント接続数は制限されません。
- [ ENCRYPTED ] PASSWORD 'password'|PASSWORD NULL - ロールのパスワードを設定します。 パスワードは LOGIN 属性を持つロールによってのみ使われます。 パスワードを指定しない場合、パスワードは NULL になり、パスワード認証は失敗します。 または、PASSWORD NULL を明示的に記述します。
- VALID UNTIL 'timestamp'- ロールのパスワードが無効になった日付と時刻。 省略した場合、パスワードに時間制限はありません。
- IN ROLE role_name - 新しいロールを新しいメンバーとして追加する 1 つ以上のロールです。 新しいロールを管理者として追加するオプションはありません。GRANT コマンドを使用してください。
- IN GROUP role_name IN ROLE に代わる古い代替手段です。
- ROLE role_name - 1 つ以上のロールが新しいロールのメンバーとして追加されます。 (この変更により、新しいロールが グループになります)。
- ADMIN role_name - ADMIN 句は ROLE に似ていますが、名前付きロールは新しいロール WITH ADMIN OPTION に追加され、このロールのメンバーシップを他のユーザーに付与する権限が付与されます。
注
ALTER ROLE を使用してロールの属性を変更し、DROP ROLE を使用してロールを削除できます。