Azure Databricks 的祕密會儲存敏感值,例如密碼、API 金鑰或雜湊鹽,讓筆記本、工作和函式都能使用它,而不會讓該值出現在程式碼中。 你可以在兩個地方管理密鑰:
- 工作區密碼範圍:同一工作區中具名的密碼集合。 權限適用於整個範疇。 請參閱 工作區密鑰範圍。
-
Unity Catalog 中的秘密:可保護的物件(
catalog.schema.secret),這些物件在連接至中繼存放區的每個工作區中都可用。 你可以授與每個機密項目的存取權限。 詳見 Unity 目錄中的秘密。
Unity Catalog secrets 可以由 Azure Databricks 管理,或以 Azure Key Vault 為後端。 請參閱 Unity 目錄中的 Azure Key Vault secrets。
選擇要存放密鑰的位置
下表比較每個選項儲存秘密值的位置、哪些工作區可以使用這些值,以及你如何控制存取權限。
| 工作區秘密範疇 | Unity Catalog 中由 Azure Databricks 管理的祕密 | Unity Catalog 中由 Azure Key Vault 支援的秘密(測試版) | |
|---|---|---|---|
| 該數值儲存在哪裡 | Azure Databricks、在工作區中,或您的 Azure Key Vault 具有 金鑰保存庫 支援範圍 | Azure Databricks, in Unity Catalog | Azure Key Vault (Azure Databricks 只儲存 Unity Catalog 中的秘密名稱) |
| 用自己的金鑰加密 | 是的,使用 適用於受管理服務的客戶管理金鑰 | 是的,目錄上有 客戶管理的金鑰 | |
| 提供於 | 單一工作區 | 所有連接到元儲存區的工作區 | 所有連接到元儲存區的工作區 |
| 存取控制 | Secret 範圍權限 (無 Secret 層級存取控制) | 對密鑰、結構描述或目錄的 Unity Catalog 權限 | Unity Catalog 對秘密、結構描述或目錄的權限 |
| 旋轉 | 在 Azure Databricks 中,或針對 金鑰保存庫 支援的範圍在 金鑰保存庫 中更新值 | 在 Azure Databricks 中更新值 | 在 Azure Key Vault 中輪替。 Azure Databricks 沒有變更。 |
你可以在哪裡使用密鑰
Workspace 祕密範圍與 Unity Catalog 祕密在不同地方都支援。 在你選擇之前,先確認它在你程式碼執行的地方是否能運作。
| Surface | 工作區密鑰範圍 | Unity Catalog 中的祕密 |
|---|---|---|
dbutils.secrets 收錄於筆記簿與作業 |
Yes. 請參見 閱讀一個秘密。 | 是的,在無伺服器環境版本 4 及以上版本或 Databricks Runtime 17.3 LTS 及以上版本上。 請參見 閱讀一個秘密。 |
| REST API 與 Databricks CLI | Yes. API 回傳的數值不會被遮蔽。 | Yes. API 回傳的數值不會被隱去敏感內容。 |
| 遠端開發,例如 Databricks Connect | 是的,dbutils.secrets 在 Databricks Connect 用戶端中。 請參考 Databricks Utilities with Databricks Connect for Python。 |
No |
| Unity Catalog Python 與 Scala UDFs | No | Yes. 來電者只需 EXECUTE。 參見 在 UDF 中使用 Secrets。 |
| SQL 數據倉庫 | 是的,透過秘密功能 | 只有透過宣告該祕密的 Unity Catalog Python 或 Scala UDF |
| Spark 配置屬性與環境變數在計算資源上 | Yes. 請參閱在 Spark 組態屬性或環境變數中使用祕密。 | No |
| 模型服務端點環境變數 | Yes. 請參閱 新增秘密型環境變數。 | No |
| 預設套件存放庫 | 是的,在瞄準鏡裡 databricks-package-management 。 請參見 「配置預設套件庫」。 |
No |
其他資源
| 資源 | Description |
|---|---|
| Unity 目錄中的秘密 | 建立 Unity Catalog 密鑰、授與存取權限,並在筆記本、作業和 UDF 中讀取它們。 |
| Unity Catalog 密鑰的最佳實務 | 依環境、應用程式或團隊來組織機密,讓工作負載無需讀取其內容即可使用機密。 |