Container Group 관리 ID 미설정

Container Group이 지원되는 Azure 서비스에 접근할 때 관리 ID를 사용하여 정적 자격 증명을 줄이세요.

설명

Container Group의 컨테이너가 다른 Azure 서비스에 접근할 때 액세스 키나 클라이언트 비밀정보를 직접 보관하면 유출 위험과 관리 부담이 생깁니다. 관리 ID는 지원되는 연결에서 Azure가 인증 정보를 관리하도록 합니다. 관리 ID가 없다고 반드시 정적 자격 증명을 사용하는 것은 아니며 실제 연결 방식을 확인해야 합니다.

잠재적 영향

  • 컨테이너 환경 변수나 배포 상태에 장기 자격 증명이 노출될 수 있습니다.
  • 유출된 자격 증명의 권한으로 다른 Azure 리소스에 접근할 수 있습니다.
  • 자격 증명 교체와 권한 회수가 복잡해질 수 있습니다.

해결 방법

Container Group의 identity 블록에 필요한 SystemAssigned 또는 UserAssigned ID를 지정하세요. 사용자 할당 ID에는 identity_ids를 설정하고 대상 리소스에 최소 권한을 부여하세요. 컨테이너가 관리 ID 토큰을 사용하도록 바꾸고 연결을 검증한 뒤 대체된 비밀정보를 폐기하세요.

예시

아래는 동일한 Container Group에 시스템 할당 관리 ID를 추가하는 예제입니다. 서브넷 등 참조 리소스와 대상 권한은 별도로 구성하세요.

변경 전

hcl
resource "azurerm_container_group" "example" {
  name                = "example-continst"
  location            = azurerm_resource_group.example.location
  resource_group_name = azurerm_resource_group.example.name
  ip_address_type     = "Private"
  subnet_ids          = [azurerm_subnet.aci.id]
  os_type             = "Linux"

  container {
    name   = "app"
    image  = "nginx:stable"
    cpu    = "0.5"
    memory = "1.5"
  }
}

변경 후

hcl
resource "azurerm_container_group" "example" {
  name                = "example-continst"
  location            = azurerm_resource_group.example.location
  resource_group_name = azurerm_resource_group.example.name
  ip_address_type     = "Private"
  subnet_ids          = [azurerm_subnet.aci.id]
  os_type             = "Linux"

  identity {
    type = "SystemAssigned"
  }

  container {
    name   = "app"
    image  = "nginx:stable"
    cpu    = "0.5"
    memory = "1.5"
  }
}

변경 후에는 SystemAssigned ID를 사용하도록 구성합니다. 네트워크 경로나 대상 권한을 자동으로 설정하지는 않으므로 컨테이너의 실제 인증과 연결을 확인하세요.

참조