MathJax

MathJax-2

MathJax-3

Google Code Prettify

置頂入手筆記

EnterproseDB Quickstart — 快速入門筆記

由於考慮採用 EnterpriseDB 或是直接用 PostgreSQL 的人,通常需要一些入手的資料。這邊紀錄便提供相關快速上手的簡單筆記 ~ 這篇筆記以 資料庫安裝完畢後的快速使用 為目標,基本紀錄登入使用的範例:

2017年3月7日 星期二

關於 PostgreSQL 裡面的密碼設置,與 EDB 企業版的 Password Profile

PostgreSQL 裡面設定密碼,密碼可以在 pg_shadow 這個系統 View 裡面查找,讓人感覺毛毛的。要怎樣才能不顯示明碼?

另外,EnterpriseDB 公司的 PostgreSQL 企業版在 9.5 版之後提供相當於 Oracle Password Profile 的功能,在這一併簡要說明。
pg_shadow 這個系統的 View,限制 Super User 才能存取;但是一般公司還是會希望不要直接能夠看到密碼內容,因此建議用加密的方式設置密碼。

一般改密碼的方式如下,預設是沒有加密
ALTER USER  PASSWORD '';

上面相當於以下指定密碼未加密的樣子
ALTER USER  UNENCRYPTED PASSWORD '';

指定密碼有加密的方式
ALTER USER  ENCRYPTED PASSWORD '';

另外,在 Postgres 裡面,可以設定無法用密碼登入的帳號,只要把他的密碼指定為 NULL 就好。這樣的帳號,只能在 $PGDATA/pg_hba.conf 裡面指定 trust 才有辦法登入:
ALTER USER  ENCRYPTED 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 移轉過去。 



參考資料:

沒有留言:

張貼留言