InfoGrab Docs

GitLab CI/CD에서 Azure Key Vault 시크릿 사용

요약

GitLab CI/CD 파이프라인에서 Azure Key Vault에 저장된 시크릿을 사용할 수 있습니다. azure_key_vault 키워드를 사용하여 정의함으로써 job에서 Azure Key Vault에 저장된 시크릿을 사용할 수 있습니다:

히스토리
  • GitLab 및 GitLab Runner 16.3에서 도입됨. 이슈 424746으로 인해 이 기능이 예상대로 작동하지 않았습니다.
  • 이슈 424746이 해결되고 GitLab Runner 16.6에서 이 기능이 일반적으로 사용 가능해짐.

GitLab CI/CD 파이프라인에서 Azure Key Vault에 저장된 시크릿을 사용할 수 있습니다.

사전 요구 사항:

CI/CD job에서 Azure Key Vault 시크릿 사용#

azure_key_vault 키워드를 사용하여 정의함으로써 job에서 Azure Key Vault에 저장된 시크릿을 사용할 수 있습니다:

job:
  id_tokens:
    AZURE_JWT:
      aud: 'https://gitlab.com'
  secrets:
    DATABASE_PASSWORD:
      token: $AZURE_JWT
      azure_key_vault:
        name: 'DATABASE-PASSWORD'
        version: '00000000000000000000000000000000'

동일한 job에서 Azure Key Vault의 여러 시크릿을 사용하려면 secrets 키워드 아래에 각 시크릿을 정의합니다:

job:
  id_tokens:
    AZURE_JWT:
      aud: 'https://gitlab.com'
  secrets:
    REDIS_PASSWORD:
      token: $AZURE_JWT
      azure_key_vault:
        name: 'REDIS-PASSWORD'
        version: '00000000000000000000000000000000'
    DATABASE_PASSWORD:
      token: $AZURE_JWT
      azure_key_vault:
        name: 'DATABASE-PASSWORD'
        version: '00000000000000000000000000000000'

이 예시에서:

  • aud는 대상이며, 페더레이션 ID 자격 증명 생성 시 사용된 대상과 일치해야 합니다.
  • name은 Azure Key Vault의 시크릿 이름입니다.
  • version은 Azure Key Vault의 시크릿 버전입니다. 버전은 대시 없는 생성된 GUID이며 Azure Key Vault 시크릿 페이지에서 찾을 수 있습니다.
  • GitLab은 Azure Key Vault에서 시크릿을 가져오고 값을 임시 파일에 저장합니다. 이 파일의 경로는 시크릿 아래에 정의한 이름(예: DATABASE_PASSWORD 또는 REDIS_PASSWORD)으로 CI/CD 변수에 저장되며, 파일 형식 CI/CD 변수와 유사합니다.

문제 해결#

Azure와 함께 OIDC를 설정할 때 발생하는 일반적인 문제는 Azure에 대한 OIDC 문제 해결을 참조하세요.

JWT token is invalid or malformed 메시지#

Azure Key Vault에서 시크릿을 가져올 때 이 오류가 발생할 수 있습니다:

RESPONSE 400 Bad Request
AADSTS50027: JWT token is invalid or malformed.

JWT 토큰이 올바르게 파싱되지 않는 GitLab Runner의 알려진 이슈로 인해 발생합니다. 이를 해결하려면 GitLab Runner 16.6 이상으로 업그레이드하세요.

Caller is not authorized to perform action on resource 메시지#

Azure Key Vault에서 시크릿을 가져올 때 이 오류가 발생할 수 있습니다:

RESPONSE 403: 403 Forbidden
ERROR CODE: Forbidden
Caller is not authorized to perform action on resource.\r\nIf role assignments, deny assignments or role definitions were changed recently, please observe propagation time.
ForbiddenByRbac

Azure Key Vault가 RBAC를 사용하는 경우 Azure AD 애플리케이션에 Key Vault Secrets User 역할 할당을 추가해야 합니다.

예를 들면:

appId=$(az ad app list --display-name gitlab-oidc --query '[0].appId' -otsv)
az role assignment create --assignee $appId --role "Key Vault Secrets User" --scope /subscriptions/<subscription-id>

구독 ID는 다음에서 찾을 수 있습니다:

The secrets provider can not be found. Check your CI/CD variables and try again. 메시지#

Azure Key Vault에 액세스하도록 구성된 job을 시작하려 할 때 이 오류가 발생할 수 있습니다:

The secrets provider can not be found. Check your CI/CD variables and try again.

필수 변수 중 하나 이상이 정의되지 않았기 때문에 job을 만들 수 없습니다:

  • AZURE_KEY_VAULT_SERVER_URL
  • AZURE_CLIENT_ID
  • AZURE_TENANT_ID

