- 클라우드란 무엇일까?
AWS = cloud
프로그램 코드 -컴파일 / 빌드-> 프로그램
프로그램 -배포-> 1. PC(성능과 안정성↓), 2. 서버(성능과 안정성↑), 3. 데이터 센터(항온항습, 이중화)
위 3개를 인프라&플랫폼이라고 한다
안정성 : 얼마나 안정적으로 서비스를 운용
민첩성 : 개발한 프로그램을 적재적소에 배포할 수 있도록 자원 준비
관리 : 여러개의 인프라 자원이 존재했을 때, 관리가 얼마나 편리한지
비용 : 얼마나 비용효율적으로 인프라 자원을 이용하는지
데이터 센터 :
물리적인 장비들을 안정적이고 중단 없는 서비스 유지 목적
가상화 :
하나의 물리적인 장비에서 소프트웨어적으로 여러 개의 논리적인 자원으로 분리하여 비용대비 효율성 증대 목적
클라우드 :
특정 기업이 호스팅하여 인터넷을 통해 사용자에게 제공하는 서비스 혹은 플랫폼 제공자에 따라 분류 : 프라이빗 / 퍼블릭 서비스 형태에 따라 분류 : IaaS / PaaS / SaaS
- 아마존 웹 서비스(Amazon Web Services; AWS)
- 글로벌 #1 클라우드 제공 업체
- 300개 이상의 온 디맨드(On-Demand) 클라우드 서비스
- 넷플릭스, 페이스북, 트위치 등 수많은 기업에서 AWS 사용 중
- 웹 어플리케이션 기본 구성(Front-end, Back-end)
사용자 -> Front-end(Web Server, 정적콘텐츠) -> Request -> Back-end(API Server ↔ Database, 동적콘텐츠)
- 요약
- 클라우드는 빠르고, 안정적이면서, 비용 효율적인 컴퓨팅 서비스를 제공한다.
- AWS는 클라우드 서비스 제공 업체로, 300개 이상의 온-디맨드 서비스를 제공한다.
- 본 강의에서 사용되는 AWS의 서비스들이 여러가지 존재한다.
- AWS 리전(Regions)
- 리전 : 물리적인 데이터센터 클러스터 단위
- 전 세계적으로 리전 단위로 AWS 서비스 제공
- 하나의 국가에 한 개 혹은 다수의 리전 존재
- 아시아 태평양 리전 : 중국(베이징, 닝샤), 시드니, 오사카, 도쿄, 뭄바이, 서울, 홍콩
- AWS 가용 영역(Availability Zones) : Seoul Region에 총 4개의 AZ 존재
- 가용영역(Availability Zone : AZ) : 지리적으로 분리된 1개 이상의 데이터센터
- 서울 리전에는 총 4개의 AZ 존재
- ap-northeast-2a
- ap-northeast-2b
- ap-northeast-2c
- ap-northeast-2d
- 왜 AZ를 분리하였을까? : 내결함과 고가용성을 유지하기에 적합한 구조
- 엣지 로케이션(Edge Location) : 더 나은 네트워크 속도를 위한 서비스
- 엣지 로케이션(Edge Locations) : 전 세계적으로 통신사와 협업하여 빠른 네트워크 서비스를 제공하기 위한 지역
- 215개 이상의 엣지 로케이션을 전 세계적으로 제공
- 해외 서비스를 제공할 때 유용
- Region vs AZ vs Edge Location이 왜 중요할까?
서비스 제공 단위 : Region 별 서비스 상이
서비스 지연 시간 : Edge
비용 : AZ, 비용 ↔ 안정성
- 요약
- AWS 글로벌 인프라에는 Region, AZ, Edge Location이라는 개념이 있다.
- Region은 여러 개 데이터 센터의 묶음 단위, AZ는 실제 물리적인 데이터 센터, Edge Location은 더 가까운 곳에서 빠른 네트워크 서비스를 위한 단위이다.
- 각각의 지역은 필요한 서비스, 지연시간, 비용에 의해서 결정된다.
- IAM(Identity & Access Management) : AWS의 자격 증명과 접근 관리 서비스!
개인 X
Team O
개발자A에게 개발서비스 X 제공
인프다 담당자 B에게 운영관 관련된 Y,Z 서비스 제공
등록되지 않은 사용자는 접근을 차단
- AWS IAM(Identity and Access Management) : Identity & Access Management
Identity : 신원 정의
Access Managemetn : 접근에 대한 권한 부여
IAM은 AWS 서비스 전체의 권한 통제 시스템
- Root 계정, 사용자, 사용자 그룹 : Identity
Root 계정 :
- AWS 계정 생성 시 최초로 만들어지는 계정
- 모든 서비스에 대한 권한을 가지고 있음
- MFA(Multi Factor Authentication)를 통해 보안 강화 필요
사용자 :
- AWS 서비스를 실질적으로 사용하는 유저, Root 계정과 독립적인 권한을 가짐
- 사용자는 필요한 최소한의 권한을 가져야 함
- '그룹'에 의해서 그룹화 될 수 있음
사용자 그룹 :
- 여려 명의 사용자들 대상으로 그룹화를 하여 권한을 제공할 수 있음
- 사용자는 반드시 그룹에 소속될 필요는 없으며, 한 명의 사용자는 여러 개의 그룹에 소속될 수 있음
- 권한 정책(Permissions) : IAM Permission
- 정책(Permission)은 사용자 혹은 사용자 그룹을 대상으로 적용할 수 있음
- 정책은 JSON 형식 기반으로 구성할 수 있음
- 하나의 사용자 혹은 사용자 그룹은 여러 개의 정책을 설정할 수 있음
- AWS 환경에서는 사용자에 대해 필요 이상의 권한을 부여하지 않는 것을 원칙으로 함
{
"Version": "2012-10-17"
"Statement":[
{
"Effect": "Allow or Deny",
"Action":[
...
],
"Resource":[
...
],
"Condition":[
...
}
]
}
Effect : 허용 & 차단?
Action : 어떤 행위를 할 것인가?
Resource : 어떤 객체(리소스)들에 대해?
Condition : 어떤 조건에서?
- IAM : Identity(User, Group) + Access Management(Permission) 활용
- 사용자(User)는 여러 개의 그룹에 속할 수 있다.
- 사용자(User)는 반드시 그룹에 속하지 않아도 된다.
- 사용자(User)는 여러 개의 정책이 적용될 수 있다.
- IAM Role
- 역할(Role)은 AWS 서비스 대상으로 적용할 수 있음
- 역할(Role)을 구성하기 위해서는 어떤 권한(Permission)을 가지는지 명세 해야 함
- 역할(Role)을 적용하는 주요 대상은 EC2, Lambda 등이 AWS 서비스를 호출하는데 사용됨(AWS 대부분의 서비스에 적용 가능)
- 멀티 팩터 인증(MFA : Multi Factor Authentication)
- Password 정책
- 기본 암호 정책
- 최소 8자 이상 128자 암호 길이
- 대문자, 소문자, 특수문자 중에서 3개 이상의 조합
- AWS 계정 이름 혹은 이메일 주소와 동일하지 않아야 함
- ** 사용자가 지정하여 암호 정책을 변경 할 수 있음(암호 최소 길이, 강도, 만료일, 재사용 권한 등)
- MFA 인증
- 비밀번호 접속만으로는 보안이 취약할 수 있기 때문에 2중 암호 장치(MFA)를 구성하는 방법이 제공됨
- MFA는 일정한 주기로 토큰이 갱신되며, 스마트폰 혹은 물리적인 기기를 통해 발급받을 수 있음
- Root User 나, IAM User의 보안 강화를 할 수 있음
- 요약
- AWS IAM은 AWS 서비스 사용을 위한 Identity(신원)와 Access Management(권한 관리)로 구성되어 있는 접근 제어 서비스 이다.
- Identity에는 Root User, User, User Group 개념이 있다.
- Permission은 User 나 User Group 대상으로 어떤 행위를 허용할 지를 명세 한다.
- Role은 AWS 서비스를 대상으로 적용할 수 있음 Permission이다
- 보안 강화를 위한 방법으로 암호 정책과 MFA가 있다.
- AWS 접속 방식
- AWS 관리 콘솔(Management Console)
- AWS CLI
- AWS SDK
- AWS 관리 콘솔 웹 인터페이스
AWS 관리 콘솔은 웹브라우저를 통해 접속하여 AWS 서비스를 제어할 수 있도록 제공하는 유저 인터페이스
사용자, 서비스 사용량, 월별 요금 등을 한 눈에 모니터링 가능
사용자에게 친숙하고, 자주 사용되는 서비스를 커스터마이징하여 관리 및 접근할 수 있음
- AWS CLI
- AWS CLI는 커맨드 라인 방식으로 Shell 화면에서 AWS 서비스를 사용할 수 있도록 제공해주는 툴
- AWS 관리 콘솔에서 수행하는 대부분의 역할을 수행 가능
- 커맨드 라인 스크립트 생성을 통해 반복적인 작업에 대해서는 스크립트 자동화를 구성할 수 있음
- AWS CLI는 Open source 기반
- AWS 액세스 키 & 비밀 액세스 키
액세스 키 & 비밀 액세스 키 :
- 액세스 키는 AWS CLI나 AWS SDK 활용 시, ID와 PW 같이 사용됨
- 액세스 키 ID = ID,비밀 액세스 키 = Password
- 외부로 절대 노출 돼서는 안됨!
- AWS SDK
- AWS SDK(Software Development Kit)는 프로그램 언어에서 라이브러리 형태로 제공되는 개발 킷
- AWS 서비스를 프로그래밍 언어를 통해 구현 및 사용할 수 있음
- 지원언어 : C++, Go, Java, JavaScript, .NET, Node.js, PHP, Python, Ruby
- 요약
-
AWS 서비스를 사용하는 방식에는 크게 3가지가 있다.
1)AWS 관리 콘솔, 2)AWs CLI, 3)AWS SDK
-
AWS CLI와 AWS SDK는 서비스를 사용할 때 액세스 키와 비밀 액세스 키를 사용하므로 노출되지 않도록 주의한다.
-
AWS CLI는 커맨드 라인 방식으로 쉘에서 AWS 서비스를 사용할 수 있는 툴이다.
-
AWS SDK는 프로그래밍 언어를 통해 라이브러리와 같이 구현할 수 있는 개발 킷이다.