사용자 등록
AWS 콘솔에 접근하기 위한 실 사용자를 등록하고 여러 AWS 서비스에 접근할 수 있는 권한을 부여합니다.
콘솔에 접근한 뒤에, 반드시 확인해야 할 것은, 현재의 리전 (Region)을 설정하는 것입니다. 우리는 서울리전(ap-northeast-2) 를 선택하겠습니다.
사용자를 등록하기 위해 IAM Identity Center 서비스로 이동합니다.

IAM 페이지에서 IAM 서비스 링크를 클릭합니다. 별도의 탭에서 IAM 대시보드 화면이 열립니다.

IAM 대시보드에서 주의깊게 볼 것은
리전이 "글로벌"로 재설정 됩니다. 사용자 및 권한 관리등의 설정은 AWS 의 리전에 설정되지 않고 글로벌 리전에서 일괄 통제 됩니다. 자연스러운 리전 변경이니 걱정 하지 않아도 됩니다.
MFA 인증 추가
루트 계정에 대한 MFA 인증을 추가하면 보안을 더 강화할 수 있습니다. 2단계 보안 인증(2FA, Two-factor authentication) 에는 여러가지 방법이 있으나, 은행의 OTP 와 유사한 스마트폰 앱을 사용하면 편합니다.
Microsoft Authenticator 앱 사이트 를 방문하여 IOS 및 Android 앱을 설치할 수 있습니다.
Google OTP 를 방문하여 IOS 및 Android 앱을 설치할 수 있습니다.
액세스 관리 메뉴들을 알아둡니다.
사용자 그룹 : 사용자들을 묶어 동일한 권한을 부여하고 통제하기 위한 그룹을 만들 수 있습니다.
사용자 : 사용자를 등록하는 화면입니다. 사용자 생성과 함께 그룹을 지정할 수 있습니다.
역할 : 사용자 또는 그룹에 지정하여 역할을 제한하고 특정할 수 있습니다.
정책 : 역할이 실제로 갖게 되는 다양한 권한요소들을 묶어놓은 개체 입니다.

사용자 생성
사용자는 Root 계정을 대신해서 실제 구성원들이 개별적으로 소유하는 정보입니다.
개발자 개인에게 부여합니다.
공동으로 필요한 Task 의 실제 수행자 ( ex. Jenkins 빌드 수행자, AWS Code Commit 의 공통 계정 )
"사용자" 메뉴를 클릭합니다. 사용자 생성 버튼을 눌러 사용자 생성 과정을 시작합니다. 사용자 이름을 developer-user 로 정합니다. AWS Management Console 에 대한 사용자 접근은 여기서는 생략합니다.

2단계의 권한 설정에서 "그룹에 사용자 추가" 를 선택한 상태로 다음 버튼을 누릅니다. 실제 그룹에 사용자를 추가하는 과정은 뒤에서 설명합니다.

사용자 생성 버튼을 통해 생성을 완료하면, 목록에 다음과 같이 생성된 사용자가 확인됩니다.

그룹 생성
사용자 그룹 메뉴를 클릭합니다. 이름은 developer-group 으로 정합니다.
그룹에 사용자 추가항목에서 developer-user 가 목록에 보이면, 이 항목 앞의 체크박스를 체크해 줍니다.
아무런 권한 정책 연결 없이 화면 가장 아래에 "그룹 생성" 버튼을 누릅니다.
정상적으로 그룹이 생성되면 사용자 그룹 목록에 생성된 그룹이 보입니다.


정책 생성
AWS 에서는 다양한 업무적 정책을 미리 만들어 두어 이를 AWS 관리형 정책으로 제공하고 있습니다. 사용자나 사용자 그룹에 이러한 관리형 정책을 적용하면 보다 쉽게 정책을 만들고 관리할 수 있습니다. 다만 이러한 관리형 정책은 그 구성내용을 전반적으로 이해하지 않은 상태에서 사용하게 될 경우, 사용자나 사용자 그룹에 과도한 권한이 주어지지 않는지 신중하게 적용하고 관리해야 합니다.
우리는 새로운 정책을 만들고 이를 사용하면서 "필요한 시점에 정책으로 막히는" 부분들을 직접 접하고, 그 시점에서 이러한 정책이 필요한지 아닌지 판단하여 추가하여 "막히는 부분을 풀어가는" 방식으로 "최소한의 권한 부여 방식"을 실습할 것입니다.
정책 생성 화면으로 이동하여, 가장 기본적인 구성의 정책을 만드는 것으로 시작하겠습니다.
정책 생성 버튼을 누르면, 권한 지정화면으로 이동합니다. 여기서 다음 항목들을 선택해서 아래 그림과 같이 만듭니다.
서비스 선택 : Lambda
작업 허용됨 : (읽기) GetFunction, (쓰기) UpdateFunctionCode (총 2개)
리소스 : 이 계정의 모든 항목 체크
이와 같은 정책은, "서비스를 특정하고, 그 안에서 할 수 있는 일을 고른 뒤에 어느 리소스를 대상으로 하는지"의 논리로 구성됩니다. 즉, 이 정책을 받는 사용자는 해당 리소스에 대해 허용된 작업만 가능할 뿐 다른 모든 작업은 수행할 수 없게 됩니다.
정책의 이름에 developer-policy 를 입력하고 완료합니다.
생성된 정책의 목록으로 부터 다시 상세 항목의 내용을 확인합니다.

여기에 더해, 다음 서비스에 대해서도 같은 작업을 수행합니다.
서비스 선택 : CloudWatch Logs
작업 허용됨 : CreateLogGroup, CreateLogStream, PutLogEvents (총 3개 )
리소스 : 이 계정의 모든 항목 체크
이 정책의 JSON View 를 확인 합니다. JSON 구문을 직접 수정하여 정책을 조절할 수도 있습니다.

권한 정책의 최종 JSON 은 다음과 같습니다.
// developer-policy
// 아래 [accountId] 는 aws 계정마다 부여되는 고유한 숫자 구분자입니다.
// 이 구분을 복사하여 사용하는 경우,[accountId] 를 자신의 계정 고유 번호로 바꾸어 사용해야 합니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"lambda:UpdateFunctionCode",
"lambda:GetFunction",
"logs:CreateLogGroup"
],
"Resource": [
"arn:aws:logs:*:[accountId]:log-group:*",
"arn:aws:lambda:*:[accountId]:function:*"
]
},
{
"Sid": "VisualEditor1",
"Effect": "Allow",
"Action": [
"logs:CreateLogStream",
"logs:PutLogEvents"
],
"Resource": "arn:aws:logs:*:[accountId]:log-group:*:log-stream:*"
}
]
}사용자 그룹 - 정책 연결
사용자는 사용자 그룹에 포함되어 있으므로, 역할은 사용자 그룹에 연결하는 것으로 사용자 생성 및 권한 부여는 마무리 됩니다.
사용자 그룹 화면으로 가서, 여기에 developer-group 항목을 선택하고, "권한" 탭을 선택합니다. 이 탭의 "권한 추가" 버튼을 누르면 보이는 "정책 연결" 메뉴를 선택합니다.

developer-policy 항목을 찾아 체크박스를 체크하고, 정책 연결 버튼을 눌러 연결을 마무리 합니다.

정책이 연결되면, 권한 정책 항목 뿐만아니라, 항목을 펼쳐 상세한 권한 정책내용을 확인할 수 있습니다.

Last updated