[SK shieldus Rookies 16기][AWS] 가상화와 클라우드 컴퓨팅, AWS

Jina·2023년 11월 30일
0

SK shieldus Rookies 16기

목록 보기
26/59
post-thumbnail
post-custom-banner

1. 가상화

1.1. 정의

하드웨어를 소프트웨어적으로 표현하는 것 ⇒ 소프트웨어적으로 관리 == 파일 형태로 관리

1.2. 장점

쉽게 복사, 이동 가능 ⇒ 똑같은 구조를 쉽게 여러 개 생성 가능

1.3. 등장배경

서버는 비쌈. 들어간 값만큼의 비용을 뽑아내기 위해서 과거에는 여러 개의 프로그램을 동시에 구동시킴. 이 장비가 가진 성능을 모두 도출해내기 위해 사용함. 그랬더니 간섭이 일어남.

각각의 환경들이 독립된 환경에서 돌아가도록 하는 것=가상화
논리적으로 나눠놓은 하드디스크

2. 클라우드 컴퓨팅 분류

  • IaaS(Infrastructure as a Service) : 인프라를 빌려쓰는 것
  • PaaS(Platform as a Service) : 플랫폼을 빌려쓰는 것
  • SaaS(Software as a Service) : 소프트웨어를 빌려쓰는 것

IaaSPaaSSaaS
처음에는 하드웨어 기준으로 빌려쓰다가 나중에는 네트워크를 통해서 프로그램 자체를 빌려쓰는 형태로 발전함(ex. 구글 공유 문서)

2.1. AWS에서 정의한 클라우드 컴퓨팅

IT 리소스를 인터넷을 통해 온디맨드로 제공하고 사용한 만큼만 비용을 지불하는 것

온디맨드란? 공급자 중심이 아닌 수요에 따라 제품이나 서비스가 제공되는 것으로, 소비자가 원하는 것을 즉시 제공하는 형태의 서비스

2.2. AWS에서 정의한 클라우드 컴퓨팅의 이점

  1. 민첩성(Time to market) : 필요에 따라 리소스 빠르게 구동 가능
  2. 탄력성 : 실제로 필요한 만큼만 리소스를 프로비저닝
    • 비지니스 요구가 변화함에 따라 리소스를 확장/축소하여 용량을 즉시 늘리거나 줄일 수 있음 ⇒ 자동으로 가능
  3. 비용절감 : 클라우드를 통해 고정 비용을 가변비용으로 전환 ⇒ 사용한만큼만 비용 지불, 불필요한 비용 지불 X
  4. 빠른 배포

프로비저닝(Provisioning)이란? 사용자의 요구에 맞게 시스템 자원을 할당, 배치, 배포해 두었다가 필요 시 시스템을 즉시 사용할 수 있는 상태로 미리 준비해 두는 것

3. AWS의 요금 특징

  • 사용량에 따른 요금
    • 유연함, 비용절감
  • 커밋(약정)을 통한 비용 절감
    • 약정을 조건으로 온디맨드보다 낮은 요금제공
  • 더 많이 사용하여 더 적은 비용 지불
    • 대량구매 할인을 받아 사용량 증가에 따라 비용 절감 가능

4. 컨테이너

가상화에서 운영체게를 뺀 것
컨테이너 기술을 쉽게 운영할 수 있도록 해주는 기술 == Docker

오케스트레이션? 컨테이너의 배포, 관리, 확장, 네트워킹을 자동화하게 도와준다.
(ex. 쿠버네티스, Docker Swarm, Apache Mesos 등)

오케스트레이션해주는 것 == 쿠버네티스

5. 클라우드 종류

5.1. Public Cloud

  • 누구나 접근 가능(해당 서비스 접근 가능한)
  • AWS

5.2. Private Cloud

  • 회사 내에서만 사용 가능한 클라우드
  • 내가 별도로 AWS같은 홈페이지를 구축해서 사용하는 것
    OpenShift

