Skip to main content

Google Cloud Storage에서 GitHub Actions 사용

GitHub Enterprise Server에서 GitHub Actions를 사용하도록 설정하고 Google Cloud Storage를 사용하여 워크플로 실행에 의해 생성된 데이터를 저장할 수 있습니다.

누가 이 기능을 사용할 수 있나요?

Site administrators can enable GitHub Actions and configure enterprise settings.

Note

Google Cloud Storage에 대한 GitHub Actions 지원은 현재 베타 버전이며 변경될 수 있습니다.

GitHub Actions에 대한 외부 스토리지 정보

GitHub Actions는 외부 blob 스토리지를 사용하여 워크플로 실행으로 생성된 데이터터를 저장합니다. 저장된 데이터에는 워크플로 로그, 캐시 및 사용자가 업로드한 빌드 아티팩트가 포함됩니다. 자세한 내용은 GitHub Enterprise Server용 GitHub Actions 시작을(를) 참조하세요.

외부 스토리지 공급자에 연결하도록 GitHub Enterprise Server을(를) 구성하는 두 가지 옵션이 있습니다.

  • OpenID Connect(OIDC)
  • 비밀을 사용하는 기존 자격 증명 기반 인증

스토리지 공급자에 대한 중요하고 수명이 긴 자격 증명 비밀을 만들거나, 관리할 필요가 없고 노출될 위험이 있으므로 가능한 경우 OIDC를 사용하는 것이 좋습니다. OIDC를 사용하여 트러스트를 정의한 후 클라우드 스토리지 공급자는 GitHub Enterprise Server 인스턴스에 단기 액세스 토큰을 자동으로 발급합니다. 이 토큰은 자동으로 만료됩니다.

필수 조건

GitHub Actions를 사용하도록 설정하기 전에 다음 단계를 완료했는지 확인합니다.

  • 워크플로 실행에서 생성된 데이터를 저장하기 위한 Google Cloud Storage 버킷을 만듭니다.

  • GitHub Actions에 대한 하드웨어 요구 사항을 검토합니다. 자세한 내용은 GitHub Enterprise Server용 GitHub Actions 시작을(를) 참조하세요.

  • GitHub Enterprise Server의 도메인에 대해 TLS를 구성해야 합니다. 자세한 내용은 TLS 구성을(를) 참조하세요.

    Note

    신뢰할 수 있는 기관에서 서명한 인증서를 사용하여 GitHub Enterprise Server에서 TLS를 구성하는 것이 좋습니다. 자체 서명된 인증서가 작동할 수 있지만 자체 호스팅 실행기에는 추가 구성이 필요하며 프로덕션 환경에는 권장되지 않습니다.

  • GitHub에 HTTP 프록시 서버가 구성되어 있는 경우:

  • HTTP 프록시 제외 목록에 .localhost127.0.0.1, ::1을(를) 이 순서로 추가해야 합니다.

  • 외부 스토리지 위치를 라우팅할 수 없는 경우, 외부 스토리지 URL도 제외 목록에 추가해야 합니다.

프록시 설정 또는 변경에 대한 자세한 내용은 아웃바운드 웹 프록시 서버 구성(을)를 참조하세요.

  • 스토리지 공급자에 대한 연결에 OIDC를 사용하는 경우 GitHub Enterprise Server 인스턴스에서 다음 OIDC 토큰 서비스 URL을 공용 인터넷에 노출해야 합니다.

    https://HOSTNAME/_services/token/.well-known/openid-configuration
    https://HOSTNAME/_services/token/.well-known/jwks
    

    이렇게 하면 스토리지 공급자가 인증을 위해 GitHub Enterprise Server 인스턴스에 연결할 수 있습니다.

OIDC를 사용하여 Google Cloud Storage의 GitHub Actions 활성화(권장)

Google Cloud Storage에 OIDC를 사용하도록 GitHub Enterprise Server을(를) 구성하려면 먼저 Google Cloud 서비스 계정을 만든 다음 Google Cloud ID 풀 및 ID 공급자를 만들고 마지막으로 공급자 및 서비스 계정을 사용하여 Google Cloud Storage 버킷에 액세스하도록 GitHub Enterprise Server을(를) 구성해야 합니다.

