IAM은 무엇이고 어떻게 사용할까?
IAM (Identity and Access Management)
--
IAM은
보안 관리 서비스로
사용자와 그룹에 대한 접근 권한을 제어하고 관리하는 역할을 한다.
이를 통해 AWS 리소스에 대한 접근을 세밀하게 제어할 수 있으며, 클라우드 환경의 보안을 강화할 수 있다.
주요 기능
- 사용자 관리 :
개별 사용자 계정을 생성 후 관리가 가능하다.
각 사용자에게는 고유한 자격(사용자 이름, 비밀번호, 엑세스 키 등)이 부여된다. - 그룹 관리 :
여러 사용자를 그룹으로 묶어 그룹 단위로 권한을 부여할 수 있다.
이를 통해 동일한 권한이 여러 사용자에게 일관된 방식으로 권한을 부여하고 관리할 수 있다. - 정책 관리 :
IAM 정책은 AWS 리소스에 대한 접근 권한을 정의하는 문서로
해당 정책은 JSON 형식으로 작성하며, 특정 사용자나 그룹이 어떤 리소스에 어떤 작업을 수행할 수 있는지를 매우 세밀하게 정의할 수 있다.
--
S3에 필요한 IAM (엑세스 키 발급)
--
기본적으로 AWS의 리소스에 아무나 접근을 못하도록 막아놔서
S3에 접근하여 파일을 업로드할 수 없다.
S3 버킷을 생성할 때
정책을 통해 파일을 다운받은 것에만 권한을 허용하거나 설정은 가능하다.
다만 백엔드 서버에서 직접 S3에 접근하여 파일을 업로드할 수가 없다.
S3에 접근할 수 있는 권한을 받기 위해서는 IAM에서 액세스 키를 발급받아 권한을 부여받아야 한다.
--
IAM 사용자 생성 버튼 위치
--
IAM -> 사용자 -> 사용자 생성 버튼
--
[IAM에서 사용자 생성 과정] 사용자 세부 정보
--
사용자 이름은
해당 권한에 해당할 사용자 이름을 작성하는 파트로
권한에 대해 구분하기 위해 작성하면 된다.
(원하는 이름 아무거나 작성 가능)
AWS Management Console에 대한 액세스 권한 제공은
해당 사용자가 웹 기반의 AWS Management Console에 로그인하여
AWS 리소스를 관리할 수 있는 권한을 부여하는 설정이다.
해당 설정을 체크하면
콘솔 로그인 자격 증명을 생성하여
AWS Management Console에 로그인하기 위한 자격 증명(사용자 이름, 암호)을 갖게 되고
이를 통해 AWS 로그인 후 AWS 리소스에 접근할 수 있다.
간단하게
AWS 웹사이트에서 로그인할 아이디와 비밀번호가 생성되며
해당 아이디로 로그인한 사용자는 부여된 권한에 따라 AWS 웹 콘솔에서 할 수 있는 작업이 제한된다.
지금 상황에서는 해당 기능은 필요없으므로 체크하지 않고 사용자 이름만 작성했다.
--
[IAM에서 사용자 생성 과정] 권한 설정
--
권한 옵션
- 그룹에 사용자 추가 : 이미 생성된 그룹에 해당 사용자를 추가하여 해당 그룹 권한을 자동으로 할당받게 된다.
- 권한 복사 : 다른 사용자의 권한을 복사하여 할당받는다.
- 직접 정책 연결 : 직접 권한을 선택하여 할당받는다.
지금 상황에서는 "직접 정책 연결"을 하여 원하는 권한을 골라서 할당받아야 한다.
(처음 만드는 사용자 = 존재하는 그룹이 없음, 복사할 기존 사용자가 없음)
직접 정책 연결은
AWS에서 이미 만들어 놓은 권한들 중에서
원하는 권한을 선택하는 것이다.
AmazonS3FullAccess(S3에 접근할 수 있는 모든 기능에 대한 권한)정책을 찾아 선택(할당)한다.
--
사용자 생성 완료
--
아직 "액세스 키 ID"를 발급받지 않은 상태이다.
액세스 키를 발급 받지 않았을 경우
해당 사용자는 AWS Management Console에만 접근이 가능하다.
즉, 웹 브라우저를 통해 AWS에 로그인하여 권한에 따라 시각적으로 리소스를 관리하거나 설정을 변경할 수 있다.
액세스 키를 발급받은 경우
해당 액세스 키를 사용하여 프로그래밍 적으로도 접근이 가능해진다.
AWS CLI, SDK, API 등을 사용하여 AWS 리소스와 상호작용할 수 있다.
현재 목표는 백엔드 서버 내에서 S3에 접근하여 이미지를 업로드할 수 있는 것이 목표기 때문에
백엔드 서버의 코드에서 S3에 접근하려면 해당 권한을 가진 사용자의 액세스 키가 필요하다.
--
액세스 키 발급 버튼 위치
--
IAM -> 사용자 -> 사용자 이름(testtest) -> 보안 자격 증명 -> 액세스 키 만들기 버튼
--
[IAM에서 액세스 키 발급받는 과정] 액세스 키 모범 사례 및 대안
--
발급받으려는 액세스 키의 사용처를 선택하는 파트다.
- Command Line Interface(CLI) :
AWS CLI를 통해 AWS 리소스에 접근 및 관리 - 로컬 코드 :
개발자의 로컬 머신(컴퓨터)에서 실행되는 코드에서 AWS 리소스 접근 - AWS 컴퓨팅 서비스에서 실행되는 애플리케이션 :
EC2, Lambda, ECS 등의 AWS 컴퓨팅 서비스에서 다른 AWS 리소스 접근 - 서드 파티 서비스 :
AWS 외부의 서드 파티 서비스(모니터링 도구, 클라우드 관리 플랫폼 등)에서 AWS 리소스 접근 - AWS 외부에서 실행되는 애플리케이션 :
AWS 외부에서 실행되는 애플리케이션에서 AWS 리소스에 접근 - 기타 :
그 외의 시나리오에서 AWS 리소스에 접근
백엔드 서버(AWS 외부)에서 S3에 접근해야 하므로 "AWS 외부에서 실행되는 애플리케이션"을 선택했다.
--
[IAM에서 액세스 키 발급받는 과정] 설명 태그 설정
--
발급받을 액세스 키의 용도를 설명(메모)하는 파트다.
생략이 가능하여 발급받은 키가 많이 없다면 스스로 구분이 가능하니 생략했다.
--
액세스 키 발급 완료
--
발급 받은 액세스 키와 비밀 액세스 키를 가지고 백엔드 서버에 작성 후 이를 통해 S3에 접근이 가능해진다.
발급 받은 비밀 액세스 키는 현재 페이지를 벗어나면 더 이상 확인할 수 없으므로
복사하여 따로 잘 보관해야 한다.
그리고 당연히 개인 정보이므로 유출되면 안 된다.
(위 사진에 모자이크를 하지 않은 이유는 해당 사용자를 삭제할 예정이므로 괜찮다.)
--
참고 및 출처
'AWS' 카테고리의 다른 글
[EC2] 인스턴스 생성 (0) | 2024.09.05 |
---|---|
IP 또는 도메인을 (내도메인.한국)도메인에 연결하기 (0) | 2024.09.05 |
탄력적 IP (Elastic IP) (0) | 2024.09.05 |
대상 그룹 (Target Group) (0) | 2024.09.04 |
보안 그룹 (Security Group) (0) | 2024.09.02 |