콘텐츠로 이동하기
보안 & 아이덴티티

사용자 정의 조직 정책 운영하기

2023년 11월 30일
https://storage.googleapis.com/gweb-cloudblog-publish/images/20501___Mandiant_Hero.max-2600x2600.max-2600x2600.png
Jinwon Seo

Security Specialist

개요

구글 클라우드는 클라우드에서 운영하는 모든 자산을 효율적으로 관리하기 위해서 리소스 매니저(Resource Manager)를 제공합니다. 이를 위해서 모든 리소스는 조직(organization)을 중심으로 폴더와 프로젝트라는 특수 자원으로 그룹화되어 관리됩니다. 클라우드 보안 관리자 또는 관리자는 운영하는 클라우드에 통일되고 일관된 정책을 적용하는 것을 원합니다. 구글 클라우드는 이를 위해서 조직 정책(Organization Policies) 기능을 제공합니다.

이전의 조직 정책은 구글 클라우드가 제공하는 빌트인 정책만을 적용할 수 있었습니다. 하지만 이제는 관리자가 직접 조직에 특화된 정책을 수립하고 적용할 수 있어서 활용성이 더욱 커졌습니다.

조직 정책(Organization Policies)

조직 정책은 하위 리소스에 적용되는 보안 정책의 목록입니다. 구글 클라우드에서 조직은 모든 리소스의 근원이므로 모든 리소스가 직간접적으로 조직과 연결되어 있습니다. 이러한 그림과 같이 조직의 정책은 조직 하위의 모든 리소스에게 영향을 줍니다. 이는 조직 정책 뿐만 아니라 IAM(Identity & Access Management)과 같은 역할 부여도 동일한 효과를 가집니다.

https://storage.googleapis.com/gweb-cloudblog-publish/images/Screenshot_2023-11-20_at_4.01.02PM.max-1900x1900.png

현재 구글 클라우드에서 제공하는 조직 정책은 116개를 제공하며 정책의 개별 항목은 수시로 개선되고 있습니다. 조직 정책은 조직, 폴더와 프로젝트에 적용할 수 있습니다. 프로젝트 하위의 개발 자원은 프로젝트의 정책을 상속받습니다. 권장하는 운영 방식은 최상위 노드인 조직의 정책을 클라우드 전체 정책의 기본으로 수립하는 것입니다. 가급적 조직 노드에 설정한 조직정책은 수정하지 않는 것이 좋습니다. 그러므로 초기에 조직의 정책을 수립하기 위한 많은 논의가 선행되어야 할 것입니다. 이는 조직에서 운영하는 보안 정책의 근원이기 때문입니다.

하지만 폴더나 프로젝트에서 워크로드를 운영하다보면 업무 특성상 조직의 정책과 충돌이 발생할 수도 있습니다. 이런 경우는 조직의 정책을 수정하는 것이 아니라 폴더나 프로젝트의 조직 정책을 수정하는 것이 원칙입니다.

아래의 그림에서 조직 정책을 운영하는 예시를 볼 수 있습니다.

https://storage.googleapis.com/gweb-cloudblog-publish/images/Screenshot_2023-11-20_at_4.06.29PM.max-1000x1000.png

최상위 노드에서 가상머신에 공인IP를 부여하지 않는 정책(No Ext IPs)와 새로운 서비스 계정을 생성하지 못하는 정책(No New Serv. Accs)를 수립했습니다. 하지만 PCI-DSS 폴더에는 이 두 정책에 한 개를 추가해서 기본 네트워크를 사용하지 못하는 정책(No Default Network)을 추가하였습니다. 이제 PCI-DSS 폴더와 하위 노드에는 세 개의 정책이 적용됩니다.

QA 폴더에서는 신규 서비스 계정 생성 정책을 제거하고 가상머신에 공인IP 부여 금지 정책만을 사용하도록 설정하였습니다. 마지막으로 Dev 폴더 하위의 프로젝트에서는 상위에서 상속받은 두 정책을 모두 제거하고 신뢰 이미지만 허용(Trusted Images) 정책을 추가하여 결과적으로 하나의 정책만을 운영합니다.

