230801 AWS, EC2

나윤빈·2023년 8월 2일
0

TIL

목록 보기
28/55

📌 AWS 클라우드

1. AWS란?

  • AWS는 Amazon Web Services의 약어로, 아마존닷컴이 제공하는 클라우드 컴퓨팅 플랫폼이다. AWS는 전 세계에 분산되어 있는 데이터 센터에서 고객에게 IT 인프라를 제공하며, 이를 사용하여 고객은 필요한 인프라를 빠르고 쉽게 설정하고 관리할 수 있다.

2. AWS의 주요 서비스

  • 컴퓨팅: EC2 (Elastic Compute Cloud), Elastic Beanstalk 등
  • 데이터베이스: RDS (Relational Database Service) 등
  • 스토리지: S3 (Simple Storage Service), EBS (Elastic Block Store)등
  • 네트워킹: VPC (Virtual Private Cloud), CloudFront, Route 53 등
  • 보안: IAM (Identity and Access Management) 등

3. Onpremise란?

  • On-premise 서버는 조직 내부에 설치되고 유지보수되는 서버이다. 즉, 서버가 조직의 물리적인 위치에 있으며 조직의 IT 인프라를 관리하는 팀이 해당 서버를 관리하고 유지보수한다. 이러한 서버는 일반적으로 조직의 중요한 데이터나 애플리케이션을 호스팅하고 보호하기 위해 사용된다.

  • On-premise 서버는 클라우드 서비스와 대조적이다. 클라우드 서비스는 일반적으로 인터넷을 통해 액세스할 수 있는 외부 데이터 센터에서 호스팅된다. 클라우드 서비스를 사용하면 조직은 자체 IT 인프라를 보유하지 않아도 된다. 대신 클라우드 제공 업체가 서버를 관리하고 유지보수한다.

4. Region and Availability Zone

  • AWS 리전(Region)은 세계 각지에 있는 AWS 데이터 센터의 물리적인 위치를 의미한다. 각 리전은 여러 개의 가용 영역(Availability Zone, AZ)으로 구성되어 있다. 가용 영역은 독립적인 데이터 센터로 구성되어 있으며, 네트워크 연결로 연결되어 있다.
  • 여러개의 AZ를 씀으로써 데이터센터가 재해상황에 빠졌을때도 서비스를 유지할 수 있는 고가용성을 확보할 수 있다.
  • 고가용성이란? 여러 가용 영역에 애플리케이션 및 인프라를 배포함으로써 자연재해, 정전, 네트워크 장애 또는 기타 유형의 장애로 인해 하나 이상의 가용 영역이 사용 불가능해져도 서비스가 계속해서 이용 가능하도록 보장할 수 있다. 이를 통해 고객에게 높은 서비스 가용성을 유지하고 업무 중단의 영향을 최소화 할 수 있다.

📌 Identity and Access Management

1. IAM이란?

  • AWS Identity and Access Management (IAM)은 AWS 리소스에 대한 액세스를 안전하게 제어할 수 있는 웹 서비스이다. IAM을 사용하면 AWS에서 사용자, 그룹 및 역할을 생성하고 관리하여 리소스에 대한 액세스를 안전하게 제어할 수 있다.
  • IAM은 AWS에서 보안을 강화하고 규정 준수 요구 사항을 충족하는 데 중요한 역할을 한다. IAM을 사용하면 사용자에게 필요한 권한만 부여하여 보안을 유지하고, 일부 규정 준수 규정을 준수하기 위해 일부 사용자에게만 특정 리소스에 대한 액세스를 부여할 수 있다.

2. Users, Groups, Policies

  • 사용자(User): IAM에서 사용자는 AWS 계정에 액세스하는 개별 인물 또는 서비스이다. AWS IAM에서는 계정에 액세스하는 각 사용자에 대해 별도의 보안 자격 증명을 생성할 수 있다. 이를 통해 사용자가 AWS 리소스에 대한 액세스 권한을 가지며, 이러한 액세스 권한은 IAM 정책을 사용하여 관리된다.
  • 그룹(Group): IAM에서 그룹은 하나 이상의 사용자를 그룹화하여 이들에게 공통된 권한을 부여하는 데 사용된다. 예를 들어, 특정 Amazon S3 버킷에 대한 읽기 및 쓰기 액세스를 가진 모든 사용자를 그룹화할 수 있다. 그룹에 대한 권한은 IAM 정책을 사용하여 관리된다. 그룹은 유사한 권한을 가진 여러 사용자를 효과적으로 관리할 수 있도록 도와준다.
  • 정책(Policy): IAM 정책은 AWS 리소스에 대한 액세스 권한을 지정하는 데 사용되며, 사용자 또는 그룹과 연결된다. IAM 정책은 JSON 형식으로 작성되며, 허용 또는 거부할 수 있는 작업 및 AWS 리소스에 대한 액세스 수준을 지정한다. IAM 정책은 일반적으로 최소 권한 원칙을 따른다. 즉, 필요한 권한만 부여하고, 불필요한 권한을 제거하여 보안을 강화한다.

