클라우드 서비스에 연결하기
GitLab CI/CD는 OpenID Connect (OIDC)를 지원하여 빌드 및 배포 작업이 클라우드 자격 증명 및 서비스에 액세스할 수 있도록 합니다. 과거에는 팀이 프로젝트에 비밀을 저장하거나 GitLab Runner 인스턴스에 권한을 적용하여 빌드 및 배포를 했습니다. OIDC 호환 ID tokens은 CI/CD 작업에서 구성할 수 있으며 확장 가능하고 최소 권한 보안 접근 방식을 따를 수 있도록 합니다.
GitLab 15.6 이전에는 ID 토큰 대신 CI_JOB_JWT_V2
를 사용해야 했지만 이는 사용자 정의할 수 없습니다.
전제 조건
- GitLab 계정.
- OIDC를 지원하는 클라우드 공급 업체 액세스를 통한 권한 부여 및 역할 생성.
ID tokens은 다음과 같은 OIDC를 지원하는 클라우드 공급 업체를 지원합니다.
- AWS
- Azure
- GCP
- HashiCorp Vault
- GitLab 그룹이나 프로젝트에 비밀을 저장할 필요가 없습니다. 임시 자격 증명을 클라우드 공급 업체에서 가져올 수 있습니다.
- 그룹, 프로젝트, 브랜치 또는 태그를 포함한 GitLab 조건부로 클라우드 리소스에 임시 액세스를 제공합니다.
- CI/CD 작업에서 환경에 대한 조건부 액세스로 역할의 분리를 정의할 수 있습니다. 과거에는 앱이 전용 권한을 가진 지정된 GitLab Runner로 배포되었습니다. 이는 각각의 머신이 전용 권한을 가지게 되어 Runner가 퍼져버린 결과를 초래했습니다.
- 인스턴스 Runner가 여러 클라우드 계정에 안전하게 액세스할 수 있게 합니다. 액세스는 파이프라인을 실행하는 사용자에게 특정한 JWT 토큰에 의해 결정됩니다.
- 임시 자격 증명을 기본값으로 가져와 비밀을 회전시키기 위한 논리를 생성하는 필요성을 제거합니다.
작동 방식
각 작업은 token payload을 포함하는 CI/CD 변수로 제공되는 ID tokens로 구성할 수 있습니다. 이러한 JWT는 AWS, Azure, GCP 또는 Vault와 같은 OIDC를 지원하는 클라우드 제공 업체와의 인증을 하는 데 사용될 수 있습니다.
권한 부여 워크플로우
- 클라우드(예: AWS, Azure, GCP, Vault)에 OIDC 식별 공급 업체 생성
- 클라우드 서비스에 대한 조건부 역할을 생성하여 그룹, 프로젝트, 브랜치 또는 태그에 필터로 적용합니다.
- CI/CD 작업에는 JWT 토큰인 ID token이 포함됩니다. 이 토큰을 사용하여 클라우드 API에 권한을 부여할 수 있습니다.
- 클라우드는 토큰을 확인하고 페이로드에서 조건부 역할을 유효성 검사하고 임시 자격 증명을 반환합니다.
OIDC 클라우드 제공 업체와의 조건부 역할 구성
GitLab과 OIDC 간의 신뢰 설정을 구성하려면 클라우드 제공 업체에 조건부 역할을 만들어서 JWT와 일치시켜야 합니다.
조건은 클라우드 제공 업체에서 JWT에 대한 검증을 진행하여 신뢰를 만들어야 합니다 지정된 청구 중 두 가지, 즉 대상과 수위에 대해 신뢰를 생성합니다.
-
대상 또는
aud
: ID token의 일부로 구성됩니다:job_needing_oidc_auth: id_tokens: OIDC_TOKEN: aud: https://oidc.provider.com script: - echo $OIDC_TOKEN
-
수위 또는
sub
: 프로젝트, 그룹, 브랜치 및 태그를 포함한 GitLab CI/CD 워크플로를 설명하는 메타데이터의 연결입니다.sub
필드는 다음과 같은 형식을 가집니다:project_path:{group}/{project}:ref_type:{type}:ref:{branch_name}
필터 유형 | 예시 |
---|---|
모든 브랜치로 필터링 | 와일드카드 지원. project_path:mygroup/myproject:ref_type:branch:ref:*
|
특정 프로젝트의 메인 브랜치로 필터링 | project_path:mygroup/myproject:ref_type:branch:ref:main
|
특정 그룹 아래의 모든 프로젝트로 필터링 | 와일드카드 지원. project_path:mygroup/*:ref_type:branch:ref:main
|
Git 태그로 필터링 | 와일드카드 지원. project_path:mygroup/*:ref_type:tag:ref:1.0
|
클라우드 제공 업체와의 OIDC 권한 부여
클라우드 공급 업체와 연결하기 위한 자습서는 다음을 참조하세요: