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 版本的文件。