컨테이너에 대한 공격 경로 분석 및 향상된 위험 헌팅
공격 경로 분석은 클라우드 보안 그래프를 검사하는 그래프 기반 알고리즘입니다. 이러한 검사는 공격자가 환경을 위반하여 영향력이 큰 자산에 접근하는 데 사용할 수 있는 익스플로잇 가능한 경로를 노출합니다. 공격 경로 분석은 공격 경로를 노출하고 공격 경로를 차단하고 성공적인 침해를 방지하는 최선의 문제 수정 방법에 대한 권장 사항을 제안합니다.
위험 수준, 이름, 환경, 위험 요소, 진입점, 대상, 영향을 가져오는 리소스 및 활성 권장 사항을 기준으로 정렬하여 공격 경로를 탐색하고 조사합니다. 리소스에 대한 클라우드 보안 그래프 인사이트를 살펴봅니다. 인사이트 형식의 예는 다음과 같습니다.
- 인터넷에 노출된 Pod
- 권한 있는 컨테이너
- Pod는 호스트 네트워크를 사용합니다.
- 컨테이너 이미지는 원격 코드 실행에 취약합니다.
Azure: 취약한 모의 컨테이너 이미지를 사용하여 공격 경로 및 보안 탐색기 테스트
공격 경로 목록에 항목이 없는 경우에도 모의 컨테이너 이미지를 사용하여 이 기능을 테스트할 수 있습니다. 테스트를 설정하려면 다음 단계를 따릅니다.
요구 사항: 테스트된 범위에 있는 ACR(Azure Container Registry) 인스턴스.
취약한 모의 이미지를 Azure Container Registry로 가져옵니다.
먼저 다음을 실행하여 기본 이미지(예: alpine)를 로컬 환경으로 풀링합니다.
docker pull alpine
다음 레이블로 이미지에 태그를 지정하고 ACR에 푸시합니다.
<MYACR>
를 Azure Container Registry 이름으로 바꿉니다.docker tag alpine <MYACR>.azurecr.io/mdc-mock-0001 docker push <MYACR>.azurecr.io/mdc-mock-0001
AKS(Azure Kubernetes Service) 클러스터가 없는 경우 다음 명령을 사용하여 새 AKS 클러스터를 만듭니다.
az aks create -n myAKSCluster -g myResourceGroup --generate-ssh-keys --attach-acr $MYACR
AKS가 ACR에 연결되지 않은 경우 다음 Cloud Shell 명령줄을 사용하여 AKS 인스턴스가 선택한 ACR에서 이미지를 가져오도록 지정합니다.
az aks update -n myAKSCluster -g myResourceGroup --attach-acr <acr-name>
클러스터 작업을 위해 Cloud Shell 세션을 인증합니다.
az aks get-credentials --subscription <cluster-suid> --resource-group <your-rg> --name <your-cluster-name>
nginx 수신 컨트롤러를 설치합니다.
helm install ingress-controller oci://ghcr.io/nginxinc/charts/nginx-ingress --version 1.0.1
다음 명령을 실행하여 취약한 모의 이미지를 배포하여 취약한 컨테이너를 인터넷에 노출합니다.
helm install dcspmcharts oci://mcr.microsoft.com/mdc/stable/dcspmcharts --version 1.0.0 --namespace mdc-dcspm-demo --create-namespace --set image=<your-image-uri> --set distribution=AZURE
다음 단계를 수행하여 성공을 확인합니다.
- 네임스페이스가 mdc-dcspm-demo인 항목을 찾습니다.
- 워크로드-> 배포 탭에서 "pod1" 및 "pod2"가 3/3으로 생성되고 ingress-controller-nginx-ingress-controller가 1/1 생성되었는지 확인합니다.
- 서비스 및 수신에서 service service1> 및 ingress-controller-nginx-ingress-controller를 찾습니다. 수신 탭에서 IP 주소와 nginx 클래스를 사용하여 하나의 수신이 만들어졌는지 확인합니다.
참고 항목
위의 흐름을 완료한 후 클라우드 보안 탐색기 및 공격 경로에 결과가 표시되는 데 최대 24시간이 걸릴 수 있습니다.
공격 경로 테스트를 완료한 후 공격 경로 분석으로 이동하여 만들어진 공격 경로를 조사하고, 만든 공격 경로를 검색합니다. 자세한 내용은 공격 경로 식별 및 수정을 참조하세요.
AWS: 취약한 모의 컨테이너 이미지를 사용하여 공격 경로 및 보안 탐색기 테스트
mdc-mock-0001이라는 ECR 리포지토리를 만듭니다.
AWS 계정으로 이동하여 명령줄 또는 프로그래밍 방식 액세스를 선택합니다.
명령줄을 열고 옵션 1: AWS 환경 변수 설정(단기 자격 증명)을 선택합니다. AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY 및 AWS_SESSION_TOKEN 환경 변수의 자격 증명을 복사합니다.
다음 명령을 실행하여 Amazon ECR 레지스트리에 대한 인증 토큰을 가져옵니다.
<REGION>
을 레지스트리 지역으로 바꿉니다.<ACCOUNT>
를 AWS 계정 ID로 바꿉니다.aws ecr get-login-password --region <REGION> | docker login --username AWS --password-stdin <ACCOUNT>.dkr.ecr.<REGION>.amazonaws.com
이름으로 취약한 것으로 태그가 지정된 Docker 이미지를 만듭니다. 이미지 이름에는 mdc-mock-0001 문자열이 포함되어야 합니다. 이미지를 만든 후 다음 명령을 사용하여 ECR 레지스트리에 푸시합니다(
<ACCOUNT>
및<REGION>
을 AWS 계정 ID 및 지역으로 바꾸기).docker pull alpine docker tag alpine <ACCOUNT>.dkr.ecr.<REGION>.amazonaws.com/mdc-mock-0001 docker push <ACCOUNT>.dkr.ecr.<REGION>.amazonaws.com/mdc-mock-0001
EKS 클러스터에 연결하고 제공된 Helm 차트를 설치합니다. EKS 클러스터와 작동하도록
kubectl
을 구성합니다. 다음 명령을 실행합니다(<your-region>
및<your-cluster-name>
을 EKS 클러스터 지역 및 이름으로 바꿈).aws eks --region <your-region> update-kubeconfig --name <your-cluster-name>
구성을 확인합니다. 다음을 실행하여
kubectl
이 올바르게 구성되었는지 확인할 수 있습니다.kubectl get nodes
nginx 수신 컨트롤러를 설치합니다.
helm install ingress-controller oci://ghcr.io/nginxinc/charts/nginx-ingress --version 1.0.1
다음 Helm 차트를 설치합니다.
helm install dcspmcharts oci://mcr.microsoft.com/mdc/stable/dcspmcharts --version 1.0.0 --namespace mdc-dcspm-demo --create-namespace --set image=<ACCOUNT>.dkr.ecr.<REGION>.amazonaws.com/mdc-mock-0001 --set distribution=AWS
Helm 차트는 공격 경로를 유추하는 데 사용할 수 있는 리소스를 클러스터에 배포합니다. 취약한 이미지도 포함됩니다.
참고 항목
위의 흐름을 완료한 후 클라우드 보안 탐색기 및 공격 경로에 결과가 표시되는 데 최대 24시간이 걸릴 수 있습니다.
공격 경로 테스트를 완료한 후 공격 경로 분석으로 이동하여 만들어진 공격 경로를 조사하고, 만든 공격 경로를 검색합니다. 자세한 내용은 공격 경로 식별 및 수정을 참조하세요.
GCP: 취약한 모의 컨테이너 이미지를 사용하여 공격 경로 및 보안 탐색기 테스트
GCP 포털에서 아티팩트 레지스트리를 검색한 다음 mdc-mock-0001이라는 GCP 리포지토리를 만듭니다.
이미지를 리포지토리에 푸시하려면 이 지침을 따릅니다. 다음 명령을 실행하세요.
docker pull alpine docker tag alpine <LOCATION>-docker.pkg.dev/<PROJECT_ID>/<REGISTRY>/<REPOSITORY>/mdc-mock-0001 docker push <LOCATION>-docker.pkg.dev/<PROJECT_ID>/<REGISTRY>/<REPOSITORY>/mdc-mock-0001
GCP 포털로 이동합니다. 그런 다음 Kubernetes Engine>클러스터로 이동합니다. 연결 단추를 선택합니다.
연결되면 Cloud Shell에서 명령을 실행하거나 연결 명령을 복사하여 컴퓨터에서 실행합니다.
gcloud container clusters get-credentials contra-bugbash-gcp --zone us-central1-c --project onboardingc-demo-gcp-1
구성을 확인합니다. 다음을 실행하여
kubectl
이 올바르게 구성되었는지 확인할 수 있습니다.kubectl get nodes
Helm 차트를 설치하려면 다음 단계를 따릅니다.
포털의 아티팩트 레지스트리에서 리포지토리로 이동하고 다이제스트별 가져오기에서 이미지 URI를 찾습니다.
Helm 차트를 설치하려면 다음 명령을 사용합니다.
helm install dcspmcharts oci:/mcr.microsoft.com/mdc/stable/dcspmcharts --version 1.0.0 --namespace mdc-dcspm-demo --create-namespace --set image=<IMAGE_URI> --set distribution=GCP
Helm 차트는 공격 경로를 유추하는 데 사용할 수 있는 리소스를 클러스터에 배포합니다. 취약한 이미지도 포함됩니다.
참고 항목
위의 흐름을 완료한 후 클라우드 보안 탐색기 및 공격 경로에 결과가 표시되는 데 최대 24시간이 걸릴 수 있습니다.
공격 경로 테스트를 완료한 후 공격 경로 분석으로 이동하여 만들어진 공격 경로를 조사하고, 만든 공격 경로를 검색합니다. 자세한 내용은 공격 경로 식별 및 수정을 참조하세요.
클라우드 보안 탐색기로 컨테이너 상태 문제 찾기
다음 방법 중 하나로 쿼리를 빌드할 수 있습니다.
다음 섹션에서는 선택하거나 만들 수 있는 쿼리의 예를 제시합니다.
클라우드 보안 탐색기 템플릿으로 위험 탐색
클라우드용 Defender 개요 페이지에서 클라우드 보안 탐색기를 엽니다.
Kubernetes용 기본 템플릿 중 일부가 나타납니다. 템플릿 중 하나를 선택합니다.
- 심각도가 높은 취약성이 있는 이미지를 실행하는 Azure Kubernetes Pod
- Kubernetes 네임스페이스에는 취약한 Pod가 포함되어 있음
쿼리 열기를 선택합니다. 템플릿은 화면 상단에 쿼리를 빌드합니다. 결과를 보려면 검색을 선택합니다.
클라우드 보안 탐색기로 사용자 지정 쿼리 만들기
고유의 사용자 지정 쿼리를 만들 수도 있습니다. 다음 예에서는 원격 코드 실행에 취약한 컨테이너 이미지를 실행하는 Pod를 검색하는 방법을 보여 줍니다.
결과는 쿼리 아래에 나열됩니다.
다음 단계
- 클라우드용 Defender Defender 플랜에 대해 자세히 알아봅니다.