Azure Arc에서 사용하도록 설정된 AKS의 컨테이너 보안

적용 대상: Azure Stack HCI 22H2의 AKS, Windows Server의 AKS

이 문서에서는 애플리케이션을 패키지 및 배포하는 데 사용되는 컨테이너를 보호하고 Azure Arc에서 사용하도록 설정된 AKS의 보안 취약성을 방지하는 다양한 방법을 설명합니다.

애플리케이션과 서비스는 환경 내에서 분리되므로 컨테이너는 운영 및 보안 이점을 제공합니다. 또한 컨테이너는 추상화로 인해 시스템 전체 오류의 영향을 줄여 가동 시간을 보장하고 애플리케이션 또는 서비스를 손상시킬 수 있는 공격을 방지합니다. 컨테이너는 일반적으로 호스트 운영 체제 위에 있는 추상화된 계층에서 실행되며 추상화는 분리의 장벽과 계층화된 방어 모델을 적용할 수 있는 기회를 제공합니다.

컨테이너 파이프라인, 애플리케이션 및 컨테이너 배포 환경을 보호하여 지속적인 컨테이너 보안을 설정할 수도 있습니다. 다음 섹션에서는 컨테이너 보안을 구현하기 위한 몇 가지 권장 사례를 설명합니다.

이미지 보호

무단 액세스를 방지하려면 보안 및 신뢰할 수 있는 레지스트리에서 이미지를 호스트합니다. 이미지에는 신뢰할 수 있는 루트 CA가 있는 TLS 인증서가 있어야 하며 레지스트리는 강력한 인증과 함께 RBAC(역할 기반 액세스 제어)를 사용해야 합니다. 컨테이너 빌드 및 배달을 위해 CI/CD를 디자인할 때 이미지 검사 솔루션을 포함해야 합니다. 이미지 검사 솔루션은 일반적인 취약성 및 노출(CVE)을 식별하고 수정 없이 악용 가능한 이미지가 배포되지 않도록 합니다.

호스트 환경 강화

컨테이너 보안의 중요한 측면은 컨테이너가 실행되는 시스템의 보안과 런타임 중에 작동하는 방식을 강화해야 한다는 것입니다. 컨테이너 보안은 호스트 및 디먼을 포함하여 전체 스택에 집중해야 합니다. 중요하지 않은 호스트에서 서비스를 제거해야 하며 환경에 비준수 컨테이너를 배포해서는 안 됩니다. 이렇게 하면 호스트에 대한 액세스는 컨테이너를 통해서만 발생할 수 있으며 컨트롤은 컨테이너 디먼에 중앙 집중화되어 공격 표면에서 호스트를 제거합니다. 이러한 단계는 프록시 서버를 사용하여 컨테이너에 액세스하는 경우에 특히 유용하며, 이로 인해 컨테이너 보안 제어를 실수로 무시할 수 있습니다.

컨테이너 리소스 제한

컨테이너가 손상되면 공격자는 기본 호스트 리소스를 사용하여 악의적인 활동을 수행하려고 할 수 있습니다. 위반의 영향을 최소화하기 위해 메모리 및 CPU 사용량 제한을 설정하는 것이 좋습니다.

비밀이 제대로 보호됩니다.

비밀은 호스트와 컨테이너 간에 전달해야 할 수 있는 중요한 정보를 포함하는 개체입니다. 예를 들어 암호, SSL/TLS 인증서, SSH 프라이빗 키, 토큰, 연결 문자열 및 일반 텍스트로 전송하거나 암호화되지 않은 상태로 저장해서는 안 되는 기타 데이터 등이 있습니다. 모든 비밀을 이미지에서 유지하고 컨테이너 오케스트레이션 엔진 또는 외부 비밀 관리자를 통해 탑재해야 합니다.

격리 연습

격리를 사용하고 권한 있는 사용자 또는 루트 사용자를 사용하여 컨테이너에서 애플리케이션을 실행하지 마세요. 이렇게 하면 컨테이너가 손상된 경우 공격자가 권한을 쉽게 에스컬레이션할 수 있으므로 권한 있는 모드에서 컨테이너를 실행하지 않도록 합니다. 컨테이너에서 루트 사용자의 UID(고유 식별 코드) 및 GID(그룹 식별 코드)를 알면 공격자가 호스트 컴퓨터의 루트에서 작성한 파일에 액세스하고 수정할 수 있습니다. 또한 애플리케이션이 필요한 비밀에만 액세스할 수 있는 최소 권한 원칙을 사용해야 합니다. 애플리케이션 프로세스를 실행하는 애플리케이션 사용자를 만들 수 있습니다.

런타임 보안 모니터링 배포

인프라에 대한 공격에 대한 예방 조치를 취한 후에도 여전히 손상될 가능성이 있으므로 악의적인 활동을 방지하고 탐지하기 위해 애플리케이션의 동작을 지속적으로 모니터링하고 기록하는 것이 중요합니다. Prometheus와 같은 도구는 인프라를 모니터링하는 효과적인 수단을 제공합니다.

다음 단계