Учетные данные реестра 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. 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.10/cli/oci_registries/credentials/