BackEnd/Infra

AWS IAM Region 제한하기

PgmJUN 2024. 11. 26. 21:44

 

 

 

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

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

 

문제 상황

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

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

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

 

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

 

 

설정 과정

 

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

 

 

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

 

 

{
	"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에 대해서만 설정해주었을 때 리전 관련 오류가 발생했다.

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

 

 

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

 

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