AWS Core Services - AWS Networking & Security

2023. 12. 14. 16:01클라우드/AWS

12월 AWS Enablement (12/14)

 

  1. AWS Cloud Introduction
  2. AWS Computing
  3. AWS Networking & Security
  4. AWS Database
  5. AWS Storage

 


 

 

AWS Networking & Security

Networking / Security 관련 서비스 소개 및 VPC 구성 실습

 

AWS Networking

Amazon VPC (Virtual Private Cloud)

  • 사용자가 정의한, 논리적으로 격리된 가상의 프라이빗 네트워크 환경
    • 가상의 프라이빗 네트워크 환경
  • 가상 네트워크 제어 기능
    • IP 주소 범위, 서브네팅, 라우팅, 보안그룹 등
  • CIDR 블록으로 VPC 크기를 지정하여 생성
    • /16 ~ /28까지 지원

 간단한 구성만으로도 AWS의 확장 가능한 인프라를 기존 데이터센터 환경과 유사하게 사용

 

 

Amazon 자원 레벨

VPC = 리전 레벨

각 리전별 Default VPC가 제공되어 쉬운 리소스 시작 가능

 

 

VPC 서브넷

VPC IP 범위

10.0.0.0/16 → 65,536 IPs

 

서브넷 1 IP 범위

10.0.1.0/24 → 256 IPs (5개 예약)

 

서브넷 2 IP 범위

10.0.2.0/24 → 256 IPs (5개 예약)

 

  • 용도에 따른 분리
    • A 서비스, B 서비스, ...
  • 여러 가용 영역 배포
    • 고가용성 확보

 

 

라우팅 테이블 - 로컬 통신

기본 라우팅 테이블

Destination Target
10.0.0.0/16 local
  • VPC 생성 - 기본 라우팅 테이블
  • VPC 대역 내 라우팅
  • 게이트웨이 등 외부와의 연결은 서브넷 라우팅 테이블을 만들어 연결 후 사용

 

라우팅 테이블 - 인터넷 통신

라우팅 테이블 1

Destination Target
10.0.0.0/16 local
0.0.0.0/0 lgw-12345

 

 

퍼블릭 서브넷과 프라이빗 서브넷

프라이빗 라우팅 테이블

Destination Target
10.0.0.0/16 local

 

퍼블릭 라우팅 테이블

Destination Target
10.0.0.0/16 local
0.0.0.0/0 lgw-12345

 

 

프라이빗 서브넷의 인터넷 통신

프라이빗 라우팅 테이블

Destination Target
10.0.0.0/16 local
0.0.0.0/0 ngw-345

 

퍼블릭 라우팅 테이블

Destination Target
10.0.0.0/16 local
0.0.0.0/0 lgw-12345

 

 

 

DNS와 DHCP

VPC DHCP

DHCP를 통한 IP 할당

새 리소스에 자동으로 사설 IP 할당

 

VPC DNS

빌트인 DNS

프라이빗 DNS 이름 자동 할당

 

AWS가 예약한 IP 주소들

  • 10.0.0.0 (네트워크 주소)
  • 10.0.0.1 (VPC 라우터)
  • 10.0.0.2 (DNS용)
  • 10.0.0.3 (향후 대비용)
  • 10.0.0.255 (브로드캐스트 주소)

 

 

Public IP

퍼블릭 라우팅 테이블

Destination Target
10.0.0.0/16 local
0.0.0.0/0 lgw-12345
  • 인터넷 통신을 위한 필요 요건
  • Public IP 할당 옵션으로 할당
  • 고정 IP 필요시 EIP 사용

 

 

VPC 액세스 제어 - NACL과 보안 그룹

VPC에서 액세스를 제어하는 방법

Network Access Control List (NACL) 보안 그룹
  • 서브넷 단위 방화벽
  • 상태 비 저장 (Stateless)
  • Allow, Deny 설정 가능
  • 인스턴스(ENI) 단위 방화벽
  • 상태 저장 (Stateful)
  • Allow만 설정 가능

 

 

 

VPC 액세스 제어 - NACL

