Поделиться через


Управление секретами

Иногда для доступа к данным нужна проверка подлинности во внешних источниках данных через JDBC. Вместо прямого ввода учетных данных в записную книжку можно использовать секреты Azure Databricks для хранения учетных данных и ссылки на них в записных книжках и заданиях. В этой статье представлен обзор секретов Azure Databricks.

Общие сведения о секретах

Чтобы настроить и использовать секреты, выполните следующие действия.

  1. Создание области секрета. Область секретов — это коллекция секретов, идентифицируемых по имени.
  2. Добавление секретов в область
  3. Назначьте разрешения для области секрета.
  4. Доступ к секретам с помощью служебных программ Databricks см. в разделе "Служебная программа секретов" (dbutils.secret).

Полный пример использования секретов в рабочих процессах см. в руководстве по созданию и использованию секрета Databricks. Сведения об использовании секрета в свойстве конфигурации Spark или переменной среды см. в разделе "Использование секрета" в свойстве конфигурации Spark или переменной среды.

Предупреждение

Администраторы, создатели секретов и пользователи с соответствующим разрешением, могут читать секреты Azure Databricks. Хотя Databricks делает попытку изменить значения секретов, которые могут отображаться в записных книжках, невозможно запретить таким пользователям читать секреты. См. раздел "Секретный редакт".

Управление областями секретов

Область секретов — это коллекция секретов, идентифицируемых по имени. Databricks рекомендует сопоставлять области секретов с ролями или приложениями, а не отдельными пользователями.

Существует два типа области секрета:

  • С поддержкой Azure Key Vault можно ссылаться на секреты, хранящиеся в Azure Key Vault, с помощью областей секретов, поддерживаемых Azure Key Vault. Область секрета, поддерживаемая Azure Key Vault, — это интерфейс только для чтения в Key Vault. Необходимо управлять секретами в области секретов, поддерживаемых Azure Key Vault, в Azure.
  • Databricks-backed: область секрета, поддерживаемая Databricks, хранится в зашифрованной базе данных, принадлежащей и управляемой Azure Databricks.

После создания области секрета можно назначить разрешения для предоставления пользователям доступа к областям считывания, записи и управления ими.

Создание области секретов на основе Azure Key Vault

В этом разделе описывается создание области секрета, поддерживаемой Azure Key Vault, с помощью портал Azure и пользовательского интерфейса рабочей области Azure Databricks. Вы также можете создать резервную область секрета Azure Key Vault с помощью интерфейса командной строки Databricks.

Требования

  • У вас должен быть экземпляр хранилища ключей Azure. Если у вас нет экземпляра хранилища ключей, следуйте инструкциям в статье "Создание хранилища ключей" с помощью портал Azure.
  • У вас должна быть роль участника Key Vault, участника или владельца в экземпляре хранилища ключей Azure, который вы хотите использовать для резервного копирования области секрета.

Примечание.

Для создания области секрета, поддерживаемой Azure Key Vault, требуется роль участника или владельца в экземпляре хранилища ключей 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 для Azure Databricks

  1. Войдите на портал Azure, найдите и выберите экземпляр хранилища ключей Azure.

  2. В разделе "Параметры" перейдите на вкладку конфигурации Access.

  3. Задайте для модели разрешений политику доступа к Хранилищу.

    Примечание.

    Создание роли области секрета, поддерживаемой Azure Key Vault, предоставляет разрешения get and List идентификатору приложения для службы Azure Databricks с помощью политик доступа к хранилищу ключей. Модель разрешений управления доступом на основе ролей Azure не поддерживается в Azure Databricks.

  4. В разделе Параметры выберите Сеть.

  5. В брандмауэрах и виртуальных сетях разрешить доступ: разрешить общедоступный доступ из определенных виртуальных сетей и IP-адресов.

    В разделе "Исключение" установите флажок разрешить доверенным службы Майкрософт, чтобы обойти этот брандмауэр.

    Примечание.

    Вы также можете задать разрешение доступа: разрешить общедоступный доступ из всех сетей.

