Información general
OpenID Connect (OIDC) permite GitHub Actions que los flujos de trabajo se autentiquen con JFrog para descargar y publicar artefactos sin almacenar contraseñas, tokens o claves de API de JFrog en GitHub.
En esta guía se proporciona información general sobre cómo configurar JFrog para confiar GitHuben OIDC como una identidad federada y se muestra cómo usar esta configuración en un GitHub Actions flujo de trabajo.
Para ver un flujo de trabajo de ejemplo GitHub Actions, consulte Integración de GitHub Actions ejemplo en la documentación de JFrog.
Para obtener un flujo de trabajo de ejemplo GitHub Actions mediante la CLI de JFrog, consulte build-publish.yml en el jfrog-github-oidc-example repositorio.
Requisitos previos
-
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.
-
Para estar protegido, debes establecer un JSON de notificaciones en JFrog al configurar asignaciones de identidad. Para más información, consulta AUTOTITLE y OpenID Connect.
Por ejemplo, puedes establecer
issenhttps://token.actions.githubusercontent.com, yrepositoryen algo parecido a "octo-org/octo-repo"'. Esto garantizará que solo los flujos de trabajo de Acciones del repositorio especificado tengan acceso a la plataforma JFrog. A continuación se muestra un ejemplo de JSON de notificaciones al configurar asignaciones de identidad.JSON { "iss": "https://token.actions.githubusercontent.com", "repository": "octo-org/octo-repo" }{ "iss": "https://token.actions.githubusercontent.com", "repository": "octo-org/octo-repo" }
Incorporación del proveedor de identidades a JFrog
Para usar OIDC con JFrog, establezca una relación de confianza entre GitHub Actions y la plataforma JFrog. Para obtener más información sobre este proceso, consulta Integración de OpenID Connect en la documentación de JFrog.
- Inicia sesión en la plataforma JFrog.
- Configure la confianza entre JFrog y los GitHub Actions flujos de trabajo.
- Configura asignaciones de identidad.
Actualizando tu GitHub Actions flujo de trabajo
Autenticación con JFrog mediante OIDC
En el archivo GitHub Actions de flujo de trabajo, asegúrese de utilizar el nombre del proveedor y la audiencia que configuró en la plataforma JFrog.
En el ejemplo siguiente se usan los marcadores de posición YOUR_PROVIDER_NAME y YOUR_AUDIENCE.
# 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.
permissions:
id-token: write
contents: read
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Set up JFrog CLI with OIDC
id: setup-jfrog-cli
uses: jfrog/setup-jfrog-cli@29fa5190a4123350e81e2a2e8d803b2a27fed15e
with:
JF_URL: ${{ env.JF_URL }}
oidc-provider-name: 'YOUR_PROVIDER_NAME'
oidc-audience: 'YOUR_AUDIENCE' # This is optional
- name: Upload artifact
run: jf rt upload "dist/*.zip" my-repo/
Sugerencia
Cuando se usa la autenticación OIDC, la acción setup-jfrog-cli proporciona automáticamente oidc-user y oidc-token como salidas de paso.
Se pueden usar para otras integraciones que requieren autenticación con JFrog.
Para hacer referencia a estas salidas, asegúrate de que el paso tiene definido explícitamente id (por ejemplo, id: setup-jfrog-cli).
Uso de credenciales de OIDC en otros pasos
# 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.
- name: Sign in to Artifactory Docker registry
uses: docker/login-action@v3
with:
registry: ${{ env.JF_URL }}
username: ${{ steps.setup-jfrog-cli.outputs.oidc-user }}
password: ${{ steps.setup-jfrog-cli.outputs.oidc-token }}
Información adicional
- Integración de OpenID Connect en la documentación de JFrog
- Mapeos de identidad en la documentación de JFrog
- OpenID Connect