3. 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 주소에서만 작업을 수행할 수 있도록 제한할 수 있다.

4. MFA

  • MFA는 Multi-Factor Authentication의 약어로, 다중 인증 요소 인증 방식을 의미한다. 이 방식은 일반적인 사용자 ID와 비밀번호 입력 외에 추가적인 인증 요소를 요구하여 보안을 강화하는 방법이다.
  • 예를 들어, 일반적인 로그인 절차에서는 사용자가 ID와 비밀번호를 입력하여 인증을 완료한다. 그러나 MFA를 사용하는 경우, 사용자는 일반적인 로그인 정보 외에도 추가적인 인증 요소를 제공해야 한다. 이는 일반적으로 사용자의 소유물인 스마트폰 또는 하드웨어 보안 토큰 등을 사용하여 구현된다.
  • MFA를 사용하면 사용자의 로그인 정보가 유출되었을 경우에도 보안을 유지할 수 있다. 예를 들어, 악의적인 공격자가 사용자의 ID와 비밀번호를 훔쳐서 로그인을 시도해도, MFA를 사용하면 추가적인 인증 요소를 입력하지 않는 한 로그인이 불가능하다. 이를 통해 AWS와 같은 클라우드 서비스에서는 중요한 데이터와 리소스를 안전하게 보호할 수 있다.

📌 Elastic Compute Cloud

1. Billing

  • AWS Billing은 AWS 계정 사용량과 비용을 모니터링하고, 요금 청구 정보를 제공하는 서비스이다. AWS 사용량과 비용을 모니터링하고 분석함으로써, 비즈니스에서 AWS 비용을 최적화할 수 있다.
  • AWS Billing은 사용량 모니터링, 비용 분석, 청구 정보 확인, 예산 설정과 같은 기능을 제공한다.
  • AWS Billing은 AWS Management Console, API 또는 CLI를 통해 사용할 수 있으며, 사용자가 원하는 방식으로 사용할 수 있다. 또한 AWS 계정 설정을 통해 알림 설정을 할 수 있어, 예산 초과나 다른 문제 발생 시 즉시 알림을 받을 수 있다.

2. EC2

  • AWS EC2 (Elastic Compute Cloud)는 클라우드 컴퓨팅 서비스 중 하나로, 가상 서버 인스턴스를 제공한다. EC2를 사용하면 필요한 시간만큼 가상 서버를 생성하고 사용할 수 있으며, 필요에 따라 스케일 업 또는 스케일 다운할 수 있다.

  • 이 환경은 실제로는 하드웨어 리소스를 가상화하여 사용하고 있기 때문에, 하드웨어 상에서 실행 중인 물리적인 서버와는 다르다. 따라서, 이러한 가상화된 컴퓨터 환경을 "인스턴스(instance)" 라고 부른다.

  • 각 인스턴스는 독립적으로 실행되고 관리됩니다. 이러한 인스턴스들은 필요에 따라 생성, 시작, 중지, 종료 등이 가능하다.

  • EC2 인스턴스는 다양한 운영 체제 (예: Linux, Windows)와 인스턴스 유형 (예: 범용, 컴퓨팅 최적화, 메모리 최적화)을 지원한다.

  • EC2는 웹 애플리케이션 호스팅, 데이터베이스 호스팅, 컴퓨팅 작업(예: 데이터 분석, 머신 러닝), 애플리케이션 테스트 및 개발과 같은 다양한 용도로 사용된다.

  • EC2는 유연하게 스케일링할 수 있으며, 필요에 따라 인스턴스를 추가하거나 제거하여 자원 사용량을 조절할 수 있다. 또한 AWS의 다른 서비스와 통합하여 다양한 용도로 사용할 수 있다.

  • EC2의 다양한 옵션들

    1. 인스턴스 유형 (Instance Types): 인스턴스 유형은 서버에 할당되는 CPU, 메모리, 스토리지 및 네트워크 리소스와 같은 기본 성능 특성을 결정한다.
    2. 운영 체제 (Operating System): EC2 인스턴스는 다양한 운영 체제를 지원한다.
    3. 스토리지 옵션 (Storage Options): EC2 인스턴스에는 인스턴스 스토어, Amazon EBS 및 Amazon S3와 같은 다양한 스토리지 옵션이 있다.
    4. 보안 그룹 (Security Groups): 보안 그룹은 인바운드 및 아웃바운드 트래픽을 제어하는 방화벽 규칙이다. 각 보안 그룹은 포트 범위, 프로토콜 및 허용되는 IP 주소 범위를 정의할 수 있다.
    5. 키 페어 (Key Pair): 키 페어는 EC2 인스턴스에 대한 SSH 액세스를 허용한다. 키 페어를 만들면 EC2 인스턴스를 시작할 때 키 페어를 선택할 수 있다.
    6. 탄력적 IP 주소 (Elastic IP Address): 탄력적 IP 주소는 EC2 인스턴스에 고정 IP 주소를 할당한다. 이는 EC2 인스턴스를 중지하거나 시작할 때마다 IP 주소가 변경되는 것을 방지할 수 있다.
    7. 사용 가능한 영역 (Availability Zones): EC2 인스턴스는 여러 가용 영역에서 실행될 수 있다. 이는 장애 대응 및 고가용성을 위해 중요하다.

