클라우드 서비스에 연결하기
GitLab CI/CD는 OpenID Connect (OIDC)를 지원하여 빌드 및 배포 작업이 클라우드 자격 증명 및 서비스에 액세스할 수 있습니다. 과거에는 팀이 프로젝트에 시크릿을 저장하거나 GitLab Runner 인스턴스에서 권한을 적용했었습니다. OIDC를 지원하는 ID 토큰은 CI/CD 작업에서 구성할 수 있어 확장 가능하고 최소 권한 보안 접근 방식을 따를 수 있습니다.
GitLab 15.6 이전에는 ID 토큰 대신에 CI_JOB_JWT_V2
를 사용해야 했지만 이는 사용자 정의가 불가능합니다. GitLab 14.6 및 이전에는 제한된 지원을 가진 CI_JOB_JWT
를 사용해야 합니다.
사전 요구 사항
- GitLab 계정.
- 권한 부여를 구성하고 역할을 생성할 OpenID Connect (OIDC)을 지원하는 클라우드 공급자에 대한 액세스 권한.
ID 토큰은 다음과 같은 OIDC를 지원하는 클라우드 공급자를 지원합니다:
- AWS
- Azure
- GCP
- HashiCorp Vault
사용 사례
- GitLab 그룹이나 프로젝트에 시크릿을 저장할 필요가 없어집니다. 임시 자격 증명은 OIDC를 통해 클라우드 공급자에서 검색할 수 있습니다.
- 그룹, 프로젝트, 브랜치 또는 태그를 포함한 GitLab 조건부를 사용하여 클라우드 리소스에 임시 액세스를 제공합니다.
- 조건부 액세스로 CI/CD 작업에서 역할을 정의할 수 있으며, 앱이 이전에는 스테이징 또는 프로덕션 환경에만 액세스할 수 있는 특정한 GitLab Runner를 사용했습니다. 이는 각 기계가 전용 권한을 갖기 때문에 Runner 증가로 이어졌습니다.
- 인스턴스 Runner가 특정 사용자를 위한 JWT 토큰에 따라 여러 클라우드 계정에 안전하게 액세스할 수 있습니다.
- 임시 자격 증명을 기본값으로 검색하여 시크릿을 회전시키는 논리를 작성할 필요가 없어집니다.
작동 방식
각 작업은 ID 토큰을 포함하는 CI/CD 변수로 구성될 수 있습니다. 이러한 JWT는 AWS, Azure, GCP 또는 Vault와 같은 OIDC를 지원하는 클라우드 공급자에 인증하는 데 사용할 수 있습니다.
권한 부여 워크플로우
- 클라우드(예: AWS, Azure, GCP, Vault)에서 OIDC 식별 공급자를 생성합니다.
- 클라우드 서비스에서 그룹, 프로젝트, 브랜치 또는 태그로 필터링되는 조건부 역할을 생성합니다.
- CI/CD 작업은 JWT 토큰인 ID 토큰을 포함하고 있습니다. 이 토큰을 사용하여 클라우드 API에 인증할 수 있습니다.
- 클라우드는 토큰을 확인하고 페이로드에서 조건부 역할을 확인하여 임시 자격 증명을 반환합니다.
OIDC 클레임을 사용한 조건부 역할 구성
GitLab과 OIDC 사이의 신뢰를 구성하려면, 공급업체(cloud provider)에서 JWT를 확인하는 조건부 역할을 만들어야 합니다. 이 조건은 JWT를 통해 검증되며, 특히 청중(audience) 및 주제(subject) 두 가지 클레임에 대한 신뢰를 구체적으로 생성합니다.
-
청중 또는
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 인가
클라우드 공급업체와 연결하려면, 다음 튜토리얼을 참조하세요: