另外,EnterpriseDB 公司的 PostgreSQL 企業版在 9.5 版之後提供相當於 Oracle Password Profile 的功能,在這一併簡要說明。
ALTER USERPASSWORD ' ';
上面相當於以下指定密碼未加密的樣子
ALTER USERUNENCRYPTED PASSWORD ' ';
指定密碼有加密的方式
ALTER USERENCRYPTED PASSWORD ' ';
另外,在 Postgres 裡面,可以設定無法用密碼登入的帳號,只要把他的密碼指定為 NULL 就好。這樣的帳號,只能在 $PGDATA/pg_hba.conf 裡面指定 trust 才有辦法登入:
ALTER USERENCRYPTED PASSWORD NULL;
接著來看看 pg_shadow
對 pg_shadow 這個 View,用 Super User 查詢。
postgres=# SELECT usename, passwd FROM pg_shadow;
usename | passwd
--------------+-------------------------------------
enterprisedb | md582030b182ac5e77bd93715f33362350d
user1 |
user2 | mypassword
(3 rows)
以上可見有加密和沒加密的差別,以及沒有密碼的帳號。用一般帳號查詢則會禁止
postgres=> SELECT * FROM pg_shadow; ERROR: permission denied for relation pg_shadow
如果一般帳號也想查詢一些帳號資訊,可以換成看 pg_user 這個系統的 View
postgres=> select usename, passwd from pg_user; usename | passwd --------------+---------- enterprisedb | ******** user1 | ******** user2 | ******** (3 rows)
EDB 公司的企業版 9.5 版引入的新功能 — 與 Oracle 相容的 Password Profile 功能。
裡面提供以下功能:
- FAILED_LOGIN_ATTEMPTS
- PASSWORD_LIFE_TIME
- PASSWORD_REUSE_TIME
- PASSWORD_REUSE_MAX
- PASSWORD_LOCK_TIME
- PASSWORD_GRACE_TIME
- PASSWORD_VERIFY_FUNCTION
其中的 PASSWORD_VERIFY_FUNCTION 則是自訂密碼管控的功能,可以放一個 Stored Procedure 檢查密碼的建立。
這些功能讓 EDB 企業版的 PostgreSQL 能夠控制密碼的過期、失敗次數等功能,在企業中是很需要的功能。
對照原先 Oracle 的 Password Profile 功能,共分成 resource_parameters 以及 password_parameters。以上的功能以實作出 password_parameters功能為主。EDB 企業版沒有實作的功能是 resource_parameters 內自動斷線以及帳戶登入數量的管控。至於 CPU 與記憶體用量控制,則是 EDB 企業版內建的另外一個功能,EDB Resource Manager 進行管理。
在使用 EDB Migration Toolkit 移轉 Oracle 資料庫到 EDB 企業版 PostgreSQL 資料庫的過程中,需要手動先把存放在 Oracle sys Sehema 底下的 Password Varify Function,手動取出,然後匯入 EDB 的其中目標 Database 裡面,再進行資料庫移轉,才能將原先 Oracle 上各帳號的 Password Policy 移轉過去。
參考資料:
沒有留言:
張貼留言