클라우드 서비스에 연결하기
- ID tokens를 사용하여 HashiCorp Vault를 포함한 모든 OIDC 공급자를 지원합니다. GitLab 15.7에서 도입됨.
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
파이프라인에 대해 OIDC를 구성할 때, 추가 접근 권한에 대한 소프트웨어 공급망 보안 검토를 완료해야 합니다. 공급망 공격에 대한 더 많은 정보는 DevOps 플랫폼이 공급망 공격으로부터 보호하는 방법을 참조하세요.
사용 사례
- GitLab 그룹이나 프로젝트에 비밀을 저장할 필요가 없습니다. 임시 자격 증명은 OIDC를 통해 클라우드 공급자에서 검색할 수 있습니다.
- 그룹, 프로젝트, 브랜치 또는 태그를 포함한 세부적인 GitLab 조건을 통해 클라우드 자원에 임시 접근을 제공합니다.
- CI/CD 작업에서 환경에 대한 조건부 접근으로 역할 분리를 정의할 수 있습니다. 역사적으로, 앱은 스테이징 또는 프로덕션 환경에만 접근할 수 있는 특정 GitLab Runner로 배포되었을 수 있습니다. 그로 인해 각 머신에 전용 권한이 있어 Runner가 스프롤되었음.
- 인스턴스 러너가 여러 클라우드 계정에 안전하게 접근할 수 있게 합니다. 접근은 파이프라인을 실행하는 사용자에게 특정한 JWT 토큰에 의해 결정됩니다.
- 기본적으로 임시 자격 증명을 검색하여 비밀을 회전할 논리를 생성할 필요가 없습니다.
작동 방식
각 작업은 토큰 페이로드를 포함하는 CI/CD 변수로 제공되는 ID 토큰으로 구성할 수 있습니다. 이러한 JWT는 AWS, Azure, GCP 또는 Vault와 같은 OIDC를 지원하는 클라우드 공급자와 인증하는 데 사용할 수 있습니다.
권한 부여 워크플로
- 클라우드에서 OIDC 아이덴티티 공급자를 생성합니다 (예: AWS, Azure, GCP, Vault).
- 그룹, 프로젝트, 브랜치 또는 태그를 필터링하는 조건부 역할을 클라우드 서비스에서 생성합니다.
- CI/CD 작업에는 JWT 토큰인 ID 토큰이 포함됩니다. 이 토큰을 클라우드 API와의 권한 부여에 사용할 수 있습니다.
- 클라우드는 토큰을 검증하고, 페이로드의 조건부 역할을 확인한 후, 임시 자격 증명을 반환합니다.
OIDC 클레임으로 조건부 역할 구성하기
GitLab과 OIDC 간의 신뢰를 구성하려면 JWT를 확인하는 클라우드 제공업체에서 조건부 역할을 만들어야 합니다.
조건은 두 가지 클레임, 대상(audience)과 주체(subject)에 대해 특별히 신뢰를 생성하기 위해 JWT에 대해 검증됩니다.
-
Audience 또는
aud
: ID 토큰의 일부로 구성됩니다:job_needing_oidc_auth: id_tokens: OIDC_TOKEN: aud: https://oidc.provider.com script: - echo $OIDC_TOKEN
-
Subject 또는
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 인증
클라우드 제공업체와 연결하려면 다음 자습서를 참고하세요: