> For the complete documentation index, see [llms.txt](https://ia-cloud.gitbook.io/cloudia-manual/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://ia-cloud.gitbook.io/cloudia-manual/security/security-group.md).

# 보안그룹

`보안그룹`은 인스턴스 단위 트래픽을 제어하는 상태 저장(Stateful) 보안 정책입니다. 서비스별 인바운드/아웃바운드 통신 허용 범위를 세밀하게 나눌 때 사용합니다.

## 화면 개요

* `목록 화면`: 보안그룹 현황을 조회하고 생성, 편집, 삭제 작업을 시작합니다.
* `상세 화면`: `상세 정보`, `규칙 정보`, `연결된 리소스` 영역을 확인합니다.
* `생성 화면`: 이름, VPC, 같은 보안그룹 VM 통신 허용 여부, 설명, 초기 규칙 원본을 설정합니다.
* `편집 화면`: 기본 정보와 VPC를 수정합니다.
* `규칙 편집 화면`: 인바운드/아웃바운드 규칙을 각각 별도로 관리합니다.

## 보안그룹 목록

### 주요 작업

* `생성`: 새로운 보안그룹을 생성합니다.
* `편집`: 선택한 1개 보안그룹을 편집합니다.
* `삭제`: 선택한 1개 보안그룹을 삭제합니다. 연결된 인스턴스가 있으면 삭제할 수 없습니다.

### 테이블 컬럼

| 컬럼                    | 설명                                  |
| --------------------- | ----------------------------------- |
| **이름**                | 보안그룹 이름입니다. **클릭하면 상세 화면으로 이동**합니다. |
| **ID**                | 보안그룹 고유 ID입니다.                      |
| **VPC**               | 소속 VPC 이름입니다.                       |
| **인바운드 / 아웃바운드 규칙 수** | 각 방향 규칙 수입니다.                       |
| **연결된 인스턴스 수**        | 현재 연결된 인스턴스 수입니다.                   |
| **설명**                | 보안그룹에 대한 설명입니다.                     |
| **생성 일시**             | 보안그룹이 생성된 날짜와 시각입니다.                |

### 조회 조건

* 검색은 **이름**으로만 할 수 있습니다.
* **인바운드 / 아웃바운드 규칙 수**와 **연결된 인스턴스 수**는 정렬할 수 없습니다.
* 목록은 **생성 일시** 기준으로 정렬되며, 한 페이지에 10건씩 표시됩니다.

***

## 보안그룹 상세

### 상단 요약

* **이름**: 보안그룹 이름입니다. 서비스 역할이나 적용 대상을 드러내는 이름을 사용합니다.
* **ID**: 보안그룹 고유 ID입니다.
* **VPC**: 보안그룹이 속한 VPC입니다.
* **생성 방식**: 보안그룹이 만들어진 경로입니다. `수동 생성`, `오토 스케일링 그룹`, `쿠버네티스`, `VPC` 중 하나로 표시되며, 해당하는 값이 없으면 `-`로 표시됩니다.
* **인바운드 규칙 수**: 수신 허용 규칙 개수입니다.
* **아웃바운드 규칙 수**: 송신 허용 규칙 개수입니다.
* **연결된 인스턴스 수**: 현재 이 보안그룹을 사용하는 인스턴스 개수입니다.
* **같은 보안그룹 VM 통신**: 동일 보안그룹에 속한 VM 간 통신 허용 여부입니다.
* **설명**: 보안그룹의 목적과 운영 메모입니다.
* **생성 일시**: 보안그룹이 생성된 날짜와 시각입니다.

### 하단 영역

상단 요약 아래에는 `규칙 정보`와 `연결된 리소스` 두 영역이 차례로 표시되며, 각 영역은 자체 탭을 가집니다.

* `규칙 정보`: 방향별 규칙을 확인합니다. `편집`을 클릭하면 현재 선택한 방향의 규칙 편집 화면으로 이동합니다.
  * **인바운드 규칙**: 인스턴스로 들어오는 트래픽 허용 규칙입니다.
  * **아웃바운드 규칙**: 인스턴스에서 나가는 트래픽 허용 규칙입니다.
* `연결된 리소스`: 이 보안그룹을 사용하는 리소스를 유형별 탭으로 확인합니다. 현재는 **`인스턴스`** 탭이 제공되며, 이 보안그룹이 적용된 인스턴스 목록을 보여줍니다. **조회 전용 영역**으로, 이 화면에서는 인스턴스를 연결하거나 해제할 수 없습니다.

> 💡 **보안그룹을 인스턴스에 적용하는 방법**\
> 보안그룹은 보안그룹 화면이 아니라 **인스턴스의 네트워크 인터페이스(NIC) 설정**을 통해 적용합니다.\
> 인스턴스 `생성` 또는 `편집` 화면의 네트워크 인터페이스 구성에서 각 NIC에 적용할 `보안그룹`을 선택합니다. (NIC당 최대 5개)\
> 적용 대상을 변경하려면 해당 인스턴스의 NIC 설정을 편집합니다. 자세한 내용은 [`인스턴스`](/cloudia-manual/vm/instance.md) 문서의 네트워크 인터페이스 구성을 참고하세요.

### 규칙 목록 컬럼

| 컬럼            | 설명                                         |
| ------------- | ------------------------------------------ |
| **프로토콜**      | `TCP`, `UDP`, `모든 ICMP`, `모든 트래픽` 중 하나입니다. |
| **IP / CIDR** | 규칙이 적용되는 IP / CIDR입니다.                     |
| **포트**        | 단일 포트, 포트 범위, 또는 `전체` 값입니다.                |
| **설명**        | 규칙 설명입니다.                                  |

### 연결된 리소스 - `인스턴스` 탭 목록 컬럼

| 컬럼        | 설명                             |
| --------- | ------------------------------ |
| **이름**    | 인스턴스 이름입니다.                    |
| **ID**    | 인스턴스 ID입니다.                    |
| **IP 주소** | 보안그룹이 설정된 인스턴스 인터페이스 IP 주소입니다. |
| **상태**    | 현재 인스턴스 상태입니다.                 |
| **vCPU**  | 할당된 vCPU 수입니다.                 |
| **메모리**   | 할당된 메모리 크기입니다.                 |
| **생성 일시** | 인스턴스 생성 시각입니다.                 |

***

## 보안그룹 생성

### 기본 정보

* **이름**: 보안그룹을 식별하는 이름입니다.
* **VPC**: 보안그룹이 속할 VPC를 선택합니다.
* **같은 보안그룹 VM 통신**: 동일 보안그룹 VM 간 통신 허용 여부를 결정합니다. 기본값은 `허용 안 함`입니다.
* **설명**: 보안그룹 목적과 운영 메모를 기록합니다.

### 기본 정보 입력 필드 유효성

| 필드                | 허용 값                     | 검증 규칙                                  | 비고                |
| ----------------- | ------------------------ | -------------------------------------- | ----------------- |
| **이름**            | 영문, 숫자, `-`, `_` 조합의 문자열 | 필수입니다. 프로젝트 내에서 고유해야 하며 80자 이내로 입력합니다. | 보안그룹 식별용 이름입니다.   |
| **VPC**           | 현재 프로젝트의 VPC             | 필수입니다. 생성 후 연결 인스턴스가 있으면 변경할 수 없습니다.   | 보안그룹 소속 VPC입니다.   |
| **같은 보안그룹 VM 통신** | `허용`, `허용 안 함`           | 필수입니다. 두 값 중 하나를 선택합니다.                | 기본값은 `허용 안 함`입니다. |
| **설명**            | 최대 200자 문자열              | 필수입니다. 200자를 초과할 수 없습니다.               | 목적과 적용 범위를 적습니다.  |

### 규칙 가져오기

생성 화면에서는 규칙을 직접 입력하지 않고, 다음 원본에서 규칙을 가져옵니다.

* 현재 프로젝트의 보안그룹
* 관리자 보안그룹 템플릿

목록에서 항목을 선택한 뒤 `규칙 정보`를 확인하고, 필요한 항목을 여러 개 가져올 수 있습니다. 중복되는 규칙은 하나로 머지됩니다.

### 생성 시 참고 사항

* `같은 보안그룹 VM 통신`을 허용하면 규칙이 모두 차단 상태여도 동일 보안그룹 내 VM 간 통신을 허용합니다.
* 규칙 원본 선택 모달에서는 VPC, 규칙 수, 설명, 생성 시각을 함께 보고 선택할 수 있습니다.
* 가져온 규칙은 생성 시점에만 반영되며, 이후 원본 보안그룹이나 템플릿 변경이 자동 동기화되지는 않습니다.
* 규칙 가져오기 없이 생성한 보안그룹은 기본 규칙이 인바운드 트래픽 거부, 아웃바운드 트래픽 허용으로 설정됩니다.
* 보안그룹은 규칙에 **명시된 트래픽만 허용**합니다. 규칙에 없는 트래픽은 차단됩니다.

***

## 보안그룹 편집

### 편집 항목

편집 화면에서는 다음 항목을 수정할 수 있습니다.

* **이름**: 보안그룹 식별용 이름을 수정합니다.
* **VPC**: 연결된 인스턴스가 없을 때만 다른 VPC로 변경할 수 있습니다.
* **같은 보안그룹 VM 통신**: 동일 보안그룹 VM 간 통신 허용 여부를 조정합니다.
* **설명**: 운영 메모를 수정합니다.

다만 **연결된 인스턴스가 있으면 VPC는 변경할 수 없습니다.**

### 편집 입력 필드 유효성

| 필드                | 허용 값                     | 검증 규칙                                  | 비고                     |
| ----------------- | ------------------------ | -------------------------------------- | ---------------------- |
| **이름**            | 영문, 숫자, `-`, `_` 조합의 문자열 | 필수입니다. 프로젝트 내에서 고유해야 하며 80자 이내로 입력합니다. | 중복 이름이면 저장할 수 없습니다.    |
| **VPC**           | 현재 프로젝트의 VPC             | 연결된 인스턴스가 없을 때만 변경할 수 있습니다.            | 연결된 인스턴스가 있으면 비활성화됩니다. |
| **같은 보안그룹 VM 통신** | `허용`, `허용 안 함`           | 필수입니다. 두 값 중 하나를 선택합니다.                | 편집 가능합니다.              |
| **설명**            | 최대 200자 문자열              | 필수입니다. 200자를 초과할 수 없습니다.               | 편집 가능합니다.              |

### 편집 시 참고 사항

* 편집 화면에는 VPC 변경 제한 경고가 표시됩니다.
* 이미 인스턴스가 연결된 상태에서 VPC를 바꾸려면 먼저 해당 보안그룹을 인스턴스에서 해제해야 합니다.

***

## 보안그룹 규칙 편집

상세 화면 `규칙 정보` 영역에서 편집할 방향 탭을 선택하고 `편집`을 클릭하면, 그 방향 전용 편집 화면으로 이동합니다. 인바운드와 아웃바운드는 각각 따로 저장합니다.

### 주요 작업

* `규칙 추가`: 표 아래에 새 규칙 행이 추가되고, 그 행에서 값을 직접 입력합니다. 별도 모달은 열리지 않습니다.
* 각 행의 `삭제`: 해당 행 하나만 표에서 제거합니다.
* `저장`: 편집한 규칙 목록 전체를 저장합니다. `취소`를 누르면 상세 화면으로 돌아갑니다.

### 새 규칙 기본값

새 규칙을 추가하면 기본값은 다음과 같습니다.

* **프로토콜**: `모든 트래픽`
* **IP / CIDR**: `0.0.0.0/0`
* **포트**: `전체`
* **설명**: 빈 값

### 규칙 입력 항목

* **번호**: 규칙 순번입니다. 표시용이며 직접 입력할 수 없습니다.
* **프로토콜**: 허용할 트래픽 유형을 선택합니다.
* **IP / CIDR**: 규칙이 적용될 대상 대역을 지정합니다. 인바운드의 경우 소스 IP 주소 범위, 아웃바운드의 경우 목적지 IP 주소 범위가 됩니다.
* **포트**: 대상 포트 또는 포트 범위를 지정합니다. (예: 22, 8080-8082)
* **설명**: 규칙 목적과 예외 사항을 기록합니다.

### 규칙 입력 필드 유효성

| 필드            | 허용 값                              | 검증 규칙                                                        | 비고                                             |
| ------------- | --------------------------------- | ------------------------------------------------------------ | ---------------------------------------------- |
| **프로토콜**      | `TCP`, `UDP`, `모든 ICMP`, `모든 트래픽` | 필수입니다. 드롭다운에서 선택합니다.                                         | 새 규칙 기본값은 `모든 트래픽`입니다.                         |
| **IP / CIDR** | IPv4 CIDR                         | 필수입니다. 유효한 IPv4 CIDR 형식이어야 합니다.                              | 기본값은 `0.0.0.0/0`입니다.                           |
| **포트**        | `1-65535` 단일 포트, 포트 범위, `전체`      | `TCP`, `UDP`일 때만 직접 입력합니다. `모든 트래픽`, `모든 ICMP`는 `전체`로 고정됩니다. | 동일한 `프로토콜 + IP / CIDR + 포트` 조합은 중복 저장할 수 없습니다. |
| **설명**        | 최대 200자 문자열                       | 선택 입력입니다. 200자를 초과할 수 없습니다.                                  | 규칙 메모용입니다.                                     |

### 동작 규칙

* 각 방향별 사용자 규칙은 최대 59개까지 추가할 수 있습니다. 59개에 도달하면 `규칙 추가`가 비활성화됩니다.
* 프로토콜을 `모든 트래픽` 또는 `모든 ICMP`로 선택하면 포트는 `전체`로 고정되고 입력할 수 없습니다.
* 프로토콜을 `TCP` 또는 `UDP`로 바꾸면 포트에 전체 범위가 자동으로 채워집니다. 필요한 범위로 수정하세요.
* 동일한 `프로토콜 + IP / CIDR + 포트` 조합은 중복 저장할 수 없습니다. 이때 `IP / CIDR`은 네트워크 주소로 정규화해 비교하므로 `192.168.160.0/16`과 `192.168.0.0/16`은 같은 규칙으로 취급됩니다. `설명`은 중복 판단에 포함되지 않습니다.
* 변경 사항이 없거나 중복 규칙이 있으면 저장할 수 없습니다.
* 보안그룹은 규칙에 **명시된 트래픽만 허용**합니다. 규칙에 없는 트래픽은 차단됩니다.

> 💡 **참고:** 보안그룹은 **상태 저장(Stateful)** 방식으로 동작합니다.\
> 인바운드에서 허용된 트래픽의 응답은 아웃바운드 규칙 없이 자동 허용됩니다.

### 운영 시 권장 방식

* 서비스 포트 허용은 인바운드에서 최소 범위로 정의하고, 아웃바운드는 실제 필요한 대상만 열어두는 것이 좋습니다.
* 공통 정책은 관리자 보안그룹 템플릿으로 표준화하고, 프로젝트 예외는 각 보안그룹에서 추가 관리하는 구조가 운영에 유리합니다.

***

## 보안그룹 삭제

* 삭제는 한 번에 1개만 수행합니다.
* 연결된 인스턴스가 있는 보안그룹은 삭제할 수 없습니다.
* 삭제 전에 해당 보안그룹을 사용 중인 인스턴스에서 먼저 해제해야 합니다.

### 삭제 확인 모달

`삭제`를 클릭하면 확인 모달이 열립니다. 모달에는 삭제 대상의 **이름**, **ID**, **네트워크**(소속 VPC), **인바운드 규칙 수**, **아웃바운드 규칙 수**, **생성 일시**가 표시되고 "연결된 인스턴스가 존재하지 않는 경우에만 삭제할 수 있습니다." 안내가 함께 나옵니다. 연결된 인스턴스가 1개 이상이면 삭제 버튼이 비활성화됩니다.

⚠️ **주의:** 보안그룹 삭제는 **복구할 수 없습니다.** 삭제 전에 반드시 해당 보안그룹 삭제의 용도를 확인한 후 삭제하세요.

### 삭제 전 점검 항목

1. 상세 화면의 `연결된 인스턴스` 탭에서 연결 수를 확인합니다.
2. 인스턴스에 연결된 보안그룹 구성을 먼저 변경합니다.
3. 더 이상 참조되지 않는 상태에서 삭제를 진행합니다.
