Study/seSAC 금천 4기

클라우드_2일차_241002

지찬씌 2024. 10. 10. 09:14

(241002 작성 내용에서 계속....)

3. 사용자 그룹에 정책을 추가

 

  4) EC2 인스턴스 생성 (AWS 안에 가상머신 생성)

   4-1) 리전을 서울 리전으로 변경

 

   4-2) 인스턴스 시작을 눌러 인스턴스 생성

 

 

 

 

  5) S3 버킷 생성 후 크기가 작은 파일 업로드

 

   - 버킷 : 파일 저장소. 버킷의 이름에는 중복이 없어야 한다. 중복이 있을 경우 저장 과정에서 충돌이 발생할 수 있음.

 

 

 

 

 

  6) user1 사용자로 로그인(다른 브라우저 사용) 후 S3와 EC2 서비스로 접근

 

   6-1) root 계정으로 user1의 콘솔 로그인 링크를 확인

 

 

 

   6-2) 다른 브라우저에서 user1 계정으로 로그인하고 S3에 접속

 

 

    - 버킷 목록 조회(List*), 객체 목록 조회(Describe*), 객체 상세 목록 조회(Describe*)이 가능하다.

     > user1 계정에 대하여 S3readonlyaccess 정책을 적용했기 때문에 가능하다.

 

 

 

   6-3) 버킷에 파일(객체) 업로드

 

 

    - user1에 대한 계정은 S3readonlyaccess 정책만 적용했기 때문에 파일(객체) 업로드(Put*)는 불가능하다.

 

 

 

 

 

 

   6-4) AmazonS3ReadOnlyAccess

    https://docs.aws.amazon.com/ko_kr/aws-managed-policy/latest/reference/AmazonS3ReadOnlyAccess.html

 

    - user1 사용자는 S3-Support 그룹에 포함되어 있고, S3-Support 그룹은 AmazonS3ReadOnlyAccess 권한을 가지고 있으므로, 버킷 목록을 조회(List*)할 수 있고, 버킷에 저장된 파일(객체) 목록(list*)과 상세 정보를 조회(Describe*)할 수 있고, 버킷에 저장된 객체를 다운로드(Get*)할 수도 있으나, 객체를 추가(Put*)하는 것은 불가능하다.

 

 

 

 

 

 

 

  7) user1 사용자로 EC2 서비스에 접근

 

 

   - EC2에 대한 권한이 없으므로 정보가 출력되지 않는다.

 

 

 

 

 

 

  8) user2 사용자로 로그인

 

   8-1) S3 서비스로 접근

 

 

    - user2 사용자는 S3 서비스에 대해 아무런 권한이 없기 때문에 버킷 목록을 볼 수 없고, 모든 버튼이 비활성화 상태이다.

 

 

 

   8-2) EC2 서비스로 접근하여 EC2 인스턴스를 조회 및 인스턴스 중지

 

 

    - 인스턴스 조회에는 문제가 없다.

 

 

 

    - readonlyaccess 권한이기 때문에 인스턴스 중지에 실패한다.

 

 

 

   8-3) AmazonEC2ReadOnlyAccess

    https://docs.aws.amazon.com/ko_kr/aws-managed-policy/latest/reference/AmazonEC2ReadOnlyAccess.html

 

 

    - user2 사용자는 EC2-Support 그룹에 속해 있고, EC2-Support 그룹은 AmazonEC2ReadOnlyAccess 권한을 가지고 있으므로, 인스턴스 목록과 상세 정보는 조회는 가능하나, 인스턴스 중지, 시작, 재부팅은 불가능하다.

 

 

 

 

 

  9) user3로 로그인

 

 

   9-1) S3 서비스와 EC2 서비스에 접근

 

 

    - EC2PullAccess 권한을 가지고 있기 때문에 S3 서비스에는 접근이 불가능하고 EC2 서비스에는 접근이 가능하다.

 

 

 

    - 위와 같이 인스턴스 조회(Describe*) 항목만 출력되는 이유는 그룹 정책 적용 시 인라인 정책에서 경계 권한으로 ec2describe 사항을 넣어줬기 때문이다.

 

 

 

    - 동일한 이유로 인스턴스 중지(Stop*)와 시작(Start*) 권한이 적용되어 있기 때문에 가능하다.

 

 

 

 

 

  10) user3 사용자를 S3-Support 그룹에 추가한 후 S3 서비스로 이동

 

   10-1) root 계정으로 user3 사용자를 S3-Support 그룹에 추가

 

 

   10-2) user3 사용자로 S3 서비스에 접근

 

 

    - 버킷 목록/상세 조회, 개체 목록/상세 조회 및 다운로드가 가능하다. 

 

 

 

 

  11) user1 사용자에게 EC2 인스턴스 읽기 전용 권한 부여 (인라인 정책으로 부여)

 

   11-1) user1 계정으로 로그인 후 EC2 서비스 접근

 

 

 

 

  12) 모든 리소스 삭제

 

   12-1) S3에서는 객체(파일)을 모두 삭제한 후 버킷을 삭제한다.

 

 

 

 

   12-2) EC2 인스턴스 종료

 

 

 

 

   12-3) 사용자, 사용자 그룹 삭제

 

 

 

 

 

 

 

 