5.3. Hybride Cloud

  • 퍼블릭 클라우드 + 프라이빗 클라우드 = 하이브리드 클라우드

6. AWS 서비스(제품)

6.1. Amazon

AWS의 기본 빌딩 블록. 대부분의 기본적인 클라우드 컴퓨팅 요구사항을 충족시키는데 사용.
EC2(Elastic Compute Cloud), S3(Simple Storage Service), RDS(Relation Database Service)

6.2. AWS

특별한 작업, 데이터 처리, 서버리스 컴퓨팅, 데이터 분석 등과 같이 더 특화된 작업을 위한 솔루션
Lambda, Glue, Step Functions

7. 공동책임 모델

클라우드 환경에서 발생하는 보안문제에 대한 책임소재와 보안절차

8. AWS 개념

  • 리전(region) : 데이터 센터를 클러스터링하는 물리적 위치.
    AWS 리전은 지리적 영역 내에서 격리되고 물리적으로 분리된 최소 3개의 가용역역으로 구성됨.

  • 가용영역(AZ) : 하나 이상의 개별 데이터 센터로 구성. 모든 AZ는 서로 100km(60마일) 이내의 거리에 위치. AWS리전의 모든 AZ는 높은 대용폭, 지연 시간이 짧은 네트워킹, 완전한 중복성을 갖춘 전용 메트로 광 네트워크와 상호 연결되어 있어 AZ간에 높은 처리량과 지연시간이 짧은 네트워킹을 제공. AZ 간의 모든 트래픽은 암호화됨.

  • 로컬영역 : AWS 서비스를 최종 사용자에게 더 가까운 위치에서 실행할 수 있게 보장해주는 서비스. 지연 시간에 민감한 애플리케이션을 실행할 수 있는 AWS 리전의 확장.

  • AWS Wavelength : AWS를 모바일망에서 접근할 수 있도록 해주는 서비스

  • AWS Outposts : 데이터 센터, 콜로케이션 공간 또는 온프레미스 시설로 이전할 수 있게 해주는 서비스

9. AWS 프리 티어

10. AWS IAM

10.1. 정의

AWS Identity and Access Management

  • AWS 리소스에 대한 액세스를 안전하게 제어할 수 있는 웹 서비스

10.2. 특징

  • 사용자(user), 사용자 그룹(user group), 역할(role), 정책(policy)으로 구성
  • 리전에 속한 서비스 X ⇒ 글로벌 서비스(리전 관계없이 동일하게 보임)
    리전에 속한 서비스는 그 리전에서만 볼 수 있다.
  • 보안 강화를 위한 IAM 보안 모범 사례
    • 루트 계정(AWS 회원 가입 시 만들어지는 계정)은 최초 사용자 계정 생성 이후 가능하면 사용하지 말 것.
    • 사용자 계정으로 서비스를 사용하고 사용자는 필요한 최소한의 권한만 부여 ⇒ 최소 권한의 원칙
    • 루트 계정과 개별 사용자 계정에 강력한 암호 정책과 멀티펙터 인증(MFA) 적용

접근통제의 종류

① Presentation Layer Access Control - 권한이 있는 사용자에게 적절한 기능 제공
② Business Layer Access Control - 권한에 맞는 기능 제공
③ Data Layer Access Control - 권한에 맞는 데이터 접근 허용

접근통제의 3단계 : 식별 → 인증 → 인가

  • 식별(Identification) : 내가 나라라는 것을 주장할 수 있는 것. ⇒ 식별할 수 있다? 나와 다른 사람을 구분 가능 (ex. 이메일주소)

  • 인증(Authentication) : 그 주장이 맞는지 확인하는 것(ex. 비밀번호)
    • TYPE1 - 지식기반 - 이메일, 비밀번호...
    • TYPE2 - 소유기반 - 인증서, 주민등록증, 스마트폰, OTP...
    • TYPE3 - 특징기반 - 서명, (홍채, 정맥, 성문, 지문 ⇒ 생체인증)...
      ⇒ 2가지 타입을 혼용하면 2-factor 인증이라고 함.
      ⇒ 2가지 이상 타입을 혼용 == Multi-factor 인증
      ⇒ type2나 type3를 사용한 방식이 더 안전하다. 왜? 봐야하는 채널이 많아지기 때문에 공격이 어려움.

  • 인가(Authorization) : 그 사람이 맞으면 권한을 부여하는 것

