본문 바로가기

내용 복습/devOps

[AWS] EC2 개요

1. AWS 클라우드란

AWS는 Amazon Web Services의 약어로, 아마존닷컴이 제공하는 클라우드 컴퓨팅 플랫폼입니다. AWS는 전 세계에 분산되어 있는 데이터 센터에서 고객에게 IT 인프라를 제공하며, 이를 사용하여 고객은 필요한 인프라를 빠르고 쉽게 설정하고 관리할 수 있습니다. 주요서비스는 EC2(컴퓨팅), RDS(데이터베이스), 스토리지(S3), 네트워킹(VPC), 보안(IAM) 등이 있다. 과제를 위해 EC2 배포를 기계적으로 해 오면서 개괄적인 정리가 필요하다고 느끼던 참이라 이번 기회에 AWS의 기능들을 하나하나 알아가보려고 한다.

 

Onpremise는 서버가 조직 내부에 설치되고 유지보수 되는 것. 조직의 물리적인 위치에 있으며 조직의 IT 인프라를 관리하는 팀이 해당서버를 관리, 유지보수한다. 일반적으로 중요 데이터나 애플리케이션을 호스팅하고 보호하기 위해 사용된다. 이에 대조적인 개념이 클라우드 서비스이다. 인터넷을 통해 엑세스할 수 있는 외부 데이터 센터에서 호스팅되며, 자체 IT인프라를 보유하지 않아도 클라우드 제공 업체가 서버를 관리하고 유지보수한다.

 

AWS 리전(Region)은 세계 각지에 있는 AWS 데이터 센터의 물리적인 위치를 의미한다. 각 리전은 여러 가용 영역( Availability Zone, AZ)으로 구성되며, 각 가용영역은 독립적인 데이터센터로 존재하고 네트워크를 통해 연결된다. 여러개의 AZ를 사용함으로써 특정 데이터센터가 재해상황에 빠져도 서비스를 유지할 수 있는 고가용성을 확보할 수 있다. 고가용성(High Availability)은 시스템이 예기치 않은 장애 또는 중단에도 불구하고 지속적으로 작동하는 능력을 말합니다.

 

- AWS 서비스 정리

  • Identify Access Management : 계정 관리(root - IAM 계정으로 나누어 보안 관리)
  • Elastic Cloud Compute: 클라우드 위의 서버
  • Elastic Load Balancer : 트래픽 관리
  • Relational Database Service : 클라우드 위의 DB
  • Route 53 : 도메인(주소) 관리
  • Virtual Private Cloud : 클라우드 위의 나만의 네트워크
  • Simple Storage Service : 클라우드 위의 데이터 저장소
  • Cloudfront : 세계 각지에 캐시 서비스
  • Elastic Beanstalk : 많은 서비스들을 하나로

2. Identify Access Management(IAM)이란

AWS 리소스에 대한 엑세스를 안전하게 제어할 수 있는 웹 서비스. IAM을 사용하면 AWS에서 사용자, 그룹 및 역할을 생성하고 관리하여 리소스에 대한 액세스를 안전하게 제어할 수 있습니다. IAM서비스의 기능은 다음과 같다.

  1. 인증: IAM을 사용하여 사용자가 AWS 리소스에 액세스할 때 사용자 이름과 암호를 요청하여 인증할 수 있습니다.
  2. 권한 부여: IAM을 사용하여 사용자, 그룹 또는 역할에 대한 권한을 지정할 수 있습니다. 권한은 AWS 리소스에서 수행할 수 있는 작업을 나타내며 IAM 정책을 사용하여 지정할 수 있습니다.
  3. 권한 검증: IAM을 사용하여 사용자가 AWS 리소스에 대한 액세스를 요청할 때 요청이 인증된 사용자에게 허용되는지 여부를 결정할 수 있습니다. IAM은 권한 검증을 수행하기 위해 사용자가 AWS 리소스에 대한 액세스를 요청할 때 IAM 정책을 적용합니다.

- IAM의 요소

1. User : AWS 계정에 섹세스하는 개별 인물 또는 서비스. IAM에서는 각 사용자에 대해 별도의 보안자격 증명을 생성할 수 있다. 이를 통해 사용자가 AWS 리소스에 대한 엑세스 권한을 가지며, 이러한 엑세스 권한은 IAM 정책을 사용하여 관리된다.

2. Group : IAM에서 그룹은 하나이상의 사용자를 그룹화하여 이들에게 공통된 권한을 부여하는 데에 사용된다. 예를 들어 S3 버킷에 대한 읽기/쓰기 엑세스를 가진 모든 사용자를 그룹화할 수 있다.

3. Policy : AWS 리소스에 대한 엑세스 권한을 지정하는 데 사용되며, 사용자나 그룹에 연결된다. JSON 형태로 작성되고 허용/거부할 수 있는 작업 및 AWS 리소스에 대한 엑세스 수준을 지정할 수 있다. 필요한 권한만 부여하고 불필요한 권한을 제거하여 보안을 강화하는 최소 권한 원칙이 중요하다.

 

1) Policy Structure 예시

{
  "Version": "policy-version",
  "Statement": [
    {
      "Effect": "allow-or-deny",
      "Action": ["action-name"],
      "Resource": ["resource-arn"],
      "Condition": {
        "condition-operator": {
          "condition-key": "condition-value"
        }
      }
    }
  ]
}

 

  • Version: 정책의 버전을 나타냅니다. 현재는 "2012-10-17" 에서 고정되었습니다.
  • Statement: 정책의 규칙을 나타냅니다. 배열 형태로 여러 개의 규칙을 작성할 수 있습니다.
  • Effect: 규칙의 적용 여부를 나타냅니다. "allow" 또는 "deny" 중 하나를 선택합니다.
  • Action: 규칙이 적용되는 작업의 종류를 나타냅니다. 예를 들어 "s3:ListBucket"과 같은 형식으로 작성합니다.
  • Resource: 규칙이 적용되는 리소스의 ARN (Amazon Resource Name)을 나타냅니다. 예를 들어 "arn:aws:s3:::my-bucket/*"과 같은 형식으로 작성합니다.
  • Condition: 규칙이 적용되는 조건을 나타냅니다. 필수는 아니며, 필요한 경우 추가할 수 있습니다. 다양한 조건 연산자를 사용할 수 있습니다. 예를 들어 "IpAddress" 조건 연산자를 사용하면 특정 IP 주소에서만 작업을 수행할 수 있도록 제한할 수 있습니다.

 

2) MFA(Multi-Factor Authentication)

직역하면 다중인증 방식이라는 의미로 인반적인 사용자 ID와 비밀번호 외에 인증요소를 요구하여 보안을 강화하는 방법이다. 예시로 스마트폰의 google athentication이 있다. 짧은 시간동안 유지되는 인증번호를 입력하여 2단계 인증을 하는 것인데, 사용자의 로그인 정보가 유출되었을 경우에도 보안을 유지할 수 있다. 루트유저에는 반드시 적용할 것