Access Key를 이용한 AWS 서비스 이용

 

* AWS 서비스를 이용하는 방법

 

  1) Management Console

   - 사람 사용자가 로그인 후 사용

 

 

  2) AWS CLI

   - 사람 또는 프로그램이 Access Key를 이용해서 사용

 

 

  3) 각 개발 언어별 SDK(Source Development Kit)

   - 응용 프로그램을 이용하여 사용

 

 

 

 

 

1. AWS CLI 설치

https://docs.aws.amazon.com/ko_kr/cli/latest/userguide/getting-started-install.html

- 설치가 완료되면 명령 프롬프트를 이용해서 설치 확인

 

C:\Users\crpark> aws --version

aws-cli/2.17.63 Python/3.12.6 Windows/11 exe/AMD64

 

C:\Users\crpark> aws iam list-users

Unable to locate credentials. You can configure credentials by running "aws configure".

 

 

 

 

 

2. 사용자 생성 후 Access Key를 발급

 

 

  2-1) Access Key를 등록

 

 

  2-2) 사용자 목록을 조회

 

 

 

 

3. S3 버킷 목록 조회

https://docs.aws.amazon.com/cli/latest/reference/s3/

https://docs.aws.amazon.com/cli/latest/reference/s3api/list-buckets.html

 

> aws s3api list-buckets

 

 

 

  3-1) S3 버킷 생성 후 조회

 

   - CLI를 이용한 버킷 생성

    > aws s3api create-bucket --bucket mybucket-inno-6 --create-bucket-configuration LocationConstraint=ap-northeast-2

 

 

   - 버킷 조회

    > aws s3api list-buckets

 

 

 

 

 

LAB

AWS CLI를 이용해서 생성한 S3 버킷에 AWS CLI를 이용하여

(1) (작은 크기의) 파일을 업로드한 후

(2) 업로드한 파일을 확인하고

(3) 모든 작업이 끝나면 생성한 S3 버킷을 삭제한다.

 

 

  (1) 버킷에 객체 등록 (put-object)

 

 

  (2) 버킷에 객체가 등록되었는지 확인 => 객체 목록 조회 (list-objects)

 

 

  (3) S3 버킷 삭제 => 객체 먼저 삭제 후 버킷 삭제

 

 

 

 

VPC (Virtual Private Cloud)

 

- AWS 사용자 계정 전용 가상 네트워크

 

- AWS 클라우드에서 다른 가상 네트워크와 논리적으로 분리

 

- 하나의 AWS 리전 안에서만 존재할 수 있고, A 리전에 만든 VPC는 B 리전에서는 보이지 않는다. => VPC peering

 

- 생성 시 RFC 1918에 지정된 프라이빗 주소 체계 사용을 권장한다.

 

 

 

VPC 구성 옵션

https://docs.aws.amazon.com/ko_kr/vpc/latest/userguide/create-vpc-options.html

 

 

 

 

 

1. 기본 VPC (default VPC)

 

 

- 기본 VPC 구성 요소

  1) 

 

 

 

 

 

2. 서브넷(subnet)

 

- VPC 내 논리적 구분

 

- 하나의 가용영역 내에서만 존재할 수 있다.

 

- 종류

  1) 퍼블릿 서브넷

  2) 프라이빗 서브넷

 

 

 

 

 

3. 탄력적 네트워크 인터페이스 (ENI, Elastic Network Interface, )

 

