pod 보안 정책 사용 설정

pod 보안 정책을 사용 설정하면 보안이 침해된 네임스페이스(istio-system 제외)가 동일한 노드를 공유하는 다른 네임스페이스의 보안에는 영향을 미치지 않습니다. Mesh CA와 함께 작동하는 샘플 PodSecurityPolicy 리소스 파일이 Anthos Service Mesh와 함께 제공됩니다. 이들 파일은 필요에 따라 수정할 수 있습니다. 다음에서 먼저 Pod 보안 정책을 적용한 다음 GKE 클러스터에 Pod 보안 정책을 사용 설정하세요.

pod 보안 정책 사용 설정

  1. 시스템에 다음과 같이 Pod 보안 정책이 정의되어 있는지 확인합니다.

    kubectl get psp --all-namespaces
    
    • 명령어가 기존 정책 목록을 반환하면 시스템에 Pod 보안 정책이 이미 적용된 것입니다. 롤백을 수행해야 하는 경우 기존 PodSecurityPolicy YAML 파일을 사용 가능하게 하는 것이 좋습니다. gce로 시작하는 정책을 제외하고 기존 Pod 보안 정책의 각 spec 부분에 다음 섹션을 추가해야 합니다.

      allowedHostPaths:
        - pathPrefix: "/var/run/sds"
          readOnly: true
      allowedCapabilities:
        - NET_ADMIN
        - NET_RAW
      

      이 줄은 /var/run/sds 호스트 경로에서 읽을 수 있으며 자동 사이드카 삽입을 허용합니다.

      kubectl를 사용하여 Kubernetes에서 Pod 보안 정책을 수정하고 적용할 수 있습니다.

      kubectl edit psp YOUR_EXISTING_POD_SECURITY_POLICY
      
    • 명령어가 No resources found를 반환하면, 포드 보안 정책이 정의되지 않은 것입니다. 여전히 기존 워크로드와 충돌하지 않도록 samples/security/psp/all-pods-psp.yaml 파일을 수정해야 할 수 있습니다. 자세한 내용은 포드 보안 정책 가이드를 참조하세요. 파일을 수정한 후 적용합니다.

      kubectl apply -f "samples/security/psp/all-pods-psp.yaml"
      
  2. Pod 보안 정책을 적용하여 보안 비밀 검색 서비스(SDS)를 보호합니다.

    kubectl apply -f "samples/security/psp/citadel-agent-psp.yaml"
    

    그러면 Citadel 에이전트(노드 에이전트라고도 함)가 호스트 VM에 UDS 경로 /var/run/sds를 만들 수 있는 권한을 부여합니다.

  3. 다음 명령어를 실행하여 pod 보안 정책을 사용 설정합니다.

    gcloud beta container clusters update ${CLUSTER_NAME} \
        --enable-pod-security-policy
    

    pod 보안 정책을 사용 설정하는 데 몇 분 정도 걸릴 수 있습니다. 이 프로세스가 진행되는 동안 기존 워크로드는 Kubernetes 마스터에 연결할 수 없습니다. Kubernetes 마스터가 다시 작동될 때까지 기다립니다. Kubernetes 클러스터 페이지의 Google Cloud Console에서 클러스터 상태를 확인할 수 있습니다.

    자세한 내용은 pod 보안 정책 사용을 참조하세요.

Pod 보안 정책 확인

기존 워크로드가 있는 경우 새 pod 보안 정책으로 워크로드를 배포할 수 있는지 확인하는 것이 좋습니다.

  1. 확인할 배포를 선택하고 복제본을 늘립니다. 예를 들어 지정된 서비스에 1개의 복제본이 있는 경우 1씩 늘립니다.

    kubectl scale deployment YOUR_DEPLOYMENT --replicas=2 -n YOUR_NAMESPACE
    
  2. 배포가 확장되었는지 확인합니다.

    kubectl get deploy
    
  3. 새 워크로드를 배포할 수 있는지 확인합니다. 즉, 포드 보안 정책은 서비스에 대한 워크로드 배포에 영향을 주지 않습니다.

    kubectl get deployment YOUR_SERVICE -n YOUR_NAMESPACE
    NAME                    READY   UP-TO-DATE   AVAILABLE   AGE
    YOUR_SERVICE            2/2     2            2           ...
    
  4. 서비스 복제본을 축소하세요.

    kubectl scale deployment YOUR_SERVICE --replicas=1 -n YOUR_NAMESPACE
    
  5. 워크로드가 성공적으로 배포되지 않으면 YAML 파일을 수정하는 동안 Pod 보안 정책을 일시적으로 사용 중지할 수 있습니다.

    gcloud beta container clusters update ${CLUSTER_NAME} \
      --no-enable-pod-security-policy
    

다음 단계