Создание области секретов с поддержкой Azure Key Vault

  1. Переход к https://<databricks-instance>#secrets/createScope. Замените <databricks-instance> URL-адресом рабочей области для развертывания Azure Databricks. Этот URL-адрес учитывает регистр. Например, scope в ней createScope должен использоваться верхний регистр S).

    Создание области

  2. Введите имя области секретов. В именах областей секретов учитывается регистр.

  3. В разделе "Управление субъектом" выберите "Создатель" или "Все пользователи рабочей области", чтобы указать, какие пользователи имеют разрешение MANAGE в области секрета.

    Разрешение MANAGE позволяет пользователям читать, записывать и предоставлять разрешения на область. Ваша учетная запись должна иметь план "Премиум" для выбора создателя.

  4. Введите DNS-имя (например, https://databrickskv.vault.azure.net/) и идентификатор ресурса, например:

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

    Эти свойства доступны на вкладке "Свойства параметров>" в Azure Key Vault в портал Azure.

  5. Нажмите кнопку Создать.

  6. Используйте команду CLI databricks secrets list-scopes Databricks, чтобы убедиться, что область создана успешно.

Создание области секрета, поддерживаемой Databricks

В этом разделе описывается создание области секрета с помощью интерфейса командной строки Databricks ( версия 0.205 и выше). Вы также можете использовать API секретов.

Имена областей секрета:

  • Должно быть уникальным в пределах рабочей области.
  • Должен состоять из буквенно-цифровых символов, дефисов, @символов подчеркивания и периодов и не может превышать 128 символов.
  • Не учитывается регистр.

Имена областей секретов считаются нечувствительными и доступны для чтения всеми пользователями в рабочей области.

Создание области с помощью интерфейса командной строки Databricks:

databricks secrets create-scope <scope-name>

По умолчанию области создаются с разрешением MANAGE для пользователя, создавшего область. После создания области секретов, поддерживаемой Databricks, вы можете добавить в нее секреты.

Получение списка областей секрета

Создание списка существующих областей в рабочей области с помощью интерфейса командной строки:

databricks secrets list-scopes

Вы также можете перечислить области секретов с помощью API секретов.

Удаление области секрета

При удалении области секретов удаляются все секреты и списки контроля доступа, примененные для области. Чтобы удалить область с помощью интерфейса командной строки, выполните следующую команду:

databricks secrets delete-scope <scope-name>

Вы также можете удалить область секретов с помощью API секретов.

Управление секретами

Секрет — это пара "ключ-значение", которая хранит конфиденциальный материал с использованием имени ключа, уникального в пределах области секрета.

В этом разделе описывается создание области секрета с помощью интерфейса командной строки Databricks ( версия 0.205 и выше). Вы также можете использовать API секретов. В именах секретов учитывается регистр.

Создание секрета

Метод создания секретов зависит от того, используется ли область с поддержкой Azure Key Vault или область с поддержкой Databricks.

Создание секрета в области с поддержкой Azure Key Vault

Чтобы создать секрет в Azure Key Vault, используйте портал Azure или REST API набора секретов Azure. Пример см . в шаге 4. Добавление секрета клиента в Azure Key Vault.

Azure Key Vault

Создание секрета в области с поддержкой Databricks

В этом разделе описывается создание секретов с помощью интерфейса командной строки Databricks ( версия 0.205 и выше). Вы также можете использовать API секретов. В именах секретов учитывается регистр.

При создании секрета в области, поддерживаемой Databricks, можно указать значение секрета одним из трех способов:

  • Укажите значение в виде строки с помощью флага -string-value.
  • Введите секрет при интерактивном появлении запроса (секреты с одной строкой).
  • Передайте секрет с помощью стандартных входных данных (многострочный секрет).

Например:

databricks secrets put-secret --json '{
  "scope": "<scope-name>",
  "key": "<key-name>",
  "string_value": "<secret>"
}'

