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.

참고: 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 구성"을(를) 참조하세요.

    참고: 신뢰할 수 있는 기관에서 서명한 인증서를 사용하여 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"
      

      참고: 여기에 사용된 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. 페이지의 오른쪽 상단에 있는 GitHub Enterprise Server의 관리 계정에서 을 클릭합니다.

  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. "설정" 사이드바에서 설정 저장을 클릭합니다.

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

  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. 페이지의 오른쪽 상단에 있는 GitHub Enterprise Server의 관리 계정에서 을 클릭합니다.
  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 액세스 IDHMAC 비밀: 스토리지 계정의 Google Cloud 액세스 ID 및 비밀입니다. 자세한 내용은 Google Cloud 문서의 서비스 계정의 HMAC 키 관리를 참조하세요.
  8. 스토리지 설정 테스트 버튼을 클릭하여 스토리지 설정의 유효성을 확인합니다.

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

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

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

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

다음 단계

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