파이프라인에서 Azure Key Vault 비밀 사용
Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019
Azure Key Vault를 사용하면 암호, API 키, 인증서 등과 같은 중요한 정보를 안전하게 저장하고 관리할 수 있습니다. Azure Key Vault를 사용하여 데이터를 암호화하는 암호화 키를 쉽게 만들고 관리할 수 있습니다. Azure Key Vault를 사용하여 모든 리소스에 대한 인증서를 관리할 수도 있습니다. 이 문서에서는 다음을 수행하는 방법을 알아봅니다.
- Azure Key Vault를 만듭니다.
- Key Vault 권한을 구성합니다.
- 새 서비스 연결을 만듭니다.
- Azure Pipeline에서 비밀을 쿼리합니다.
필수 조건
- Azure DevOps 조직. 아직 없는 경우 무료로 만듭니다.
- 사용자 고유의 프로젝트입니다. 아직 프로젝트가 없는 경우 프로젝트를 만듭니다.
- 사용자 고유의 리포지토리입니다. 아직 없는 경우 새 Git 리포지토리 를 만듭니다.
- Azure 구독 아직 없는 경우 무료 Azure 계정을 만듭니다.
주요 자격 증명 모음 만들기
Azure Portal에 로그인한 다음 리소스 만들기를 선택합니다.
Key Vault에서 만들기를 선택하여 새 Azure Key Vault를 만듭니다.
드롭다운 메뉴에서 구독을 선택한 다음 기존 리소스 그룹을 선택하거나 새 리소스 그룹을 만듭니다. 키 자격 증명 모음 이름을 입력하고, 지역을 선택하고, 가격 책정 계층을 선택한 다음, 추가 속성을 구성하려면 다음을 선택합니다. 그렇지 않은 경우 검토 + 만들기를 선택하여 기본 설정을 유지합니다.
배포가 완료되면 리소스로 이동을 선택합니다.
인증 설정
사용자 할당 관리 ID 만들기
Azure Portal에 로그인한 다음 검색 창에서 관리 ID 서비스를 검색합니다.
만들기를 선택하고 다음과 같이 필요한 필드를 채웁니다.
- 구독: 드롭다운 메뉴에서 구독을 선택합니다.
- 리소스 그룹: 기존 리소스 그룹을 선택하거나 새 리소스 그룹을 만듭니다.
- 지역: 드롭다운 메뉴에서 지역을 선택합니다.
- 이름: 사용자 할당 관리 ID의 이름을 입력합니다.
완료되면 검토 + 만들기를 선택합니다.
배포가 완료되면 리소스로 이동을 선택한 다음, 향후 단계에서 사용할 구독 및 클라이언트 ID 값을 복사합니다.
설정>속성으로 이동하고 나중에 사용할 수 있도록 관리 ID의 테넌트 ID 값을 복사합니다.
키 자격 증명 모음 액세스 정책 설정
Azure Portal로 이동하고 검색 창을 사용하여 이전에 만든 키 자격 증명 모음을 찾습니다.
액세스 정책을 선택한 다음 만들기를 선택하여 새 정책을 추가합니다.
비밀 사용 권한에서 가져오기 및 목록 확인란을 선택합니다.
다음을 선택한 다음 이전에 만든 관리 ID의 클라이언트 ID를 검색 창에 붙여넣습니다. 관리 ID를 선택합니다.
다음을 선택한 다음, 다음을 한 번 더 선택합니다.
새 정책을 검토한 다음, 완료되면 만들기를 선택합니다.
서비스 연결 만들기
Azure DevOps 조직에 로그인한 다음 프로젝트로 이동합니다.
프로젝트 설정>서비스 연결을 선택한 다음 새 서비스 연결을 선택하여 새 서비스 연결을 만듭니다.
Azure Resource Manager를 선택한 다음, 다음을 선택합니다.
ID 형식의 경우 드롭다운 메뉴에서 관리 ID를 선택합니다.
1단계: 관리 ID 세부 정보의 경우 다음과 같이 필드를 입력합니다.
관리 ID에 대한 구독: 관리 ID가 포함된 구독을 선택합니다.
관리 ID에 대한 리소스 그룹: 관리 ID를 호스팅하는 리소스 그룹을 선택합니다.
관리 ID: 드롭다운 메뉴에서 관리 ID를 선택합니다.
2단계: Azure Scope의 경우 다음과 같이 필드를 입력합니다.
서비스 연결에 대한 범위 수준: 구독을 선택합니다.
서비스 연결에 대한 구독: 관리 ID가 액세스할 구독을 선택합니다.
서비스 연결에 대한 리소스 그룹: (선택 사항) 관리 ID 액세스를 하나의 리소스 그룹으로 제한하도록 지정합니다.
3단계: 서비스 연결 세부 정보:
서비스 연결 이름: 서비스 연결의 이름을 제공합니다.
서비스 관리 참조: (선택 사항) ITSM 데이터베이스의 컨텍스트 정보입니다.
설명: (선택 사항) 설명을 추가합니다.
보안에서 모든 파이프라인에서 이 서비스 연결을 사용할 수 있도록 모든 파이프라인에 대한 액세스 권한 부여 확인란을 선택합니다. 이 옵션을 선택하지 않으면 이 서비스 연결을 사용하는 각 파이프라인에 대한 액세스 권한을 수동으로 부여해야 합니다.
저장을 선택하여 서비스 연결의 유효성을 검사하고 만듭니다.
파이프라인에서 비밀 쿼리 및 사용
Azure Key Vault 작업을 사용하여 비밀의 값을 가져와 파이프라인의 후속 작업에서 사용할 수 있습니다. 한 가지 유의해야 할 점은 아래 예제와 같이 비밀이 env 변수에 명시적으로 매핑되어야 한다는 것입니다.
pool:
vmImage: 'ubuntu-latest'
steps:
- task: AzureKeyVault@1
inputs:
azureSubscription: 'SERVICE_CONNECTION_NAME'
KeyVaultName: 'KEY_VAULT_NAME'
SecretsFilter: '*'
- bash: |
echo "Secret Found! $MY_MAPPED_ENV_VAR"
env:
MY_MAPPED_ENV_VAR: $(SECRET_NAME)
마지막 bash 명령의 출력은 다음과 같습니다.
Secret Found! ***
참고 항목
Azure Key Vault에서 여러 비밀을 쿼리하려면 인수를 사용하여 SecretsFilter
비밀 이름 'secret1, secret2'의 쉼표로 구분된 목록을 전달합니다.