3. Security Group과 Ports

보안규칙

  • 보안 규칙은 여러 개 만들어 줄 수 있고, 이를 여러 인스턴스에 할당이 가능하다. 또한 하나의 인스턴스에 여러 보안 규칙을 할당할 수 있다.
  • 서버에 접속 했을 때 time out 에러가 난다면 인바운드 규칙에서 firewall이 열려 있지 않을 가능성이 높다. 즉, 보안 규칙 이슈일 가능성이 높다.
  • connection refuse 에러가 난다면 EC2 내부에서 해결을 해야 하는 이슈일 가능성이 높다.
  • 모든 inbound는 디폴트로 막혀있기 때문에 열어줘야 하며, 모든 outbound는 디폴트로 열려 있기 때문에 조치 취하고자 한다면 변경해줘야 한다.

포트

  • 웹사이트에 접속을 할 때 포트 번호에 따라서 접속하는 방식에 차이가 난다. 자유롭게 포트 번호를 가져다 쓸 수 있다.
  • 대표적인 포트 번호는 고정이 되어 자유롭게 쓸 수 없다. 예시는 다음과 같다.
  • 22 = ssh(secure shell)로 인스턴스에 원격 접속
  • 21 = FTP 파일전송 프로토콜
  • 80 = http 웹 접속
  • 443 = https 안전한 http 접속, 현재의 스탠다드

4. SSH 연결

  • chmod는 파일이나 디렉토리의 권한을 변경하는 유닉스 명령어이다. 파일이나 디렉토리는 소유자, 그룹, 그리고 나머지 세 개의 사용자 카테고리를 갖는다. 각 카테고리에 대해 읽기(read), 쓰기(write), 실행(execute)의 권한을 설정할 수 있다.
  • 첫 번째 숫자는 소유자를, 두 번째 숫자는 그룹을, 세 번째 숫자는 나머지 유저를 의미하고, 숫자 4는 읽기(read) 권한을, 2는 쓰기(write) 권한을, 1은 실행(execute) 권한을 의미한다.
  • chmod 400은 파일 권한 설정 중 하나이다. 이 권한을 설정하면 해당 파일에 대해 읽기 권한만 부여된다. 숫자 400은 소유자에 대한 읽기 권한을 의미한다. 이 권한은 일반적으로 중요한 정보를 포함하는 파일이나 개인 키 파일과 같은 보안 파일에 적용된다.

5. EBS와 EBS snapshot

EBS

  • Amazon Elastic Block Store (EBS)는 Amazon EC2 인스턴스에 연결할 수 있는 블록 수준 스토리지 볼륨이다.
  • EBS 볼륨은 네트워크를 통해 Amazon EC2 인스턴스에 연결되므로 데이터 지속성, 스냅샷 백업 및 다른 인스턴스에서 쉽게 사용할 수 있다.
  • EBS 볼륨은 데이터의 지속성을 보장하기 위해 AWS 내에서 복제 및 백업되므로 안정적이고 내결함성이 높은 스토리지 옵션이다.
  • 인스턴스를 terminate 한 후에도 데이터를 유지할 수 있다.
  • 하나의 AZ에 한정된다.
  • 인스턴스의 usb 메모리라고 생각할 수 있다.
  • 하나의 인스턴스에서 떼어서 다른 인스턴스에 꽂을 수 있다.
  • 하나의 EBS는 하나의 인스턴스에만 연결될 수 있지만 하나의 인스턴스에는 여러개의 EBS가 연결될 수 있다.

