Azure SQL Database for PostgreSQL でアクセス許可を付与する

完了

Azure Database for PostgreSQL サーバーでホストされているデータベースへのアクセスをユーザーに許可するには、ロール (ユーザー) を作成し、データベース オブジェクトへの特権を付与または拒否する必要があります。

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

  1. Azure Data Studio (または任意のクライアント ツール) で、管理者のサインイン資格情報を使って、Azure Database for PostgreSQL サーバーに接続します。

  2. 関連するデータベースを現在のデータベースにして、関連するオプションを指定して CREATE ROLE を使い、新しいロール (ユーザー) を作成します。

  3. 例として、次のクエリを実行します。

    1. testdb という新しいデータベースを作成します。
    2. 強力なパスワードを使う新しいユーザーを作成します。
    3. 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>;
    

    このクエリを試す場合、プレースホルダーを自分のユーザー情報に置き換えることができます。

  4. その後、データベース内のオブジェクトに追加の特権を付与することができます。 次に例を示します。

    GRANT SELECT ON ALL TABLES IN SCHEMA <schema_name> TO <db_user>;
    

CREATE ROLE の構文は次のとおりです。

CREATE ROLE name [ [ WITH ] option [ ... ] ]

この option には以下を指定できます。

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 が既定値です。
  • LOGIN | NOLOGIN - ロールにサインインを許可するかどうかを指定します。 LOGIN 属性を持つロールは、データベース ユーザーです。 LOGIN 属性のないロールは、データベース特権の管理に使用できます。 NOLOGIN が既定値です。
  • REPLICATION | 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 に追加され、このロールのメンバーシップを他のユーザーに付与する権限が付与されます。

Note

ALTER ROLE を使ってロールの属性を変更し、DROP ROLE を使ってロールをドロップすることができます。