10.3. 사용자(user)

  • AWS의 기능과 자원을 이용하는 객체
  • 사람 또는 응용 프로그램

사용자 식별하는 방법

  1. 사용자 생성 시 지정한 이름
  2. 사용자의 고유 식별자
  3. ARN(Amazon Resource Name) ⇒ arn:aws:service:region:account-id:resource 형식
    • arn : 모든 ARN의 시작 부분
    • aws : AWS를 나타내는 고정 값
    • service : 리소스를 제공하는 AWS서비스(ex. S3, Lambda, RDS ...)
    • region : 리소스가 위치한 AWS지역
    • account-id : AWS의 계정 ID
    • resource : 서비스 별로 리소스를 고유하게 식별하는 정보

사용자의 자격증명 방법

  1. AWS Management Console 암호 ⇒ 사람 이 AWS 서비스를 사용하기 위해서 로그인할 때 사용
  2. Acess Key = Access Key ID + Secret Access Key프로그램 방식으로 호출할 때 사용
  3. SSH 키 ⇒ AWS에 생성한 EC2 인스턴스(가상머신)로 SSH 접속할 때 사용
  • 텔넷 - 평문으로 데이터를 주고 받기 때문에 안전하지 않기 때문에 사용 X
  • SSH - 보안통신을 하기 때문에 안전 ⇒ 사용하려면 인증서 파일 필요 ⇒ 이때 인증서가 SSH 키

10.4. 사용자 그룹(user group)

  • 여러 사용자에게 공통으로 권한을 부여하기 위해서 만든 개념
  • 여러 사용자에게 일관된 권한 정책을 쉽게 저용하는 것이 가능

10.5. 권한(permission)

  • AWS의 서비스나 자원에 어떤 작업을 할 수 있는지 여부를 명시한 규칙

10.6. 정책(policy)

  • 자격 증명이나 리소스와 연결될 때 해당 권한을 정의하는 AWS의 객체
  • 권한의 모음으로 사용자, 사용자 그룹, 역할에 적용 가능
  • 사용자, 사용자 그룹, 역할에 권한을 직접 적용할 수 없고, 정책을 생성한 후 적용해야 함

자격 증명 기반 정책
IAM 사용자, 그룹 또는 역할에 연결되는 정책으로 자격 증명이 수행할 수 있는 작업(권한)을 지정

  • 관리형 정책
    AWS 계정에 속하는 다수의 사용자, 그룹, 역할에 독립적으로 연결할 수 있는 자격 증명 기반 정책
  • 인라인 정책
    단일 사용자, 그룹, 역할에 직접 추가하는 정책

리소스 기반 정책
S3 버킷과 같은 리소스에 연결하는 정책으로 지정된 보안 주체에 해당 리소스에 대한 특정 작업을 수행할 수 있는 권한을 부여하고 이러한 권한이 적용되는 조건을 정의

  • 리소스 기반 정책은 인라인 정책, 관리형 리소스 기반 정책은 X ⇒ 미리 정해놓을 수가 없기 때문에

서비스 제어 정책
조직의 권한을 관리하는데 사용할 수 있는 조직 정책의 유형

  • 조직의 모든 계정에 사용 가능한 최대 권한에 대한 중앙제어를 제공

