클라우드 보안의 가장 약한 고리 ‘개발자와 관리자 인증 & 인가’
👉 구글 클라우드의 Cloud IAM 👈 으로 ‘최소 권한 부여’ 원칙 지키기
Cloud IAM(Identity and Access Management) 🙂
클라우드 관련 보안 침해를 보면 출발점은 대부분 개발자나 SRE 엔지니어같이 권한 있는 사용자의 자격 증명 탈취에서 시작합니다. 공격자는 다양한 수단을 동원해 자격 증명을 빼냅니다. 그리고 합법적으로 접근한 내부 권한 상승을 거듭하면서 목표 시스템에 접근합니다. 이런 이유로 Cloud IAM(Identity and Access Management)의 중요성을 강조합니다❗‼️‼️
😃 Why Cloud IAM
Cloud IAM을 활용하면 개발자, 관리자 같은 이들에게 최소 권한을 부여하는 식으로 클라우드 인스턴스나 데이터에 접근 하는 것을 제어할 수 있습니다. IAM은 인증과 인가를 수행하는 시스템입니다.
📌 인증은 이 사용자를 확인하는 것입니다. 권한이 있는 합법적인 사용자인지 계정 이름과 비밀번호를 통해 확인하는 것을 떠올리면 이해가 빠를 것입니다.
📌 인가는 인증을 거친 합법적인 사용자가 접근할 수 있는 시스템과 데이터를 제한하는 것을 말합니다.
사용자의 역할에 따라 권한을 세부적으로 정합니다. 최소 권한은 정밀한 수준으로 인가 규칙을 정해 접근을 관리하는 것이라 볼 수 있습니다.
😃 구글 클라우드 IAM의 정책 설정을 통해 최소 권한 부여하기
구글 클라우드의 IAM을 이용하면 정책 설정을 통해 개발자, SRE 엔지니어 같은 사용자에게 최소 권한을 부여하여 공격자가 노리는 자격 증명 탈취를 통한 침해 활동을 막을 수 있습니다.
상세 접근 제어를 하면 구체적으로 어떻게 보안이 더 강화되는 것일까요?
정책 설정을 통해 상세한 접근 제어를 하면 부여된 역할과 관계없이 특정 권한을 세밀하게 제어할 수 있습니다. 권한이 있는 사용자도 특정 시스템이나 데이터에는 접근하지 못하게 할 수 있다는 것이죠. 이처럼 최소한의 권한 부여 원칙에 따라 정밀하게 시스템과 데이터에 접근하는 것을 제어하면 외부는 물론 내부에 있는 잠재적 위협 행위자의 침해 활동에 의한 피해를 최소화할 수 있습니다.
또한, 상세한 접근 제어는 규정 준수를 준수하는 데도 중요합니다. 예를 들어 개인정보보호 관련 규제 준수 요구 사항이 있는 경우 특정 유형의 데이터에 대한 액세스를 통제하는 정책을 적용할 수 있습니다.
😃 Allow & Deny 설정
구글 클라우드의 IAM을 이용 중이라면 정책 설정을 통해 개발 및 운영 팀의 권한 있는 사용자에 대한 상세한 접근 제어를 구현할 수 있습니다. 관련 정책을 잘 적용하면 권한 있는 사용자가 접근할 수 있는 데이터와 리소스를 상세하게 지정할 수 있습니다.
구글 클라우드의 IAM에서 권한은 역할에 따라 사용자 및 그룹에 부여 할 수 있습니다.
역할은 사용자 또는 그룹에 부여할 수 있는 권한의 모음입니다. 역할을 정의할 때 어떤 권한이 허용되고 어떤 권한이 거부되는지 Allow와 Deny 설정을 통해 지정할 수 있습니다.
Allow 권한은 사용자가 수행할 수 있는 작업을 지정하고, Deny 권한은 특정 사용자가 수행할 수 없는 작업을 지정합니다. Allow와 Deny는 어느 하나만 선택해 부여하는 것이 아니라 조화를 이루며 연계하여 동작한다고 보면 됩니다.
▼ 아래 예제 그림처럼 연계하여 동작하게 됩니다. 🤗
운영 팀에 신입 사원이 들어왔다고 가정해 보겠습니다. 보안 담당자 또는 클라우드 관리자는 신입 사원을 위한 구글 클라우드 사용자 계정을 생성합니다. 그런 다음 사용자 역할을 정의합니다. 신입 사원은 앞으로 SRE 엔지니어링 업무를 맡을 예정입니다. 따라서 IAM 콘솔의 역할 메뉴에서 신입 사원 계정 관련 역할에 맞는 권한을 추가합니다.
권한을 부여 한 다음에는 최소 권한 부여 원칙에 따라 신입 사원이 할 수 있는 것과 없는 것을 지정해 주어야 합니다. 이때 어떤 기준을 참조해야 할까요? 다음과 같이 리소스, 프로젝트, 폴더, 조직을 고려해 최소 권한을 부여하면 됩니다.
최소 권한 부여는 Allow와 Deny 조합을 통해 합니다. 신입 사원의 경우 SRE 엔지니어라 해도 모든 작업을 할 수 있게 하면 안 되겠죠??
이런 때는 스토리지 버킷을 생성하고 관리할 수 있도록 Storage.Buckets.create와 Storage.Buckets.delete 권한은 Allow로 설정하고, Storage.Buckets.list와 Storage.Buckets.get에 대해서는 Deny로 설정하여 최소 권한을 부여하면 됩니다. 😊
😃 IAM의 또 다른 용도
요즘은 온프레미스와 클라우드를 모두 쓰는 게 노멀인 시대입니다. 두 환경에 있는 시스템과 데이터를 연계하는 데에도 구글 클라우드 IAM은 도움이 됩니다.
예를 들어 구글 클라우드의 컴퓨트 엔진 인스턴스에서 실행되는 웹 애플리케이션에서 액세스해야 하는 온프레미스 데이터베이스가 있다고 가정해 보겠습니다. 데이터베이스에 대한 연결을 설정하고 쿼리를 실행하는 기능 등 데이터베이스에 액세스하는 데 필요한 권한이 포함된 사용자 지정 역할을 IAM에서 만들 수 있습니다. 그런 다음 이 역할을 웹 애플리케이션에서 사용하는 서비스 계정에 할당하여 구글 클라우드 환경 내에서 데이터베이스에 액세스할 수 있도록 할 수 있습니다.
예와 같이 IAM을 사용하여 온프레미스 시스템에 대한 액세스를 제어하려면 먼저 온프레미스 시스템과 구글 클라우드 간에 연결을 설정해야 합니다. 일반적인 접근 방식 중 하나는 VPN 연결을 사용하여 온프레미스 네트워크와 구글 클라우드 VPC 네트워크 사이에 보안 터널을 설정하는 것입니다. 연결이 설정되면 IAM에서 온프레미스 시스템에 액세스하는 데 필요한 권한을 지정하는 사용자 지정 역할을 만들 수 있습니다. 그런 다음 이러한 역할을 IAM에서 사용자 또는 서비스 계정에 할당하여 온프레미스 시스템에 대한 액세스를 제어할 수 있습니다.
이상으로 『 구글 클라우드 IAM을 활용해 사용자에게 역할을 부여한 뒤 Allow, Deny 설정을 통해 최소한의 권한을 부여하는 방법 』 에 대해 알아보았습니다. 😎🤗🤗
더 자세한 내용은 메가존소프트로 문의 바랍니다. 👉 메가존소프트 문의 바로가기