AWS란 뭘까? (feat. IAM)

호이초이·2024년 12월 6일
0
post-thumbnail

AWS란???

AWS(Amazon Web Services)는 Amazon에서 제공하는 클라우드 컴퓨팅 서비스 플랫폼이다. 다양한 IT 인프라와 애플리케이션 서비스를 인터넷을 통해 제공하며, 기업과 개발자가 물리적인 서버를 구매하거나 유지할 필요 없이 필요한 리소스를 유연하게 사용할 수 있도록 돕는다.

AWS의 주요 특징

  1. 클라우드 컴퓨팅 서비스:
    • 데이터를 저장하거나 애플리케이션을 실행하기 위한 서버, 스토리지, 네트워크 등을 인터넷을 통해 제공.
  2. 유연한 사용:
    • 사용한 만큼만 비용을 지불하는 종량제(pay-as-you-go) 방식.
  3. 글로벌 인프라:
    • 전 세계 여러 리전(region)과 가용 영역(availability zone, AZ)에 데이터 센터를 운영하여, 높은 가용성과 낮은 지연시간을 제공.
  4. 다양한 서비스:
    • 컴퓨팅: EC2, Lambda
    • 스토리지: S3, EBS, Glacier
    • 데이터베이스: RDS, DynamoDB, Redshift
    • 네트워킹: VPC, CloudFront
    • AI/ML: SageMaker
    • IoT, DevOps, 보안, 관리 도구 등 다양한 서비스를 제공.
  5. 스케일링 및 확장성:
    • 서비스나 애플리케이션의 요구 사항에 따라 리소스를 동적으로 확장하거나 축소 가능.

AWS의 주요 서비스

  1. 컴퓨팅:
    • EC2 (Elastic Compute Cloud): 가상 서버 제공.
    • Lambda: 서버리스 컴퓨팅 서비스로, 코드를 실행하는 데만 집중할 수 있음.
  2. 스토리지:
    • S3 (Simple Storage Service): 객체 스토리지 서비스로, 데이터를 안전하게 저장 및 관리.
    • EBS (Elastic Block Store): 블록 스토리지로, EC2와 함께 사용.
  3. 데이터베이스:
    • RDS (Relational Database Service): 관계형 데이터베이스 서비스.
    • DynamoDB: NoSQL 데이터베이스.
  4. 네트워킹 및 콘텐츠 전송:
    • VPC (Virtual Private Cloud): 가상 네트워크 환경 제공.
    • CloudFront: CDN(Content Delivery Network) 서비스로 콘텐츠를 빠르게 전달.
  5. 보안:
    • IAM (Identity and Access Management): 사용자 권한 관리.
    • AWS Shield: DDoS 공격 방어 서비스.

AWS를 사용하는 이유

  1. 비용 효율성:
    • 초기 하드웨어 투자 비용을 절감하고, 필요한 만큼만 사용 가능.
  2. 확장성:
    • 서비스의 트래픽이 증가하거나 감소할 때 리소스를 동적으로 조정.
  3. 글로벌 서비스 제공:
    • 전 세계 여러 리전과 데이터 센터를 통해 사용자에게 빠르고 안정적인 서비스 제공.
  4. 안정성과 보안:
    • 물리적/네트워크 보안과 데이터 암호화 제공.
  5. 다양한 서비스 통합:
    • 클라우드에서 애플리케이션을 개발, 배포, 운영하는 데 필요한 모든 도구 제공.

주요 서비스 중 IAM이란 뭘까?

IAM(Identity and Access Management)으로 권한을 설정하고 연결하는 이유는 AWS 리소스를 안전하고 효율적으로 관리하기 위해서이다. AWS에서는 리소스에 대한 잘못된 접근을 방지하고, 필요한 사용자와 서비스만이 올바른 작업을 수행할 수 있도록 엄격하게 권한을 관리해야 한다.


