2024.07.03 AWS 교육 3일차 (DSC 공유대학) Architecting on AWS

이나형·2024년 7월 3일
0

☀️외부활동

목록 보기
3/6
post-thumbnail

🛜실습1 AWS Identify and Acess Management

목표

  • AWS 관리 콘솔 살펴보기 및 사용
  • AWS 관리 콘솔을 사용하여 리소스 생성
  • AWS CLI 살펴보기 및 사용
  • AWS CLI를 사용하여 리소스 생성

과제1: AWS 관리 콘솔을 사용하여 Amazon S3 버킷 생성


과제 2: S3 콘솔을 사용하여 Amazon S3 버킷에 객체 업로드


과제3 AWS CLI를 사용하여 업로드

  • CLI 명령어 해석:

    • aws s3 ls : 사용자가 소유한 모든 버킷의 목록을 표시

    • aws s3 mb s3://labclibucket-9731 : "labclibucket-9731" 라는 버킷을 생성

    • aws s3 cp /home/ssm-user/HappyFace.jpg s3://labclibucket-9731
      : cp 명령은 지정된 버킷에 파일 하나를 복사

    • aws s3 ls s3://labclibucket-9731
      : "labclibucket-9731"버킷 안에 있는 객체의 목록을 표시.


🛜AWS 이론교육1

계정 보안

  • 보안 주체 : AWS 리소스에 대한 작업 또는 요청을

  • IAM 정책 : 명시적 허용문이나 명시적 거부문 중 하나가 포함, 혹은 둘다 포함됨.

  • 심층 보안 : 다주 보안 계층을 만드는 데 중심을 준 전략. 네트워크 엣지, Virtual Private Cloud(VPC), 로드 밸런싱과 모든 인스턴스, 컴퓨팅 서비스, OS 등에 심층 방어를 적용해야 한다.

  • AWS Organization의 서비스 제어 정책 (SCP)와 IAM 자격 증명 기반 정책을 둘 다 사용할 경우, 두 곳에서 모두 허용하는 권한만 사용 가능

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket",
                "s3:GetObject"
            ],
            "Resource": "*"
        }
    ]
} //scp
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket",
                "s3:PutObject"
            ],
            "Resource": "*"
        }
    ]
} //IAM 정책

다음의 경우 사용자는 s3:ListBucket 작업만 수행할 수 있다.

네트워킹


  • 보안 그룹과 네트워크 ACL 비교
보안 그룹
네트워크 ACL
탄력적 네트워크 인터페이스에 연결되며 하이퍼바이저에서 구현됨
서브넷에 연결되며 네트워크에서 구현됨
---------------------------------------------------------------------------------------------------------------------------------
허용 규칙만 지원
허용 규칙 및 거부 규칙 지원
---------------------------------------------------------------------------------------------------------------------------------
상태 저장 방화벽
상태 비저장 방화벽
---------------------------------------------------------------------------------------------------------------------------------
트래픽 허용 여부를 결정하기 전에 모든 규칙이 평가됨
트래픽 허용 여부를 결정할 때 모든 규칙은 순서대로 평가됨
---------------------------------------------------------------------------------------------------------------------------------
인스턴스와 연결된 경우 인스턴스에만 적용됨
연결된 서브넷에 배포된 모든 인스턴스에 적용됨
© 2023 Amazon Web Services, Inc. or its affiliates. All rights reserved.

컴퓨팅

  • AMI는 EC2인스턴스의 이미지로 S3에 저장되는데, 반복해서 배포할 수 있다. EC2인스턴스를 만들고 이를 AMI로 만든다. (Baked AMI)
    => 빠르게 애플리케이션 배포가 가능하다. 그러나 내부 버전이 바뀌게 될 경우, AMI를 변경하는 것이 번거로울 수 있다.

  • AMI 받을 수 있는 위치

    • AWS에서 제공하는 사전 구축된 AMI 사용
    • AWS Marketplace에서 수천 개의 솔루션이 포함된 카탈로그 검색
    • AMI를 수동으로 직접 생성하거나, EC2 Image Builder 사용
  • AWS Compute Optimizer : CloudWatch 지표를 가지고 수동으로 성능을 비교하는 시간을 줄이고, 140가지가 넘는 인스턴스 중에서 EC2 및 EC2 Auto Scaling 그룹에 가장 적합한 인스턴스를 선택할 수 있다.

  • 테넌시 : EC2 인스턴스는 하나의 물리적 서버가 호스팅하는데, 이는 기본적으로 공유 테넌시를 사용한다.

    • 공유 테넌시 : 기본. 여러 AWS 계정이 같은 물리적 하드웨어 공유
    • 전용 인스턴스 : 호스트 하드웨어 수준에서 물리적으로 격리되는 EC2 인스턴스.
    • 전용 호스트 : 고객이 EC2 인스턴스 용량을 완전히 전용으로 사용하는 물리적 서버에서 실행.