NACL 설정

  • Inbound, Outbound 별도 설정
  • Inbound에서 허락된 트래픽의 응답도 Outbound 규칙 내 명시적 Allow가 있어야만 리턴

 

Inbound Rules

Rule # Protocol Port Source Effect
100 All All 0.0.0.0/0 Allow
* All All 0.0.0.0/0 Deny

 

Outbound Rules

Rule # Protocol Port Source Effect
100 All All 0.0.0.0/0 Allow
* All All 0.0.0.0/0 Deny

 

 

VPC 액세스 제어 - 보안그룹 (Security Group)

보안그룹 설정

  • Inbound로 허용된 트래픽의 Outbound는 자동 허용
  • 다른 보안그룹을 참조하여 Source로 지정 가능

 

Inbound Rules

Protocol Port Source
TCP 80 0.0.0.0/0
TCP 3306 sg-webserver

 

Outbound Rules

Protocol Port Destination
All All 0.0.0.0/0

 

 

Inbound Rules

Protocol Port Source
TCP 443 0.0.0.0/0

 

Outbound Rules

Protocol Port Destination
TCP 8443 sg-0f004ca549513

 

 

 

운영환경을 위한 VPC 디자인

  • 원하는 수준의 가용성을 달성하기 위한 중복 구성
    (최소 2+ 가용영역)
  • 적절한 크기의 VPC 대역 확보 및 주소범위 중복 고려
  • 여분의 IP대역 확보
    (가용 영역 추가, 서브넷 분리 등)
  • 모든 리전 동일 대역을 쓰는 Default VPC 보다는 Custom VPC 활용 (중복대역 방지)

 

  • 보안성을 위해 인터넷 통신을 의도하지 않은 환경은 프라이빗 서브넷으로 분리
  • 프라이빗 서브넷 아웃바운드 통신용 NAT 게이트웨이 활용
  • NACL과 보안그룹으로 VPC 내 자원 액세스 제어

 

 

VPC 연결 - 기본

  • 인터넷 게이트웨으를 통한 연결
  • 퍼블릭 인터넷 구간을 통과하는 모델

 

 

VPC 연결 - VPC Peering

라우팅 테이블 1

Destination Target
10.0.0.0/16 local
192.168.0.1 VPX-123

 

라우팅 테이블 2

Destination Target
192.168.0.0/16 local
10.0.0.0/16 VPX-123

 

 

VPC 연결 - VPC Peering의 한계

VPC 1 ← Peering connection VPC 2 ← peering connection VPC 3

  • VPC 1 - VPC 2 간 통신 가능
  • VPC 1 - VPC 3 간 통신 불가
    (전이적 라우팅 불가)
  • 1:1 Peering 통신 구조
    n(n-1)/2 Peering

 

VPC 연결 - AWS Transit Gateway

  • 허브 앤 스포크 구조
  • DX, VPN과 같은 다양한 연결 옵션
  • TGW간 피어링 지원
  • 네이티브 고가용성

 

 

VPC 엔드포인트 타입

게이트웨이
엔드포인트
2015
인터페이스 엔드포인트
(PrivateLink)
2017
GWLB
엔드포인트
2020

 

 

 

게이트웨이 타입 vs 인터페이스 타입

  1. 지원하는 서비스 종류 : 2가지 vs 95+ 가지
  2. 동작 방식 : 라우팅 / DNS 방식
  3. VPN 또는 Direct Connect로 연결된 VPC 외부 네트워크를 고려한 확장성
  4. 비용* : 시간당 요금(0.01 USD/hour) + 데이터 처리 비용(0.01 USD/GB)
  5. 보안
    • 게이트웨이 타입 : 접근제어(NACL) 정책만 지원
    • 인터페이스 타입 : 접근제어(NACL) 정책 + 보안그룹 + 알람 설정 등

* use-east-1 region 인터페이스 엔드포인트 요금

 

 

AWS Security

AWS 제공 보안 도구

네트워크 보호

  • Amazon VPC (+WAF, Shield, NWFW)

 

데이터 보호

  • AWS KMS (+ACM)

 