IAM으로 권한을 설정하는 이유

  1. 보안 강화:
    • AWS 리소스는 기본적으로 모든 접근이 차단된 상태.
    • IAM을 사용하여 필요한 사용자 또는 서비스최소 권한(Least Privilege)만 부여함으로써 보안을 강화할 수 있다.
    • 예: S3 버킷에 읽기/쓰기 권한을 특정 사용자나 애플리케이션에만 부여.
  2. 세분화된 권한 관리:
    • IAM을 통해 리소스별로 세부적인 권한을 설정 가능.
    • 예: EC2 인스턴스는 DynamoDB에만 접근하도록 설정하고, S3에는 접근하지 못하게 할 수 있음.
  3. 역할 기반 액세스(Role-based Access Control, RBAC):
    • 사용자가 아닌 애플리케이션, 서비스, 또는 리소스에 역할(Role)을 부여하여 안전하게 권한을 관리.
    • 예: Lambda 함수가 S3 버킷에 파일을 읽거나 쓰는 역할을 가질 수 있음.
  4. 안전한 서비스 간 통신:
    • AWS 서비스들 간의 안전한 연결을 보장.
    • 예: EC2 인스턴스가 특정 IAM 역할을 통해 S3에 접근할 수 있도록 설정.
  5. 컴플라이언스 준수:
    • 금융, 의료 등 산업에서는 데이터 보호와 규정 준수가 중요.
    • IAM은 세부적인 로그 기록(AWS CloudTrail)과 규칙 기반 액세스를 통해 컴플라이언스를 준수하도록 도움.

IAM에서 자주 사용하는 개념

  1. 사용자(User):
    • AWS 리소스에 접근하는 개별 사용자.
    • 예: 특정 직원이 EC2를 실행할 수 있도록 IAM 사용자를 생성.
  2. 그룹(Group):
    • 여러 사용자를 묶어 공통된 권한을 부여.
    • 예: "개발자" 그룹에는 RDS 및 S3 권한 부여.
  3. 역할(Role):
    • AWS 서비스 또는 애플리케이션에 권한을 부여.
    • 예: Lambda 함수가 S3 또는 DynamoDB에 접근하도록 역할(Role)을 부여.
  4. 정책(Policy):
    • JSON 형식으로 권한을 정의하는 문서.
    • 예: 특정 S3 버킷에 읽기 전용 액세스를 허용하는 정책을 작성.
  5. 정체성(Principal):
    • AWS 리소스에 접근하려는 주체(사용자, 역할, 서비스 등).
  6. 정책 유형:
    • Managed Policy: AWS에서 미리 정의한 정책.
    • Inline Policy: 특정 사용자/그룹/역할에 직접 작성한 정책.

IAM 사용 예시

1. EC2가 S3 버킷에 접근하는 경우

  • EC2가 S3 버킷에 접근하려면 다음 단계가 필요:
    1. IAM 역할(Role) 생성:
      • EC2에 S3에 대한 읽기/쓰기 권한 부여.
    2. EC2에 역할(Role) 연결:
      • EC2가 이 역할을 사용하여 S3에 접근하도록 설정.
    3. S3 버킷 정책 설정:
      • S3 버킷에서 해당 역할(Role)만 접근 가능하도록 제한.

2. 개발자가 RDS 데이터베이스를 관리하는 경우

  • 개발자가 RDS 관리 권한을 얻으려면:
    1. "관리자" IAM 사용자 생성.
    2. "관리자" 사용자에 RDS 관리 권한을 부여하는 정책 연결.
    3. 정책에 따라 사용자에게 RDS 관리 작업 권한 제공.

IAM으로 권한을 설정하지 않으면 발생할 문제

  1. 보안 취약점:
    • 모든 리소스에 접근 가능하면 데이터 유출, 서비스 중단 등의 문제가 발생할 수 있음.
    • 예: 권한이 없는 Lambda 함수가 S3 데이터를 삭제.
  2. 리소스 오작동:
    • 적절한 권한이 없는 경우 서비스 간 통신이 실패.
    • 예: EC2가 DynamoDB에 데이터를 쓰지 못함.
  3. 컴플라이언스 위반:
    • 특정 사용자나 서비스에 불필요한 권한을 부여하면 규정을 위반할 가능성이 높아짐.

IAM은 AWS 리소스 접근 제어의 핵심 도구이며, 잘 설계된 권한 구조는 보안과 효율성을 모두 보장합니다. 최소 권한 원칙을 항상 기억하며 IAM을 사용하는 것이 중요합니다! 😊

profile
칼을 뽑았으면 무라도 썰자! (근데 아직 칼 안뽑음)

0개의 댓글