AWS란???
AWS(Amazon Web Services)는 Amazon에서 제공하는 클라우드 컴퓨팅 서비스 플랫폼이다. 다양한 IT 인프라와 애플리케이션 서비스를 인터넷을 통해 제공하며, 기업과 개발자가 물리적인 서버를 구매하거나 유지할 필요 없이 필요한 리소스를 유연하게 사용할 수 있도록 돕는다.
AWS의 주요 특징
- 클라우드 컴퓨팅 서비스:
- 데이터를 저장하거나 애플리케이션을 실행하기 위한 서버, 스토리지, 네트워크 등을 인터넷을 통해 제공.
- 유연한 사용:
- 사용한 만큼만 비용을 지불하는 종량제(pay-as-you-go) 방식.
- 글로벌 인프라:
- 전 세계 여러 리전(region)과 가용 영역(availability zone, AZ)에 데이터 센터를 운영하여, 높은 가용성과 낮은 지연시간을 제공.
- 다양한 서비스:
- 컴퓨팅: EC2, Lambda
- 스토리지: S3, EBS, Glacier
- 데이터베이스: RDS, DynamoDB, Redshift
- 네트워킹: VPC, CloudFront
- AI/ML: SageMaker
- IoT, DevOps, 보안, 관리 도구 등 다양한 서비스를 제공.
- 스케일링 및 확장성:
- 서비스나 애플리케이션의 요구 사항에 따라 리소스를 동적으로 확장하거나 축소 가능.
AWS의 주요 서비스
- 컴퓨팅:
- EC2 (Elastic Compute Cloud): 가상 서버 제공.
- Lambda: 서버리스 컴퓨팅 서비스로, 코드를 실행하는 데만 집중할 수 있음.
- 스토리지:
- S3 (Simple Storage Service): 객체 스토리지 서비스로, 데이터를 안전하게 저장 및 관리.
- EBS (Elastic Block Store): 블록 스토리지로, EC2와 함께 사용.
- 데이터베이스:
- RDS (Relational Database Service): 관계형 데이터베이스 서비스.
- DynamoDB: NoSQL 데이터베이스.
- 네트워킹 및 콘텐츠 전송:
- VPC (Virtual Private Cloud): 가상 네트워크 환경 제공.
- CloudFront: CDN(Content Delivery Network) 서비스로 콘텐츠를 빠르게 전달.
- 보안:
- IAM (Identity and Access Management): 사용자 권한 관리.
- AWS Shield: DDoS 공격 방어 서비스.
AWS를 사용하는 이유
- 비용 효율성:
- 초기 하드웨어 투자 비용을 절감하고, 필요한 만큼만 사용 가능.
- 확장성:
- 서비스의 트래픽이 증가하거나 감소할 때 리소스를 동적으로 조정.
- 글로벌 서비스 제공:
- 전 세계 여러 리전과 데이터 센터를 통해 사용자에게 빠르고 안정적인 서비스 제공.
- 안정성과 보안:
- 다양한 서비스 통합:
- 클라우드에서 애플리케이션을 개발, 배포, 운영하는 데 필요한 모든 도구 제공.
주요 서비스 중 IAM이란 뭘까?
IAM(Identity and Access Management)으로 권한을 설정하고 연결하는 이유는 AWS 리소스를 안전하고 효율적으로 관리하기 위해서이다. AWS에서는 리소스에 대한 잘못된 접근을 방지하고, 필요한 사용자와 서비스만이 올바른 작업을 수행할 수 있도록 엄격하게 권한을 관리해야 한다.
IAM으로 권한을 설정하는 이유
- 보안 강화:
- AWS 리소스는 기본적으로 모든 접근이 차단된 상태.
- IAM을 사용하여 필요한 사용자 또는 서비스에 최소 권한(Least Privilege)만 부여함으로써 보안을 강화할 수 있다.
- 예: S3 버킷에 읽기/쓰기 권한을 특정 사용자나 애플리케이션에만 부여.
- 세분화된 권한 관리:
- IAM을 통해 리소스별로 세부적인 권한을 설정 가능.
- 예: EC2 인스턴스는 DynamoDB에만 접근하도록 설정하고, S3에는 접근하지 못하게 할 수 있음.
- 역할 기반 액세스(Role-based Access Control, RBAC):
- 사용자가 아닌 애플리케이션, 서비스, 또는 리소스에 역할(Role)을 부여하여 안전하게 권한을 관리.
- 예: Lambda 함수가 S3 버킷에 파일을 읽거나 쓰는 역할을 가질 수 있음.
- 안전한 서비스 간 통신:
- AWS 서비스들 간의 안전한 연결을 보장.
- 예: EC2 인스턴스가 특정 IAM 역할을 통해 S3에 접근할 수 있도록 설정.
- 컴플라이언스 준수:
- 금융, 의료 등 산업에서는 데이터 보호와 규정 준수가 중요.
- IAM은 세부적인 로그 기록(AWS CloudTrail)과 규칙 기반 액세스를 통해 컴플라이언스를 준수하도록 도움.
IAM에서 자주 사용하는 개념
- 사용자(User):
- AWS 리소스에 접근하는 개별 사용자.
- 예: 특정 직원이 EC2를 실행할 수 있도록 IAM 사용자를 생성.
- 그룹(Group):
- 여러 사용자를 묶어 공통된 권한을 부여.
- 예: "개발자" 그룹에는 RDS 및 S3 권한 부여.
- 역할(Role):
- AWS 서비스 또는 애플리케이션에 권한을 부여.
- 예: Lambda 함수가 S3 또는 DynamoDB에 접근하도록 역할(Role)을 부여.
- 정책(Policy):
- JSON 형식으로 권한을 정의하는 문서.
- 예: 특정 S3 버킷에 읽기 전용 액세스를 허용하는 정책을 작성.
- 정체성(Principal):
- AWS 리소스에 접근하려는 주체(사용자, 역할, 서비스 등).
- 정책 유형:
- Managed Policy: AWS에서 미리 정의한 정책.
- Inline Policy: 특정 사용자/그룹/역할에 직접 작성한 정책.
IAM 사용 예시
1. EC2가 S3 버킷에 접근하는 경우
- EC2가 S3 버킷에 접근하려면 다음 단계가 필요:
- IAM 역할(Role) 생성:
- EC2에 역할(Role) 연결:
- EC2가 이 역할을 사용하여 S3에 접근하도록 설정.
- S3 버킷 정책 설정:
- S3 버킷에서 해당 역할(Role)만 접근 가능하도록 제한.
2. 개발자가 RDS 데이터베이스를 관리하는 경우
- 개발자가 RDS 관리 권한을 얻으려면:
- "관리자" IAM 사용자 생성.
- "관리자" 사용자에 RDS 관리 권한을 부여하는 정책 연결.
- 정책에 따라 사용자에게 RDS 관리 작업 권한 제공.
IAM으로 권한을 설정하지 않으면 발생할 문제
- 보안 취약점:
- 모든 리소스에 접근 가능하면 데이터 유출, 서비스 중단 등의 문제가 발생할 수 있음.
- 예: 권한이 없는 Lambda 함수가 S3 데이터를 삭제.
- 리소스 오작동:
- 적절한 권한이 없는 경우 서비스 간 통신이 실패.
- 예: EC2가 DynamoDB에 데이터를 쓰지 못함.
- 컴플라이언스 위반:
- 특정 사용자나 서비스에 불필요한 권한을 부여하면 규정을 위반할 가능성이 높아짐.
IAM은 AWS 리소스 접근 제어의 핵심 도구이며, 잘 설계된 권한 구조는 보안과 효율성을 모두 보장합니다. 최소 권한 원칙을 항상 기억하며 IAM을 사용하는 것이 중요합니다! 😊