접근 관리

  • AWS IAM

 

탐지 관리

  • AWS CloudTrail (+CloudWatch)

 

 

AWS Identity and Access Management (IAM)

누가 무엇을 접근할 수 있느냐
사용자, Role, 애플리케이션 AWS 리소스 권한

 

 

AWS IAM  - Identity & Access Management

  • AWS 서비스와 리소스에 대한 안전한 접근 통제
  • 리소스에 대해 사용자별/그룹별 권한 부여, 관리
  • 계정에서 누가 무엇을 할 수 있을지 관리
    • 사용자/그룹/권한/역할
    • 기본적으로 Deny 규칙
    • Allow된 사용자만 리소스에 접근 가능

 

 

AWS Identity Authentication

AWS 관리 콘솔

  • Username과 Password를 이용하여 로그인
  • 옵션으로 MFA를 사용하여 보안성 향상

 

API 사용 접근

  • Access Key와 Secret Key를 이용하여 API에 접근

 

 

AWS Authorization And Privileges

IAM Policies

  • 사용자 및 리소스 수준에서 정의된 권한
  • IAM 정책을 통해 권한 부여
  • JSON 형태로 구성

 

AWS IAM - IAM Policy

  • 정책(Policy) = Permission
    • "AWS의 리소스에 대하여 누가 어떤 Action을 수행할 수 있는가?"
    • 요청 시 평가
  • 자격 증명 기반 정책
    • 사용자/그룹/역할
  • 리소스 기반 정책
    • Amazon S3 Buckets/Amazon S3 Glacier/Amazon SNS Topics/Amazon SQS queues/VPC EndPoints/AWS Key Management Service enxryption keys...

 

 

Identity And Access Management - 정책

{
	"Statement":[{
	 "Effect":"effect",
	 "Principal":"principal",
	 "Action":"action",
	 "Resource":"arn",
	 "Condition":{
     	"condition":{
			 "key":"value" }
		 }
	}]
}
Effect - 명시된 정책에 대한 허용 혹은 차단
"Effect" : "Allow"
Principal - 접근 허용 혹은 차단하고자 하는 대상
"principal" : "AWS" : "arn:aws:iam::123456789012:user/username"
Action - 허용 혹은 차단하고자 하는 접근 타입
"action" : "secretsmanager:getSecret"
Resource - 요청의 목적지가 되는 서비스
"Resource" : "arn:aws:secretsmanager:us-east-2:111122223333:secret:pickles"
Condition - 명시된 조건, 유효하다고 판단될 수 있는 조건
"StringEquals" : {"aws:RequestTag/project" : "["Pickles"]}

 

아래 정책의 의미는?

 "Version": "2012-10-17",
 "Id": "S3PolicyId1",
 "Statement": [
 {
 	"Sid": "IPAllow",
	 "Effect": "Allow",
	 "Principal": "*",
	 "Action": "s3:*",
	 "Resource": "arn:aws:s3:::bucket/*",
	 "Condition" : {
	 "IpAddress" : {
		 "aws:SourceIp": "54.240.143.0/24"}
		 }
 	}]
 }
Effect : Allow / Deny
Principal : 리소스 접근 허용/거부 대상 (리소스 기반 정책)
Action : 허용되는 접근 타입
Resource : 요청을 받는 대상
Condition : 정책에서 권한을 부여하는 조건

→ S3 bucket에 대해 54.240.143.0/24에게 S3 접근/사용 인가

 

 

AWS Identity and Access Management (IAM)

보안 주체

사용자, Role,
애플리케이션
root user
  • 모든 권한
  • 계정 생성 후 사용하지 않을 것을 강력 권장
IAM user
  • 장기자격증명 (Access Key / Secret Key)
  • 주로 IAM Group으로 그룹화하여 관리
Role
  • 임시자격증명 (Access Key / Secret Key / Tocken)
  • 정의된 권한 범위 내 AWS API를 사용 가능
Application
  • 사용자 대신 권한을 수행하는 경우
  • Role을 이용하여 임시자격증명을 가지고 수행