Azure Functions의 앱 수준 비밀을 Azure Container Apps에 저장

앱 수준 비밀은 함수 코드 및 바인딩이 런타임에 사용하는 구성 값입니다. HTTP 엔드포인트 를 보호하는 Functions 액세스 키와 달리 앱 수준 비밀은 애플리케이션이 다른 서비스에 연결하는 데 필요한 자격 증명입니다.

일반적인 예는 다음과 같습니다.

  • 인프라 연결 - AzureWebJobsStorage 연결 문자열, Event Hubs, Service Bus, Cosmos DB 및 SQL에 대한 트리거와 바인딩 연결.
  • 비즈니스 자격 증명 - 타사 API 키, 데이터베이스 암호, SaaS 플랫폼 토큰.
  • 사용자 지정 구성 - 코드가 환경 변수에서 읽는 중요한 값입니다.

스토리지 옵션 선택

Azure Container Apps 앱 수준 비밀을 저장하는 두 가지 방법을 제공합니다.

Option 적합한 대상 중앙 집중식 관리 자동 회전 감사 로깅
Container Apps 시크릿 개발/테스트, 간단한 단일 앱 워크로드 아니요 - 하나의 앱으로 범위 지정 No 활동 로그만
Key Vault 참조 프로덕션, 다중 앱, 규정 준수 예 - 모든 앱에서 예(버전 없는 URI) 전체 Key Vault 진단

Tip

간단한 설명을 위해 Container Apps 비밀로 시작합니다. 중앙 집중식 관리, 자동 순환 또는 규정 준수 수준의 감사가 필요한 경우 Key Vault 참조로 전환합니다.

필수 조건

Container Apps 비밀을 사용

Container Apps는 앱의 configuration.secrets 배열에 비밀을 저장하고 미사용 값을 암호화합니다. 환경 변수, 크기 조정 규칙, 볼륨 탑재 및 Dapr 구성 요소에서 비밀을 참조할 수 있습니다.

비밀 저장

  1. Azure 포털에서 Functions 컨테이너 앱으로 이동합니다.

  2. 설정에서 비밀을 선택합니다.

  3. 추가를 선택하고 다음 값을 입력합니다.

    재산 가치
    이름 와 같은 database-password비밀 이름입니다. 소문자, 숫자 및 하이픈만 사용합니다.
    Type Container Apps 시크릿
    당신의 비밀 값입니다.
  4. 추가를 선택합니다.

환경 변수에서 비밀 참조

비밀을 저장한 후 함수 코드에서 읽을 수 있도록 환경 변수에서 참조합니다.

  1. Functions 컨테이너 앱의 애플리케이션에서 수정 버전 및 복제본을 선택합니다.

  2. 새 수정 버전 만들기를 선택합니다.

  3. 컨테이너 탭에서 컨테이너를 선택한 다음 편집을 선택합니다.

  4. 환경 변수 탭을 선택한 다음 추가를 선택합니다.

  5. 다음 값을 입력합니다.

    재산 가치
    이름 DATABASE_PASSWORD
    출처 비밀을 참조하세요
    database-password
  6. 저장을 선택한 다음 만들기를 선택하여 새 수정 버전을 배포합니다.

비밀 확인

함수가 함수를 호출하고 누락된 구성과 관련된 오류 없이 실행되는지 확인하여 비밀 값을 읽을 수 있는지 확인합니다.

curl "https://<FUNCTIONS_APP_URL>/api/<FUNCTION_NAME>"

Important

Container Apps는 런타임에 환경 변수에 비밀 값을 삽입합니다. 코드는 환경 변수를 읽고 비밀 저장소에 직접 액세스하지 않습니다.

Limitations

Container Apps 비밀에는 다음과 같은 제한 사항이 있습니다.

  • 중앙 집중화 없음 - 각 컨테이너 앱은 자체 비밀을 별도로 저장합니다.
  • 자동 회전 없음 - 비밀 값을 수동으로 업데이트해야 합니다.
  • 만료 없음 - 비밀이 자동으로 만료되지 않습니다.
  • 제한된 감사 - 기본 활동 로그만; 자세한 비밀 액세스 감사가 없습니다.
  • 버전 관리 없음 - 기본 제공 비밀 버전 기록이 없습니다.
  • 업데이트 동작 - 비밀을 변경해도 새 수정 버전이 트리거되지 않습니다. 변경 내용을 선택하려면 새 수정 버전을 만들거나 기존 수정 버전을 다시 시작해야 합니다.

