跳至內容

如何在我的 Aurora PostgreSQL 相容版資料庫叢集中管理物件權限?

2 分的閱讀內容
0

我想了解如何在 Amazon Aurora PostgreSQL 相容版資料庫叢集中管理物件權限。

解決方法

若要管理 Aurora PostgreSQL 相容版資料庫叢集中的物件權限,請授予使用者或角色特定權限,以便對資料庫物件執行各種動作。

如需更多有關資料庫權限類型的資訊,請參閱 PostgreSQL 網站上的權限

**注意:**AWS 使用「permission」來表示「privilege」。

建立使用者並授予物件權限給使用者

請完成以下步驟:

  1. 使用 PostgreSQL 用戶端 (例如 psql) 連線至您 的 Aurora PostgreSQL 相容版叢集。
  2. 若要建立使用者,請執行以下命令:
    CREATE USER username WITH PASSWORD 'password';
    **注意:**請將 usernamepassword 替換為您的使用者名稱和密碼。
  3. 若要授予使用者或角色對物件執行動作的權限,請執行以下命令:
    GRANT privilege_type ON object_name TO user_or_role;
    **注意:**請將 privilege_type 替換為您希望使用者執行的資料庫動作。請將 object_name 替換為您希望使用者執行動作的資料庫物件。請將 user_or_role 替換為您希望指派物件權限的使用者或角色。

例如,您可以執行以下命令,將多個物件權限授予 user_or_role

GRANT SELECT, INSERT, UPDATE ON object_name TO user_or_role;

如需更多資訊,請參閱 PostgreSQL 網站上的 GRANT

撤銷使用者和角色的權限

若要移除使用者或角色的權限,請執行以下命令:

REVOKE privilege_type ON object_name FROM user_or_role;

**注意:**請將 privilege_type 替換為您希望移除的資料庫動作。請將 object_name 替換為資料庫物件。請將 user_or_role 替換為您希望移除權限的使用者或角色。

如需更多資訊,請參閱 PostgreSQL 網站上的 REVOKE

授予使用者最低必要權限

最佳實務是僅授予使用者或角色所需的權限。

若要檢閱資料表上的權限,請執行以下命令:

\z table_name

**注意:**請將 table_name 替換為您要檢閱的資料表名稱。

或者,您可以執行以下命令:

SELECT * FROM information_schema.table_privileges WHERE table_name = 'your_table';

為使用者群組建立並指派角色

最佳實務是為一組使用者建立角色,並將權限指派給角色,而不是個別使用者。如需更多資訊,請參閱 PostgreSQL 網站上的伺服器管理的資料庫角色資料庫角色

若要建立角色,並授予該角色對您資料庫中所有資料表的權限,請執行以下命令:

CREATE ROLE analyst_role;
GRANT SELECT ON ALL TABLES IN SCHEMA schema_name TO analyst_role;

**注意:**請將 schema_name 替換為您的結構描述名稱,並將 analyst_role 替換為您的角色名稱。

授予使用者和角色結構描述層級權限

若要授予使用者或角色結構描述層級權限,請執行以下命令:

GRANT USAGE ON SCHEMA schema_name TO user_or_role;

**注意:**請將 schema_name 替換為您的結構描述名稱,並將 user_or_role 替換為您的使用者或角色名稱。

為未來物件設定預設權限

若要將新資料表的預設權限設定為 readonly_role,請執行以下命令:

ALTER DEFAULT PRIVILEGES IN SCHEMA schema_name GRANT SELECT ON TABLES TO readonly_role;

**注意:**請將 schema_name 替換為您的結構描述名稱。

在使用者之間轉移物件擁有權

為避免安全性問題,請確保您管理物件擁有權。

若要將擁有權轉移給新的擁有者,請執行以下命令:

ALTER TABLE table_name OWNER TO new_owner;

**注意:**請將 table_name 替換為資料表名稱,並將 new_owner 替換為新擁有者名稱。

使用活動串流監控權限變更

若要監控資料庫活動,請為您的資料庫叢集啟動活動串流,並使用 databaseActivityEventList JSON 陣列。如需更多資訊,請參閱 databaseActivityEvents JSON 物件

排程定期權限檢閱

排程定期權限檢閱,並根據目前需求更新權限。

例如,您可以執行以下查詢,以檢視您在資料表和檢視表上授予的所有權限:

-- To view table and view privileges
SELECT
    grantee,
    table_schema,
    table_name,
    privilege_type
FROM
    information_schema.role_table_grants
ORDER BY
    grantee, table_schema, table_name, privilege_type;
-- List schema privileges
SELECT nspname, rolname, nspacl FROM pg_namespace n JOIN pg_roles r ON r.oid = n.nspowner;
-- Show all privileges for a specific role
SELECT table_catalog, table_schema, table_name, privilege_typeFROM information_schema.table_privilegesWHERE grantee = 'role_name';
-- Show role-specific schema privileges
SELECT n.nspname as schema_name,
       r.rolname as role_name,
       has_schema_privilege(r.oid, n.oid, 'CREATE') as has_create,
       has_schema_privilege(r.oid, n.oid, 'USAGE') as has_usageFROM pg_namespace nCROSS JOIN pg_roles rWHERE n.nspname NOT LIKE 'pg_%'
AND n.nspname != 'information_schema';
AWS 官方已更新 6 個月前