ACL(접근 제어 목록)
리소스에 엑세스 할 수 있는 다른 계정의 보안 주체를 제어할 수 있는 서비스 정책

  • JSON 정책 문서 형식을 사용하지 않는 유일한 정책 유형
  • S3, VPC가 ACL을 지원하는 대표적인 서비스

세션 정책
역할 또는 헤더레이션 사용자에 대해 임시 세션을 프로그래밍 방식으로 생성할 때 파라미터로 전달하는 정책

  • AssumeRole, AssumeRoleWithSAML, AssumeRoleWithIdentity API 작업을 사용하여 프로그래밍 방식으로 역할 세션을 생성하고 세션 정책을 전달

JSON 정책 문서 구조

  • 문서 상단에 위치하는 정책 전반의 선택적 정보
  • 하나 이상의 Statement로 구성
  • 각 Statement에는 단일 권한에 대한 정보가 포함

JSON 정책 요소

  • Version - 정책 언어 버전(최신2012-10-17)

10.7. 안전한 권한 부여 방법 ⇒ 최소 권한 부여

  1. 모든 리소스에 모든 동작을 허용 → 필요 이상의 권한 부여 → 안전 X
{ 
	"Resource": "*", 
	"Action": "*", 
	"Effect": "Allow"
}
  1. DynamoDB액션을 구체화 ⇒ DynamoDB의 모든 테이블에 대해 read/write 가능 → (접근하면 안되는) 다른 테이블에도 접근이 가능하므로 안전 X
{
	"Resource": "*",
	"Action": [
		"dynamodb:GetItem", // DynamoDB에 대한 구체적인 동작(액션)
		"dynamodb:PutItem"
	],
	"Effect": "Allow"
}
  1. 특정 DynamoDB리소스로 한정 ⇒ myDynamoDBTable에 대해선 read/write 하도록 제한
{
  	// 사용할 테이블을 지정(한정)
	"Resource": "arn:aws:dynamodb:us-east-2:123456789012:table/myDynamoDBTable",
	"Action": [
		"dynamodb:GetItem", 		
		"dynamodb:PutItem"
	],
	"Effect": "Allow"
}
  1. 특정 조건 명시 ⇒ IP주소가 1.2.3.4에서 접근하는 경우에만 myDynamoDBTable 테이블에 대해 read/write하도록 제한
{
	"Resource": "arn:aws:dynamodb:us-east-2:123456789012:table/myDynamoDBTable",
	"Action": [
		"dynamodb:GetItem", 		
		"dynamodb:PutItem"
	],
	"Effect": "Allow"
  	"Condition":[
    	"IpAddress":{
      		// 소스IP를 제한
      		"aws:SourceIp":"1.2.3.4"
      }
    ]
}

10.8. 역할(Role)

  • 사용자가 아닌 특정 서비스에서 생성한 객체에 권한을 부여하는데 사용

10.9. 권한 경계

관리형 정책을 사용해 자격 증명 기반 정책이 IAM 엔터티에 부여할 수 있는 최대 권한을 설정하기 위한 고급 기능

  • 엔터티의 권한 경계 설정을 통해 자격 증명 기반 정책 및 관련 권한 경계 모두에서 허용되는 작업만 수행 가능
  • 리소스 기반 정책은 권한 경계에 제한 받지 X
    ⇒ 부여한 권한을 통제하기 위한 수단

앞에서 생성한 사용자에게 IAMFullAccess 권한 부여
IAMFullAccess 권한 부여 + 권한경계 AmazonEC2FullAccess 부여 ⇒ 최대 EC2 Access 권한까지만
⇒ 권한 경계 밖의 권한을 필요로 하면 엑세스 거부됨
⇒ 해당 사용자는 권한 경계로 EC2FullAccess 권한을 설정했으므로 IAMFullAccess 권한을 가져도 IAM작업 수행 불가하며, EC2관련 권한이 설정되어 있지 않으므로 EC2 관련 작업도 불가능 하다!

profile
공부 기록
post-custom-banner

0개의 댓글