1. 서비스 계정 만들기

  1. OIDC를 사용하여 버킷에 액세스할 수 있는 서비스 계정을 만듭니다. 자세한 내용은 Google Cloud 설명서의 서비스 계정 만들기 및 관리를 참조하세요.

    서비스 계정을 만들 때 다음과 같이 해야 합니다.

    • 서비스 계정 만들기 및 관리 시작 시 설명한 대로 IAM API를 사용하도록 설정합니다.
    • 서비스 계정에 다음 역할을 추가합니다.
      • 서비스 계정 토큰 생성자
      • 저장소 개체 관리자
  2. 나중에 필요하므로, 서비스 계정을 만든 후 해당 이메일 주소를 기록해 둡니다. 서비스 계정 이메일 주소 형식은 SERVICE-ACCOUNT-NAME@PROJECT-NAME.iam.gserviceaccount.com입니다.

2. ID 풀 및 ID 공급자 만들기

  1. Google Cloud 콘솔에서 New workload provider and pool(새 워크로드 공급자 및 풀) 페이지로 이동합니다.

  2. "Create an identity pool"(ID 풀 만들기)에서 ID 풀의 이름을 입력하고 Continue(계속)를 클릭합니다.

  3. "Add a provider to pool"(풀에 공급자 추가)에서 다음을 수행합니다.

    • "Select a provider"(공급자 선택)에서 OpenID Connect (OIDC) 를 선택합니다.

    • "Provider name"(공급자 이름)에 공급자 이름을 입력합니다.

    • "Issuer (URL)"(발급사(URL))에 다음 URL을 입력합니다. 이때 HOSTNAME을 GitHub Enterprise Server 인스턴스의 공용 호스트 이름으로 바꿉니다.

      https://HOSTNAME/_services/token
      

      예시:

      https://my-ghes-host.example.com/_services/token
      
    • "Audiences"(대상 그룹)에서 Default audience(기본 대상 그룹)를 선택한 상태로 두고 나중에 필요하므로 ID 공급자 URL을 적어 둡니다. ID 공급자 URL은 https://iam.googleapis.com/projects/PROJECT-NUMBER/locations/global/workloadIdentityPools/POOL-NAME/providers/PROVIDER-NAME 형식입니다.

    • 계속을 클릭합니다.

  4. "Configure provider attributes"(공급자 특성 구성)에서 다음을 수행합니다.

    • "OIDC 1" 매핑에 assertion.sub를 입력합니다.

    • "Attribute Conditions"(특성 조건)에서 Add condition(조건 추가)을 클릭합니다.

    • "Condition CEL"(조건 CEL)에 다음 조건을 입력합니다. 이때 HOSTNAME을 GitHub Enterprise Server 인스턴스의 공용 호스트 이름으로 바꿉니다.

      google.subject == "HOSTNAME"
      

      예시:

      google.subject == "my-ghes-host.example.com"
      

      Note

      여기에 사용된 GitHub Enterprise Server 인스턴스의 호스트 이름은 프로토콜을 포함하지 않아야 합니다.

    • 저장을 클릭합니다.

  5. ID 풀을 만든 후 ID 풀 페이지의 맨 위에서 Grant access(액세스 권한 부여)를 클릭합니다.

    • "Select service account"(서비스 계정 선택)에서 이전 절차에서 만든 서비스 계정을 선택합니다.
    • "Select principals (identities that can access the service account)"(보안 주체 선택(서비스 계정에 액세스할 수 있는 ID)에서 Only identities matching the filter(필터와 일치하는 ID만)를 선택합니다.
    • "Attribute name"(특성 이름)에서 subject(주체)를 선택합니다.
    • "Attribute value"(특성 값)에 프로토콜 없이 GitHub Enterprise Server 호스트 이름을 입력합니다. 예들 들어 my-ghes-host.example.com입니다.
    • 저장을 클릭합니다.
    • 구성 파일이 필요하지 않으므로 "Configure your application"(애플리케이션 구성) 대화 상자를 닫으면 됩니다.

3. OIDC를 사용하여 Google Cloud Storage에 연결하도록 GitHub Enterprise Server 구성

  1. 페이지의 오른쪽 상단에 있는 의 관리 계정에서 을 클릭합니다.

  2. “Site admin”(사이트 관리자) 페이지에 아직 없는 경우 왼쪽 상단에서 Site admin(사이트 관리자)을 클릭합니다.

  3. " 사이트 관리자" 사이드바에서 관리 콘솔 을 클릭합니다.

  4. "설정" 사이드바에서 작업을 클릭합니다.

  5. "GitHub Actions"에서 GitHub Actions 활성화를 선택합니다.

  6. "아티팩트 및 로그 스토리지"의 "Google Cloud Storage" 옆에 있는 설치 프로그램을 클릭합니다.

  7. "인증"에서 OIDC(OpenID Connect) 를 선택하고 스토리지 값을 입력합니다.

    • 서비스 URL: 버킷의 서비스 URL입니다. 이 URL은 일반적으로 https://storage.googleapis.com입니다.

    • 버킷 이름: 버킷의 이름입니다.

    • 워크로드 ID 공급자 ID: ID 풀의 ID 공급자 ID입니다.

      이 값은 projects/PROJECT-NUMBER/locations/global/workloadIdentityPools/POOL-NAME/providers/PROVIDER-NAME 형식입니다. 이전 절차에서 설명한 https://iam.googleapis.com/ 값에서 접두사를 제거해야 합니다.

      예들 들어 projects/1234567890/locations/global/workloadIdentityPools/my-pool/providers/my-provider입니다.

    • 서비스 계정: 이전 절차에서 기록한 서비스 계정 이메일 주소입니다. 예들 들어 ghes-oidc-service-account@my-project.iam.gserviceaccount.com입니다.

  8. 스토리지 설정 테스트 버튼을 클릭하여 스토리지 설정의 유효성을 확인합니다.

    스토리지 설정의 유효성을 검증할 떄 오류가 있으면 스토리지 공급자와 설정을 확인하고 다시 검사합니다.

  9. "설정" 사이드바에서 설정 저장을 클릭합니다.

    Note

    관리 콘솔에 설정을 저장하면 시스템 서비스가 다시 시작되어 사용자에게 표시되는 가동 중지 시간이 발생할 수 있습니다.

  10. 구성 실행이 완료될 때까지 기다립니다.

HMAC 키를 사용하여 Google Cloud Storage에서 GitHub Actions 활성화

  1. 버킷에 액세스할 수 있는 Google Cloud 서비스 계정을 만들고 서비스 계정에 대한 HMAC(해시 기반 메시지 인증 코드) 키를 만듭니다. 자세한 내용은 Google Cloud 문서의 서비스 계정의 HMAC 키 관리를 참조하세요.

    서비스 계정에 버킷에 대한 다음 IAM(ID 및 액세스 관리) 권한이 있어야 합니다.

    • storage.objects.create
    • storage.objects.get
    • storage.objects.list
    • storage.objects.update
    • storage.objects.delete
    • storage.multipartUploads.create
    • storage.multipartUploads.abort
    • storage.multipartUploads.listParts
    • storage.multipartUploads.list 1. 페이지의 오른쪽 상단에 있는 의 관리 계정에서 을 클릭합니다.
  2. “Site admin”(사이트 관리자) 페이지에 아직 없는 경우 왼쪽 상단에서 Site admin(사이트 관리자)을 클릭합니다.

  3. " 사이트 관리자" 사이드바에서 관리 콘솔 을 클릭합니다.

  4. "설정" 사이드바에서 작업을 클릭합니다.

  5. "GitHub Actions"에서 GitHub Actions 활성화를 선택합니다.

  6. "아티팩트 및 로그 스토리지"의 "Google Cloud Storage" 옆에 있는 설치 프로그램을 클릭합니다.

  7. "인증"에서 자격 증명 기반을 선택하고 스토리지 버킷의 세부 정보를 입력합니다.

    • 서비스 URL: 버킷의 서비스 URL입니다. 이 URL은 일반적으로 https://storage.googleapis.com입니다.
    • 버킷 이름: 버킷의 이름입니다.
    • HMAC 액세스 ID 및 HMAC 비밀: 스토리지 계정의 Google Cloud 액세스 ID 및 비밀입니다. 자세한 내용은 Google Cloud 문서의 서비스 계정의 HMAC 키 관리를 참조하세요.
  8. 스토리지 설정 테스트 버튼을 클릭하여 스토리지 설정의 유효성을 확인합니다.

    스토리지 설정의 유효성을 검증할 떄 오류가 있으면 스토리지 공급자와 설정을 확인하고 다시 검사합니다.

  9. "설정" 사이드바에서 설정 저장을 클릭합니다.

    Note

    관리 콘솔에 설정을 저장하면 시스템 서비스가 다시 시작되어 사용자에게 표시되는 가동 중지 시간이 발생할 수 있습니다.

  10. 구성 실행이 완료될 때까지 기다립니다.

다음 단계

구성 실행이 성공적으로 완료되면 GitHub Actions가 GitHub에서 사용 설정됩니다. GitHub Actions 액세스 권한 관리 및 자체 호스팅 실행기 추가와 같은 다음 단계는 GitHub Enterprise Server용 GitHub Actions 시작으로 돌아갑니다.