机密范围

管理机密时首先需要创建机密范围。 机密范围是由名称标识的机密的集合。 一个工作区最多只能有 100 个机密范围。

注意

Databricks 建议将机密范围与角色或应用程序而非个人对齐。

概述

有两种类型的机密范围:Azure Key Vault 支持和 Databricks 支持。

Azure Key Vault 支持的范围

若要引用 Azure Key Vault 中存储的机密,可以创建 Azure Key Vault 支持的机密范围。 然后,你可以利用该机密范围中相应 Key Vault 实例中的所有机密。 由于 Azure Key Vault 支持的机密范围是 Key Vault 的只读接口,因此不允许进行 PutSecretDeleteSecret机密 API 2.0 操作。 若要在 Azure Key Vault 中管理机密,必须使用 Azure SetSecret REST API 或 Azure 门户 UI。

Databricks 支持的范围

Databricks 支持的机密范围存储在 Azure Databricks 拥有并管理的加密数据库中并由该数据库支持。 机密范围名称:

  • 在工作区中必须唯一。
  • 必须包含字母数字字符、短划线、下划线和句点,并且不得超过 128 个字符。

这些名称被视为是非敏感信息,工作区中的所有用户都可读取它们。

使用 Databricks CLI(版本 0.7.1 及更高版本)创建 Databricks 支持的机密范围。 也可以使用机密 API 2.0

范围权限

使用 ACL 控制的权限创建范围。 默认情况下,使用创建范围的用户(创建者)的 MANAGE 权限创建范围,这使创建者可以读取范围中的机密、将机密写入范围以及更改范围的 ACL。 如果你的帐户具有高级计划,则可以在创建范围后随时分配细粒度权限。 有关详细信息,请参阅机密访问控制

你还可以替代默认值,并在创建范围时向所有用户显式授予 MANAGE 权限。 事实上,如果你的帐户不具有高级计划,则必须执行此操作。

最佳做法

作为团队主管,你可能想要为 Azure Synapse Analytics 和 Azure Blob 存储凭据创建不同的范围,然后在团队中提供不同的子组来访问这些范围。 你应考虑如何使用不同的范围类型来实现此目的:

  • 如果你使用 Databricks 支持的范围并在这两个范围中添加机密,它们将是不同的机密(Azure Synapse Analytics 在范围 1 中,Azure Blob 存储在范围 2 中)。
  • 如果你使用 Azure Key Vault 支持的范围,每个范围都引用不同的 Azure Key Vault,并将机密添加到这两个 Azure Key Vault,则它们将是不同的机密集(Azure Synapse Analytics 在范围 1 中,Azure Blob 存储在范围 2 中)。 这些范围的工作方式类似于 Databricks 支持的范围。
  • 如果你使用两个 Azure Key Vault 支持的范围,且两个范围都引用同一个 Azure Key Vault,并将机密添加到该 Azure Key Vault,则所有 Azure Synapse Analytics 和 Azure Blob 存储机密都将可用。 由于 ACL 处于范围级别,因此这两个子组中的所有成员都可看到所有机密。 这种安排并不满足你限制每个组访问一组机密的用例。

创建 Azure Key Vault 支持的机密范围

可以使用 UI 或 Databricks CLI 创建 Azure Key Vault 支持的机密范围。

使用 UI 创建 Azure Key Vault 支持的机密范围

  1. 验证你是否对要用于支持机密范围的 Azure Key Vault 实例具有“参与者”权限。

    如果没有 Key Vault 实例,请按照快速入门:使用 Azure 门户创建 Key Vault 中的说明进行操作。

  2. 转到 https://<databricks-instance>#secrets/createScope。 此 URL 区分大小写;createScope 中的范围必须大写。

    创建范围

  3. 输入机密范围的名称。 机密范围名称不区分大小写。

  4. 使用“管理主体”下拉列表指定是所有用户都对此机密范围具有 权限,还是仅机密范围的创建者具有该权限。

    MANAGE 权限允许用户在此机密范围内进行读取和写入,如果是高级计划中的帐户,还允许更改范围的权限。

    你的帐户必须具有高级计划,你才能选择“创建者”。 建议的做法是:在创建机密范围时向“创建者”授予 MANAGE 权限,然后在测试范围后分配更细粒度的访问权限。 有关示例工作流的信息,请参阅机密工作流示例

    如果你的帐户具有标准计划,则必须将 MANAGE 权限设置为“所有用户”组。 如果在此处选择“创建者”,则在尝试保存该范围时,将看到一条错误消息。

    有关 MANAGE 权限的详细信息,请参阅MANAGE

  5. 输入“DNS 名称”(例如 )和“资源 ID”,例如:

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

    可从 Azure 门户中 Azure Key Vault 的“属性”选项卡中使用这些属性。

    Azure Key Vault 的“属性”选项卡

  6. 单击“创建” 按钮。

  7. 使用 Databricks CLI 命令验证是否已成功创建范围。

有关在访问 Azure Blob 存储时使用机密的示例,请参阅在 Azure Databricks 上装载云对象存储

使用 Databricks CLI 创建 Azure Key Vault 支持的机密范围

  1. 安装 CLI 并将其配置为使用 Azure Active Directory (Azure AD) 令牌进行身份验证。

    重要

    需要 Azure AD 用户令牌,才能使用 Databricks CLI 创建支持 Azure Key Vault 的机密范围。 不能使用 Azure Databricks 个人访问令牌或属于服务主体的 Azure AD 应用程序令牌。

    如果密钥保管库与 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 Key Vault 范围:

    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 权限创建范围。 如果你的帐户没有高级计划,则必须替代此默认值,并在创建范围时向 users(所有用户)组显式授予 MANAGE 权限:

     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 <scope-name>

默认情况下,使用创建范围的用户的 MANAGE 权限创建范围。 如果你的帐户没有高级计划,则必须替代此默认值,并在创建范围时向用户(所有用户)显式授予 MANAGE 权限:

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

还可使用机密 API 放置机密操作创建 Databricks 支持的机密范围。

如果你的帐户具有高级计划,则可以在创建范围后随时更改权限。 有关详细信息,请参阅机密访问控制

创建 Databricks 支持的机密范围后,可以添加机密

列出机密范围

使用 CLI 列出工作区中的现有范围:

databricks secrets list-scopes

还可使用机密 API 列出机密操作来列出现有范围。

删除机密范围

删除机密范围时会删除应用于该范围的所有机密和 ACL。 使用 CLI 删除范围:

databricks secrets delete-scope --scope <scope-name>

还可使用机密 API 删除机密范围操作来删除机密范围。