秘密範圍

管理秘密的開頭是建立秘密範圍。 秘密範圍是名稱所識別的秘密集合。

工作區限制為最多 1000 個秘密範圍。 如有需要,請連絡 Azure Databricks 支援小組。

注意

Databricks 建議將秘密範圍與角色或應用程式對齊,而不是個人。

概觀

祕密範圍有兩個類型:Azure Key Vault 支援和 Databricks 支援。

Azure 金鑰保存庫 支援的範圍

若要參考儲存在 Azure 金鑰保存庫 中的秘密,您可以建立 Azure 金鑰保存庫 支援的秘密範圍。 然後,您可以從該秘密範圍,利用對應 金鑰保存庫 實例中的所有秘密。 因為 Azure 金鑰保存庫 支援的秘密範圍是 金鑰保存庫 的唯讀介面,PutSecret因此不允許和DeleteSecret秘密 API 作業。 若要管理 Azure 金鑰保存庫 中的秘密,您必須使用 Azure 設定秘密 REST API 或 Azure 入口網站 UI。

Databricks 支援的範圍

Databricks 支援的祕密範圍會儲存在 (支援) 由 Azure Databricks 所擁有和管理的加密資料庫中。 秘密範圍名稱:

  • 工作區內必須是唯一的。
  • 必須包含英數位元、破折號、底線、 @和句點,不得超過 128 個字元。

這些名稱會視為不區分,而且可由工作區中的所有用戶讀取。

您可以使用 Databricks CLI 建立 Databricks 支援的秘密範圍(0.205 版和更新版本)。 或者,您可以使用 秘密 API

範圍許可權

範圍是以秘密 ACL 所控制的許可權所建立。 根據預設,範圍是以 MANAGE 建立範圍的用戶許可權建立的(「建立者」),讓建立者讀取範圍中的秘密、將秘密寫入範圍,以及變更範圍的 ACL。 如果您的帳戶具有 進階版 方案,您可以在建立範圍之後隨時指派細微的許可權。 如需詳細資訊,請參閱 秘密訪問控制

您也可以覆寫預設值,並在建立範圍時明確授 MANAGE 與所有用戶的許可權。 事實上,如果您的帳戶沒有 進階版 方案,則必須執行此動作。

注意

秘密 ACL 位於範圍層級。 如果您使用 Azure 金鑰保存庫 支援的範圍,則獲授與範圍存取權的使用者可以存取 Azure 金鑰保存庫 中的所有秘密。 若要限制存取,請使用個別的 Azure 金鑰保存庫實例。

建立 Azure 金鑰保存庫 支援的秘密範圍

您可以使用 UI 或使用 Databricks CLI 建立 Azure 金鑰保存庫 支援的秘密範圍。

需求

  • 您必須在您想要用來備份秘密範圍的 Azure 金鑰保存庫實例上,擁有 金鑰保存庫 參與者、參與者或擁有者角色。

    如果您沒有金鑰保存庫實例,請遵循使用 Azure 入口網站 建立 金鑰保存庫 中的指示。

    注意

    建立 Azure 金鑰保存庫 支援的秘密範圍需要 Azure 金鑰保存庫實例上的參與者或擁有者角色,即使先前已將 Azure Databricks 服務授與金鑰保存庫的存取權也一樣。

    如果密鑰保存庫存在於與 Azure Databricks 工作區不同的租使用者中,則建立秘密範圍的 Azure AD 用戶必須具有 在密鑰保存庫租使用者中建立服務主體 的許可權。 否則,會發生下列錯誤:

    Unable to grant read/list permission to Databricks service principal to KeyVault 'https://xxxxx.vault.azure.net/': Status code 403, {"odata.error":{"code":"Authorization_RequestDenied","message":{"lang":"en","value":"Insufficient privileges to complete the operation."},"requestId":"XXXXX","date":"YYYY-MM-DDTHH:MM:SS"}}
    

