AWS IAM Region 제한하기

 

etc-image-0

 

 

우테코 수료일이 다가오면서, 우테코에서 제공했던 AWS 계정 만료일도 코 앞으로 다가왔다.

때문에 우리 팀 계정으로 서버를 이관하기 위해 사전 작업을 수행하는 과정에서 IAM 관리자 사용자에 Region 제한 설정을 하게 되어 글로 남겨보려고 한다.

 

문제 상황

AWS에서 솔루션을 이용하다보면 실수로 타 리전을 이용하고 있었던 경험이 한 번쯤은 있을 것이다.

이런 문제가 발생하면 사용할 리전에 동일한 설정을 반복해야하는 문제가 있고,

거의 그럴 일은 없겠지만 타 리전에 실수로 만든 것을 모르고 넘어가게 된다면 비용 문제로도 이어진다. 

 

이를 해결하고자 사용할 IAM 사용자에 권한 정책 설정을 통해 서울 리전만 사용 가능하도록 설정해보고자 했다.

 

 

설정 과정

 

etc-image-1

사용할 IAM에 권한 추가 - 인라인 정책 생성 선택 

 

 

스크린샷 2024-11-25 15.01.49.png

그리고 위 권한 지정 탭의 내용을 아래 코드와 같이 설정한다.

 

 

{
	"Version": "2012-10-17",
	"Statement": [
		{
			"Effect": "Allow",
			"Action": "*",
			"Resource": "*",
			"Condition": {
				"StringEquals": {
					"aws:RequestedRegion": [
						"ap-northeast-2"
					]
				}
			}
		},
		{
			"Effect": "Allow",
			"Action": [
				"iam:*",
				"cloudfront:*",
				"s3:*"
			],
			"Resource": "*"
		}
	]
}

위 권한 설정 값은 AdministratorAccess 권한에 서울(ap-northeast-2) 리전 제한을 걸어둔 것이다.

AdministratorAccess 라는 권한은 관리자 직무 IAM에게 설정하는 권한이다.

 

AWS 계정 내 모든 리소스와 서비스에 대해 무제한 액세스 권한을 가지도록 설계된 정책인데,

"Action": "*" 는 모든 AWS 서비스의 모든 작업을 허용을 뜻하고

"Resource": "*" 는 모든 리소스에 대한 접근을 허용을 뜻한다.

 

관련 내용은 공식 문서에 적혀있다.

 

 

IAM, CloudFront, S3는 왜 모든 리전에서 허용해주는가?

{
	"Effect": "Allow",
	"Action": [
		"iam:*",
		"cloudfront:*",
		"s3:*"
	],
	"Resource": "*"
}

이 권한 설정은 의아할 것이다.

IAM, CloudFront, S3는 Global한 솔루션이기 때문에 ap-northeast-2에 대해서만 설정해주었을 때 리전 관련 오류가 발생했다.

때문에 해당 솔루션들은 따로 빼서 리전 설정을 해주지 않았다.

 

 

스크린샷 2024-11-25 15.02.16.png

위 권한의 이름은 AdministratorAccessOnlySeoul 로 설정해주었다.

 

이를 통해 서울 리전에 한정된 어드민 권한을 설정할 수 있다.