constraints/compute.vmExternalIpAccess
안전한 인프라 보안 정책을 설정해야 한다면 아마도 가장 먼저 떠올리는건 외부 IP 사용을 제한하는 것이 아닐까요?
위 정책은 Google Compute Engine의 VM을 생성할 때 Public IP를 설정하지 못하도록 제한할 수 있는 조직정책입니다.
좀 더 정확히 말하자면 'VM 인스턴스에 허용되는 외부 IP 정의 정책'으로 설정을 못하게 한다기 보단 Public IP를 사용할 수 있는 특정 인스턴스를 지정하거나 반대로 특정 인스턴스에는 Public IP를 사용하지 못하게 구성하여 데이터 무단 반출을 방지하거나 네트워크 격리를 유지하는 데 도움이 될 수 있습니다.
이 조직 정책 또한 정책 활성화 후 새로운 리소스부터 적용됩니다.
다만, Public IP를 사용하는 기존 GKE 클러스터 및 관리형 인스턴스 그룹(MIG)의 경우 이미 생성된 인스턴스는 문제 없지만 자동복구 및 자동확장을 통한 새 VM을 추가하지 못할 수 있으니 설정에 유의하셔야 합니다.
얼마전 실제로 이 조직 정책을 적용하려고 했을 때 예상치 못한 어려움에 봉착했는데 그것은 바로 VM 기반으로 동작하는 모든 서비스에 영향을 미친다는 것이었습니다. 그리고 구체적으로 어떤 서비스가 영향을 받는건지 리스트는 확인할 수가 없었습니다.
정책 설정 시 영향받는 서비스
구글 문서에는 GCE 외에 추가로 'Google Kubernetes Engine, Dataflow, Dataproc, Cloud SQL 같은 서비스가 이 정책의 영향을 받습니다' 라고 적혀있지만 그 외 영향을 받는 서비스로 App Engine(Flexible), Cloud Composer가 더 있었고 Cloud SQL은 테스트 결과 왜인지 아무런 영향도 받지 않았습니다.
조직 정책이 적용되어 있을 때 이미 Public IP를 사용하도록 설정된 서비스가 있을 때 어떤 문제가 발생하는지 테스트했고, 각 서비스별로 어떤 설정들을 확인해봐야 하고 어떤 조치를 취해야 하는지 아래 표로 간단히 정리했습니다.

서비스 인스턴스를 삭제 후 새로 만들어야 하는 상황인 경우 영향도를 '높음'으로 적었고, 자동확장 기능을 제거하거나 템플릿을 교체하는 등의 설정을 변경하는 것으로 해결이 가능하다면 '중간'으로 영향도를 표시했습니다.
허용 리스트 OR 거부 리스트
'허용 리스트'는 Public IP를 사용할 수 있는 인스턴스의 리스트이며 이 리스트에 포함되지 않는 인스턴스는 Public IP를 구성할 수 없습니다. '거부 리스트'는 이와 반대로 리스트에 포함된 모든 인스턴스는 Public IP를 사용할 수 없고 그 외의 인스턴스는 사용할 수 있습니다.
[ IAM > 조직정책 ] 페이지로 이동하여 constraints/compute.vmExternalIpAccess 정책을 검색합니다.

정책 이름을 누른 후 상단에 [정책 관리] 버튼을 눌러 수정모드로 들어갑니다. 정책 소스 항목을 '상위 정책 재정의'로 변경한 뒤 아래와 같이 새로운 규칙으로 설정합니다.

(1) 정책의 값은 모두허용 또는 모두거부로 설정할 수도 있고, 허용/거부 인스턴스 리스트로 설정할 때는 '커스텀'으로 변경해야 합니다.
(2) 커스텀에서 정책 유형은 하위의 인스턴스 리스트에 대한 처리 방식을 의미합니다. '허용'일 경우 하위 인스턴스들은 모두 Public IP 사용이 허용되고 그 외의 인스턴스들은 모두 거부됩니다.
(3) 커스텀 값은 인스턴스의 경로를 입력하는데 projects/PROJECT_ID/zones/ZONE/instances/INSTANCE 형식이며, 이름은 정확히 매칭되어야 합니다.
예를 들어 vm-1, vm-2 인스턴스를 'vm-*' 라고 입력하여 한번에 정의하는 것은 불가능 합니다. *를 와일드카드가 아닌 그냥 문자열 *로 보기 때문입니다.
보안을 강화하는 일은 매우 중요하고 필요한 일이지만, 이미 운영 중인 환경에 조직 정책을 설정하는 것이 쉬운일은 아니기 때문에 실제 적용이 어렵고 주저하게 되는 것 같습니다. 위 설명드린 영향 받는 서비스들을 잘 확인해본 후 최소한의 범위로 적용한 뒤 점차 범위를 늘려가며 정책을 적용해보시면 어떨까 싶습니다.
'GCP' 카테고리의 다른 글
| 조직 정책(Org. Policy)의 이해 (0) | 2024.08.07 |
|---|---|
| BigQuery IAM 설정 (1) | 2024.07.25 |
| IAM 개요 (0) | 2020.09.13 |