Skip to main content

Configurando o OpenID Connect no JFrog

Use o OpenID Connect em seus fluxos de trabalho para se autenticar no JFrog.

Visão geral

O OIDC (OpenID Connect) permite que seus GitHub Actions fluxos de trabalho se autentiquem com jFrog para baixar e publicar artefatos sem armazenar senhas JFrog, tokens ou chaves de API em GitHub.

Este guia fornece uma visão geral de como configurar o JFrog para confiar no GitHubOIDC como uma identidade federada e demonstra como usar essa configuração em um GitHub Actions fluxo de trabalho.

Para ver um fluxo de trabalho de exemplo GitHub Actions, consulte Integração de exemplo GitHub Actions na documentação da JFrog.

Para obter um exemplo GitHub Actions de fluxo de trabalho usando a CLI JFrog, consulte build-publish.yml no jfrog-github-oidc-example repositório.

Pré-requisitos

  • Para saber os conceitos básicos de como o GitHub usa o OIDC (OpenID Connect), além da arquitetura e dos benefícios, confira OpenID Connect.

  • Antes de prosseguir, você deve planejar sua estratégia de segurança para garantir que os tokens de acesso sejam atribuídos apenas de forma previsível. Para controlar como o provedor de nuvem emite os tokens de acesso, você precisa definir, pelo menos, uma condição, para que os repositórios não confiáveis não possam solicitar tokens de acesso aos seus recursos de nuvem. Para saber mais, confira OpenID Connect.

  • Para ser seguro, você precisa definir um JSON de declarações no JFrog ao configurar mapeamentos de identidade. Para saber mais, confira AUTOTITLE e OpenID Connect.

    Por exemplo, você pode definir iss como https://token.actions.githubusercontent.com, e o repository como algo como "octo-org/octo-repo"'. Isso vai garantir que apenas os fluxos de trabalho de Ações do repositório especificado tenham acesso à sua plataforma JFrog. A seguir, um exemplo de JSON de declarações ao configurar mapeamentos de identidade.

    JSON
    {
        "iss": "https://token.actions.githubusercontent.com",
        "repository": "octo-org/octo-repo"
    }
    

Adicionando o provedor de identidade ao JFrog

Para usar o OIDC com o JFrog, estabeleça uma relação de confiança entre GitHub Actions e a plataforma JFrog. Para obter mais informações sobre esse processo, consulte Integração do OpenID Connect na documentação do JFrog.

  1. Inicie sessão na plataforma JFrog.
  2. Configure a confiança entre o JFrog e seus GitHub Actions fluxos de trabalho.
  3. Configurar mapeamentos de identidade.

Atualizando seu GitHub Actions fluxo de trabalho

Autenticação com JFrog usando OIDC

GitHub Actions No arquivo de fluxo de trabalho, verifique se você está usando o nome do provedor e o público que você configurou na Plataforma JFrog.

O exemplo a seguir usa os espaços reservados YOUR_PROVIDER_NAME e YOUR_AUDIENCE.

# Esse fluxo de trabalho usa ações que não são certificadas pelo GitHub.
# São fornecidas por terceiros e regidas por
# termos de serviço, política de privacidade e suporte separados
# online.
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/

Dica

Quando a autenticação OIDC é usada, a ação setup-jfrog-cli fornece automaticamente oidc-user e oidc-token como saídas da etapa. Essas opções podem ser usadas para outras integrações que exigem autenticação com o JFrog. Para referenciar essas saídas, certifique-se de que a etapa tenha id explícito definido (por exemplo, id: setup-jfrog-cli).

Usando credenciais do OIDC em outras etapas

# Esse fluxo de trabalho usa ações que não são certificadas pelo GitHub.
# São fornecidas por terceiros e regidas por
# termos de serviço, política de privacidade e suporte separados
# online.
      - 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 }}

Leitura adicional