設定 Azure Databricks 的 Azure 金鑰保存庫實例

  1. 登入 Azure 入口網站,尋找並選取 Azure 金鑰保存庫實例。

  2. 選取 [設定] 底下的 [存取組態] 索引卷標。

  3. 將許可權模型設定保存庫存取原則

    注意

    建立 Azure 金鑰保存庫 支援的秘密範圍角色,會使用密鑰保存庫存取原則,將取得列出許可權授與 Azure Databricks 服務的應用程式識別碼。 Azure Databricks 目前不支援 Azure 角色型訪問控制許可權模型。

  4. 選取 [設定] 底下的 [網路] 索引標籤。

  5. [防火牆和虛擬網络] 中,將 [允許從:存取] 設為 [允許來自特定虛擬網络和IP 位址的公用存取]。

    在 [例外狀況] 底下,核取 [允許信任 Microsoft 服務 略過此防火牆

    注意

    您也可以將 [允許從: 存取] 設定[允許來自所有網络的公用存取]。

使用UI建立 Azure 金鑰保存庫 支援的秘密範圍

  1. 移至 https://<databricks-instance>#secrets/createScope。 此 URL 區分大小寫;中的 createScope 範圍必須是大寫。

    Create scope

  2. 輸入秘密範圍的名稱。 秘密範圍名稱不區分大小寫。

  3. 使用 [管理主體] 下拉式清單來指定 [所有使用者] 是否具有MANAGE此秘密範圍的許可權,或只有秘密範圍的建立者(也就是說,您)。

    MANAGE許可權可讓使用者讀取和寫入此秘密範圍,並在 進階版 方案中的帳戶變更範圍的許可權。

    您的帳戶必須有 進階版 方案,您才能選取 [建立者]。 這是建議的方法:當您建立秘密範圍時,將許可權MANAGE與 Creator,然後在測試範圍之後指派更細微的訪問許可權。 如需範例工作流程,請參閱 秘密工作流程範例

    如果您的帳戶具有標準方案,您必須將許可權設定 MANAGE 為 「所有使用者」群組。 如果您在這裡選取 [建立者 ],當您嘗試儲存範圍時,會看到錯誤訊息。

    如需許可權的詳細資訊 MANAGE ,請參閱 秘密訪問控制

  4. 輸入 DNS 名稱 (例如https://databrickskv.vault.azure.net/) 和資源識別碼,例如:

    /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/databricks-rg/providers/Microsoft.KeyVault/vaults/databricksKV
    

    這些屬性可從您 Azure 入口網站 中 Azure 金鑰保存庫 的 [屬性] 索引標籤取得。

    Azure Key Vault Properties tab

  5. 按一下 [建立] 按鈕。

  6. 使用 Databricks CLIdatabricks secrets list-scopes 命令來確認已成功建立範圍。

如需在存取 Azure Blob 記憶體時使用秘密的範例,請參閱 在 Azure Databricks 上掛接雲端物件記憶體。

使用 Databricks CLI 建立 Azure 金鑰保存庫 支援的秘密範圍

  1. 安裝或更新 Databricks CLI ,並將其設定為使用 Azure Active Directory (Azure AD) 令牌 進行驗證。

    重要

    您必須使用屬於服務主體或使用者的 Azure AD 令牌,或屬於服務主體的 Azure Databricks 個人存取令牌進行驗證,才能使用 Databricks CLI 建立 Azure 金鑰保存庫 支援的秘密範圍。 請注意,您無法使用屬於使用者的個人存取令牌。

    如果密鑰保存庫存在於與 Azure Databricks 工作區不同的租使用者中,則建立秘密範圍的 Azure AD 使用者或服務主體必須具有 在密鑰保存庫租使用者中建立服務主體 的許可權。 否則,會發生下列錯誤:

    Unable to grant read/list permission to Databricks service principal to KeyVault 'https://xxxxx.vault.azure.net/': Status code 403, {"odata.error":{"code":"Authorization_RequestDenied","message":{"lang":"en","value":"Insufficient privileges to complete the operation."},"requestId":"XXXXX","date":"YYYY-MM-DDTHH:MM:SS"}}
    
  2. 建立 Azure 金鑰保存庫 範圍:

    databricks secrets create-scope --scope <scope-name> --scope-backend-type AZURE_KEYVAULT --resource-id <azure-keyvault-resource-id> --dns-name <azure-keyvault-dns-name>
    

    根據預設,系統會使用 MANAGE 建立範圍之用戶的許可權來建立範圍。 如果您的帳戶沒有 進階版 方案,當您建立範圍時,必須覆寫該預設值,並明確地將許可權usersMANAGE與 [所有使用者] 群組:

    databricks secrets create-scope --scope <scope-name> --scope-backend-type AZURE_KEYVAULT --resource-id <azure-keyvault-resource-id> --dns-name <azure-keyvault-dns-name> --initial-manage-principal users
    

    如果您在 進階版 方案中的帳戶,您可以在建立範圍之後隨時變更許可權。 如需詳細資訊,請參閱 秘密訪問控制

    建立 Databricks 支援的秘密範圍之後,您可以 新增秘密

如需在存取 Azure Blob 記憶體時使用秘密的範例,請參閱 在 Azure Databricks 上掛接雲端物件記憶體。

建立 Databricks 支援的秘密範圍

秘密範圍名稱不區分大小寫。

若要使用 Databricks CLI 建立範圍:

databricks secrets create-scope <scope-name>

根據預設,系統會使用 MANAGE 建立範圍之用戶的許可權來建立範圍。 如果您的帳戶沒有 進階版 方案,您必須覆寫該預設值,並在建立範圍時明確授MANAGE與「使用者」(所有使用者)的許可權:

databricks secrets create-scope <scope-name> --initial-manage-principal users

您也可以使用 秘密 API 建立 Databricks 支援的秘密範圍。

如果您的帳戶具有 進階版 方案,您可以在建立範圍之後隨時變更許可權。 如需詳細資訊,請參閱 秘密訪問控制

建立 Databricks 支援的秘密範圍之後,您可以 新增秘密

列出秘密範圍

若要使用 CLI 列出工作區中的現有範圍:

databricks secrets list-scopes

您也可以使用 秘密 API 列出現有的範圍。

刪除秘密範圍

刪除秘密範圍會刪除套用至範圍的所有秘密和 ACL。 若要使用 CLI 刪除範圍,請執行下列命令:

databricks secrets delete-scope <scope-name>

您也可以使用 秘密 API 刪除秘密範圍。