При создании многострочного секрета можно передать секрет с помощью стандартных входных данных. Например:

(cat << EOF
this
is
a
multi
line
secret
EOF
) | databricks secrets put-secret <secret_scope> <secret_key>

Вывод списка секретов

Для получения списка секретов в заданной области используйте следующий код:

databricks secrets list-secrets <scope-name>

В ответе отображаются метаданные о секретах, таких как имена ключей секретов. Для перечисления этих метаданных используется служебная программа секретов (dbutils.secret) в записной книжке или задании. Например:

dbutils.secrets.list('my-scope')

Чтение секрета

Секреты создаются с помощью API REST или интерфейса командной строки, но для чтения секретов необходимо использовать служебную программу Secrets (dbutils.secrets) в записной книжке или задании.

Удаление секрета.

Чтобы удалить секрет из области с помощью Databricks CLI:

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

Вы также можете использовать API секретов.

Чтобы удалить секрет из области с поддержкой Azure Key Vault, используйте вызов API REST Azure SetSecret или портал Azure.

Управление разрешениями области секретов

По умолчанию пользователь, создающий области секретов, предоставляется разрешение MANAGE. Это позволяет создателю области читать секреты в области, записывать секреты в область и управлять разрешениями на область.

Примечание.

Списки управления секретами находятся на уровне области. Если вы используете области, поддерживаемые Azure Key Vault, пользователи, которым предоставлен доступ к области, имеют доступ ко всем секретам в Azure Key Vault. Чтобы ограничить доступ, используйте отдельные экземпляры хранилища ключей Azure.

В этом разделе описывается управление доступом к секретам с помощью интерфейса командной строки Databricks ( версия 0.205 и выше). Вы также можете использовать API секретов. Сведения о уровнях разрешений секрета см. в разделе "Списки управления доступом к секретам"

Предоставление пользователям разрешений на область секрета

Чтобы предоставить пользователю разрешения на область секрета с помощью интерфейса командной строки Databricks:

databricks secrets put-acl <scope-name> <principal> <permission>

Выполнение запроса на размещение для субъекта, который уже имеет примененное разрешение, перезаписывает существующий уровень разрешений.

Поле principal указывает существующий субъект Azure Databricks. Пользователь указывается с помощью своего адреса электронной почты, субъекта-службы, используя его applicationId значение, и группу, используя ее имя группы. Дополнительные сведения см. в разделе "Субъект".

Просмотр разрешений области секрета

Чтобы просмотреть все разрешения области секретов для заданной области секрета:

databricks secrets list-acls <scope-name>

Чтобы получить разрешения области секрета, примененные к субъекту для заданной области секрета:

databricks secrets get-acl <scope-name> <principal>

Если для заданного субъекта и области не существует ACL, этот запрос завершается ошибкой.

Удаление разрешения области секрета

Чтобы удалить разрешение на область секрета, примененную к субъекту для заданной области секрета:

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

Повторное редактирование секретов

Хранение учетных данных в качестве секретов Azure Databricks упрощает защиту учетных данных при выполнении записных книжек и заданий. Но вы можете случайно вывести секрет в стандартные буферы вывода или отобразить его значение при назначении переменной.

Чтобы предотвратить это, Azure Databricks редактирует все значения секретов, которые считываются с помощью dbutils.secrets.get(). При отображении данных в ячейке записной книжки значения секрета заменяются на [REDACTED].

Например, если задать для переменной значение секрета с помощью dbutils.secrets.get() и распечатать эту переменную, эта переменная заменяется [REDACTED]на .

Предупреждение

Скрытие секретов в выходных данных ячейки записной книжки применяется только к литералам. Функциональность секретного редактирования не предотвращает преднамеренное и произвольное преобразование секретного литерала. Чтобы обеспечить надлежащий контроль секретов, следует использовать списки управления доступом, чтобы ограничить разрешения для выполнения команд. Это предотвращает несанкционированный доступ к контекстам общей записной книжки.