참고: 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 프록시 제외 목록에
.localhost
및127.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. 서비스 계정 만들기
-
OIDC를 사용하여 버킷에 액세스할 수 있는 서비스 계정을 만듭니다. 자세한 내용은 Google Cloud 설명서의 서비스 계정 만들기 및 관리를 참조하세요.
서비스 계정을 만들 때 다음과 같이 해야 합니다.
- 서비스 계정 만들기 및 관리 시작 시 설명한 대로 IAM API를 사용하도록 설정합니다.
- 서비스 계정에 다음 역할을 추가합니다.
- 서비스 계정 토큰 생성자
- 저장소 개체 관리자
-
나중에 필요하므로, 서비스 계정을 만든 후 해당 이메일 주소를 기록해 둡니다. 서비스 계정 이메일 주소 형식은
SERVICE-ACCOUNT-NAME@PROJECT-NAME.iam.gserviceaccount.com
입니다.
2. ID 풀 및 ID 공급자 만들기
-
Google Cloud 콘솔에서 New workload provider and pool(새 워크로드 공급자 및 풀) 페이지로 이동합니다.
-
"Create an identity pool"(ID 풀 만들기)에서 ID 풀의 이름을 입력하고 Continue(계속)를 클릭합니다.
-
"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
형식입니다. -
계속을 클릭합니다.
-
-
"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 인스턴스의 호스트 이름은 프로토콜을 포함하지 않아야 합니다.
-
저장을 클릭합니다.
-
-
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 구성
-
페이지의 오른쪽 상단에 있는 GitHub Enterprise Server의 관리 계정에서 을 클릭합니다.
-
“Site admin”(사이트 관리자) 페이지에 아직 없는 경우 왼쪽 상단에서 Site admin(사이트 관리자)을 클릭합니다.
-
" 사이트 관리자" 사이드바에서 관리 콘솔 을 클릭합니다.
-
"설정" 사이드바에서 작업을 클릭합니다.
-
"GitHub Actions"에서 GitHub Actions 활성화를 선택합니다.
-
"아티팩트 및 로그 스토리지"의 "Google Cloud Storage" 옆에 있는 설치 프로그램을 클릭합니다.
-
"인증"에서 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
입니다.
-
-
스토리지 설정 테스트 버튼을 클릭하여 스토리지 설정의 유효성을 확인합니다.
스토리지 설정의 유효성을 검증할 떄 오류가 있으면 스토리지 공급자와 설정을 확인하고 다시 검사합니다.
-
"설정" 사이드바에서 설정 저장을 클릭합니다.
참고: 관리 콘솔에 설정을 저장하면 시스템 서비스가 다시 시작되어 사용자에게 표시되는 가동 중지 시간이 발생할 수 있습니다.
-
구성 실행이 완료될 때까지 기다립니다.
HMAC 키를 사용하여 Google Cloud Storage에서 GitHub Actions 활성화
-
버킷에 액세스할 수 있는 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의 관리 계정에서 을 클릭합니다.
-
“Site admin”(사이트 관리자) 페이지에 아직 없는 경우 왼쪽 상단에서 Site admin(사이트 관리자)을 클릭합니다.
-
" 사이트 관리자" 사이드바에서 관리 콘솔 을 클릭합니다.
-
"설정" 사이드바에서 작업을 클릭합니다.
-
"GitHub Actions"에서 GitHub Actions 활성화를 선택합니다.
-
"아티팩트 및 로그 스토리지"의 "Google Cloud Storage" 옆에 있는 설치 프로그램을 클릭합니다.
-
"인증"에서 자격 증명 기반을 선택하고 스토리지 버킷의 세부 정보를 입력합니다.
- 서비스 URL: 버킷의 서비스 URL입니다. 이 URL은 일반적으로
https://storage.googleapis.com
입니다. - 버킷 이름: 버킷의 이름입니다.
- HMAC 액세스 ID 및 HMAC 비밀: 스토리지 계정의 Google Cloud 액세스 ID 및 비밀입니다. 자세한 내용은 Google Cloud 문서의 서비스 계정의 HMAC 키 관리를 참조하세요.
- 서비스 URL: 버킷의 서비스 URL입니다. 이 URL은 일반적으로
-
스토리지 설정 테스트 버튼을 클릭하여 스토리지 설정의 유효성을 확인합니다.
스토리지 설정의 유효성을 검증할 떄 오류가 있으면 스토리지 공급자와 설정을 확인하고 다시 검사합니다.
-
"설정" 사이드바에서 설정 저장을 클릭합니다.
참고: 관리 콘솔에 설정을 저장하면 시스템 서비스가 다시 시작되어 사용자에게 표시되는 가동 중지 시간이 발생할 수 있습니다.
-
구성 실행이 완료될 때까지 기다립니다.
다음 단계
구성 실행이 성공적으로 완료되면 GitHub Actions가 GitHub에서 사용 설정됩니다. GitHub Actions 액세스 권한 관리 및 자체 호스팅 실행기 추가와 같은 다음 단계는 "GitHub Enterprise Server용 GitHub Actions 시작"으로 돌아갑니다.