Учетные данные реестра OCI
Все функции OpenTofu, взаимодействующие с реестрами OCI, используют централизованный механизм получения учетных данных для выполнения запросов.
Поведение по умолчанию
По умолчанию OpenTofu ищет файлы конфигурации в стиле Docker, содержащие учетные данные, в следующих расположениях. Вероятно, эти учетные данные были созданы другими программами, взаимодействующими с реестрами OCI:
-
$XDG_RUNTIME_DIR/containers/auth.json(только Linux) -
$HOME/.config/containers/auth.json(только Windows и macOS) -
$XDG_CONFIG_HOME/containers/auth.json(XDG_CONFIG_HOMEпо умолчанию равно$HOME/.config) $HOME/.docker/config.json$HOME/.dockercfg
В этих файлах OpenTofu ожидает найти конфигурацию в формате, указанном в containers-auth.json.
Хотя эти файлы конфигурации можно создать вручную, обычно для их заполнения запускают команду «login» другой программы, интегрированной с OCI, например docker login, oras login, buildah login, skopeo login и т. д. Все эти команды записывают полученные учетные данные в один из перечисленных выше файлов.
OpenTofu выбирает учетные данные, связанные с шаблоном, который наиболее точно соответствует адресу целевого репозитория. Например, при отправке запроса к репозиторию по адресу example.com/foo/bar OpenTofu предпочтет учетные данные, настроенные для example.com/foo, учетным данным, настроенным только для example.com.
Если нескольким совпадающим учетным данным соответствует одинаковый приоритет, файлы, расположенные выше в списке, имеют приоритет над файлами, расположенными ниже.
Некоторые аспекты этого неявного поиска учетных данных можно настроить в разделе Настройка учетных данных по умолчанию.
Явная настройка учетных данных
OpenTofu также позволяет напрямую настраивать учетные данные реестра OCI в файле конфигурации CLI с помощью блоков oci_credentials:
oci_credentials "example.com" {
username = "example"
password = "example"
}Метка каждого блока oci_credentials должна содержать доменное имя реестра OCI и необязательный префикс пути репозитория. Например, example.com соответствует всем репозиториям в этом реестре, а example.com/foo соответствует только репозиториям, имена которых начинаются с сегмента пути «foo».
Содержимое блока oci_credentials может иметь одну из трех форм в зависимости от типа учетных данных и способа их указания:
-
Имя пользователя и пароль заданы непосредственно: Используйте аргументы
usernameиpassword, чтобы напрямую указать учетные данные для таких схем аутентификации, как HTTP-аутентификация «Basic».Если вы указываете пароль непосредственно, необходимо защитить файл конфигурации CLI, чтобы не допустить утечки пароля.
-
Вспомогательная программа для учетных данных в стиле Docker: Используйте аргумент
docker_credentials_helper, чтобы указать имя программы, реализующей протокол Docker Credential Helper. OpenTofu запускает эту программу для получения учетных данных только при необходимости.Например, если вы работаете в macOS и установили вспомогательную программу для учетных данных
osxkeychain, укажитеdocker_credentials_helper = "osxkeychain", чтобы OpenTofu получал учетные данные из Связки ключей macOS.В настоящее время OpenTofu использует вспомогательные программы для учетных данных только в режиме чтения, поэтому необходимые учетные данные сначала нужно записать в базовое хранилище с помощью другой программы, настроенной на запись учетных данных через ту же вспомогательную программу.
-
Встроенные учетные данные OAuth: Используйте аргументы
access_tokenиrefresh_token, чтобы напрямую указать учетные данные типа OAuth.Если вы указываете токен доступа и токен обновления непосредственно, необходимо защитить файл конфигурации CLI, чтобы не допустить утечки токенов.
Если указано несколько блоков oci_credentials, OpenTofu выбирает блок, метка которого наиболее точно соответствует целевому репозиторию.
По умолчанию OpenTofu использует явные блоки oci_credentials вместе со всеми автоматически обнаруженными файлами конфигурации в стиле Docker и выбирает наиболее точное совпадение среди всех источников. Если один и тот же префикс адреса репозитория задан и в явном блоке oci_credentials, и в файле конфигурации в стиле Docker, приоритет имеет явная конфигурация.
Настройка учетных данных по умолчанию
Необязательный блок типа oci_default_credentials можно указать в конфигурации CLI не более одного раза. Если он задан, с его помощью можно настроить поведение поиска по умолчанию или полностью отключить его.
В блоке oci_default_credentials можно указать следующие аргументы:
-
discover_ambient_credentials: Задайте этому аргументу значениеfalse, чтобы полностью отключить неявный поиск. В этом случае можно будет использовать только явную настройку учетных данных.По умолчанию задано значение
true, разрешающее неявный поиск. -
docker_style_config_files: Список строк с именами файлов, которые следует считать файлами конфигурации в стиле Docker вместо расположений, используемых для поиска по умолчанию.Задайте значение
docker_style_config_files = [], чтобы отключить поиск файлов конфигурации в стиле Docker, сохранив возможность обнаружения других учетных данных, доступных из окружения. В настоящее время файлы конфигурации в стиле Docker — единственный доступный механизм получения учетных данных из окружения, поэтому это равносильно значениюdiscover_ambient_credentials = false. Однако в будущих версиях OpenTofu ситуация может измениться. -
docker_credentials_helper: Непосредственно задает имя глобальной вспомогательной программы для учетных данных в стиле Docker, которую следует использовать для всех репозиториев OCI, не соответствующих более конкретной конфигурации учетных данных.Например, укажите
docker_credentials_helper = "osxkeychain", чтобы OpenTofu получал учетные данные из Связки ключей macOS. Сначала необходимо установить выбранную вспомогательную программу, чтобы OpenTofu мог ее запустить.ПримечаниеOpenTofu не использует вспомогательные программы для учетных данных, если они не настроены явно.
Если вспомогательная программа для учетных данных не настроена и статические учетные данные недоступны, Docker CLI и некоторые другие тесно связанные с ним программы по умолчанию ищут определенные жестко заданные имена вспомогательных программ в зависимости от платформы.
Чтобы не запускать стороннее программное обеспечение без явного согласия, OpenTofu требует напрямую настроить любую вспомогательную программу для учетных данных, которую вы собираетесь использовать. Для этого можно воспользоваться либо этой настройкой OpenTofu, либо свойством
"credsStore"в файле конфигурации Docker CLI.
Copyright (c) The OpenTofu Authors
Copyright (c) 2014 HashiCorp, Inc.
Mozilla Public License, version 2.0
https://opentofu.org/docs/v1.12/cli/oci_registries/credentials/