Skip to main content

Octopus Deploy에서 OpenID Connect 구성하기

워크플로 내에서 OpenID Connect를 사용하여 Octopus Deploy로 인증합니다.

개요

OpenID Connect(OIDC)를 사용하면 GitHub Actions 워크플로가 장기 GitHub 시크릿에 Octopus Deploy 암호 또는 API 키를 저장하지 않고도 Octopus Deploy에 인증하여 패키지를 푸시하고, 릴리스를 만들고, 배포를 트리거할 수 있습니다.

이 가이드에서는 GitHub의 OIDC를 페더레이션 ID로 신뢰하도록 Octopus Deploy를 구성하는 방법에 대한 개요를 제공하며, 토큰을 사용하여 Octopus Deploy 인스턴스에 인증하는 작업에 대한 octopusdeploy/login 워크플로 예제를 포함합니다.

필수 조건

데이터 재사용.활동.OIDC-도입부로의 링크 %}

  • 계속하기 전에 액세스 토큰이 예측 가능한 방식으로만 할당되도록 보안 전략을 계획해야 합니다. 클라우드 공급자가 액세스 토큰을 발급하는 방법을 제어하려면 신뢰할 수 없는 리포지토리가 클라우드 리소스에 대한 액세스 토큰을 요청할 수 없도록 하나 이상의 조건을 정의해야 합니다. 자세한 내용은 OpenID Connect을(를) 참조하세요.

  • GHE.com에서 이 가이드를 따르는 경우 다음 문서의 특정 값을 대체해야 한다는 점을 알아 두세요. OpenID Connect을(를) 참조하세요.

Octopus 배포에 ID 공급자 추가

OIDC를 Octopus Deploy와 함께 사용하려면, 먼저 GitHub Actions와 Octopus Deploy 인스턴스 간에 신뢰 관계를 설정합니다. 이 프로세스에 대한 자세한 내용은 문어 배포 설명서에서 문어 API와 OpenID Connect 사용을 참조하세요.

  1. Octopus Deploy 인스턴스에 로그인합니다.
  2. 토큰 요청을 통해 액세스 권한을 부여할 서비스 계정을 만들거나 엽니다.
  3. GitHub Actions 워크플로 토큰 요청의 유효성을 검증하기 위해 관련 주체를 정의함으로써 새로운 OIDC ID를 설정합니다.

GitHub Actions 워크플로 업데이트

OIDC에 대한 워크플로를 업데이트하려면 YAML에 두 가지를 변경해야 합니다.

  1. 토큰에 대한 사용 권한 설정을 추가합니다.
  2.        [
           `OctopusDeploy/login`
           ](https://github.com/OctopusDeploy/login) 작업을 사용하여 OIDC 토큰(JWT)을 클라우드 액세스 토큰으로 교환합니다.
    

참고

워크플로 또는 OIDC 정책에서 환경을 사용하는 경우 추가 보안을 위해 환경에 보호 규칙을 추가하는 것이 좋습니다. 예를 들어 환경에 배포할 수 있는 분기 및 태그를 제한하거나 환경 비밀에 액세스하도록 환경에 대한 배포 규칙을 구성할 수 있습니다. 자세한 내용은 배포 환경 관리을(를) 참조하세요.

사용 권한 설정 추가

작업 또는 워크플로 실행 시, GitHub의 OIDC 공급자가 각 실행마다 JSON 웹 토큰을 생성할 수 있도록 permissions 설정과 id-token: write이 필요합니다.

참고

워크플로 권한에서 id-token: write을 설정해도 워크플로에 리소스를 수정하거나 쓸 수 있는 권한이 부여되지는 않습니다. 대신 워크플로는 작업이나 단계의 OIDC 토큰을 요청(가져오기)하고 사용(설정)하는 것만 허용합니다. 이 토큰은 수명이 짧은 액세스 토큰을 사용하여 외부 서비스에 인증하는 데 사용됩니다.

필요한 권한, 구성 예, 고급 시나리오에 대한 자세한 내용은 OpenID 연결 참조을(를) 참조하세요.

액세스 토큰 요청

          [
          `OctopusDeploy/login`
          ](https://github.com/OctopusDeploy/login) 작업은 GitHub OIDC 공급자에서 JWT를 받은 다음 Octopus Server 인스턴스에 액세스 토큰을 요청합니다. 자세한 내용은 [`OctopusDeploy/login`](https://github.com/OctopusDeploy/login) 설명서를 참조하세요.

다음 예제에서는 OIDC ID 토큰을 Octopus Deploy 인스턴스와 교환하여 액세스 토큰을 수신한 후, 이를 사용하여 Octopus Deploy 리소스에 접근할 수 있습니다. 시나리오에 맞게 serverservice_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

추가 읽기