- 물리 서버의 네트워크 인터페이스와 같은 기능 수행

 

- VPC에서 가상 네트워크 카드를 제공하는 논리적 네트워크 구성 요소

 

 

 

 

 

4. 인터넷 게이트웨이 (igw, Internet GateWay)

 

- 퍼블릭 IP(나를 찾을 수 있는 주소) 주소를 갖는 인스턴스가 인터넷에 연결할 수 있도록 기능을 제공한다.

 

- 처음 VPC를 만들면 igw와 연결되지 않으므로, 직접 igw와 VPC를 연결해야 한다.

 

- 하나의 VPC는 하나의 igw만 연결할 수 있다. => 나가는 관문은 하나뿐

 

 

 

 

5. 라우팅 (routing)

 

- VPC의 네트워크 트래픽을 전달할 위치를 결정하는데 사용되는 규칙이다.

 

- 트래픽을 전달할 IP 주소 범위(대상 주소)와 트래픽을 전송할 게이트웨이, 네트워크 인터페이스 또는 연결(대상)을 지정

 

- VPC는 소프트웨어 함수로 IP 라우팅을 구현하고, 사용자는 라우팅 테이블만 관리하면 된다.

 

- 라우팅 테이블 == 라우팅의 집합으로, 서브넷과 연결할 수 있다.

 

- 기본 라우팅 테이블 = 기본 VPC와 함께 자동으로 제공되는 라우팅 테이블

  > 기본 VPC인 경우, local 및 igw로의 라우팅을 포함한다.

  > 기본 VPC가 아닌 경우, local 라우팅만을 포함한다.

 

 

- 예시 1.

-----------                                    ---------------------

대상 주소(Destination)             대상(Target) 

-----------                                    ---------------------

172.31.0.0/16                           local

0.0.0.0/0                                   igw-0b7313723843100f9

~~~~~~~                                  ~~~~~~~~~~~~~~~~~~~

인터넷 상의 모든                      인터넷 게이트웨이

호스트 IP 기반

 

=> if, 172.31.10.10 으로 패킷을 보내려고 하면, local로 라우팅을 처리한다.

=> if, 198.51.100.50 으로 패킷을 보내려고 하면, 라우팅할 위치와 가장 근접하게 일치하는 항목을 기반으로 라우팅을 처리한다. >>> igw로 라우팅된다.

=> 결론적으로, 라우팅 테이블 항목 간의 순서는 중요하지 않다.

 

 

- 예시 2.

 

 

 

 

 

 

6. 보안 그룹 (SG, Security Group)

 

- 인스턴스의 ENI에서 송수신하는 트래픽을 제어한다.

 

- 모든 ENI최소 한개 이상의 보안 그룹과 연결되어야 하고, 보안 그룹은 또한 여러 ENI와 연결 될 수 있다. (= N:N 관계)

 

- 생성할 때 그룹 이름 / 설명 / 포함될 VPC를 지정하고, 생성 후에 인바운드/아웃바운드 규칙을 지정한다.

                                                                                                          => 트래픽을 허용한다는 말

 

- 상태 저장 방화벽 역할을 수행 => 보안 그룹이 트래픽을 한 방향으로 전달하도록 허용할 때 반대 방향의 응답 트래픽을 지능적으로 허용하는 것

 

 

 

 

 

7. 네트워크 접근 제한 목록 (NACL, Network Access Contorl List)

https://docs.aws.amazon.com/ko_kr/vpc/latest/userguide/vpc-network-acls.html#default-network-acl

 

- 보안 그룹과 유사하다.

  > 

  > VPC에서는 삭제할 수 없는 기본 NACL이 있다.

 

- 서브넷에 연결되어 해당 서브넷과 송수신되는 트래픽을 제어한다.

  => NACL >>>> ENI

 

- 상태 비저장을 띈다

  > NACL을 통과한 연결 상태를 추척하지 않는다.

  > 모든 인바운드/아웃바운드 트래픽의 허용 규칙을 별도로 작성해야 한다.

 

- NACL의 경우 규칙을 적용할 때 규칙 번호의 오름차순으로 처리하고, 만족하는 규칙이 있을 경우 해당 규칙을 제외한 나머지는 무시한다.

  => 순서에 영향을 받음!

 

