SSL 憑證
如果您想將 Metabase Cloud 或自架執行個體連線到資料庫,您可以使用安全 Socket 層 (SSL) 加密和憑證來保護連線安全。
為何您會想要這麼做
- 您正在使用 Metabase Cloud,並想要確保您連線的資料倉儲 (例如 PostgreSQL、MySQL) 的身分。
- 您正在自架 Metabase,並想要確保由外部供應商託管的資料倉儲的身分。您也可以使用此方法來確保在連線到您的應用程式資料庫時,使用最嚴格的連線參數。
如果您正在使用 Metabase Cloud,應用程式資料庫會為您處理,因此您只需要保護連線到您新增至 Metabase 的資料倉儲的連線安全。
先決條件
允許 JDBC 連線的資料庫,因為您需要使用連線字串來指定您想要使用的憑證。
步驟 1:從您的供應商下載根憑證
如果您透過 Docker 容器執行 Metabase,您應該已經擁有 AWS 和 Azure 的憑證。
您可以在 Metabase Docker 映像檔的 /app/certs/
目錄中找到憑證
- AWS RDS:
/app/certs/rds-combined-ca-bundle.pem
- Azure 憑證:
/app/certs/DigiCertGlobalRootG2.crt.pem
如果您需要不同的憑證,您可以建立自己的 Docker 映像檔。請造訪您外部供應商的資料庫頁面,並尋找下載根憑證的連結,以連線到您的資料庫。
步驟 2:儲存憑證
自架
將下載的憑證儲存在您存放 metabase.jar 檔案的相同目錄中。技術上來說,您可以將憑證儲存在任何地方,但將其與 metabase.jar 檔案放在同一個目錄中是最佳做法。您將在連線字串中指定憑證的路徑。
Metabase Cloud
您需要先完成步驟 3:新增您的資料庫。
完成後,您可以前往管理 > 資料庫,然後選取您的資料庫。找到名為SSL 用戶端憑證的區段,然後按一下選取檔案以上傳您下載的憑證。
步驟 3:新增您的資料庫
例如,假設您想要保護與 PostgreSQL 資料庫的連線安全。請依照應用程式中的指示新增資料庫。如需設定資料庫連線的更多資訊,請參閱我們關於新增資料庫的文件。
步驟 4:切換開啟「使用安全連線 (SSL)」選項
如果您的資料庫支援 JDBC 連線,Metabase 將會提供您一個欄位,讓您輸入連線字串的其他參數。Metabase 將使用連線字串中的參數來建立安全連線。
步驟 5:新增其他連線字串選項
您需要指定憑證在執行 Metabase 的伺服器上的位置。
例如,當連線到 PostgreSQL 資料庫時,您需要新增兩個參數
sslmode
。您可以在PostgreSQL 文件中查看完整的選項列表。我們建議您使用verify-full
;它是最安全的,而且額外負擔最小。sslrootcert
。您將在此處指定憑證的檔案路徑。
您將新增一個 & 符號 (&
) 來分隔每個參數。例如,在新增其他連線字串選項欄位中,您會新增類似
sslmode=verify-full&sslrootcert=/path/to/certificate.pem
將 /path/to/certifcate.pem
替換為您從供應商下載的憑證的完整路徑。
您可以深入瞭解PostgreSQL 的 SSL 支援。
使用環境變數保護應用程式資料庫的連線安全
如果您正在自架 Metabase,您可以使用環境變數來保護與應用程式資料庫的連線安全。
要使用的環境變數是 MB_DB_CONNECTION_URI
。
您需要在此處包含完整的連線字串,包括資料庫主機、連接埠、資料庫名稱和使用者資訊,以及包含憑證的其他連線參數。例如,
jdbc:postgresql://db.example.com:port/mydb?user=dbuser&password=dbpassword&ssl=true&sslmode=verify-full&sslrootcert=/path/to/certificate.pem
兩者皆可提供以支援相互驗證情境。
信任儲存庫和金鑰儲存庫
對於某些資料庫,例如 PostgreSQL 和 Oracle,您可以使用信任儲存庫和金鑰儲存庫來保護連線安全。
信任儲存庫
如果提供信任儲存庫來驗證憑證,用戶端 (您的 Metabase) 可以驗證伺服器 (資料庫) 並確保其身分符合預期。
金鑰儲存庫
如果金鑰儲存庫用於提供憑證,則伺服器 (資料庫伺服器) 可以要求用戶端 (您的 Metabase) 使用該金鑰儲存庫驗證自身。金鑰儲存庫的使用頻率較低,在某些情況下,不可能使用金鑰儲存庫 (例如,Amazon 的 RDS 禁止金鑰儲存庫)。但是,如果您是在地端託管,您可能會想要使用金鑰儲存庫。
閱讀其他Metabase 版本的文件。