클라우드 서비스에 연결
GitLab CI/CD는 OpenID Connect (OIDC)를 지원하여 빌드 및 배포 작업이 클라우드 자격 증명 및 서비스에 액세스할 수 있습니다. 과거에는 팀이 프로젝트에 비밀을 저장하거나 GitLab 러너 인스턴스에 권한을 적용하여 빌드 및 배포를 했습니다. OIDC를 지원하는 ID 토큰은 CI/CD 작업에서 구성할 수 있어 확장 가능하고 최소 권한 보안 접근 방식을 따를 수 있습니다.
GitLab 15.6 및 그 이전 버전에서는 ID 토큰 대신 CI_JOB_JWT_V2
를 사용해야 하지만, 이는 사용자 정의할 수 없습니다.
전제 조건
- GitLab 계정.
- OIDC를 지원하는 클라우드 공급업체의 계정을 사용하여 권한 부여 및 역할을 만들 수 있어야 합니다.
ID 토큰은 다음을 포함한 OIDC를 지원하는 클라우드 공급업체를 지원합니다.
- AWS
- Azure
- GCP
- HashiCorp Vault
사용 사례
- GitLab 그룹이나 프로젝트에 비밀을 저장할 필요가 없어집니다. 임시 자격 증명을 클라우드 공급업체에서 검색할 수 있습니다.
- 그룹, 프로젝트, 브랜치 또는 태그를 포함한 세밀한 GitLab 조건부를 사용하여 클라우드 리소스에 임시 액세스를 제공합니다.
- CI/CD 작업에서 역할을 조건부 액세스로 정의할 수 있습니다. 과거에는 앱이 staging 또는 production 환경에만 액세스할 수 있는 지정된 GitLab 러너를 사용하여 배포되었습니다. 이는 각 기계에 대한 전용 권한으로 인해 러너가 증가함을 야기했습니다.
- 인스턴스 러너가 여러 클라우드 계정에 안전하게 액세스할 수 있습니다. 액세스는 파이프라인을 실행하는 사용자에 따라 달라지는 JWT 토큰에 의해 결정됩니다.
- 임시 자격 증명을 가져와서 기본적으로 비밀을 회전시키는 논리를 만들 필요가 없어집니다.
작동 방식
각 작업은 토큰 페이로드를 포함하는 CI/CD 변수로 제공되는 ID 토큰으로 구성할 수 있습니다. 이러한 JWT는 AWS, Azure, GCP또는 Vault와 같은 OIDC를 지원하는 클라우드 공급업체와 인증하는 데 사용할 수 있습니다.
권한 부여 작업 흐름
- 클라우드(예: AWS, Azure, GCP, Vault)에 OIDC 신원 공급자를 생성합니다.
- 클라우드 서비스에 조건부 역할을 생성하여 그룹, 프로젝트, 브랜치 또는 태그로 필터링합니다.
- CI/CD 작업에는 JWT 토큰인 ID 토큰이 포함되어 있습니다. 이 토큰을 사용하여 클라우드 API를 통해 인증할 수 있습니다.
- 클라우드에서 토큰을 검증하고, 페이로드에서 조건부 역할을 유효성 검사하여 임시 자격 증명을 반환합니다.
OIDC 클라우드 제공자와의 조건부 역할 구성
GitLab 및 OIDC 사이의 신뢰를 구성하려면 클라우드 공급업체에서 JWT를 확인하는 조건부 역할을 생성해야 합니다. 조건부는 JWT를 통해 확인되며, 이는 특히 오디언스와 서브젝트 두 클레임에 대한 신뢰를 생성하기 위해 구성됩니다.
-
오디언스 또는
aud
: ID 토큰의 일부로 구성됨: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 권한 부여
클라우드 공급업체와 연결하려면 다음 자습서를 참조하십시오: