IAM for Starters
IAM (Identity and Access Management) : AWS에서 제공하는 사용자 인증 및 권한 관리 서비스 ( 리소스에 대한 안전한 접근제어 )
(1) Identity = 보안주체( principle )
- Root user : 회원가입시 생성되는 기본유저( 이메일 접근 ) 탈취피해방지를 위해 초기설정 후 사용지양
Root User MFA설정, Password Policy 설정, 대체 연락처 설정, Admin User 생성 등 특정작업 제외한 모든 작업에서 사용제한 → IAM User를 사용할 것을 권장함 - IAM user : 부여된 권한만 행사가능한 사용자, 일대일매치
Root user로 생성 → 동료 및 팀원과 공유 생성된 자격( ID/PW )로 접근 & 그 내용은 불변으로 인증가능 ( 장기자격증명 ) = 고정된 자격증명 - IAM role : 이미 신원이 인증된 대상에 역할(role)에 맞는 자격을 제공 - 사용자와 일대다매치( 역할자 )
API요청으로 접속 ID/PW를 부여받는 토큰방식 = 접속마다 사용기한마다 재발급 ( 임시자격증명 ) - AWS service : 사용자대신 작업을 수행하는 서비스 → 권한이 있어야함, 서비스에 IAM user, IAM role을 부여가능
(2) Access Management = 접근정책( policy )
JSON문서( 정책문서 )를 기반으로 사용 주체의 권한을 관리
주체, 대상, 행위, 허용여부를 기록
[ IAM의 동작구조 ]
- IAM User : user의 매핑권한에 맞춰서만 작업가능
- Service : IAM Role을 부여받아서 작업, role의 매핑권한에 맞춰서만 작업가능
[ IAM 실습 ]
- 사용자 생성 ( lab-edu-iam-user-22 )
AWS Management Console에 대한 사용자 엑세스 권한 제공
aws console(웹 인터페이스)에 접근할 수 있는 설정, 해제시 access key와 secret key로만 접속가능
- 권한설정
AdministratorAccess = 루트유저에 가까운 권한을 부여
이로써 IAM user가 내가 로그인한 계정( root user )에서 생성한 모든 리소스에 대해 권한을 가지게 할 수 있음
이름 : lab-edu-iam-user-22
ID : 307946651307
PASS : rudals22!
https://aws.amazon.com/ko 에서 로그인
AdministratorAccess 권한을 삭제하면 리소스 정보 확인시 권한이 없기 때문에 API 오류 발생
[ Access key & Secret key 생성 및 사용 ]
Windows AWS CLI 설치 : 쉘 커맨드를 사용하여 AWS 서비스와 상호 작용할 수 있는 도구
ReadOnlyAccess 권한 할당
사용자 → 보안자격증명 →액세스 키 만들기 → Command Line Interface(CLI) : AWS CLI를 사용하여 AWS 계정에 액세스할 수 있도록 이 액세스 키를 사용
Access key & Secret key 생성 ( 보안자격 증명 → 액세스키 만들기 → CLI → Access key & Secret key 메모장에 저장 )
※ 해당 페이지 이탈 후 다시 확인이 불가능하기 때문에 별도 저장 필요
설정정보 입력 ( aws configure ) → 적용여부 확인 ( aws sts get-caller-identity )
할당권한테스트 : table조회가능 & IAM user생성 불가능
Network Baseline
[ Network Design Fundamentals ]
VPC 생성은 반드시 CIDR방식으로 이루어지며 내부 네트워크는 Private IP Address Range 범위에서 설계된다.
- 쪼개기 ( segmentation ) : 네트워크간 격리를 통한 보호, CIDR-Subnetting을 통한 분할 → public & private, internet & internal, prod & stg & dev 별로 다르게 설정
- 연결하기 ( connectivity )
- IGW( internet gateway ), Elastic IP를 통한 외부연결( public subnet ), NAT GW를 통한 외부연결( private subnet의 outbound처리 )
- 온프레미스와의 연결 : Site-to-Site VPN( 온프레미스 데이터센터와 AWS VPC간 연결 ), Direct Connect( 온프레미스 데이터센터와 AWS간 물리연결 )
*VPN( 물리적으로 연결되지 않은 두 네트워크를 논리적으로 연결하여 동일한 네트워크에 있는것처럼 작동시킴 ) : SSL VPN( 애플리케이션 간 VPC연결 ) - VPC간 통신 : Transit GW( 여러 VPC 연결허브 ), VPC peering( VPC간 직접적인 네트워크 연결 ), VPC endpoint( VPC에서 AWS서비스에 접근가능한 경로 )
- 보호하기 ( security ) : 보안그룹( SG ), 네크워크 ACL, WAF, GWLB
[ Internet Protocol Address & Classless Inter-Domain Routing ]
IP주소는 인터넷에 연결된 장치를 식별가능하게 해주는 고유주소
CIDR (Classless Inter-Domain Routing)을 이용하면 Classful 할당방식보다 IP주소를 더욱 효율적으로 사용가능 ( 네크워크 주소 + 호스트 주소로 구분 )
[ RFC1918–StandardPrivate IP Address ]
RFC 1918문서에서는 Private IP Address Range( 내부 IP주소 범위 )를 표준으로 지정한다. ⇒ 이는 외부 인터넷에서 사용되지 않는 IP 주소로 외부 네트워크와의 통신시에 충돌이 발생하지 않게 된다.
VPC 내부에서는 외부와의 연결이 없는 상태라면 Public IP를 사용해도 문제가 없습니다. 그러나 대부분의 VPC는 외부 네트워크와 통신해야 하므로, Public IP를 사용할 경우 라우팅 충돌 및 NAT 변환 문제가 발생할 가능성이 높습니다.
→ 이를 방지하기 위해 RFC 1918에서 정의한 Private IP 주소를 사용하는 것이 표준적이고 안전한 방법입니다.
예 : VPC 내부에서 203.0.113.0/24 (Public IP 범위)를 사용했는데, 이 IP가 실제 인터넷 상의 특정 서비스에 할당되어 있다면, 외부와 통신 시 충돌이 발생합니다.
[ Usable IP Address Range in AWS VPC per CIDR ]
VPC내부 네트워크 설계시 AWS에 의해 예약된 주소( reserved IP )를 제외하면 나머지는 자유롭게 이용가능하다.
- Default Network Reserved Host IP
- x.x.x.0 : Network Address ( 네트워크 대표주소 = 서브넷 식별 )
- x.x.x.255 : Broadcast Address ( 모든 내부 네트워크 대상 브로드캐스트 주소 )
- AWS Reserved Host IP
- x.x.x.1 : VPC Router = VPC 라우터 IP
- x.x.x.2 : DNS server IP = DNS 서버 IP
- x.x.x.3 : Future User = 미래 확장을 위한 예약주소
CIDR을 설정하면 reserved IP가 정해지고, 이외에 할당가능한 IP 개수가 나옴 ( 사용가능한 IP주소 - 5 )
Virtual Private Cloud
외부 환경, 네트워크와 격리된 가상의 사설 네트워크( IGW, NAT GW를 사용하지 않으면 외부와 단절 )
- CIDR단위로 IP대역을 할당하여 구성
- CIDR Block : 최소 /28 ~ 최대 /16 범위에서 IP 대역을 지정
- 한번 설정한 VPC CIDR 대역은 수정 불가능
- Primary CIDR Block의 주소범위를 모두 사용하면 Secondary CIDR Block을 구축하여 확장가능
- AWS가 제공하는 VPC는 기본적으로 5개의 서브넷을 포함 ( Default VPC : public subnet, IGW, 라우팅 테이블을 갖춤, public IP주소 할당, 각 서로 다른 AZ에 배치됨 )
- Region에 종속된 리소스 : 소속 Region지정시 그 내부에서만 활용가능, 복수 Region에 걸쳐 확장 및 연결 불가
- VPC의 리소스( 서브넷, 보안그룹 등 )는 모두 Region내에서만 유효
- VPC Peering : 여러 VPC를 연결, 같은 Region에 있는 VPC끼리만 연결가능
Subnet
VPC네트워크 내부에 세분화한 네트워크, VPC CIDR Block IP를 더 작은 네트워크 단위로 분할
- AZ( 가용영역 )에 종속된 리소스 : 특정 AZ에 배치되며 여러 AZ에 걸쳐 서브넷 확장 생성 불가능
- Zone awareness : 같은 VPC 내의 서브넷들이 다른 AZ에 있더라도 서로 자동으로 통신할 수 있도록 보장 ( 같은 VPC내에서 서브넷간 local로 트래픽을 처리 )
- Routing Table 리소스에 따라 Public & Private subnet으로 구분
- Public Subnet : 외부(인터넷망)에서 접근가능한 네트워크
Internet Gateway : 서브넷에 연결된 장치=리소스마다 통신가능한 Public IP를 할당, VPC단위에 하나만 설정가능 - Private Subente : 외부(인터넷망)에서 접근불가능, 내부통신만 가능한 네트워크
NAT Gateway : 내부 리소스가 외부로 통신하는 트래픽만 허용( out boud ), 서브넷 단위에 여러개 할당가능
** AWS는 가용영역내에서 서비스 트래픽은 무료이기에 AZ에 여러개의 NAT게이트웨이를 구축하여 부하분산, 인터넷을 사용하며 트래픽요금을 줄이기도 함( coupang )
- Public Subnet : 외부(인터넷망)에서 접근가능한 네트워크
Routing Table
Routing Table은 여러 Subnet에 적용가능, 하나의 Subnet에는 하나의 Routing Table만 등록됨
같은 VPC 내에서의 트래픽은 AZ에 관계없이 로컬로 간주되며, 라우팅 테이블에서 이를 local로 처리 ( zone awareness )
(1) Internet Gateway & Public Routing Table
- Internet Gateway는 1개의 VPC에 1개 할당가능
- Public Routing Table : Internet Gateway 정보가 등록된 라우팅 테이블
- Public Subnet : Public Routing Table이 할당된 서브넷
(2) Nat Gateway & Private Routing Table
- Priave Subnet 내부 리소스들은 Nat Gateway의 Public IP를 공유하여 인터넷 이용
- Private Routing Table : Nat Gateway 정보가 등록된 라우팅 테이블 ( IGW, NAT 모두 등록되지않은 경우에도 )
- Private Subnet : Private Routing Table이 할당된 서브넷
Public IP
인터넷과 직접통신이 가능한 주소 = 공인 IP주소
- 기본적으로 동적 Public IP로 동작
AWS에서는 동적 Public IP를 재사용 가능한 리소스로 관리 → 인스턴스가 종료되면 할당이 해제되며, 해당 퍼블릭 IP는 다른 인스턴스에 재할당 - Elastic IP를 통해 고정 가능 : Elastic IP(EIP)를 할당하여 Public IP를 고정, 인스턴스가 종료되더라도 IP가 유지
- Public Subnet과 Public IP의 관계 퍼블릭 서브넷은 서브넷 자체에 퍼블릭 IP를 보유하지 않음 퍼블릭 서브넷에 속한 개별 리소스들은 고유한 Public IP를 개별적으로 할당 ( 서브넷은 리소스가 퍼블릭 IP를 받을 수 있는 환경을 제공 )
- NAT Gateway와의 차이점 NAT Gateway는 프라이빗 서브넷의 리소스들이 외부와 통신할 때 NAT Gateway의 퍼블릭 IP를 공유
[ 네트워크 환경구성 실습 ]
네트워크 자원 명세서
[ VPC 생성 ]
[ 서브넷 생성 ]
4개 연속생성
Public subnet의 추가설정
Subnet 리소스 탭 → subnet 선택 → 작업 → 서브넷 설정 → 퍼블릭 IPv4 주소 지정 할당 활성화 → 저장
[ Routing Table 생성 ]
라우팅 테이블 연결
라우팅 테이블 리소스 탭 → rtb-name 선택 → 서브넷 연결 탭 선택 (화면 하단) → 서브넷 연결 편집 버튼 클릭
[ 인터넷 게이트 웨이( IGW ) ]
IGW 생성 → VPC에 연결 → public routing table에 경로추가
rtb-name선택 → 라우팅 탭 클릭(화면 하단) → 라우팅 편집 버튼 클릭
라우팅추가 : 0.0.0.0/0 대상, internet gateway대상 → igw-name선택
[ NAT Gateway ]
NAT게이트웨이 생성, 반드시 public 서브넷 위에 설치함
public서브넷 위에 설치 & NAT게이트웨이에 탄력적 IP할당하도록 설정
라우팅 테이블에 적용
일반적으로 부하 분산과 가용성을 위해 서브넷별로 NAT Gateway를 생성하고 라우팅테이블에 적용
( Public 서브넷: 대부분의 경우 하나의 라우팅 테이블을 여러 Public 서브넷이 공유 / Private 서브넷: 부하 분산 및 가용성을 위해 서브넷별로 라우팅 테이블과 NAT Gateway를 따로 구성 )
rtb-name선택 → 라우팅 탭 클릭(화면 하단) → 라우팅 편집 버튼 클릭
라우팅추가 : 0.0.0.0/0 대상, NAT gateway대상 → ngw-name선택
⇒ 이때 NAT Gateway 경로를 lab-edu-rtb-pri-01 에만 추가해서 의도적으로 lab-edu-rtb-pri-02에서는 인터넷 연결이 되지 않는 환경을 구성
** NAT 게이트웨이 생성 시에는 VPC에 인터넷 게이트웨이(IGW)를 미리 연결해 놓아야 함 ( 순서중요 )
'CLOUDWAVE' 카테고리의 다른 글
Public Cloud(AWS) : Computing service - ELB, Auto Scaling (0) | 2025.01.21 |
---|---|
Public Cloud(AWS) : Network Security - NACL, Security Group / Computing Service - EC2, AMI, Public IP & Elastic IP, User Data (0) | 2025.01.21 |
Public Cloud(AWS) : Cloud Fundamental ( 25.01.15 ) (0) | 2025.01.21 |
Docker 정리 (0) | 2025.01.16 |
Kubernetes Advance : Deploy, Service(Network), Volume(disk) ( 25.01.13 ) (1) | 2025.01.16 |