How Stocks Helped the Netherlands Rule Over the World

In the first phase of exploration, Spain had accumulated such massive wealth that they had everything in their arsenal to rule the world for long. But Spain, which looked destined for absolute world…

Smartphone

独家优惠奖金 100% 高达 1 BTC + 180 免费旋转




Principle of Least Privilege with IAM Policy

Principle of Least Privilege, 굳이 직역하자면 최소 권한의 원칙(?)일거 같고 풀어서 말하자면 특정 임무를 수행하는 객체에 그 특정 임무를 수행하는데 꼭 필요한 최소한의 권한만 부여 및 허용하는 방법론입니다.

AWS에서는 IAM Policy에 권한을 명시하고 IAM User나 IAM Role에 IAM Policy를 부여하는 방식으로 AWS Resources에 대한 접근 제어를 할수 있습니다. 고로 IAM Policy를 어떻게 사용하느냐에 따라서 AWS 클라우드 상에서의 보안을 더욱 견고하게 할수 있는데요. 몇가지 예를 통해서 올바른 IAM Policy를 만드는법을 알아보겠습니다.

이 경우 AWS 초심자의 경우에는 잘 몰라서, AWS를 잘 사용한다고 하는 분들은 귀찮아서 AWS Managed Policy인 AmazonS3FullAccesss 권한을 부여하곤 하는데요 (사실 저도 테스트용이라는 변명과 함께 종종 사용하는 방법입니다 😝) 이 정책에 부여된 권한을 JSON 으로 본다면 아래와 같습니다

조금 더 나아지기는 했지만 Action 부분에 대한 수정이 필요할듯 하네요. ListBucket, GetObject, DeleteObject Action만 실행 할수있게 수정해 보겠습니다.

이 경우 IAM Policy 요소중에서 Condition을 이용해서 특정 IP 대역대에서 오는 요청에 대해서만 허가하는 조건을 넣을수 있습니다. 회사 네트워크 IP 대역대가 123.123.123.123/32 라고 가정을 한다면 아래와 같은 조건문을 넣어서 IP주소 기반 접근제어를 할수 있습니다.

아무리 완벽한 IAM Policy를 생성했다고 해도 해당 정책을 가진 IAM User의 Credential이 유출됐다면.. 상상만 해도 끔찍한 일이네요. MFA 역시 Condition을 통해서 제어할수 있습니다.

이 경우에도 역시 Condition을 이용해서 특정 날짜와 시간대에 따라서 접근제어를 할수 있지만 여기서 문제점은 날짜에 있습니다. ISO 8061 포맷에 맞춰진, 예를 들자면 2020–01–28T08:00:00+00:00, 시간대만 지원하므로 매일 매일 수동 혹은 자동으로 YYYY-MM-DD 부분을 업데이트 해줘야 합니다. CloudWatch Events와 AWS Lambda를 사용해서 자동화 해보도록 하겠습니다

3. CloudWatch Event에 Schedule Rule을 생성합니다. UTC 기준 월요일부터 금요일까지 매일 00시에(한국시간 기준 오전 9시) 위에서 생성한 Lambda Function이 실행되도록 설정합니다

자 그럼 현재 시간이 한국시간 기준 2020년 1월 28일 오후 5시 (UTC 기준 오전 8시)라고 가정한다면, 이 시간 이후로 오는 모든 요청은 Deny 될것입니다. 하루가 지나고 2020년 1월 29일 오전 9시(UTC 기준 00시) 위의 Lambda function이 실행되면 IAM Policy의 날짜 조건은 2020–01–29T08:00:00+00:00로 업데이트가 되어서 당일 기준 오후 5시까지 모든 Action에 대한 Explicy Deny 가 적용되지 않을겁니다. 이후 오후 5시부터 다음날 오전 8시59분까지는 모든 요청이 거부되겠죠

위에서 간단한 예를 들어서 IAM Policy를 어떻게 하면 잘 생성할수 있는지에 대해서 소개를 했는데요. IAM Policy에 권한을 부여하는 가장 좋지만 가장 귀찮은 방법은 아무 권한도 부여하지 않고 시작하는것입니다. AWS Console, SDK, CLI를 이용할때 권한문제가 있을때 AWS는 친절하게도 Error Message는 보여줍니다. 예를 들자면 아래와 같은

이 에러인 즉슨 ListObjects 에 대한 권한이 없어서 명령을 수행할수 없다는 뜻이죠. 자 그럼 이제 뭘 해야할까요? IAM Policy에 해당 권한을 추가하면 되겠죠. 無에서 시작해서 Access Denied를 볼때마다 해당 권한을 추가한다면 나에게 꼭 맞은 IAM 정책을 수립할수 있을겁니다.

Add a comment

Related posts:

Illuminating the verve of insecurity!

Yeah! I am aware that I was so sedentary since last month, just a desire that a few holds exist for my writings. I generally don’t hide but my fears do engulf me with silly thoughts. A childish heart…