이렇듯 조직 정책은 상위에서 상속 받은 정책에 추가, 삭제 및 대체가 모두 가능합니다. 예제의 방식을 적용하면 상위 노드 정책과 하위 노드 정책이 다르게 되며, 이 경우 하위 노드의 정책이 우선 순위를 갖게 됩니다. 그러므로 QA 폴더에서는 새로운 서비스 계정을 생성할 수 있고, Dev 폴더 밑의 프로젝트에서는 가상머신에 공인 IP를 할당할 수도 있습니다.

이렇게 최상위 노드의 조직 정책을 변경하지 않아도 개별 폴더와 프로젝트에 특화된 정책을 운영할 수 있는 장점이 있습니다.

사용자가 프로젝트를 운영하는 최상위 권한인 소유자(Owner)를 가지고 있다고 하더라도 조직 정책을 수정할 수는 없습니다. 조직 정책을 운영하려면 Organization Policy Administrator 역할이 별도로 필요합니다. 조직의 정책을 수정할 수 있는 사용자는 소수로 운영하여 과도하게 조직 정책이 변경되지 않도록 권한을 통제해야 합니다. 조직 정책을 운영하는 상세 안내 문서는 이곳에서 확인할 수 있습니다.

사용자 정의 제약 조건

기업마다 운영하는 업무 환경이 다른만큼 구글 클라우드의 조직 정책은 기업마다 다르게 설정할 수 있습니다. 하지만 기업이 원하는 항목이 애초부터 없다면 관리자는 모든 리소스마다 정책을 점검하느라고 많은 시간과 노력을 투자해야 합니다.

이를 해소하기 위해서 조직 정책을 사용자가 직접 생성할 수 있는 커스텀 제약항목(custom constraint)기능이 Public Preview로 출시되었습니다. 현재 커스텀 제약 항목은 Cloud Firewall, Compute Engine, Dataproc, Google Kubernetes Engine과 VPC로 총 다 섯 개의 리소스를 대상으로 지원합니다. 항목별 상세 내역은 이곳에서 확인할 수 있습니다.

구글 클라우드에서 가상머신을 생성하는 컴퓨트 엔진을 예로 들어보겠습니다. 가상머신은 기업 워크로드의 가장 기본 리소스입니다. 관리자는 표준 가상머신 타입을 지정하고 해당 타입을 기본으로 사용하도록 강제할 수 있습니다. 만일 업무로 인해서 특별한 타입이 필요하다면 정책을 병합하거나 대체할 수도 있습니다. 그리고 가상머신의 부트 디스크는 그리 큰 용량이 필요없으므로 대용량 사용을 제한할 수도 있습니다. 이러한 내용을 조직 정책에 추가하면 조직의 모든 프로젝트에서 관리자가 조직 정책에서 지정한 가상머신 타입만 생성할 수 있습니다. 컴퓨트 엔진 인스턴스 관리자라고 할지라도 조직 정책을 거스르는 명령을 실행시킬 수 없기 때문입니다.

클라우드 콘솔에서 작성하거나 yaml파일을 이용하여 조직 정책을 생성하는 두 가지 방식을 모두 지원합니다.

아래 그림은 컴퓨트 엔진이 사용하는 부트 디스크의 크기를 20GB 이하로만 생성하도록 제약을 설정하는 예제 화면입니다. 클라우드 콘솔 -> IAM & Amin -> Organization Policies -> +Custom Constraints를 선택해서 설정할 수 있습니다.

https://storage.googleapis.com/gweb-cloudblog-publish/images/User_defined_organization_policy.max-1200x1200.png

컴퓨트 엔진에서 사용자 정의 제약조건을 활용하는 상세 예시는 이곳에서 확인할 수 있습니다.

마치며

조직 정책은 구글 클라우드가 제공하는 강력한 보안 통제 방안입니다. 이를 이용해서 컴플라이언스 기반 통제를 적용할 수 있고, 사내 내규에 맞는 운영사례를 모든 사용자에게 강제할 수 있습니다.

조직 정책은 신규로 설정한 이후에만 적용이 됩니다. 기존 리소스에는 소급되어 정책이 적용되지 않습니다. Security Command Center를 함께 사용하시면 조직 정책에 위반하는 리소스를 탐지하여 관리자에게 통보합니다. 이를 통해서 조직 정책을 위반하는 리소스를 탐지하고 이를 대응할 수 있습니다.

구글 클라우드에서 제공하는 조직 정책을 이용하여 클라우드 운영 환경의 일관성있는 보안 정책 수립과 안전한 운영 환경을 확보할 수 있습니다.

게시 위치