GitLab CI/CD에서 Azure Key Vault 시크릿 사용

Tier: Premium, Ultimate
Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
원문 보기
요약

GitLab CI/CD 파이프라인에서 Azure Key Vault에 저장된 시크릿을 사용할 수 있습니다. azure_key_vault 키워드를 사용하여 정의함으로써 job에서 Azure Key Vault에 저장된 시크릿을 사용할 수 있습니다:

히스토리
  • GitLab 및 GitLab Runner 16.3에서 도입됨. 이슈 424746으로 인해 이 기능이 예상대로 작동하지 않았습니다.
  • 이슈 424746이 해결되고 GitLab Runner 16.6에서 이 기능이 일반적으로 사용 가능해짐.

GitLab CI/CD 파이프라인에서 Azure Key Vault에 저장된 시크릿을 사용할 수 있습니다.

사전 요구 사항:

CI/CD job에서 Azure Key Vault 시크릿 사용#

azure_key_vault 키워드를 사용하여 정의함으로써 job에서 Azure Key Vault에 저장된 시크릿을 사용할 수 있습니다:

job:
  id_tokens:
    AZURE_JWT:
      aud: 'https://gitlab.com'
  secrets:
    DATABASE_PASSWORD:
      token: $AZURE_JWT
      azure_key_vault:
        name: 'DATABASE-PASSWORD'
        version: '00000000000000000000000000000000'

동일한 job에서 Azure Key Vault의 여러 시크릿을 사용하려면 secrets 키워드 아래에 각 시크릿을 정의합니다:

job:
  id_tokens:
    AZURE_JWT:
      aud: 'https://gitlab.com'
  secrets:
    REDIS_PASSWORD:
      token: $AZURE_JWT
      azure_key_vault:
        name: 'REDIS-PASSWORD'
        version: '00000000000000000000000000000000'
    DATABASE_PASSWORD:
      token: $AZURE_JWT
      azure_key_vault:
        name: 'DATABASE-PASSWORD'
        version: '00000000000000000000000000000000'

이 예시에서:

  • aud는 대상이며, 페더레이션 ID 자격 증명 생성 시 사용된 대상과 일치해야 합니다.
  • name은 Azure Key Vault의 시크릿 이름입니다.
  • version은 Azure Key Vault의 시크릿 버전입니다. 버전은 대시 없는 생성된 GUID이며 Azure Key Vault 시크릿 페이지에서 찾을 수 있습니다.
  • GitLab은 Azure Key Vault에서 시크릿을 가져오고 값을 임시 파일에 저장합니다. 이 파일의 경로는 시크릿 아래에 정의한 이름(예: DATABASE_PASSWORD 또는 REDIS_PASSWORD)으로 CI/CD 변수에 저장되며, 파일 형식 CI/CD 변수와 유사합니다.

문제 해결#

Azure와 함께 OIDC를 설정할 때 발생하는 일반적인 문제는 Azure에 대한 OIDC 문제 해결을 참조하세요.

JWT token is invalid or malformed 메시지#

Azure Key Vault에서 시크릿을 가져올 때 이 오류가 발생할 수 있습니다:

RESPONSE 400 Bad Request
AADSTS50027: JWT token is invalid or malformed.

JWT 토큰이 올바르게 파싱되지 않는 GitLab Runner의 알려진 이슈로 인해 발생합니다. 이를 해결하려면 GitLab Runner 16.6 이상으로 업그레이드하세요.

Caller is not authorized to perform action on resource 메시지#

Azure Key Vault에서 시크릿을 가져올 때 이 오류가 발생할 수 있습니다:

RESPONSE 403: 403 Forbidden
ERROR CODE: Forbidden
Caller is not authorized to perform action on resource.\r\nIf role assignments, deny assignments or role definitions were changed recently, please observe propagation time.
ForbiddenByRbac

Azure Key Vault가 RBAC를 사용하는 경우 Azure AD 애플리케이션에 Key Vault Secrets User 역할 할당을 추가해야 합니다.

예를 들면:

appId=$(az ad app list --display-name gitlab-oidc --query '[0].appId' -otsv)
az role assignment create --assignee $appId --role "Key Vault Secrets User" --scope /subscriptions/<subscription-id>

구독 ID는 다음에서 찾을 수 있습니다:

The secrets provider can not be found. Check your CI/CD variables and try again. 메시지#

Azure Key Vault에 액세스하도록 구성된 job을 시작하려 할 때 이 오류가 발생할 수 있습니다:

The secrets provider can not be found. Check your CI/CD variables and try again.

필수 변수 중 하나 이상이 정의되지 않았기 때문에 job을 만들 수 없습니다:

  • AZURE_KEY_VAULT_SERVER_URL
  • AZURE_CLIENT_ID
  • AZURE_TENANT_ID