Container App 관리 ID 미설정

지원되는 Azure 서비스 접근에 관리 ID를 사용하여 Container App의 정적 자격 증명 의존도를 줄이세요.

설명

Container App이 Key Vault나 Storage에 접근하기 위해 정적 자격 증명을 보관하면 유출과 교체 누락 위험이 생깁니다. 관리 ID는 Azure가 인증 정보를 관리하므로 애플리케이션 비밀정보를 직접 배포하지 않고 지원되는 서비스에 인증하도록 돕습니다. 관리 ID의 부재만으로 자격 증명 노출이 확인된 것은 아닙니다.

잠재적 영향

  • 환경 변수나 구성 파일에 저장된 자격 증명이 유출될 수 있습니다.
  • 자격 증명 교체와 폐기 작업이 누락되어 장기간 악용될 수 있습니다.
  • 애플리케이션별 접근 권한을 추적하고 최소화하기 어려워질 수 있습니다.

해결 방법

Container App의 identity 블록에 수명주기와 운영 목적에 맞는 SystemAssigned 또는 UserAssigned ID를 구성하세요. 대상 리소스에 필요한 RBAC 역할만 부여하고 애플리케이션이 실제로 관리 ID 토큰을 사용하도록 설정하세요. 대체된 비밀정보는 동작 확인 후 제거하고 폐기하세요.

예시

아래는 Container App에 시스템 할당 관리 ID를 추가하는 예제입니다. 참조하는 환경과 리소스 그룹, 대상 권한 및 애플리케이션의 토큰 사용 설정은 별도로 준비하세요.

변경 전

hcl
resource "azurerm_container_app" "example" {
  name                         = "example-app"
  container_app_environment_id = azurerm_container_app_environment.example.id
  resource_group_name          = azurerm_resource_group.example.name
  revision_mode                = "Single"

  template {
    container {
      name   = "app"
      image  = "mcr.microsoft.com/k8se/quickstart:latest"
      cpu    = 0.25
      memory = "0.5Gi"
    }
  }
}

변경 후

hcl
resource "azurerm_container_app" "example" {
  name                         = "example-app"
  container_app_environment_id = azurerm_container_app_environment.example.id
  resource_group_name          = azurerm_resource_group.example.name
  revision_mode                = "Single"

  identity {
    type = "SystemAssigned"
  }

  template {
    container {
      name   = "app"
      image  = "mcr.microsoft.com/k8se/quickstart:latest"
      cpu    = 0.25
      memory = "0.5Gi"
    }
  }
}

변경 후에는 SystemAssigned ID를 활성화합니다. ID를 추가하는 것만으로 대상 리소스의 권한이 생기거나 애플리케이션이 자동으로 이 인증 방식을 사용하지는 않습니다.

참조