Секреты

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

См. также API секретов.

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

В именах секретов учитывается регистр.

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

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

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

Azure Key Vault

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

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

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?".

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

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

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.

Использование секретов в свойстве конфигурации Spark или переменной среды

Внимание

Эта функция предоставляется в режиме общедоступной предварительной версии.

Примечание.

Доступно в Databricks Runtime 6.4 (расширенная поддержка) и более поздних версий.

Вы можете создать ссылку на секрет в свойстве конфигурации Spark или переменной среды. Полученные секреты удаляются из записной книжки, драйверов Spark и журналов исполнителя.

Внимание

Помните о влиянии на безопасность при создании ссылок на секреты в свойстве конфигурации Spark или переменной среды:

  • Если управление доступом к таблицам в кластере не включено, любой пользователь с разрешениями на подключение в кластере или с разрешениями на выполнение в записной книжке может считывать свойства конфигурации Spark из записной книжки. Сюда также входят пользователи, не имеющие прямого разрешения на чтение секрета. Databricks рекомендует включать контроль доступа к таблицам во всех кластерах или управлять доступом к секретам, используя области секретов.

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

  • Секреты не удаляются из потоков журналов драйверов Spark stdout и stderr. Для защиты конфиденциальных данных журналы драйверов Spark по умолчанию доступны только пользователям с разрешением "Управление заданием", режимом доступа с одним пользователем и кластерами общего режима доступа. Чтобы разрешить пользователям разрешение "Подключить к" или "Перезапустить" для просмотра журналов в этих кластерах, задайте в конфигурации кластера следующее свойство конфигурации Spark: spark.databricks.acl.needAdminPermissionToViewLogs false

    В кластерах режима общего доступа без изоляции журналы драйверов Spark могут просматриваться пользователями с разрешением "Подключить к " или "Управление ". Чтобы ограничить, кто может читать журналы только пользователям с разрешением Can Manage , установите для этого значение spark.databricks.acl.needAdminPermissionToViewLogstrue.

Требования и ограничения

Следующие требования и ограничения применяются к ссылкам на секреты в свойствах конфигурации Spark и переменных среды:

  • Владельцы кластеров должны иметь разрешение на чтение в области секрета.
  • Только владельцы кластера могут добавить ссылку на секрет в свойство конфигурации Spark или переменную среды и изменить существующую область и имя. Владельцы изменяют секрет с помощью API секретов. Чтобы снова получить секрет, необходимо перезапустить кластер.
  • Пользователи с разрешением на управление в кластере могут удалять секретное свойство конфигурации Spark или переменную среды.

Синтаксис для создания ссылок на секреты в свойстве конфигурации Spark или переменной среды

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

Синтаксис свойства конфигурации Spark или значения переменной среды должен быть {{secrets/<scope-name>/<secret-name>}}. Значение должно начинаться с {{secrets/ и заканчиваться на }}.

В свойстве конфигурации Spark или переменной среды меняются следующие элементы:

  • <scope-name>: имя области, с которой связан секрет.
  • <secret-name>: уникальное имя секрета в области.

Например: {{secrets/scope1/key1}}.

Примечание.

  • Между фигурными скобками не должно быть пробелов. При наличии пробелов они обрабатываются как часть имени области или секрета.

Ссылка на секрет со свойством конфигурации Spark

Ссылка на секрет указывается в свойстве конфигурации Spark в следующем формате:

spark.<property-name> {{secrets/<scope-name>/<secret-name>}}

Любая конфигурация <property-name> Spark может ссылаться на секрет. Каждое свойство конфигурации Spark может ссылаться только на один секрет, но можно настроить несколько свойств Spark для создания ссылок на секреты.

Пример

Вам нужно задать конфигурацию Spark для создания ссылки на секрет:

spark.password {{secrets/scope1/key1}}

Для получения секрета в записной книжке и его использования:

Python

spark.conf.get("spark.password")

SQL

SELECT ${spark.password};

Ссылка на секрет в переменной среды

Путь к секрету указывается в переменной среды в следующем формате:

<variable-name>={{secrets/<scope-name>/<secret-name>}}

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

Переменные среды, ссылающиеся на секреты, доступны из скрипта инициализации в области кластера. См. раздел "Установка и использование переменных среды" с скриптами инициализации.

Пример

Переменная среды указывается для создания ссылки на секрет:

SPARKPASSWORD={{secrets/scope1/key1}}

Чтобы получить секрет в скрипте инициализации, получите доступ $SPARKPASSWORD с помощью следующего шаблона:

if [ -n "$SPARKPASSWORD" ]; then
  # code to use ${SPARKPASSWORD}
fi