- 보안 그룹 VS NACL

항목 보안 그룹 네트워크 ACL
운영 레벨 인스턴스 서브넷
적용범위 인스턴스와 연결된 경우에만 인스턴스에 적용 연결된 서브넷에 배포된 모든 인스턴스에 적용
(보안 그룹 규칙이 지나치게 허용적일 경우 추가 보안 계층을 제공)
규칙 지원 허용 규칙만 지원 허용 및 거부 규칙 지원
트래픽 허용 규칙 순서 종속성 트래픽 허용 여부를 결정하기 전에 모든 규칙을 평가  
상태 저장    

 

 

 

 

 

 

VPC 생성 -> EC2 인스턴스 생성(웹 서버 설치) -> 인스턴스로 22, 80 포트 접근

 

1. VPC 생성

 

 

 

 

2. 인터넷 게이트웨이 생성

 

- VPC를 인터넷에 연결하기 위해 생성

 

 

 

 

3. 서브넷 생성

 

 

 

 

4. 라우팅 테이블 생성하고 서브넷에 연결

 

 

 

 

 

5. 라우팅 테이블에 인터넷 게이트웨이로의 라우팅을 추가

   => 퍼블릭 라우팅 테이블로 변경

 

 

 

 

 

6. NACL 확인

 

 

 

 

7. SSH Client 프로그램(Bitvise)을 이용하여 EC2 인스턴스로 접속

 

 

 

 

8. 내 PC에서 EC2 인스턴스의 80포트로 요청

   => 연결되지 않음

   => NACL에서는 모든 포트 접근을 허용하고 있으나 보안그룹에서 80포트 접근을 허용하고 있지 않음.

   => 따라서 보안그룹에서 80포트로 들어오는 요청을 허용하는 규칙을 생성

 

 

 

 

9. NACL에 80 포트로 들어오는 트래픽을 거부하는 규칙을 10번으로 추가

    => 이 경우 NACL에서 80포트로 들어오는 요청이 거부되어 인스턴스에 접근이 불가하게 된다.

 

 

 

 

10. NACL에 80포트로 들어오는 트래픽을 허가하는 규칙을 20번으로 추가

     => 이 또한 접근이 불가하다.

     => 오름차순으로 규칙을 적용하므로 10번에서 접근을 거부하였기 떄문에 20번 규칙은 적용되지 않는다.

 

 

 

 

 

11. NACL에 80 포트로 들어오는 트래픽을 허가하는 규칙을 5번으로 추가

    => 인바운드/아웃바운드 규칙이 오름차순으로 적용되므로 5번이 가장 먼저 적용되기 때문에 다음 순번의 규칙은 무시된다.

 

 

 

 

 

12. 리소스 정리 (중요!)

 

  1) EC2 종료

 

 

 

 

 

 

 

Amazon EC2 (Elastic Compute Cloud)

https://aws.amazon.com/ko/pm/ec2/

 

- 안전하고 크기 조정이 가능한 컴퓨팅 파워를 클라우드에서 제공하는 웹 서비스

 

- 안정적인 확장 가능한 인프라에 온디맨드로 엑세스한다.

 

- 99.99%의 가용성을 지원하는 서비스 수준 계약 (SLA, Service Level Agreement)이다.

 

 

 

 

 

AMI (Amazon Machine Image)

https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/AMIs.html

 

 

 

 

 

 

인스턴스 유형

https://aws.amazon.com/ko/ec2/instance-types

 

- 명명 규칙

https://docs.aws.amazon.com/ec2/latest/instancetypes/instance-type-names.html

 

 

 

 

EBS (Elastic Block Store) = 하드디스크

https://aws.amazon.com/ko/ebs/

 

 

 

 

 

EBS 스냅샷

https://aws.amazon.com/ko/ebs/snapshots/

 

 

 

 

 

 

 

 

탄력적 주소 (EIP, Elastic IP)

 

 

 

 

 

 

 

 

'Study > seSAC 금천 4기' 카테고리의 다른 글

클라우드_5일차_241010  (0) 2024.10.14
클라우드_3일차_241007  (1) 2024.10.11
클라우드_1일차_241001  (0) 2024.10.08
컨테이너 Orchestration_3일차_240926  (3) 2024.09.30
컨테이너 Orchestration_2일차_240925  (0) 2024.09.30