Function App 관리 ID 미설정

지원되는 Azure 리소스 접근에는 관리 ID를 사용하여 함수가 보관하는 자격 증명을 줄이세요.

설명

Function App이 다른 Azure 리소스에 접근하기 위해 연결 문자열이나 액세스 키를 직접 관리하면 유출과 교체 누락 위험이 생깁니다. 관리 ID는 지원되는 서비스에 별도 애플리케이션 비밀정보 없이 인증하도록 돕습니다. 관리 ID가 없다는 사실만으로 비밀정보를 사용하거나 노출했다고 단정할 수는 없습니다.

잠재적 영향

  • 코드나 설정에 보관한 자격 증명이 유출될 수 있습니다.
  • 자격 증명 교체와 폐기 작업이 누락될 수 있습니다.
  • 함수별 접근 권한을 관리하는 부담이 커질 수 있습니다.

해결 방법

지원되는 연결에는 identity 블록으로 적절한 SystemAssigned 또는 UserAssigned ID를 구성하세요. 대상 리소스에 필요한 권한만 부여하고 함수가 실제로 관리 ID 토큰을 사용하도록 설정하세요. 동작을 확인한 뒤 대체된 비밀정보를 제거하고 폐기하세요.

예시

AzureRM 3.x의 기존 azurerm_function_app에서 시스템 할당 관리 ID를 추가하는 예제입니다. 스토리지 등 필수 설정, 대상 권한과 토큰을 사용하는 코드는 생략했습니다.

변경 전

hcl
resource "azurerm_function_app" "example" {
  name                = "test-azure-functions"
  location            = azurerm_resource_group.example.location
  resource_group_name = azurerm_resource_group.example.name
  app_service_plan_id = azurerm_app_service_plan.example.id
}

변경 후

hcl
resource "azurerm_function_app" "example" {
  name                = "test-azure-functions"
  location            = azurerm_resource_group.example.location
  resource_group_name = azurerm_resource_group.example.name
  app_service_plan_id = azurerm_app_service_plan.example.id

  identity {
    type = "SystemAssigned"
  }
}

변경 후에는 SystemAssigned ID가 연결됩니다. 이것만으로 대상 리소스 권한이 부여되거나 기존 연결 문자열이 자동으로 대체되지는 않습니다. 관리 ID는 함수 호출자의 인증과도 별개입니다.

참조