Skip to main content

Настройка доступа к частным реестрам для Dependabot

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

Кто может использовать эту функцию?

Пользователи с доступом на запись

Сведения о частных реестрах

          Dependabot version updates Сохраняет ваши зависимости up-to-date и Dependabot security updates обновляет уязвимые зависимости. 
          Dependabot может получить доступ к публичным реестрам. Кроме того, вы можете предоставить Dependabot доступ к частным реестрам пакетов и частным GitHub хранилищам, чтобы сохранять свои приватные и внутренние зависимости как up-to-date и безопасные, как и ваши публичные зависимости.

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

Для определённых экосистем можно настроить Dependabot доступ только к частным реестрам, удаляя вызовы публичных реестров. Дополнительные сведения см. в разделе Удаление доступа Dependabot к общедоступным реестрам.

Настройка частных реестров

Вы также можете настроить Dependabotдоступ к частным реестрам файла dependabot.yml . Ключ верхнего уровня registries является необязательным и указывает сведения о проверке подлинности.

В файле есть 2 расположения dependabot.yml , в которых можно использовать registries ключ:

  • На верхнем уровне, где вы определяете реестры и сведения о доступе при необходимости.
  • updates В блоках, где можно указать Dependabot использовать registries: "*" любой или все реестры, определенные на верхнем уровне.
# registries: gradle-artifactory - provides access details for the gradle-artifactory registry
# registries: "*" - allows Dependabot to use all the defined registries specified at the top level

version: 2
registries:
  gradle-artifactory:
    type: maven-repository
    url: https://acme.jfrog.io/artifactory/my-gradle-registry
    username: octocat
    password: ${{secrets.MY_ARTIFACTORY_PASSWORD}}
updates:
  - package-ecosystem: "gradle"
    directory: "/"
    registries: "*"
    schedule:
      interval: "monthly"

Для указания параметров доступа используются следующие параметры. Параметры реестра должны содержать type и url, а также, как правило, либо сочетание username и password, либо token.

ПараметрыХарактер использования
REGISTRY_NAME**** Обязательный: определяет идентификатор реестра.
type**** Обязательный: определяет тип реестра.
Подробные сведения о проверке подлинности**** Обязательный: параметры, поддерживаемые для предоставления сведений о проверке подлинности, зависят от реестров разных типов.
url**** Обязательный: URL-адрес, используемый для доступа к зависимостям в этом реестре. Протокол указывать необязательно. Если этот параметр не задан, для него предполагается значение https://. Dependabot добавляет или пропускает конечные косые черты по мере необходимости.
replaces-baseЕсли логическое значение равно true, Dependabot разрешает зависимости, используя указанный url , а не базовый URL-адрес этой экосистемы.

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

Хранение учетных данных для Dependabot для использования

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

О зашифрованных секретах для Dependabot

          Dependabot Секреты — это зашифрованные учетные данные, которые вы создаёте либо на уровне организации, либо на уровне репозитория.

