Skip to main content

Configuración de OpenID Connect en Octopus Deploy

Use OpenID Connect en los flujos de trabajo para autenticarse con Octopus Deploy.

Información general

OpenID Connect (OIDC) permite que los flujos de trabajo de GitHub Actions se autentiquen con Octopus Deploy para empujar paquetes, crear lanzamientos o desencadenar implementaciones sin almacenar contraseñas o claves de API de Octopus Deploy como secretos de GitHub.

En esta guía se proporciona información general sobre cómo configurar Octopus Deploy para confiar en el OIDC de GitHub como identidad federada, e incluye un ejemplo de flujo de trabajo para la acción octopusdeploy/login que usa tokens para autenticarse en su instancia de Octopus Deploy.

Prerrequisitos

  • Para conocer los conceptos básicos de cómo GitHub usa OpenID Connect (OIDC) y su arquitectura y ventajas, consulta OpenID Connect.

  • Antes de proceder, debes planear tu estrategia de seguridad para garantizar que los tokens de acceso solo se asignen de forma predecible. Para controlar la forma en que el proveedor de servicios en la nube emite tokens de acceso, tendrá que definir al menos una condición, para que los repositorios no confiables no puedan solicitar tokens de acceso para los recursos en la nube. Para más información, consulta OpenID Connect.

  • Si sigues esta guía en GHE.com, comprende que debes sustituir determinados valores en la siguiente documentación. Consulta OpenID Connect.

Adición del proveedor de identidades a Octopus Deploy

Para usar OIDC con Octopus Deploy, primero establezca una relación de confianza entre GitHub Actions y la instancia de Octopus Deploy. Para obtener más información sobre este proceso, consulte Uso de OpenID Connect con la API Octopus en la documentación de Octopus Deploy.

  1. Inicie sesión en la instancia de Octopus Deploy.
  2. Cree o abra la cuenta de servicio a la que se concederá acceso a través de la solicitud de token.
  3. Configure una nueva identidad de OIDC y defina el asunto pertinente contra el que se validará la solicitud de token del flujo de trabajo GitHub Actions.

Actualizar tu flujo de trabajo de GitHub Actions

Para actualizar tus flujos de trabajo para ODIC, necesitarás hacer dos cambios a tu YAML:

  1. Agregar ajustes de permisos para el token.
  2. Use la acción OctopusDeploy/login para intercambiar el token de OIDC (JWT) por un token de acceso a la nube.

Nota:

Cuando los entornos se usan en flujos de trabajo o en directivas de OIDC, se recomienda agregar reglas de protección al entorno para mayor seguridad. Por ejemplo, puedes configurar reglas de implementación en un entorno para restringir qué ramas y etiquetas se pueden implementar en el entorno o acceder a secretos del entorno. Para más información, consulta Administrar entornos para la implementación.

Agregar ajustes de permisos

La ejecución de un trabajo o flujo de trabajo requiere una configuración de permissions con id-token: write para permitir al proveedor OIDC de GitHub crear un JSON Web Token en cada ejecución.

Nota:

La configuración de id-token: write en los permisos del flujo de trabajo no otorga al flujo de trabajo permiso para modificar o escribir sobre ningún recurso. En su lugar, solo permite al flujo de trabajo solicitar (capturar) y usar (establecer) un token OIDC para una acción o paso. A continuación, este token se usa para autenticarse con servicios externos mediante un token de acceso de corta duración.

Para obtener información detallada sobre los permisos necesarios, ejemplos de configuración y escenarios avanzados, consulta Referencia de OpenID Connect.

Solicitar el token de acceso

La OctopusDeploy/login acción recibe un JWT del proveedor OIDC GitHub, y a continuación, solicita un token de acceso de su instancia de Octopus Server. Para obtener más información, consulte la documentación de OctopusDeploy/login.

En el ejemplo siguiente se intercambia un token de id. de OIDC con la instancia de Octopus Deploy para recibir un token de acceso, que luego se puede usar para acceder a los recursos de Octopus Deploy. Asegúrese de reemplazar de forma adecuada los server y service_account_id detalles para su escenario.

YAML
# Este flujo de trabajo usa acciones que no GitHub no certifica.
# Estas las proporcionan entidades terceras y las gobiernan
# condiciones de servicio, políticas de privacidad y documentación de soporte
# en línea.

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

Lectura adicional