VPC 개요
카카오클라우드 Virtual Private Cloud(VPC) 는 논리적으로 격리된 가상의 네트워크 공간을 제공합니다. 가상 네트워크 환경에서 카카오클라우드의 리소스를 유연하게 운영할 수 있습니다. 사용자는 자체적으로 VPC를 구성하고 서브넷을 생성하여 리소스를 그룹화하면서, 필요에 따라 IP 주소를 세분화하여 네트워크를 유연하게 구성할 수 있습니다. 또한, 보안 그룹을 활용하여 네트워크 트래픽을 제어하고 추가적인 보안 기능을 활용할 수 있습니다.
사용 목적 및 사례
온프레미스의 물리 네트워크 환경을 대체
VPC는 온프레미스(On-premise: 기업 자체 전산실 또는 서버실 환경)의 네트워크를 대체합니다. 온프레미스 환경의 네트워크 구성 시 라우터 및 스위치 등의 네트워크 장비와 서버를 직접 구성 및 설치해야 합니다. 이는 장비 발주부터 상면, 회선 임대 등 많은 시간을 소요하게 합니다. 또한, 최초 구성한 네트워크를 변경하는데 많은 인력과 시간이 투입됩니다. VPC는 이러한 불편함을 해결합니다.
VPC를 사용하면 네트워크 가상화 기술을 기반으로 손쉽게 네트워크를 생성하고 제어할 수 있습니다. 콘솔에서 몇 번의 마우스와 키보드 조작만으로 수 초 이내에 온프레미스 환경에서 직접 네트워크 장비를 구성하는 것과 동일한 환경을 구성할 수 있습니다.
퍼블릭 서브넷과 프라이빗 서브넷의 활용
용도와 목적에 따라 네트워크를 여러 개의 서브넷으로 분리하여 사용할 수 있습니다. 대표적으로 웹 서버와 같이 외부에 공개되어야 하는 서버가 배포되는 퍼블릭 서브넷, 데이터베이스와 같이 외부와의 연결이 최소화되어야 하는 서버가 배포되는 프라이빗 서브넷으로 나누어 구성할 수 있으며, 이는 온프레미스 환경에서 Demilitarized Zone(DMZ)와 Private Zone을 구성하는 것과 유사합니다.
멀티/하이브리드 클라우드 구성
사용자의 네트워크와 외부의 네트워크를 마치 하나의 네트워크처럼 연결해 사용할 수 있습니다. VPN 또는 전용선을 통한 온프레미스 환경과의 하이브리드 구성, 온프레미스 환경을 IDC(Internet Data Center)로 이전하는 코로케이션(Collocation) 기반 하이브리드 구성, 타 클라우드와의 멀티 클라우드 구성이 용이합니다.
특징
논리적으로 완벽하게 격리된 환경
- VPC로 구현되는 가상 네트워크는 논리적으로 격리된 환경을 제공
- 자체 IDC(Internet Data Center)를 소유한 것처럼 외부의 간섭 없이 네트워크를 자유롭게 구성
- 네트워크에 배포된 서버는 퍼블릭 IP를 연결해 명시적으로 공개하거나 전용선, VPN 등으로 연결된 경우를 제외하면 완전히 분리된 환경 제공
가상 서버 배포 환경
- Virtual Machine의 인스턴스, Kubernetes Engine의 워커 노드와 같은 가상 서버가 배포되는 환경으로 사용
- 네트워크에 배포된 서버는 네트워크 내에서 고유한 값인 프라이빗 IP를 할당받아 네트워크 내 다른 서버 또는 네트워크 컴포넌트와 통신하는 데 사용
라우팅 설정을 통한 트래픽 제어
- 라우팅 설정을 통해 각 서브넷에 배포된 서버의 트래픽 설정 가능
- 네트워크 내부 통신, 공인망으로 전송, VPN 및 전용선을 경유한 온프레미스 환경으로의 전송 등 사용자의 네트워크 내 트래픽을 제어
보안 그룹 기반 네트워크 보안 설정
- 보안 그룹을 사용해 네트워크에 배포된 서버의 보안을 강화
- 입력된 정책에 대해서만 트래픽을 허용하는 화이트 리스트(Whitelist) 방식으로 작동
- 허용된 정책에 대해서는 별다른 설정 없이 응답을 허용하는 상태 관리 방식(Stateful)으로 제공
외부 인터넷망을 통한 접근
- 고유한 IP 주소를 가진 퍼블릭 IP를 제공
- 외부 인터넷망에서 퍼블릭 IP를 통해 사용 중인 리소스로 직접 접근
글로벌 표준에 기반한 IaC(Infrastructure as a Code) 도구 활용
- 카카오클라우드의 BNS는 사용자가 API로 직접 모든 리소스를 컨트롤할 수 있는 글로벌 표준을 지향
- 사용자는 테라폼 등의 IaC(Infrastructure as Code) 도구를 활용해 VPC의 네트워크 리소스를 코드로 정의
VPC IP CIDR 블록
카카오클라우드 VPC는 IPv4 주소를 지원합니다. VPC를 생성할 때 VPC의 IPv4 주소 범위를 Classless Inter-Domain Routing(CIDR) 블록 형태로 지정해야 합니다. 허용된 블록 크기는 /16 넷마스크부터 /24 넷마스크입니다. VPC를 생성하는 경우, 다음과 같이 RFC 1918 규격에 따라 Private IP 주소 범위에 속하는 CIDR 블록을 지정해야 합니다. IP 주소에 대한 자세한 설명은 IP 주소 범위 문서를 참고하시기 바랍니다.
- 생성된 VPC 내에 실제로 할당될 수 있는 IP 주소의 수는 서브넷의 수 및 각 서브넷의 CIDR 블록 크기에 따라 달라집니다.
VPC에 CIDR 블록을 설정할 경우 다음 규칙이 적용됩니다.
- 허용된 블록 크기는 /16 ~ /24 넷마스크입니다.
- VPC에 CIDR 블록은 1개 설정할 수 있습니다.
- 이미 생성된 VPC의 CIDR 정보는 수정할 수 없습니다.
RFC 1918 범위 | CIDR 블록의 예 |
---|---|
10.0.0.0 - 10.255.255.255 (10.0.0.0/8) | 10.0.0.0/16 |
172.16.0.0 - 172.31.255.255 (172.16.0.0/12) | 172.31.0.0/16 |
192.168.0.0 - 192.168.255.255 (192.168.0.0/16) | 192.168.0.0/24 |
- VPC를 생성할 경우, 위의 RFC 1918 규격에 따라 프라이빗 IP 주소 범위에 속하는 CIDR 블록을 지정하는 것을 권장합니다.
다음 라우팅 테이블은 VPC의 로컬 경로를 보여줍니다.
도착지 | 대상 |
---|---|
10.0.0.0/16 | local |
기본 VPC
카카오클라우드에서 생성되는 모든 VPC는 기본 VPC 상태로 생성됩니다. VPC 생성 시에는 기본 서브넷, 연결된 인터넷 게이트웨이, 모든 트래픽을 인터넷 게이트웨이로 보내는 기본 라우팅 테이블의 라우팅까지 함께 생성됩니다. 가용 영역에 생성된 기본 서브넷에 BCS 인스턴스를 생성하고 퍼블릭 IP까지 연결하면 바로 인터넷에 액세스할 수 있습니다.
-
VPC: VPC를 온프레미스 환경이나 다른 VPC 등에 연결하려면 VPC CIDR 블록이 중복되지 않아야 합니다. 중복된 VPC CIDR 블록 간의 통신은 어려우므로 IPv4 CIDR 블록을 신중하게 설정합니다.
-
가용 영역(Availability Zone): 서브넷을 생성할 가용 영역을 선택합니다. 가용 영역은 물리적으로 격리된 하나 이상의 데이터 센터로 단일 데이터 센터에서 가능한 것보다 더 높은 가용성, 내결함성 및 확장성을 갖춘 프로덕션 애플리케이션 및 데이터베이스를 운영할 수 있는 기능을 제공합니다. 애플리케이션을 각기 다른 AZ에 분할하여 운영하면 정전, 낙뢰, 토네이도, 지진 등의 문제가 발생하더라도 서비스 연속성을 유지할 수 있습니다.
-
퍼블릭 서브넷: 연결된 라우팅 테이블에 인터넷 게이트웨이를 가리키는 라우팅이 설정된 서브넷을 의미합니다. 이렇게 하면 서브넷에서 실행되는 BCS 인스턴스가 인터넷을 통해 공개적으로 액세스할 수 있습니다.
-
프라이빗 서브넷: 연결된 라우팅 테이블에 인터넷 게이트웨이를 가리키는 라우팅이 없는 서브넷을 의미합니다. 프라이빗 서브넷을 사용하여 인터넷을 통해 공개적으로 액세스할 필요가 없는 백엔드 리소스를 보호합니다.
-
서브넷 CIDR 블록: 퍼블릭 및 프라이빗 서브넷에 대한 CIDR 블록을 설정합니다.
IAM 역할 관리
VPC의 역할 관리는 IAM 역할 기반 액세스 제어(RBAC)를 따릅니다.
- kr-central-1
- kr-central-2
- VPC, 서브넷, 라우팅 테이블은 각 관리 메뉴에서 조직관리자/조직 소유자만 생성/관리할 수 있습니다.
- 조직 단위의 일부 리소스는 다른 프로젝트에서 공유된 형태로 관리될 수 있습니다.
- 각 사용자 권한마다 만들기/조회/설정/삭제 기능을 제공 또는 미제공합니다. 해당 기능에 권한이 없으면 관련 버튼이나 화면은 제공되지 않습니다.
VPC
프로젝트 관리자(Admin), 프로젝트 멤버(Member), 프로젝트 리더(Reader)는 VPC 조회만 가능합니다. VPC 생성 및 제어를 원하는 경우, 조직 레벨 관리자에게 요청하시기 바랍니다.
구분 | 프로젝트 관리자(Admin) | 프로젝트 멤버(Member) | 프로젝트 리더(Reader) |
---|---|---|---|
VPC 생성 | |||
VPC 조회 | ✓ | ✓ | ✓ |
VPC 설정 | |||
VPC 삭제 |
서브넷
프로젝트 관리자(Admin), 프로젝트 멤버(Member), 프로젝트 리더(Reader)는 서브넷 조회만 가능합니다. 서브넷 생성 및 제어를 원하는 경우, 조직 레벨 관리자에게 요청하시기 바랍니다.
구분 | 프로젝트 관리자(Admin) | 프로젝트 멤버(Member) | 프로젝트 리더(Reader) |
---|---|---|---|
서브넷 생성 | |||
서브넷 조회 | ✓ | ✓ | ✓ |
서브넷 설정 | |||
서브넷 삭제 |
라우팅 테이블
프로젝트 관리자(Admin), 프로젝트 멤버(Member), 프로젝트 리더(Reader)는 라우팅 테이블 조회만 가능합니다. 라우팅 테이블 생성 및 제어를 원하는 경우, 조직 레벨 관리자에게 요청하시기 바랍니다.
구분 | 프로젝트 관리자(Admin) | 프로젝트 멤버(Member) | 프로젝트 리더(Reader) |
---|---|---|---|
라우팅 테이블 만들기 | |||
라우팅 테이블 조회 | ✓ | ✓ | ✓ |
라우팅 테이블 설정 | |||
라우팅 테이블 삭제 |
보안 그룹
보안 그룹은 권한 상관없이 모든 사용자가 보안 그룹 생성 및 제어가 가능합니다.
구분 | 프로젝트 관리자(Admin) | 프로젝트 멤버(Member) | 프로젝트 리더(Reader) |
---|---|---|---|
보안 그룹 생성 | ✓ | ✓ | |
보안 그룹 조회 | ✓ | ✓ | ✓ |
보안 그룹 정책 변경 | ✓ | ✓ | |
보안 그룹 복사 | ✓ | ✓ | |
보안 그룹 삭제 | ✓ | ✓ |
퍼블릭 IP
프로젝트 멤버(Member)와 프로젝트 리더(Reader)는 퍼블릭 IP 목록에 접근할 수 없으며, 퍼블릭 IP에 연결된 리소스에 접근 권한이 있는 경우, 해당 리소스의 상세 페이지에서 연결된 퍼블릭 IP를 확인할 수 있습니다. 프로젝트 관리자(Admin)만 접근 및 제어가 가능합니다.
구분 | 프로젝트 관리자(Admin) | 프로젝트 멤버(Member) | 프로젝트 리더(Reader) |
---|---|---|---|
퍼블릭 IP 생성 | ✓ | ||
퍼블릭 IP 조회 | ✓ | ||
퍼블릭 IP 연결 | ✓ | ||
퍼블릭 IP 연결 해제 | ✓ | ||
퍼블릭 IP 삭제 | ✓ |
- VPC, 서브넷, 라우팅 테이블은 프로젝트 관리자만 생성/관리할 수 있습니다.
- 각 사용자 권한마다 만들기/조회/설정/삭제 기능을 제공 또는 미제공합니다. 해당 기능에 권한이 없으면 관련 버튼이나 화면은 제공되지 않습니다.
VPC
프로젝트 관리자(Admin)는 VPC 생성 및 관리가 가능하고, 프로젝트 멤버(Member)와 프로젝트 리더(Reader)는 라우팅 테이블 조회만 가능합니다.
구분 | 프로젝트 관리자(Admin) | 프로젝트 멤버(Member) | 프로젝트 리더(Reader) |
---|---|---|---|
VPC 생성 | ✓ | ||
VPC 조회 | ✓ | ✓ | ✓ |
VPC 설정 | ✓ | ||
VPC 삭제 | ✓ |
서브넷
프로젝트 관리자(Admin)는 서브넷 생성 및 관리가 가능하고, 프로젝트 멤버(Member)와 프로젝트 리더(Reader)는 서브넷 조회만 가능합니다.
구분 | 프로젝트 관리자(Admin) | 프로젝트 멤버(Member) | 프로젝트 리더(Reader) |
---|---|---|---|
서브넷 생성 | ✓ | ||
서브넷 조회 | ✓ | ✓ | ✓ |
서브넷 설정 | ✓ | ||
서브넷 삭제 | ✓ | ||
서브넷 공유 | ✓ |
라우팅 테이블
프로젝트 관리자(Admin)는 라우팅 테이블 생성 및 관리가 가능하고, 프로젝트 멤버(Member)와 프로젝트 리더(Reader)는 라우팅 테이블 조회만 가능합니다.
구분 | 프로젝트 관리자(Admin) | 프로젝트 멤버(Member) | 프로젝트 리더(Reader) |
---|---|---|---|
라우팅 테이블 만들기 | ✓ | ||
라우팅 테이블 조회 | ✓ | ✓ | ✓ |
라우팅 테이블 설정 | ✓ | ||
라우팅 테이블 삭제 | ✓ |
보안 그룹
프로젝트 관리자(Admin)와 프로젝트 멤버(Member)는 보안 그룹 생성 및 관리가 가능합니다.
구분 | 프로젝트 관리자(Admin) | 프로젝트 멤버(Member) | 프로젝트 리더(Reader) |
---|---|---|---|
보안 그룹 생성 | ✓ | ✓ | |
보안 그룹 조회 | ✓ | ✓ | ✓ |
보안 그룹 정책 변경 | ✓ | ✓ | |
보안 그룹 복사 | ✓ | ✓ | |
보안 그룹 삭제 | ✓ | ✓ |
퍼블릭 IP
프로젝트 멤버(Member)와 프로젝트 리더(Reader)는 퍼블릭 IP 목록에 접근할 수 없으며, 퍼블릭 IP에 연결된 리소스에 접근 권한이 있는 경우, 해당 리소스의 상세 페이지에서 연결된 퍼블릭 IP를 확인할 수 있습니다. 프로젝트 관리자(Admin)만 접근 및 제어가 가능합니다.
구분 | 프로젝트 관리자(Admin) | 프로젝트 멤버(Member) | 프로젝트 리더(Reader) |
---|---|---|---|
퍼블릭 IP 생성 | ✓ | ||
퍼블릭 IP 조회 | ✓ | ||
퍼블릭 IP 연결 | ✓ | ||
퍼블릭 IP 연결 해제 | ✓ | ||
퍼블릭 IP 삭제 | ✓ |
프로젝트에 프로젝트 멤버 또는 관리자를 추가 및 제외하여 프로젝트 내 네트워크 및 리소스에 대한 접근 권한을 관리할 수 있습니다. 프로젝트 멤버 관리에 대한 자세한 설명은 프로젝트 레벨 역할 관리를 참고하시기 바랍니다.
시작하기
VPC에 대한 자세한 사용 가이드는 How-to Guides에서 설명합니다. 카카오클라우드를 처음 시작하신다면 카카오클라우드 시작하기를 참고하시기 바랍니다.