본문 바로가기
코딩 공부/Cloud

[AWS] IAM

by 현장 2024. 2. 3.

https://k21academy.com/amazon-web-services/aws-solutions-architect/aws-identity-and-access-management-iam/

IAM(Identity and Access Management)

AWS의 리소스에 대한 개별적으로 접근제어와 권한을 가지도록 계정 또는 그룹을 생성, 관리하는 서비스입니다. 어떤 IAM 계정은 EC2 서비스만 접근할 수 있도록 권한을 부여하고, 다른 IAM 계정은 S3 서비스만 접근할 수 있도록 권한을 나눌 수 있습니다. 초기 AWS 계정 생성시 해당 계정의 모든 AWS 서비스 및 리소스에 완전한 엑세스 권한이 있는 하나의 ID, 즉 AWS 계정 루트 사용자로 시작합니다. 일상적인 작업, 관리 작업조차도 이 루트 사용자 계정으로 사용하지 않는 것을 권장하고 있습니다.

🏷️ 작동방식

1. 보안주체(Principal)

AWS 리소스에 대한 작업을 요청할 수 있는 사용자 또는 워크로드입니다. 인증 후 보안 주체는 보안 주체 유형에 따라 AWS에 요청할 수 있는 영구 또는 임시 보안 인증을 부여받을 수 있습니다. IAM 사용자 및 루트 사용자에게는 영구 보안 인증이 부여되고 역할에는 임시 보안 인증이 부여됩니다. 

2. 요청(Request)

보안 주체가 AWS Management Console, AWS API 또는 AWS CLI를 사용하려고 시도하면 해당 보안 주체가 요청을 AWS에 전송합니다. 이 요청에는 다음 정보가 포함되어 있습니다.

작업 또는 작동: 보안 주체가 수행하고자 하는 작업 또는 작동입니다. AWS CLI 또는 AWS API를 사용하여 AWS Management Console 또는 작동의 작업을 수행할 수 있습니다.

리소스: 수행된 작업 또는 작동에 따른 AWS 리소스 객체입니다.
보안 주체 – 엔터티(사용자 또는 역할)를 사용하여 요청을 보내는 사람 또는 애플리케이션입니다. 보안 주체에 대한 정보에는 보안 주체가 로그인하는 데 사용된 엔터티와 관련된 정책이 포함됩니다.

환경 데이터: IP 주소, 사용자 에이전트, SSL 사용 상태 또는 시간대와 같은 정보입니다.

리소스 데이터: 요청되는 리소스와 관련된 데이터. 여기에는 DynamoDB 테이블 이름 또는 Amazon EC2 인스턴스 태그와 같은 정보가 포함될 수 있습니다.

3. 인증(Authentication)

보안 주체는 AWS에게 요청을 보내려면 자격 증명을 사용하여 인증(AWS에 로그인)을 받아야 합니다. Amazon S3 및 AWS STS 등의 일부 서비스는 익명 사용자의 몇 가지 요청을 허용합니다.

4. 인가(Authorization)

AWS는 권한 부여 동안 요청 콘텍스트의 값을 사용하여 요청을 허용할지 거부할지 여부에 적용되는 정책을 점검합니다. 그런 다음 이것은 정책을 사용하여 요청을 허용하거나 거부할지 여부를 결정합니다. 즉, 보안 주체가 AWS로 요청을 보냈어도 요청을 완료할 수 있는 권한이 없다면 실패합니다. 대부분의 정책은 AWS에 JSON 문서로 저장되며 보안 주체 엔터티에 대한 권한을 지정합니다. 

5. 작업, 연산(Action, Operation)

요청이 인증 및 권한 부여된 후 AWS가 요청의 작업 또는 작동을 승인합니다. 작업은 서비스로 정의되며 리소스 보기, 생성, 편집 및 삭제와 같이 리소스에 대해 수행할 수 있는 사항입니다. 예를 들어, IAM은 사용자 리소스에 대해 다음 작업을 비롯하여 약 40개의 작업을 수행할 수 있도록 지원합니다.

  • CreateUser
  • DeleteUser
  • GetUser
  • UpdateUser

또한 보안 주체가 작업을 수행할 수 있도록 허용하려면 보안 주체 또는 영향을 받은 리소스에 적용되는 필요한 작업을 정책에 포함해야 합니다. 

6. 리소스(Resource)

AWS가 요청의 작업을 승인하면 계정 내의 관련 리소스에서 해당 작업을 수행할 수 있습니다. 리소스는 서비스 내에 존재하는 객체입니다. 예를 들어 Amazon EC2 인스턴스, IAM 사용자 및 Amazon S3 버킷이 있습니다. 서비스는 각 리소스에서 수행할 수 있는 일련의 작업을 정의합니다. 리소스에서 관련되지 않은 작업을 수행하도록 요청을 생성하면 해당 요청이 거부됩니다.

📖 Reference

AWS

'코딩 공부 > Cloud' 카테고리의 다른 글

[AWS] S3(Simple Storage Service)  (0) 2024.04.19
[AWS] RDS(Relational Database Service)  (0) 2024.04.19
[AWS] EC2  (0) 2024.02.04
[AWS] AWS(Amazon Web Serivces)  (1) 2024.01.28
[Cloud] Cloud와 Cloud Computing  (1) 2024.01.21