在適用於 PostgreSQL 的 Azure SQL 資料庫中授與權限

已完成

若要允許使用者存取裝載在適用於 PostgreSQL 的 Azure 資料庫伺服器上的資料庫,您必須建立角色 (使用者) 並授與或拒絕資料庫物件的使用權限。

在適用於 PostgreSQL 的 Azure 資料庫中建立資料庫使用者

  1. 在 Azure Data Studio (或您慣用的用戶端工具) 中,使用系統管理員登入認證連線到您的適用於 PostgreSQL 的 Azure 資料庫伺服器。

  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 - 您無法在適用於 PostgreSQL 的 Azure 資料庫內指派 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_admin 的成員,才能建立此角色。
  • BYPASSRLS | NOBYPASSRLS - 角色是否會略過每個資料列層級安全性 (RLS) 原則。
  • CONNECTION LIMIT connlimit - 指定可登入角色可以建立的同時連線數目。 預設值為 -1。 此參數不會限制同時連線數目。
  • [ ENCRYPTED ] PASSWORD 'password'| PASSWORD NULL - 設定角色的密碼。 只有具有 LOGIN 屬性的角色才會用到密碼。 如果未指定密碼,密碼為 NULL 且密碼驗證會失敗。 或者,明確陳述 PASSWORD NULL。
  • 有效期間到 'timestamp'- 角色密碼不再有效的日期和時間。 如果省略,則密碼沒有時間限制。
  • IN ROLE role_name - 新角色成為新成員時獲新增的一個或多個角色。 沒有選項可將新角色新增為系統管理員;請使用 GRANT 命令。
  • IN GROUP role_name IN ROLE 的已淘汰替代方案。
  • ROLE role_name - 一個或多個角色新增為新角色的成員。 (此變更實際上會讓新角色變成「群組」。)
  • ADMIN role_name - ADMIN 子句就像 ROLE,但具名角色會新增至新的角色 WITH ADMIN OPTION,讓他們有權將此角色的成員資格授與其他角色。

注意

您可以使用 ALTER ROLE 變更角色的屬性,並使用 DROP ROLE 移除角色。