Key Vault 참조 사용

Key Vault 참조를 사용하면 컨테이너 앱이 관리 ID를 사용하여 Azure Key Vault 비밀을 직접 끌어올 수 있습니다. 이 방법은 중앙 집중식 관리, 자동 갱신 및 규정 준수 수준의 감사를 제공합니다.

1단계: 관리 ID 설정

컨테이너 앱은 자격 증명 없이 Key Vault 인증하기 위해 관리 ID가 필요합니다.

  1. Azure 포털에서 Functions 컨테이너 앱으로 이동합니다.

  2. 설정에서 ID를 선택합니다.

  3. 시스템 할당 탭에서 상태를기로 설정합니다.

  4. 저장을 선택한 다음 예를 선택하여 확인합니다.

2단계: Key Vault 액세스 권한 부여

비밀을 읽을 수 있도록 Key Vault 비밀 사용자 역할을 관리 ID에 할당합니다.

  1. Azure 포털에서 Key Vault로 이동합니다.

  2. 설정에서 Access Control(IAM)을 선택합니다.

  3. 추가>역할 할당 추가를 선택합니다.

  4. Role 탭에서 Key Vault 비밀 사용자를 선택합니다.

  5. 다음을 선택합니다.

  6. 멤버 탭에서 관리 ID를 선택한 다음, 멤버 선택을 선택합니다.

  7. 관리 ID 선택 창에서 구독을 선택하고, 관리 ID 유형에 대한 컨테이너 앱을 선택하고, Functions 컨테이너 앱을 선택한 다음, 선택을 선택합니다.

  8. 검토 + 할당을 선택합니다.

3단계: Key Vault 비밀 저장

  1. Key Vault Objects 아래에서 Secrets 선택합니다.

  2. 생성/가져오기를 선택합니다.

  3. 다음 값을 입력합니다.

    재산 가치
    업로드 옵션 수동
    이름 비밀 이름(예 DatabasePassword: .)
    당신의 비밀 값입니다.
  4. 선택하고생성합니다.

  5. 새로 만든 비밀을 선택한 다음, 현재 버전을 선택합니다.

  6. 비밀 식별자 URI를 복사합니다. 버전 없는 URI(후행 버전 세그먼트 제외)를 사용하여 자동 회전을 사용하도록 설정합니다.

4단계: Container Apps에서 Key Vault 시크릿 참조

Key Vault 비밀을 참조하는 Container Apps 비밀을 만든 다음, 환경 변수에 바인딩합니다.

  1. Functions 컨테이너 앱으로 이동합니다. 설정에서 비밀을 선택합니다.

  2. 추가를 선택합니다.

  3. 비밀 추가에서 다음 값을 입력합니다.

    재산 가치
    이름 database-password
    Type Key Vault 참조
    Key Vault 시크릿 URL 복사한 비밀 식별자 URI입니다.
    정체성 시스템에서 할당한(또는 사용자 할당한 ID).
  4. 추가를 선택합니다.

  5. 애플리케이션에서 수정 버전 및 복제본을 선택합니다. 비밀을 참조하는 환경 변수 DATABASE_PASSWORD 를 사용하여 새 수정 버전을 만듭니다 database-password .

5단계: Key Vault 참조 확인

함수를 호출하고 누락된 구성과 관련된 오류 없이 실행되는지 확인합니다.

curl "https://<FUNCTIONS_APP_URL>/api/<FUNCTION_NAME>"

자동 비밀 회전

버전 없는 URI를 사용하여 Key Vault 비밀을 참조하면 Container Apps에서 최신 버전을 자동으로 검색합니다.

  • 버전 없는 URI: https://myvault.vault.azure.net/secrets/mysecret - 항상 최신 버전을 사용합니다.
  • 버전이 지정된 URI: https://myvault.vault.azure.net/secrets/mysecret/ec96f020... - 특정 버전에 고정됩니다.

버전이 없는 URI를 사용하면 Container Apps에서 30분 이내에 새 버전을 확인하고 활성 수정 버전을 자동으로 다시 시작하여 새 값을 선택합니다.