Skip to main content

Настройка OpenID Connect в Octopus Deploy

Используйте OpenID Connect в своих рабочих процессах для аутентификации с помощью Octopus Deploy.

Обзор

OpenID Connect (OIDC) позволяет вашим рабочим процессам GitHub Actions аутентифицироваться с помощью Octopus Deploy , чтобы отправлять пакеты, создавать релизы или запускать развертывания без хранения паролей или API-ключей Octopus Deploy как долгоживущих GitHub секретов.

В этом руководстве представлен обзор того, как настроить Octopus Deploy так, чтобы он доверял OIDC GitHub как федеративную идентичность, а также включает пример рабочего процесса octopusdeploy/login действия, использующего токены для аутентификации в вашем экземпляре Octopus Deploy.

Предпосылки

  • Основные понятия о том, как GitHub использует OpenID Connect (OIDC) и его архитектуру и преимущества, см. в разделе OpenID Connect.

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

  • Если вы используете это руководство по GHE.com, понять, что необходимо заменить определенные значения в следующей документации. См . раздел AUTOTITLE.

Добавление идентификатора в Octopus Deploy

Чтобы использовать OIDC с Octopus Deploy, сначала установите доверительные отношения между GitHub Actions и вашим экземпляром Octopus Deploy. Для получения дополнительной информации об этом процессе см. раздел «Использование OpenID Connect с API Octopus » в документации Octopus Deploy.

  1. Войдите в свой экземпляр Octopus Deploy.
  2. Создайте или откройте сервисный аккаунт, к которому будет предоставлен доступ через запрос токена.
  3. Настройте новую идентичность OIDC, определив соответствующий объект, по которому будет валидироваться запрос токена на рабочий процесс GitHub Actions.

Обновление рабочего процесса GitHub Actions

Чтобы обновить рабочие процессы для OIDC, необходимо внести два изменения в YAML:

  1. Добавьте параметры разрешений для маркера.
  2. Используйте действие OctopusDeploy/login для обмена токена OIDC (JWT) на облачный токен доступа.

Примечание.

Если среды используются в рабочих процессах или политиках OIDC, рекомендуется добавить правила защиты в среду для дополнительной безопасности. Например, можно настроить правила развертывания в среде, чтобы ограничить, какие ветви и теги могут развертываться в среде или получить доступ к секретам среды. Дополнительные сведения см. в разделе Управление средами для развертывания.

Добавление параметров разрешений

Для выполнения задания или рабочего процесса требуется permissions параметр, позволяющий id-token: write поставщику OIDC GitHubсоздать веб-токен JSON для каждого запуска.

Примечание.

Параметр id-token: write в разрешениях рабочего процесса не дает рабочему процессу разрешение на изменение или запись в ресурсы. Вместо этого он позволяет рабочему процессу запрашивать (получить) и использовать (задать) маркер OIDC для действия или шага. Затем этот маркер используется для проверки подлинности с помощью внешних служб с помощью кратковременного маркера доступа.

Подробные сведения о необходимых разрешениях, примерах конфигурации и расширенных сценариях см. в разделе Справочник по OpenID Connect.

Запрос маркера доступа

Действие OctopusDeploy/login получает JWT от OIDC-провайдера GitHub, а затем запрашивает токен доступа у вашего экземпляра Octopus Server. Для получения дополнительной информации смотрите документацию OctopusDeploy/login.

В следующем примере используется обмен токена OIDC ID с вашим экземпляром Octopus Deploy для получения токена доступа, который затем можно использовать для доступа к ресурсам Octopus Deploy. Обязательно замените server``service_account_id детали соответствующим образом для вашей ситуации.

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

jobs:
  create_release_in_octopus:
    runs-on: ubuntu-latest
    name: Create a release in Octopus
    permissions:
      # You might need to add other permissions here like `contents: read` depending on what else your job needs to do
      id-token: write # This is required to obtain an ID token from GitHub Actions for the job
    steps:
      - name: Login to Octopus
        uses: OctopusDeploy/login@34b6dcc1e86fa373c14e6a28c5507d221e4de629 #v1.0.2
        with:
          server: https://my.octopus.app
          service_account_id: 5be4ac10-2679-4041-a8b0-7b05b445e19e

      - name: Create a release in Octopus
        uses: OctopusDeploy/create-release-action@fe13cc69c1c037cb7bb085981b152f5e35257e1f #v3.2.2
        with:
          space: Default
          project: My Octopus Project

Дополнительные материалы