EBS snapshot

  • EBS(Elastic Block Store) 스냅샷(Snapshot)은 EBS 볼륨의 데이터를 백업하는 데 사용되는 Amazon Web Services(AWS)의 기능이다.
  • 스냅샷은 EBS 볼륨의 데이터를 인스턴스 내에서 복제하고, 이를 S3에 저장한다. 또한, EBS 볼륨의 모든 데이터를 포함하므로, 데이터를 백업하고 나중에 이전 상태로 복원할 수 있다.
  • EBS 스냅샷은 다음과 같은 몇 가지 용도로 사용될 수 있다.
  • 데이터 백업 및 복원: 스냅샷을 사용하면 EBS 볼륨의 데이터를 백업하고 나중에 이전 상태로 복원할 수 있다.
  • 볼륨 확장: 스냅샷을 사용하여 EBS 볼륨의 크기를 확장할 수 있다. 스냅샷에서 새로운 볼륨을 생성하고, 기존 볼륨에서 새로 생성한 볼륨으로 데이터를 복사할 수 있다.
  • 데이터 마이그레이션: 스냅샷을 사용하여 EBS 볼륨의 데이터를 다른 지역으로 이동할 수 있다.
  • 스냅샷은 필요에 따라 자동으로 스케줄링할 수 있으며, 각 스냅샷은 다른 스냅샷과 차이점만 저장된다. 따라서 이전 스냅샷에 비해 적은 양의 스토리지 공간이 필요하다.
  • 스냅샷은 EBS 볼륨의 상태를 복원할 때 사용되며, 이전 상태로 데이터를 복원하면 해당 스냅샷을 기반으로 새로운 EBS 볼륨이 생성된다.

6. AMI

  • Amazon Machine Image (AMI)는 EC2 인스턴스를 생성할 때 사용되며 운영 체제와 애플리케이션, 라이브러리 등이 포함되어 있다.
  • 이러한 이미지를 사용하면 개발자는 이미 구성된 환경을 더 쉽게 설정할 수 있다.
  • AMI는 Amazon에서 제공하는 것뿐만 아니라 개발자가 직접 생성할 수도 있다.
  • 개발자는 자신이 구성한 인스턴스를 이미지로 만들어서 사용할 수 있으며, 이를 다른 사람과 공유할 수도 있다.

7. EBS와 AMI의 차이

  • Amazon Elastic Block Store (EBS)와 Amazon Machine Image (AMI)는 Amazon Web Services (AWS)에서 사용되는 서비스이다.
  • Amazon EBS는 EC2 인스턴스에서 사용되는 스토리지 볼륨이다. 이 볼륨은 인스턴스에 연결되어 인스턴스에 데이터를 저장하고 보존하는 데 사용된다. EBS는 인스턴스를 종료해도 볼륨에 저장된 데이터를 보존한다.
  • 반면, Amazon Machine Image (AMI)는 EC2 인스턴스를 시작할 때 사용되는 이미지이다. AMI는 이미 설치된 운영 체제와 애플리케이션을 포함하여 인스턴스를 구성하는 데 필요한 모든 정보를 포함한다. 이를 통해 AMI를 사용하여 손쉽게 EC2 인스턴스를 시작하고, 중지하고, 삭제하고, 복제하고, 복원할 수 있다.
  • AMI는 EBS 스냅샷을 사용하여 생성될 수 있다. EBS 스냅샷은 EBS 볼륨의 이미지이다. AMI를 생성할 때 EBS 스냅샷을 사용하면 인스턴스를 시작할 때 EBS 볼륨이 생성되고, 해당 볼륨에는 이전 인스턴스와 동일한 데이터가 저장된다.
  • 따라서 AMI는 EC2 인스턴스를 시작할 때 사용하는 이미지이며, EBS는 인스턴스에 연결되어 데이터를 저장하고 보존하는 데 사용되는 스토리지 볼륨이다. AMI를 생성하는 데 EBS 스냅샷을 사용할 수 있습니다.
profile
프론트엔드 개발자를 꿈꾸는

0개의 댓글