共用方式為


為已啟用 Azure Arc 的 PostgreSQL 伺服器設定安全性

本文件說明與伺服器群組安全性相關的各種層面:

  • 待用加密
  • Postgres 角色和使用者管理
    • 一般檢視方塊
    • 變更 postgres 系統管理使用者的密碼
  • Audit

注意

作為預覽功能,本文所述的技術受限於 Microsoft Azure 預覽版增補使用規定

版本資訊中提供的最新更新。

待用加密

您可以加密資料庫儲存所在的磁碟,和/或使用資料庫函式來加密您所插入或更新的資料,藉以實作待用加密。

硬體:Linux 主機磁碟區加密

實作系統資料加密,以保護已啟用 Azure Arc 的資料服務設定所使用的磁碟上存放的任何資料。 您可以深入了解此主題:

軟體:在您的伺服器群組中使用 PostgreSQL pgcrypto 延伸模組

除了加密用來裝載 Azure Arc 設定的磁碟以外,您還可以設定已啟用 Azure Arc 的 PostgreSQL 伺服器,以公開應用程式可用來對資料庫中的資料進行加密的機制。 pgcrypto 延伸模組是 Postgres contrib 延伸模組的一部分,可在已啟用 Azure Arc 的 PostgreSQL 伺服器中使用。 您可以在這裡找到 pgcrypto 延伸模組的詳細資料。 總之,您可以使用下列命令來啟用、建立及使用延伸模組:

建立 pgcrypto 延伸模組

使用您選擇的用戶端工具連線至伺服器群組,並執行標準 PostgreSQL 查詢:

CREATE EXTENSION pgcrypto;

這裡可找到關於如何連線的詳細資料。

確認已準備好在伺服器群組中使用的延伸模組清單

您可以列出伺服器群組中可用的延伸模組,以確認 pgcrypto 延伸模組已可供使用。 使用您選擇的用戶端工具連線至伺服器群組,並執行標準 PostgreSQL 查詢:

select * from pg_extension;

如果您使用上述命令加以啟用並建立,則應該會看到 pgcrypto

使用 pgcrypto 延伸模組

現在,您可以調整應用程式的程式碼,使其使用 pgcrypto 所提供的任何函式:

  • 一般雜湊函式
  • 密碼雜湊函式
  • PGP 加密函式
  • 原始加密函式
  • 隨機資料函式

例如,用來產生雜湊值。 執行 命令:

select crypt('Les sanglots longs des violons de l_automne', gen_salt('md5'));

傳回下列雜湊:

              crypt
------------------------------------
 $1$/9ACBYOV$z52PAGjQ5WTU9xvEECBNv/   

或者,例如:

select hmac('Les sanglots longs des violons de l_automne', 'md5', 'sha256');

傳回下列雜湊:

                                hmac
--------------------------------------------------------------------
 \xd4e4790b69d2cc8dbce3385ee63272bc7760f1603640bb211a7b864e695570c5

或者,例如用來儲存加密的資料 (如密碼):

  • 應用程式會將秘密儲存在下列資料表中:

    create table mysecrets(USERid int, USERname char(255), USERpassword char(512));
    
  • 建立使用者時將其密碼加密:

    insert into mysecrets values (1, 'Me', crypt('MySecretPasswrod', gen_salt('md5')));
    
  • 請注意,密碼已加密:

    select * from mysecrets;
    

輸出:

- USERid: 1
- USERname: Me
- USERpassword: $1$Uc7jzZOp$NTfcGo7F10zGOkXOwjHy31

當您與應用程式連線並傳遞密碼時,應用程式會在 mysecrets 資料表中查閱,如果提供給應用程式的密碼與儲存在資料表中的密碼之間有相符項目,則會傳回使用者的名稱。 例如:

  • 傳遞錯誤的密碼:

    select USERname from mysecrets where (USERpassword = crypt('WrongPassword', USERpassword));
    

    輸出

      USERname
    ---------
    (0 rows)
    
  • 提供正確的密碼:

    select USERname from mysecrets where (USERpassword = crypt('MySecretPasswrod', USERpassword));
    

    輸出:

      USERname
    ---------
    Me
    (1 row)
    

這個小範例示範您可以使用 Postgres pgcrypto 延伸模組,在已啟用 Azure Arc 的 PostgreSQL 伺服器中加密待用資料 (儲存加密資料),而您的應用程式可使用 pgcrypto 所提供的函式來操作此加密資料。

Postgres 角色和使用者管理

一般檢視方塊

若要在已啟用 Azure Arc 的 PostgreSQL 伺服器中設定角色和使用者,請使用標準 Postgres 方法來管理角色和使用者。 如需詳細資訊,請參閱這裡

Audit

對於稽核案例,請將您的伺服器群組設定為使用 Postgres 的 pgaudit 延伸模組。 如需 pgaudit 的詳細資訊,請參閱 pgAudit GitHub 專案。 若要在您的伺服器群組中啟用 pgaudit 延伸模組,請參閱使用 PostgreSQL 延伸模組

使用 SSL 連線

用戶端連線需要 SSL。 在連接字串中,不應該停用 SSL 模式參數。 建立連接字串