보안 그룹
카카오클라우드 보안 그룹은 가상의 방화벽과 같이 동작하여 송수신되는 트래픽을 인스턴스 레벨에서 제어할 수 있게 하는 기능입니다. 인스턴스를 생성할 때 자동 생성되는 기본 네트워크 인터페이스에 보안 그룹을 설정할 수 있으며, 추가적으로 연결되는 네트워크 인터페이스 별로도 설정이 가능합니다. 베어 메탈 인스턴스 유형을 제외한 모든 인스턴스 유형에서는 네트워크 인터페이스별로 반드시 1개 이상의 보안 그룹을 설정해야 합니다. 보안 그룹은 크게 인바운드 규칙 및 아웃바운드 규칙으로 구분되며, 각각의 규칙을 설정하여 트래픽을 제어할 수 있습니다. 규칙은 프로토콜, 출발지 또는 목적지 주소의 CIDR 범위, 포트 번호로 구성되며, 사용자의 보안 요구 사항에 맞춰 적절한 보안 그룹 규칙이 설정되어야 합니다.
보안 그룹 작동 방식
보안 그룹의 작동 방식은 다음과 같습니다.
작동 방식 | 설명 |
---|---|
화이트리스트 기반 | 보안 그룹은 기본적으로 규칙에 설정되지 않은 모든 트래픽을 거부(Deny)하며 별도의 거부 규칙을 설정할 수 없습니다. 명시적으로 설정된 규칙을 허용(Allow)하는 형태로 작동합니다. |
상태 관리 | 보안 그룹은 상태 저장형(Stateful)으로 작동됩니다. 즉, 요청(Request) 패킷에 대한 응답(Response) 트래픽은 규칙 설정과 무관하게 자동으로 허용되며, 반대의 경우도 마찬가지로 자동으로 허용됩니다. |
다중 인스턴스/네트워크 인터페이스 연결 지원 | 하나의 보안 그룹을 여러 개의 인스턴스 및 네트워크 인터페이스에 적용할 수 있습니다. |
다중 보안 그룹 연결 지원 | 다수의 보안 그룹을 하나의 인스턴스 또는 네트워크 인터페이스에 적용할 수 있습니다. |
다중 보안 그룹 복사 기능 지원 | 하나의 보안 그룹을 복사하여 동일한 인바운드및 아웃바운드 규칙을 가진 여러 개의 보안 그룹을 빠르게 여러 개 생성할 수 있습니다. |
보안 그룹 기본 사항
- 보안 그룹은 화이트리스트 방식으로 동작하며, 규칙에 정의되지 않은 모든 트래픽은 기본적으로 거부됩니다.
- 보안 그룹은 상태 저장 방식으로 동작합니다.
- 보안 그룹의 규칙을 추가, 삭제, 갱신할 경우, 이 변경 사항은 연결되어 있는 모든 리소스에 자동으로 적용됩니다. 단, 기존 연결에 대한 시간이 초과될 때까지 패킷이 허용된 이후 반영됩니다.
- 프로젝트당 생성할 수 있는 보안 그룹의 개수, 각 보안 그룹에 설정 가능한 규칙의 개수 등에는 할당량(Quota) 제한이 있습니다. 자세한 설명은 서비스 요금 및 쿼터 문서를 참고해 주세요.
보안 그룹 규칙
보안 그룹의 규칙은 크게 인바운드 규칙과 아웃바운드 규칙으로 구분됩니다. 보안 그룹이 연결된 리소스로 들어오는 트래픽에 대한 규칙 정의는 인바운드 규칙에서, 이 리소스로부터 외부로 나가는 트래픽에 대한 규칙 정의는 아웃바운드 규칙에서 설정할 수 있습니다. 각 규칙은 아래의 항목들로 구성됩니다.
항목 | 설명 |
---|---|
프로토콜 | 규칙을 적용할 프로토콜 - TCP , UDP , ICMP , ALL |
출발지(Source) 또는 목적지(Destination) | 규칙을 적용할 패킷의 출발지 또는 목적지 IP 주소의 CIDR 범위 정보 - 인바운드: 출발지 - 아웃바운드: 목적지 |
포트 번호 | 규칙을 적용할 포트 |
규칙 설명 | 규칙에 대한 설명 |
보안 그룹 규칙 예시
보안 그룹에 추가하는 규칙은 일반적으로 보안 그룹의 목적에 맞춰 정의됩니다. 다음 표에서는 웹 서버와 연결된 보안 그룹의 규칙 예를 설명합니다. 웹 서버는 HTTP 및 HTTPS 트래픽을 수신하고, SQL 또는 MySQL 트래픽을 데이터베이스 서버에 전송할 수 있습니다.
인바운드 규칙
프로토콜 | 출발지 | 포트 번호 | 설명 |
---|---|---|---|
TCP | 0.0.0.0/0 | 80 | 모든 HTTP 접근 허용 |
TCP | 0.0.0.0/0 | 443 | 모든 HTTPS 접근 허용 |
TCP | 웹 서버에 연결된 퍼블릭 IP CIDR 범위 | 22 | 이 웹 서버 인스턴스에 연결된 퍼블릭 IP 주소로 SSH 접근 허용 |
TCP | 웹 서버에 연결된 퍼블릭 IP CIDR 범위 | 3389 | 이 웹 서버 인스턴스에 연결된 퍼블릭 IP 주소로 RDP 접근 허용 |
HTTP 및 HTTPS 통신은 네트워크 계층에서 TCP를 사용하므로 보안 그룹 규칙을 설정 시, 이 프로토콜을 허용해야 합니다. 또한 각각 80번, 443번 포트를 사용하므로 이를 각 규칙 별로 추가해야 합니다. 또한 웹 서버의 운영체제에 따라 22번 포트(SSH) 또는 3389번 포트(RDP)의 접근이 허용되어야 웹 서버에 직접 접근 및 연결할 수 있습니다.
아웃바운드 규칙
프로토콜 | 목적지 | 포트 번호 | 설명 |
---|---|---|---|
TCP | SQL 데이터베이스 서버의 IP CIDR 범위 | 1433 | Microsoft SQL 서버의 접근 허용 |
TCP | MySQL 데이터베이스 서버의 IP CIDR 범위 | 3306 | MySQL 서버의 접근 허용 |
웹 서버로부터 SQL, MySQL 데이터베이스 서버로 접근이 가능해야 하므로 아웃바운드 규칙에 이를 허용하는 규칙을 추가합니다.
- 오류 위험을 줄이려면 생성한 보안 그룹 수를 최소화하세요. 각 보안 그룹을 사용하여 보안 요구 사항이 유사한 리소스에 대한 접근 권한을 관리합니다.
- BCS 인스턴스에 접근할 수 있도록 포트 22(SSH) 또는 3389(RDP)에 대한 인바운드 규칙을 추가하는 경우, 특정 IP 주소 범위만 권한을 부여해야 합니다.
- 큰 포트 범위를 열지 마세요. 각 포트를 통한 접근 권한이 해당 포트를 필요로 하는 출발지 또는 목적지로 제한되도록 설정하세요.
기본 보안 그룹
모든 프로젝트에는 보안 그룹의 이름이 default
인 기본 보안 그룹이 자동으로 생성되며, 다음의 인바운드 규칙과 아웃바운드 규칙이 설정됩니다.
기본 보안 그룹은 필요에 맞춰 수정하여 사용할 수 있지만 삭제는 할 수 없습니다.
기본 보안 그룹의 기본 규칙은 다음과 같습니다.
인바운드 규칙
프로토콜 | 출발지 | 포트 번호 | 설명 |
---|---|---|---|
TCP | @default | ALL | 동일한 보안 그룹에 할당된 리소스로부터 인바운드 트래픽을 허용 |
아웃바운드 규칙
프로토콜 | 목적지 | 포트 번호 | 설명 |
---|---|---|---|
ALL | 0.0.0.0/0 | ALL | 모든 아웃바운드 트래픽을 허용 |
사용자 정의 보안 그룹
사용자는 인스턴스가 수행하는 다양한 역할을 반영하는 여러 보안 그룹을 생성할 수 있습니다. 사용자 정의 보안 그룹의 이름은 VPC 내에서 고유해야 합니다.
다음은 생성하는 보안 그룹의 기본 규칙입니다.
인바운드 규칙
등록된 인바운드 규칙은 없습니다(트래픽을 허용하지 않음).
아웃바운드 규칙
프로토콜 | 목적지 | 포트 번호 | 설명 |
---|---|---|---|
ALL | 0.0.0.0/0 | ALL | 모든 아웃바운드 트래픽을 허용 |
기본 보안 그룹을 제외하고 사용자 정의 보안 그룹만을 사용할 경우, 해당 VPC 내의 인스턴스는 메타데이터를 취득하지 못해 접근을 할 수 없게 됩니다. 메타데이터 취득을 위해 아래의 아웃바운드 규칙을 추가하시기 바랍니다.
프로토콜 | 목적지 | 포트 번호 | 설명 |
---|---|---|---|
TCP | 169.254.169.0/24 | 80 | 메타데이터 취득을 위한 규칙 |