티스토리 뷰
인프런 [AWS(Amazon Web Service) 입문자를 위한 강의]를 듣고 정리한 내용입니다.
IAM이란?
IAM(Identity and Access Management)은 AWS 리소스*에 대한 액세스를 제어하는 서비스입니다.
*AWS 리소스는 AWS에서 제공하는 서비스나 인프라 요소를 의미합니다. EC2 인스턴스, S3 버킷, RDS 데이터베이스, Lambda 함수 등이 모두 포함됩니다.
왜 필요할까요?
당신이 한 서비스를 운영하고 있다고 가정해보죠. 새로운 기능 개발을 외주 업체에 의뢰하려는 상황입니다.
작업을 위해 외주 업체에 서버 리소스에 대한 접근 권한을 허용해 주려합니다. 하지만 모든 권한을 허용한다면 문제가 발생할 수 있겠죠? 실수로 운영계 DB 테이블을 삭제하는 일이 생긴다면(...) 큰일이 날겁니다.
이런일을 방지하기 위해서는 외주 업체가 DB를 읽고 쓰는 것은 허용하되, 삭제나 변경 같은 작업은 금지하는 것이 안전합니다.
이렇듯 리소스에 대한 세부적인 권한 관리를 가능하게 해주는 것이 바로 IAM 입니다! ✌️
데이터베이스(DB)에서 사용하는 GRANT 명령어와 유사하다고 생각합니다.
DB에서 특정 사용자에게 데이터베이스 객체(테이블, 뷰, 프로시저 등)에 대한 권한(읽기, 쓰기, 삭제 등)을 부여하듯이
IAM에서는 사용자, 그룹, 역할에 정책(Policy)을 할당하여 AWS 리소스에 대한 접근을 제어하는 것이죠.
주요 개념
IAM을 통해 사용자와 그룹을 생성하고, 권한을 부여하여 AWS 리소스에 대한 액세스를 관리할 수 있습니다.
사용자(User)
AWS 계정 내에서 작업을 수행할 수 있는 엔터티 입니다.
각각의 사용자는 고유한 자격 증명(Access Key ID, Secret Access Key)을 가집니다.
그룹(Group)
여러 사용자를 묶어 관리할 수 있는 기능입니다. 여러 사용자에게 일괄적으로 권한을 부여하고 싶을 때 사용됩니다.
정책(Policy)
정책은 권한을 정의합니다. 사용자가 어떤 작업을 할 수 있는지, 어떤 리소스에 접근할 수 있는지를 구체적으로 설정합니다.
역할(Role)
일반적으로 AWS 서비스 간의 상호작용, AWS 외부 사용자 및 시스템의 접근 제어에 사용됩니다.
서비스, 애플리케이션에 부여하는 권한이라고 볼 수 있습니다.
예를 들어, EC2 인스턴스가 S3 버킷에 접근하려면 EC2 인스턴스에 S3에 접근할 수 있는 권한이 포함된 Role을 부여해야 합니다.
실습
위 개념들을 바탕으로 간단히 실습해 보겠습니다!
IAM 대시보드 접속하기
AWS에 접속해 IAM을 검색합니다. 나오는 서비스 중 IAM를 선택합니다.
그럼 IAM 대시 보드로 접속할 수 있습니다.
(IAM은 유니버설(Universal)하기 때문에 지역 설정이 필요 없습니다.)
사용자(User) 생성하기
메뉴에서 Users(사용자)를 선택한 뒤 [사용자 생성] 버튼을 클릭합니다.
사용자의 이름을 입력한 뒤 [다음]을 선택합니다.
그룹에 사용자 추가를 선택한 뒤 [다음]으로 넘어갑니다.
마지막 페이지에서 입력한 내용을 검토하고 태그를 붙힐 수 있습니다.
(태그는 SNS의 해시 태그처럼 검색이나 식별을 위해 붙힐수 있는 일종의 키 값 입니다! 추가하지 않아도 무관합니다.)
[사용자 생성] 버튼을 누르면 이제 사용자 페이지에서 등록된 사용자를 확인할 수 있습니다.
액세스 키 발급하기
위에서 각각의 사용자가 액세스 키(Access Key ID), 비밀 액세스 키(Secret Access Key)을 가진다고 언급했었죠.
쉽게 말해 각 사용자에게 부여되는 고유한 인증 정보라고 생각하면 됩니다.
액세스 키를 발급할 사용자 이름을 선택해 정보창으로 접속합니다.
아직 키가 없어 액세스 키 1 아래에 액세스 키 만들기라고 나타나는걸 볼 수 있네요.
액세스 키 만들기를 클릭합니다.
(보안 자격 증명 메뉴에서 액세스 키 만들기 버튼을 선택해도 됩니다!)
액세스 키를 용도에 맞게 선택한 뒤 다음으로 넘어갑니다.
[액세스 키 만들기]를 선택합니다.
액세스 키가 발급되었습니다.
이제 해당 액세스 키를 통해 AWS 애플리케이션에 접근할 수 있습니다. ✌️
사용자 그룹 생성하기
IAM 대시보드에서 사용자 그룹 메뉴로 접속해 [그룹 생성] 버튼을 선택합니다.
생성할 그룹 이름을 입력합니다.
같은 페이지에서 사용자, 정책도 연결할 수 있는데요. 위에서 추가한 사용자를 추가해 볼까요?
그룹에 추가할 사용자를 선택하고
[그룹 생성하기] 버튼을 선택합니다.
그룹이 생성되었습니다.
사용자 계정 하나를 할당해서 사용자 1이 나타나는 것을 볼 수 있네요.
그룹 정보에서 사용자들의 정보를 확인할 수 있습니다.
사용자 화면에서도 이제 그룹 정보를 확인할 수 있습니다!
정책(Policy) 할당하기
그룹에 정책을 추가해보겠습니다.
그룹 상세에서 권한 메뉴를 선택합니다.
권한 추가 토글에서 정책 연결을 선택합니다.
DynamoDB에 모든 작업 권한을 부여하는 AmazonDynamoDBFullAccess라는 정책을 부여해보겠습니다.
검색후 정책을 선택합니다.
정책 연결 버튼을 누르면 정책이 할당됩니다.
정책 시뮬레이터
정책 시뮬레이터로 그룹, 사용자에게 부여된 정책을 테스트 해볼수 있습니다.
대시보드에서 오른쪽 하단의 도구 > 정책 시뮬레이터를 선택합니다.
정책 시뮬레이터 페이지가 열렸다면 구분을 Users로 선택한 뒤, 테스트 할 사용자를 선택합니다.
DynamoDB에 대한 권한을 부여했으니, 서비스로 DynamoDB를 설정합니다.
테스트 할 작업은 전체로 지정하겠습니다. [Select All] 버튼으로 모든 작업을 선택해줍니다.
그리고 [Run Simulation]을 선택하면, 각 작업별 테스트 결과를 볼 수 있습니다.
모든 권한을 부여해 전부 allowed로 나오는 것을 확인할 수 있습니다 ✌️
정책(Policy) 생성하기
이미 구현되어있는 많은 정책이 있지만, 커스텀 정책을 만들수도 있는데요.
간단히 DynamoDB에 대한 ReadOnly 정책을 추가해 봅시다.
대시보드 메뉴에서 정책페이지로 들어온 뒤 [정책 생성] 버튼을 선택합니다.
JSON을 이용해 생성하는게 전통적인 방법이지만, 시각적 편집기를 이용해 쉽게 만들수 있습니다. (초보자들에게 추천! ✌️)
서비스에서 DynamoDB를 검색 후 선택합니다.
작업 토글에서 모든 읽기 작업을 선택합니다.
리소스는 모두로 지정할게요.
정책 이름을 짓고 정책 생성 버튼을 누릅니다.
이제 정책 페이지에서 검색으로 추가된 정책을 확인할 수 있습니다.
정책이 잘 설정되었는지 시뮬레이터로 확인해보겠습니다.
위에서 설정한 test-group의 정책을 새로추가한 정책으로 변경합니다!
다시 정책 시뮬레이터로 접속합니다.
동일한 설정으로 테스트 시 이번에는 읽기에 관련된 권한 허용되고 나머지는 denied가 나타는 것을 확인할 수 있습니다 ☺️
감사합니다.
공부한 내용을 복습/기록하기 위해 작성한 글이므로 내용에 오류가 있을 수 있습니다.
'AWS | Linux' 카테고리의 다른 글
[AWS] ELB와 Route53 (0) | 2024.09.22 |
---|---|
[AWS] EC2와 EBS (2) | 2024.09.17 |
VScode로 우분투 가상머신 SSH 원격 접속하기 (6) | 2023.07.09 |
[Wordpress] 워드프레스 사이트 이전 (feat. LAMP, Duplicator) (0) | 2022.10.11 |
[Linux] apt란 (feat.리눅스 배포판) (0) | 2022.02.03 |