요약

완료됨

Contoso Retail의 보안 검토는 공유 관리자 자격 증명을 사용하는 레지스트리, 비밀을 일반 텍스트 환경 변수로 전달하는 컨테이너 워크로드, 모든 서비스에서 무제한 공용 수신이 있는 Container Apps 환경 등 세 가지 컨테이너 보안 격차를 확인했습니다. 이 모듈은 세 가지 Azure 컨테이너 서비스 계층에 모두 적용되는 동일한 컨트롤 집합을 사용하여 각 간격을 닫습니다.

달성한 작업

관리자 계정을 사용하지 않도록 설정하여 특정 ID 및 작업으로 범위가 지정된 RBAC 역할 할당으로 대체하여 Azure Container Registry 보호했습니다. 개발자와 파이프라인은 이제 Microsoft Entra ID ID로 인증되며, 모든 레지스트리 작업은 특정 사용자 또는 워크로드에 기인합니다. 범위 맵 토큰은 CI/CD 파이프라인에 레지스트리의 나머지 부분에 대한 액세스 권한을 부여하지 않고 특정 리포지토리에 필요한 최소 권한을 부여했습니다. 프라이빗 엔드포인트는 레지스트리에 대한 공용 네트워크 액세스를 제거했으며 콘텐츠 트러스트는 이미지를 저장하기 전에 암호화된 서명해야 한다는 요구 사항을 설정했습니다.

Azure Container Instances 경우 컨테이너 그룹에 관리 ID를 할당하고 일반 텍스트 환경 변수를 런타임에 관리 ID가 검색하는 Key Vault 비밀 참조로 바꿉니다. 배포 매니페스트에 더 이상 중요한 값이 포함되지 않으며 Azure 포털 메타데이터 또는 API 응답에 비밀 값이 표시되지 않습니다. 이제 컨테이너는 개인 IP 주소가 있는 가상 네트워크에서 실행되고, 루트가 아닌 사용자로 작동하며, 읽기 전용 루트 파일 시스템을 사용합니다.

Azure Container Apps에서는 환경 전반에 걸쳐 신뢰 수준에 따라 서비스를 분리하고, 이미지 가져오기 및 Key Vault 액세스를 위해 관리형 ID를 할당했으며, 백엔드 API가 퍼블릭 인터넷에 노출되지 않도록 내부 인그레스를 구성했습니다. Key Vault 참조는 연결 문자열 및 자격 증명에 대한 환경 수준 비밀을 대체했습니다. Dapr을 사용하는 서비스의 경우 자동 상호 TLS는 인증서 관리 또는 애플리케이션 코드 변경 없이 모든 서비스 간 통신을 암호화합니다.

자세히 알아보기