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