스토리지

  • EBS는 EC2 인스턴스 간에 볼륨을 이동할 수 있으며, 기본적으로 EBS에 EC2 인스턴스를 한 개 이상 연결하는 것이 불가능하다.

🛜실습1 AWS Identify and Acess Management

목표

  • Amazon VPC 생성
  • 퍼블릭 및 프라이빗 서브넷 생성
  • 인터넷 게이트웨이 생성
  • 라우팅 테이블 구성 및 서브넷에 연결
  • Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스를 생성하고 퍼블릭 액세스가 가능하도록 설정
  • 프라이빗 서브넷에서 Amazon EC2 인스턴스 격리
  • 보안 그룹을 생성하고 Amazon EC2 인스턴스에 할당
  • AWS Systems Manager의 기능인 Session Manager 도구를 사용하여 Amazon EC2 인스턴스에 연결



과제 1: 특정 리전에 Amazon VPC 생성

vpc 생성 후

  • Actions/Edit VPC setting 에 Enable DNS hostnames옵션
    : VPC의 Amazon EC2 인스턴스에 다음과 같은 친숙한 도메인 이름 시스템(DNS) 이름을 할당해준다.



과제 2: 퍼블릭 서브넷 및 프라이빗 서브넷 생성

퍼블릭 서브넷 생성
(참고: VPC의 CIDR 범위는 10.0.0.0/16이며, 여기에는 모든 10.0.x.x IP 주소가 포함됩니다. 방금 생성한 서브넷의 CIDR 범위는 10.0.0.0/24이며, 모든 10.0.0.x IP 주소가 포함되어 있습니다. 이러한 범위는 서로 비슷해 보이지만, 서브넷은 CIDR 범위가 /24이기 때문에 VPC보다 작습니다.)

  • Enable auto-assign public IPv4 address 옵션 : 서브넷 안에서 시작되는 모든 인스턴스에 퍼블릭 IP 주소가 자동으로 할당되도록 서브넷을 구성해줌.

프라이빗 서브넷 생성
(참고: CIDR 블록 10.0.2.0/23에는 10.0.2.x 및 10.0.3.x로 시작하는 모든 IP 주소가 포함되어 있습니다. 인터넷에서 액세스할 수 있어야 하는 특별한 경우를 제외하고 프라이빗 서브넷은 대부분의 리소스를 프라이빗으로 유지해야 하기 때문에 크기가 퍼블릭 서브넷의 두 배입니다.)



과제 3: 인터넷 게이트웨이 생성

인터넷 게이트웨이 생성

사용자가 만든 VPC에 인터넷 게이트웨이를 연결하는 과정



과제 4: 퍼블릭 서브넷의 인터넷 트래픽을 인터넷 게이트웨이로 라우팅

(라우팅 테이블 생성 -> 인터넷 바운드 트래픽을 인터넷 게이트웨이로 보내는 경로를 라우팅 테이블에 추가 -> 퍼블릭 서브넷을 라우팅 테이블에 연결, VPC에 있는 각 서브넷은 라우팅 테이블에 연결되어 있어야 함.)

(현재는 트래픽을 로컬에 라우팅하는 기본 라우팅 테이블만 존재, 퍼블릭 트래픽을 인터넷 게이트웨이로 라우팅하는 추가 라우팅 테이블이 필요.)

+서브넷은 한 번에 하나의 라우팅 테이블에만 연결할 수 있지만, 여러 서브넷을 하나의 라우팅 테이블에 연결할 수 있다.

라우팅 테이블 생성
(but 이 라우팅 테이블은 10.0.0.0/16 네트워크 내의 트래픽이 네트워크 내에서 흐르도록 허용하는 경로가 하나 있지만 이 경로는 트래픽을 네트워크 외부로 라우팅하지는 않는다.) 따라서 새 경로를 추가해 퍼블릭 트래픽을 통과하도록 허용해야 한다.

새 경로를 추가하는 과정

인터넷 게이투웨이를 통과하는 인터넷의 경로를 포함시키는 과정



과제 5: 퍼블릭 보안 그룹 생성

(사용자들이 EC2 인스턴스에 엑세스할 수 있도록 보안 그룹 생성. VPC의 보안 그룹은 Amazon EC2 인스턴스에 허용하는 트래픽을 지정함)

+Amazon EC2 보안 그룹을 사용하면 Amazon VPC 내 인스턴스의 보안을 유지할 수 있습니다. VPC의 보안 그룹을 통해 각 Amazon EC2 인스턴스에 허용되는 인바운드 및 아웃바운드 네트워크 트래픽을 지정할 수 있다. 인스턴스에 명시적으로 허용되지 않은 트래픽은 자동으로 거부한다.

HTTP 트래픽을 허용하는 보안 그룹 생성.

과제 6: 퍼블릭 서브넷에서 Amazon EC2 인스턴스 시작

