2023. 12. 14. 16:01ㆍ클라우드/AWS
12월 AWS Enablement (12/14)
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) | 보안 그룹 |
|
|
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 인터페이스 타입
- 지원하는 서비스 종류 : 2가지 vs 95+ 가지
- 동작 방식 : 라우팅 / DNS 방식
- VPN 또는 Direct Connect로 연결된 VPC 외부 네트워크를 고려한 확장성
- 비용* : 시간당 요금(0.01 USD/hour) + 데이터 처리 비용(0.01 USD/GB)
- 보안
- 게이트웨이 타입 : 접근제어(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 |
|
|
Role |
|
|
Application |
|
'클라우드 > AWS' 카테고리의 다른 글
Web Application - Build Web Application Hands-On (0) | 2023.12.22 |
---|---|
AWS Core Services - AWS Storage (0) | 2023.12.14 |
AWS Core Services - AWS Database (0) | 2023.12.14 |
AWS Core Services - AWS Computing (0) | 2023.12.14 |
AWS Core Services - AWS Cloud Introduction (0) | 2023.12.14 |