При добавлении секрета на уровне организации можно указать, какие репозитории могут получать к нему доступ. Вы можете использовать секреты, чтобы обновлять Dependabot зависимости, расположенные в частных реестрах пакетов. Когда вы добавляете секрет, он шифруется ещё до того, как достигнет GitHub его, и остаётся зашифрованным, пока не будет использован Dependabot для доступа к приватному реестру пакетов.

          Dependabot Секреты также включают секреты, используемые рабочими GitHub Actions процессами, запускаемыми Dependabot pull-запросами. 
          Dependabot Сам по себе может не использовать эти секреты, но рабочие процессы требуют их. Дополнительные сведения см. в разделе [AUTOTITLE](/code-security/dependabot/troubleshooting-dependabot/troubleshooting-dependabot-on-github-actions#accessing-secrets).

После добавления Dependabot секрета вы можете ссылаться на него в dependabot.yml конфигурационном файле так: ${{secrets.NAME}}, где «NAME» — это имя, которое вы выбрали для секрета. Рассмотрим пример.

YAML
password: ${{secrets.MY_ARTIFACTORY_PASSWORD}}

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

Название секрета Dependabot :

  • может содержать только буквы и цифры ([A-Z], [0-9]) или символы подчеркивания (_); Пробелы недопустимы. Если ввести строчные буквы, они будут изменены на прописные.
  • не должно начинаться с префикса GITHUB_;
  • не должно начинаться с цифры.

Добавление секрета репозитория для Dependabot

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

  1. На GitHubперейдите на главную страницу репозитория.

  2. Под именем репозитория щелкните Settings. Если вкладка "Параметры" не отображается, выберите раскрывающееся меню и нажмите кнопку "Параметры".

    Снимок экрана: заголовок репозитория с вкладками. Вкладка "Параметры" выделена темно-оранжевым контуром.

  3. В разделе "Безопасность" боковой панели выберите Секреты и переменные, а затем щелкните Dependabot.

  4. Выберите Новый секрет репозитория.

  5. Введите имя для секрета в поле ввода Имя.

  6. Введите значение для секрета.

  7. Щелкните Добавить секрет.

    Имя секрета отображается на странице секретов Dependabot. Можно нажать кнопку Обновить, чтобы изменить значение секрета. Можно нажать кнопку Удалить, чтобы удалить секрет.

Добавление секрета организации для Dependabot

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

Чтобы создать секреты на уровне организации, требуется доступ уровня admin.

  1. На GitHubперейдите на главную страницу организации.

  2. Под именем организации щелкните Settings. Если вкладка "Параметры" не отображается, выберите раскрывающееся меню и нажмите кнопку "Параметры".

    Снимок экрана: вкладки в профиле организации. Вкладка "Параметры" выделена темно-оранжевым цветом.

           1. В разделе "Безопасность" боковой панели выберите **<svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-key-asterisk" aria-label="key-asterisk" role="img"><path d="M0 2.75A2.75 2.75 0 0 1 2.75 0h10.5A2.75 2.75 0 0 1 16 2.75v10.5A2.75 2.75 0 0 1 13.25 16H2.75A2.75 2.75 0 0 1 0 13.25ZM2.75 1.5c-.69 0-1.25.56-1.25 1.25v10.5c0 .69.56 1.25 1.25 1.25h10.5c.69 0 1.25-.56 1.25-1.25V2.75c0-.69-.56-1.25-1.25-1.25Z"></path><path d="M8 4a.75.75 0 0 1 .75.75V6.7l1.69-.975a.75.75 0 0 1 .75 1.3L9.5 8l1.69.976a.75.75 0 0 1-.75 1.298L8.75 9.3v1.951a.75.75 0 0 1-1.5 0V9.299l-1.69.976a.75.75 0 0 1-.75-1.3L6.5 8l-1.69-.975a.75.75 0 0 1 .75-1.3l1.69.976V4.75A.75.75 0 0 1 8 4Z"></path></svg> Секреты и переменные**, а затем щелкните **Dependabot**.
           
    
  3. Щелкните Создать секрет организации.

  4. Введите имя для секрета в поле ввода Имя.

  5. Введите значение для секрета.

  6. В раскрывающемся списке Доступ к репозиторию выберите политику доступа.

  7. Если вы выбрали вариант Выбранные репозитории:

    • Щелкните .
    • В диалоговом окне выберите репозитории, которые могут получить доступ к этому секрету.
    • Нажмите Обновить выбор.
  8. Щелкните Добавить секрет.

    Название секрета указано на странице Dependabot с секретами. Можно нажать кнопку Обновить, чтобы изменить значение секрета или политику доступа. Можно нажать кнопку Удалить, чтобы удалить секрет.

Использование OIDC для аутентификации

          Dependabot может использовать OpenID Connect (OIDC) для аутентификации с частными реестрами, что устраняет необходимость хранить долгоживущие учетные данные в виде секретов репозитория.

С помощью аутентификации на основе OIDC Dependabot задачи обновления могут динамически получать кратковременные учетные данные от вашего облачного идентификатора, как GitHub Actions и рабочие процессы, использующие федерацию OIDC.

          Dependabot Поддерживает аутентификацию OIDC для любого типа реестра, использующего `username` аутентификацию `password` , когда реестр размещён у одного из следующих облачных провайдеров:
  • AWS CodeArtifact
  • Azure DevOps Artifacts
  • Артефабрика JFrog

Чтобы настроить аутентификацию OIDC, нужно указывать разные значения вместо username и password в конфигурации реестра.

AWS CodeArtifact

AWS CodeArtifact требует значений aws-region, account-id, role-name``domain, и domain-owner. Поле audience является необязательным.

registries:
  my-aws-codeartifact-feed:
    type: npm-registry
    url: https://MY_DOMAIN-MY-ACCOUNT_ID.d.codeartifact.REGION.amazonaws.com/npm/MY_REPOSITORY/
    aws-region: REGION
    account-id: '123456789012'
    role-name: MY_ROLE_NAME
    domain: MY_DOMAIN
    domain-owner: '987654321098'
    audience: MY_AUDIENCE  # if required by your feed

Azure DevOps Artifacts

Azure DevOps Artifacts требуют значений tenant-id и client-id:

registries:
  my-azure-devops-artifacts-feed:
    type: npm-registry
    url: https://pkgs.dev.azure.com/MY-ORGANIZATION/MY-PROJECT/_packaging/MY-FEED/npm/registry/
    tenant-id: ${{ secrets.AZURE_TENANT_ID }}
    client-id: ${{ secrets.AZURE_CLIENT_ID }}

Артефабрика JFrog

JFrog Artifactory требует значений url и jfrog-oidc-provider-name. Значения audience и identity-mapping-name являются необязательными:

registries:
  my-jfrog-artifactory-feed:
    type: npm-registry
    url: https://JFROG-PLATFORM-URL/artifactory/api/npm/MY-REPOSITORY
    jfrog-oidc-provider-name: MY-PROVIDER
    audience: MY-AUDIENCE  # if required by your feed
    identity-mapping-name: MY-IDENTITY-MAPPING  # if required by your feed

Для получения дополнительной информации о том, как работает OIDC, см. OpenID Connect.

Разрешение выполнения внешнего кода

Когда вы предоставляете Dependabot доступ к одному или нескольким реестрам, внешний код автоматически отключается для защиты вашего кода от скомпрометированных пакетов. Однако некоторые обновления версий могут завершиться ошибкой.

Если вам нужно разрешить Dependabot доступ к приватному реестру пакетов и включить ограниченное внешнее выполнение кода, вы можете установить insecure-external-code-execution на allow. Возможность Dependabot запускать внешний код в манифесте во время обновлений не так страшна, как кажется:

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

Обычно для инструментов, таких как bundler, mixи pip``swift, позволяет выполнять внешний код по умолчанию.

В этом примере конфигурационный файл позволяет Dependabot получить доступ к ruby-github приватному реестру пакетов. В том же updatesпараметре задано insecure-external-code-executionзначение , что означает, что код, выполняемый зависимостями, allowбудет получать доступ только к рееструruby-github, а не к рееструdockerhub.

YAML
# Allow external code execution when updating dependencies from private registries

version: 2
registries:
  ruby-github:
    type: rubygems-server
    url: https://rubygems.pkg.github.com/octocat/github_api
    token: ${{secrets.MY_GITHUB_PERSONAL_TOKEN}}
updates:
  - package-ecosystem: "bundler"
    directory: "/rubygems-server"
    insecure-external-code-execution: allow
    registries: "*"
    schedule:
      interval: "monthly"

Поддерживаемые частные реестры

Примеры того, как настроить доступ к частным реестрам, поддерживаемым Dependabot.

cargo-registry

Тип cargo-registry поддерживает маркер безопасности.

Этот тип реестра будет соответствовать префиксу пути, указанному в параметре url . Это означает, что вы можете предоставить несколько учетных данных одному узлу, который можно использовать для доступа к отдельным путям. Однако если у вас нет нескольких реестров на одном узле, рекомендуется опустить путь из urlраздела, чтобы все пути к реестру получали учетные данные.

registries:
  cargo-example:
    type: cargo-registry
    registry: "name-of-your-registry"
    url: https://cargo.cloudsmith.io/foobaruser/test/
    token: "Token ${{secrets.CARGO_TOKEN}}"

Мы проверили эту конфигурацию в частном реестре https://cargo.cloudsmith.io .

composer-repository

Тип composer-repository поддерживает имя пользователя и пароль. Если учетная запись является учетной записью GitHub, вместо пароля можно использовать GitHub personal access token вместо пароля.

Этот тип реестра будет соответствовать префиксу пути, указанному в параметре url . Это означает, что вы можете предоставить несколько учетных данных одному узлу, который можно использовать для доступа к отдельным путям. Однако если у вас нет нескольких реестров на одном узле, рекомендуется опустить путь из urlраздела, чтобы все пути к реестру получали учетные данные.

YAML
registries:
  composer:
    type: composer-repository
    url: https://repo.packagist.com/example-company/
    username: octocat
    password: ${{secrets.MY_PACKAGIST_PASSWORD}}

docker-registry

          Dependabot работает с любыми реестрами контейнеров, реализующими спецификацию реестра контейнеров OCI. Для получения дополнительной информации см. [https://github.com/opencontainers/distribution-spec/blob/main/spec.md](https://github.com/opencontainers/distribution-spec/blob/main/spec.md). 
          Dependabot поддерживает аутентификацию в частные реестры через центральный сервис токенов или HTTP Basic Auth. Для подробностей см. [спецификацию аутентификации токенов](https://docs.docker.com/registry/spec/auth/token/) в документации Docker и базовую [аутентификацию](https://en.wikipedia.org/wiki/Basic_access_authentication) доступа на Википедии.

Тип docker-registry поддерживает имя пользователя и пароль. Если учетная запись является учетной записью GitHub, вместо пароля можно использовать GitHub personal access token вместо пароля.

Этот тип реестра будет соответствовать префиксу пути, указанному в параметре url . Это означает, что вы можете предоставить несколько учетных данных одному узлу, который можно использовать для доступа к отдельным путям. Однако если у вас нет нескольких реестров на одном узле, рекомендуется опустить путь из urlраздела, чтобы все пути к реестру получали учетные данные.

YAML
registries:
  dockerhub:
    type: docker-registry
    url: https://registry.hub.docker.com
    username: octocat
    password: ${{secrets.MY_DOCKERHUB_PASSWORD}}
    replaces-base: true

Этот docker-registry тип также можно использовать для извлечения из частного ECR Amazon с помощью статических учетных данных AWS.

YAML
registries:
  ecr-docker:
    type: docker-registry
    url: https://1234567890.dkr.ecr.us-east-1.amazonaws.com
    username: ${{secrets.ECR_AWS_ACCESS_KEY_ID}}
    password: ${{secrets.ECR_AWS_SECRET_ACCESS_KEY}}
    replaces-base: true

git

Тип git поддерживает имя пользователя и пароль. Если учетная запись является учетной записью GitHub, вместо пароля можно использовать GitHub personal access token вместо пароля.

YAML
registries:
  github-octocat:
    type: git
    url: https://github.com
    username: x-access-token
    password: ${{secrets.MY_GITHUB_PERSONAL_TOKEN}}

goproxy-server

Тип goproxy-server поддерживает имя пользователя и пароль. Если учетная запись является учетной записью GitHub, вместо пароля можно использовать GitHub personal access token вместо пароля.

Этот тип реестра будет соответствовать префиксу пути, указанному в параметре url . Это означает, что вы можете предоставить несколько учетных данных одному узлу, который можно использовать для доступа к отдельным путям. Однако если у вас нет нескольких реестров на одном узле, рекомендуется опустить путь из urlраздела, чтобы все пути к реестру получали учетные данные.

YAML
registries:
  my-private-registry:
    type: goproxy-server
    url: https://acme.jfrog.io/artifactory/api/go/my-repo
    username: octocat
    password: ${{secrets.MY_GO_REGISTRY_TOKEN}}

hex-organization

Тип hex-organization поддерживает организацию и ключ.

Этот тип реестра будет соответствовать префиксу пути, указанному в параметре url . Это означает, что вы можете предоставить несколько учетных данных одному узлу, который можно использовать для доступа к отдельным путям. Однако если у вас нет нескольких реестров на одном узле, рекомендуется опустить путь из urlраздела, чтобы все пути к реестру получали учетные данные.

YAML
registries:
  github-hex-org:
    type: hex-organization
    organization: github
    key: ${{secrets.MY_HEX_ORGANIZATION_KEY}}

hex-repository

Тип hex-repository поддерживает ключ проверки подлинности.

          `repo` является обязательным полем, которое должно соответствовать имени репозитория, используемого в объявлении зависимостей.

Это public-key-fingerprint необязательное поле конфигурации, представляющее отпечаток открытого ключа для репозитория Hex. public-key-fingerprint используется Hex для установления доверия с частным репозиторием. Поле может быть как в открытом тексте, так и public-key-fingerprint сохранено в Dependabot секрете.

YAML
registries:
   github-hex-repository:
     type: hex-repository
     repo: private-repo
     url: https://private-repo.example.com
     auth-key: ${{secrets.MY_AUTH_KEY}}
     public-key-fingerprint: ${{secrets.MY_PUBLIC_KEY_FINGERPRINT}}

maven-repository

          `maven-repository` Тип поддерживает имя пользователя, пароль и замену базы. Если учетная запись является учетной записью GitHub, вместо пароля можно использовать GitHub personal access token вместо пароля.

Этот тип реестра будет соответствовать префиксу пути, указанному в параметре url . Это означает, что вы можете предоставить несколько учетных данных одному узлу, который можно использовать для доступа к отдельным путям. Однако если у вас нет нескольких реестров на одном узле, рекомендуется опустить путь из urlраздела, чтобы все пути к реестру получали учетные данные.

YAML
registries:
  maven-artifactory:
    type: maven-repository
    url: https://acme.jfrog.io/artifactory/my-maven-registry
    username: octocat
    password: ${{secrets.MY_ARTIFACTORY_PASSWORD}}
    replaces-base: true

Также можно использовать аутентификацию OIDC для доступа к JFrog Artifactory. С OIDC Dependabot динамически получают кратковременные учетные данные вместо использования статических учетных данных.

YAML
registries:
  maven-artifactory-oidc:
    type: maven-repository
    url: https://acme.jfrog.io/artifactory/my-maven-registry
    tenant-id: ${{secrets.ARTIFACTORY_TENANT_ID}}
    client-id: ${{secrets.ARTIFACTORY_CLIENT_ID}}
    replaces-base: true

npm-registry

Тип npm-registry поддерживает имя пользователя и пароль или маркер безопасности. Если учетная запись является учетной записью GitHub, вместо пароля можно использовать GitHub personal access token вместо пароля.

При использовании имени пользователя и пароля .npmrcваш токен аутентификации может содержать закодированный base64``_password; однако пароль, указанный в вашем Dependabot конфигурационном файле, должен быть оригинальным (незакодированным) паролем.

Примечание.

При использовании npm.pkg.github.comне включайте путь. Вместо этого используйте https://npm.pkg.github.com URL-адрес без пути.

YAML
registries:
  npm-npmjs:
    type: npm-registry
    url: https://registry.npmjs.org
    username: octocat
    password: ${{secrets.MY_NPM_PASSWORD}}  # Must be an unencoded password
    replaces-base: true
YAML
registries:
  npm-github:
    type: npm-registry
    url: https://npm.pkg.github.com
    token: ${{secrets.MY_GITHUB_PERSONAL_TOKEN}}
    replaces-base: true

По соображениям безопасности не Dependabot устанавливает переменные среды. Yarn (версия 2 и более поздние версии) требует, чтобы все доступные переменные среды были заданы. При доступе к переменным среды в вашем .yarnrc.yml файле следует указать запасное значение, например ${ENV_VAR-fallback} или ${ENV_VAR:-fallback}. Дополнительные сведения см . в документации Yarnrc .

nuget-feed

Тип nuget-feed поддерживает имя пользователя и пароль или маркер безопасности. Если учетная запись является учетной записью GitHub, вместо пароля можно использовать GitHub personal access token вместо пароля.

          `nuget-feed` не поддерживает `replaces-base` параметр.
YAML
registries:
  nuget-example:
    type: nuget-feed
    url: https://nuget.example.com/v3/index.json
    username: octocat@example.com
    password: ${{secrets.MY_NUGET_PASSWORD}}
YAML
registries:
  nuget-azure-devops:
    type: nuget-feed
    url: https://pkgs.dev.azure.com/.../_packaging/My_Feed/nuget/v3/index.json
    username: octocat@example.com
    password: ${{secrets.MY_AZURE_DEVOPS_TOKEN}}

Вы также можете использовать аутентификацию OIDC для доступа к Azure DevOps Artifacts. С OIDC Dependabot динамически получают кратковременные учетные данные вместо использования статических учетных данных.

YAML
registries:
  nuget-azure-devops-oidc:
    type: nuget-feed
    url: https://pkgs.dev.azure.com/MyOrganization/MyProject/_packaging/MyArtifactFeedName/nuget/v3/index.json
    tenant-id: ${{secrets.AZURE_TENANT_ID}}
    client-id: ${{secrets.AZURE_CLIENT_ID}}

Значения AZURE_TENANT_ID и AZURE_CLIENT_ID можно получить на обзорной странице регистрации вашего приложения Entra ID.

pub-repository

Тип pub-repository поддерживает URL-адрес и маркер.

YAML
registries:
  my-pub-registry:
    type: pub-repository
    url: https://example-private-pub-repo.dev/optional-path
    token: ${{secrets.MY_PUB_TOKEN}}
updates:
  - package-ecosystem: "pub"
    directory: "/"
    schedule:
      interval: "weekly"
    registries:
      - my-pub-registry

python-index

Тип python-index поддерживает имя пользователя и пароль или маркер безопасности. Если учетная запись является учетной записью GitHub, вместо пароля можно использовать GitHub personal access token вместо пароля.

Этот тип реестра будет соответствовать префиксу пути, указанному в параметре url . Это означает, что вы можете предоставить несколько учетных данных одному узлу, который можно использовать для доступа к отдельным путям. Однако если у вас нет нескольких реестров на одном узле, рекомендуется опустить путь из urlраздела, чтобы все пути к реестру получали учетные данные.

YAML
registries:
  python-example:
    type: python-index
    url: https://example.com/_packaging/my-feed/pypi/example
    username: octocat
    password: ${{secrets.MY_BASIC_AUTH_PASSWORD}}
    replaces-base: true
YAML
registries:
  python-azure:
    type: python-index
    url: https://pkgs.dev.azure.com/octocat/_packaging/my-feed/pypi/example
    username: octocat@example.com
    password: ${{secrets.MY_AZURE_DEVOPS_TOKEN}}
    replaces-base: true

Вы также можете использовать аутентификацию OIDC для доступа к Azure DevOps Artifacts. С OIDC Dependabot динамически получают кратковременные учетные данные вместо использования статических учетных данных.

YAML
registries:
  python-azure-oidc:
    type: python-index
    url: https://pkgs.dev.azure.com/octocat/_packaging/my-feed/pypi/example
    tenant-id: ${{secrets.AZURE_TENANT_ID}}
    client-id: ${{secrets.AZURE_CLIENT_ID}}
    replaces-base: true

rubygems-server

Тип rubygems-server поддерживает имя пользователя и пароль или маркер безопасности. Если учетная запись является учетной записью GitHub, вместо пароля можно использовать GitHub personal access token вместо пароля.

Этот тип реестра будет соответствовать префиксу пути, указанному в параметре url . Это означает, что вы можете предоставить несколько учетных данных одному узлу, который можно использовать для доступа к отдельным путям. Однако если у вас нет нескольких реестров на одном узле, рекомендуется опустить путь из urlраздела, чтобы все пути к реестру получали учетные данные.

YAML
registries:
  ruby-example:
    type: rubygems-server
    url: https://rubygems.example.com
    username: octocat@example.com
    password: ${{secrets.MY_RUBYGEMS_PASSWORD}}
    replaces-base: true
YAML
registries:
  ruby-github:
    type: rubygems-server
    url: https://rubygems.pkg.github.com/octocat/github_api
    token: ${{secrets.MY_GITHUB_PERSONAL_TOKEN}}
    replaces-base: true

terraform-registry

Тип terraform-registry поддерживает маркер безопасности.

YAML
registries:
  terraform-example:
    type: terraform-registry
    url: https://terraform.example.com
    token: ${{secrets.MY_TERRAFORM_API_TOKEN}}