(이 과제에서는 퍼블릭 서브넷에서 Amazon EC2 인스턴스를 시작. 인터넷을 통한 IPv4 통신을 활성화하려면 인스턴스에 해당 인스턴스의 프라이빗 IPv4 주소와 연결된 퍼블릭 IPv4 주소가 있어야 한다.

+기본적으로 인스턴스는 VPC와 서브넷 안에서 정의된 프라이빗(내부) IP 주소 공간만 인식.)

퍼블릭 서브넷에서 EC2 인스턴스를 시작할 수 있도록 인스턴스 설정



과제 7: HTTP를 통해 퍼블릭 인스턴스에 연결

<Apache 웹 서버를 시작하고, HTTP 연결 테스트하는 화면


과제 8: Session Manager를 통해 퍼블릭 서브넷의 Amazon EC2 인스턴스에 연결

  • Session Manager를 사용하면 계정에서 Amazon EC2 인스턴스로 세션을 시작할 수 있다. 세션이 시작된 후 다른 연결 유형을 통해 실행하는 것처럼 bash 명령을 실행할 수 있다.


cd ~
curl -I https://aws.amazon.com/training/
//홈 디렉터리(/home/ssm-user/)로 변경하고 cURL 명령을 사용하여 웹 연결을 테스트하는 코드



과제 9: NAT 게이트웨이를 생성하고 프라이빗 서브넷에서 라우팅 구성

(NAT 게이트웨이를 생성 -> 라우팅 테이블 생성하여 비로컬 트래픽을 NAT 게이트웨이로 라우팅 -> 라우팅 테이블을 프라이빗 서브넷에 연결.)

  • NAT 게이트웨이를 사용하여 프라이빗 서브넷의 인스턴스를 인터넷 또는 기타 AWS 서비스에 연결하는 한편, 인터넷에서 해당 인스턴스와의 연결을 시작하지 못하도록 할 수 있다.

+NAT 게이트웨이를 생성하려면 NAT 게이트웨이가 속할 퍼블릭 서브넷을 지정해야 하며, NAT 게이트웨이와 연결할 탄력적 IP 주소도 지정해야 한다. 탄력적 IP 주소는 NAT 게이트웨이에 연결한 후 변경할 수 없다.

NAT 게이트웨이 생성

프라이빗 라우팅 테이블 생성

NAT 게이트웨이를 통해 인터넷 바운드 트래픽을 보내는 경로 추가

프라이빗 서브넷의 인터넷 바운드 트래픽을 동일한 가용 영역에 있는 NAT 게이트웨이로 보내기.



과제 10: 프라이빗 리소스용 보안 그룹 생성

(퍼블릭 보안 그룹에 할당된 리소스에서 들어오는 HTTPS 트래픽을 허용하는 보안 그룹을 생성)

+멀티 티어 아키텍처에서 프라이빗 서브넷의 리소스는 인터넷에서 직접 액세스할 수 없어야 하지만, 공개적으로 액세스할 수 있는 리소스에서 프라이빗 리소스로 웹 트래픽을 라우팅하는 일반적인 사용 사례이기도 하다.

+보안 그룹을 규칙의 소스로 지정하면 지정된 프로토콜과 포트의 경우, 소스 보안 그룹과 연결된 네트워크 인터페이스에서 오는 트래픽이 허용된다. 들어오는 트래픽은 퍼블릭 IP 주소 또는 탄력적 IP 주소가 아닌 원본 보안 그룹과 연결된 네트워크 인터페이스의 프라이빗 IP 주소를 기반으로 허용된다. 보안 그룹을 원본으로 추가해도 원본 보안 그룹의 규칙이 추가되지는 않는다.

프라이빗 보안 그룹 생성



과제 11: 프라이빗 서브넷에서 Amazon EC2 인스턴스 시작

+프라이빗 인스턴스는 NAT 게이트웨이 또는 NAT 인스턴스를 통해 트래픽을 라우팅하여 인터넷에 액세스할 수 있다. 인터넷을 통과하기 위해 NAT 게이트웨이 또는 NAT 인스턴스의 퍼블릭 IP 주소를 사용한다. NAT 게이트웨이 또는 NAT 인스턴스는 아웃바운드 통신을 허용하지만, 인터넷상에서 시스템이 프라이빗 주소가 지정된 인스턴스에 연결을 시작하는 것은 허용하지 않는다.

프라이빗 서브넷에서 실행할 EC2 인스턴스 설정



과제 12: 프라이빗 서브넷의 Amazon EC2 인스턴스에 연결

(EC2 인스턴스에서 priavte Instance를 선택 후, connect 버튼을 눌러 과제 8과 같이 실행하여 밑의 명령어를 적어준다.)

cd ~
curl -I https://aws.amazon.com/training/




이 게시글은 2024년 7월 1일부터 5일까지 진행하는
DSC 공유대학 AWS 클라우드 양성 캠프 프로그램에서 들은 수업 내용으로 작성하였습니다.

profile
정도를 걷는 개발자

0개의 댓글