Azure 개발자 CLI에서 환경 비밀 사용

Azure 개발자 CLI(azd)는 프로젝트 환경( .env 파일) 내에서 Azure Key Vault 비밀을 참조하는 것을 지원합니다. 이는 프로젝트의 azd에서 중요한 데이터를 다루기 위한 보안 옵션을 제공합니다. 이러한 비밀은 후크 및 CI/CD 파이프라인 구성과 같은 다양한 azd 기능과 통합됩니다.

사전 요구 사항

Key Vault 비밀 설정

Key Vault 비밀을 설정하려면 환경에서 Key Vault 비밀을 참조하는 키가 포함된 azd env set-secret <name> 명령을 실행하십시오 <name>. 비밀을 azd 설정한 후 다음 시나리오에서 Key Vault에서 값을 자동으로 검색합니다.

Bicep 매개 변수

Bicep 매개 변수를 Azure Key Vault 비밀 값과 연결하려면 다음 단계를 수행합니다.

  1. @secure() 키워드를 사용하여 Bicep 매개변수를 보안으로 주석 처리합니다.
  2. Bicep 매개 변수를 Azure Key Vault 비밀을 참조하는 환경의 키 이름에 연결하기 위한 매핑을 main.parameters.json 파일에 생성합니다.

메모

Bicep 매개 변수 파일(.bicepparam)을 사용하는 경우 환경 비밀이 현재 지원되지 않습니다.

예시

azd 프로젝트에서 프롬프트를 실행하고 azd env set-secret MY_SECRET 따라 기존 Azure Key Vault 비밀을 선택하거나 새 비밀을 만듭니다. 명령이 완료되면 키 MY_SECRET 는 Key Vault 비밀에 대한 참조를 보유합니다. 사용하려는 값을 가진 Bicep 매개 변수를 추가하거나 선택하고, 해당 매개 변수를 안전한 것으로 지정합니다.

@secure()
param secureParameter string

main.parameters.json 파일에서 매핑을 만듭니다.

{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
      "secureParameter": {
        "value": "${MY_SECRET}"
      }
    }
}

다음에 azd up 또는 azd provision를 실행할 때, azd가 Azure Key Vault 시크릿을 매개변수 값으로 사용합니다.

후크

azd 는 후크가 실행되면 Azure Key Vault 비밀을 자동으로 검색할 수 있습니다. 기본적으로 후크를 실행하면 azd 프로젝트 환경( .env 파일)의 모든 키-값 쌍이 후크의 환경에서 설정됩니다. 그러나 Key Vault 비밀에 대한 참조는 해당 비밀 값으로 자동으로 해결되지 않습니다.

이러한 참조를 해결하려면 다음 단계를 수행합니다.

  1. 환경의 키에서 Key Vault의 비밀이 해결된 새 키로 매핑을 생성합니다.
  2. secrets 후크 정의의 필드를 사용하여 이 매핑을 만듭니다.

예시

azd 프로젝트에서 프롬프트를 실행하고 azd env set-secret MY_SECRET 따라 기존 Azure Key Vault 비밀을 선택하거나 새 비밀을 만듭니다. 명령이 완료되면 키 MY_SECRET 는 Key Vault 비밀을 참조합니다. 운영 체제에 적합한 후크 정의를 만듭니다.

hooks:
  preprovision: 
    run: 'echo ".env value: $MY_SECRET \nResolved secret: $SECRET_RESOLVE"'
    shell: sh
    interactive: true
    secrets:
      SECRET_RESOLVE: MY_SECRET

다음을 실행할 때 azd provision가 실행되면 preprovision 후크가 작동하여 MY_SECRETSECRET_RESOLVE로 변환합니다.

파이프라인 구성

azd 애플리케이션에 대한 CI(연속 통합)를 설정하는 프로세스를 간소화합니다. GitHub 또는 Azure DevOps를 사용하든 azd pipeline config를 실행하고 안내 단계를 따라 CI/CD를 구성합니다.

자동 구성 azd 의 일부로 CI/CD 배포 워크플로에 대한 비밀 및 변수를 만듭니다. pipeline 구성에서 azure.yaml를 사용하여 고유한 변수와 비밀을 정의할 수도 있습니다. 정의한 이름은 사용자 azd 환경의 키(.env)에 해당합니다. 키에 비밀 참조(akvs) azd 가 있는 경우 변수 또는 비밀로 추가할지 여부에 따라 다른 동작을 적용합니다.

접근법 저장된 CI/CD 값 비밀 회전 적합한 대상
variables Key Vault 참조 (akvs://...) 자동 - 파이프라인은 항상 Key Vault에서 최신 값을 읽습니다. CI/CD 서비스 주체에 Key Vault 읽기 권한이 있는 경우
secrets 실제 비밀 수동 - 회전 후 다시 실행 azd pipeline config 합니다. Key Vault 읽기 권한을 서비스 주체에 할당할 수 없는 경우

메모

사용하는 variablesazd 경우 CI/CD 워크플로에서 사용하는 서비스 주체에 읽기 액세스 역할을 할당하려고 시도합니다. Key Vault에 대한 읽기 역할을 할당할 수 있는 충분한 권한이 없으면 작업이 실패합니다. secrets를 대신 사용하세요.

예시

초기화된 azd 프로젝트에서 프롬프트를 실행하고 azd env set-secret SECURE_KEY 따릅니다. 명령이 완료되면 참조를 표시합니다. azd env get-values

SECURE_KEY="akvs://faa080af-c1d8-40ad-9cce-000000000000/vivazqu-kv/SECURE-KEY-kv-secret"

azure.yaml에서 SECURE_KEYvariables 또는 secrets 목록에 추가하세요.

# yaml-language-server: $schema=https://raw.githubusercontent.com/Azure/azure-dev/main/schemas/v1.0/azure.yaml.json
name: your-project-name
pipeline:
  variables:
    - SECURE_KEY

azd pipeline config를 실행하면 SECURE_KEY이(가) Key Vault 참조를 값으로 사용하여 CI/CD 변수로 설정됩니다. SECURE_KEY가 Bicep 입력 매개변수 또는 후크 정의에 매핑되는 경우, azd는 런타임에 비밀 값을 자동으로 해결합니다.