> 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/nacl.md).

# Network ACL

`Network ACL`은 VPC의 서브넷에 적용되는 상태 비저장(Stateless) 보안 정책입니다. 인바운드 규칙과 아웃바운드 규칙을 각각 평가해 서브넷으로 들어오거나 서브넷에서 나가는 트래픽을 허용하거나 거부합니다.

Network ACL은 VPC 생성 시 자동으로 만들어지는 `기본` 타입과 사용자가 직접 생성하는 `커스텀` 타입으로 구분됩니다. 기본 Network ACL은 VPC에 항상 존재하며 삭제할 수 없습니다.

## 화면 개요

* `생성 화면`: 이름, VPC, 설명을 입력해 커스텀 Network ACL을 생성합니다.
* `목록 화면`: Network ACL 현황을 조회하고 생성, 편집, 삭제 작업을 시작합니다.
* `상세 화면`: 기본 정보, 인바운드 규칙, 아웃바운드 규칙, 연결된 서브넷을 확인합니다.
* `편집 화면`: Network ACL의 이름과 설명을 수정합니다.
* `규칙 편집 화면`: 인바운드 규칙 또는 아웃바운드 규칙을 추가, 수정, 삭제하고 규칙 순서를 조정합니다.
* `서브넷 연결 화면`: Network ACL을 적용할 서브넷을 연결하거나 연결 해제합니다.

## 사전 준비

* 프로젝트에 [`VPC`](/cloudia-manual/network/vpc.md)가 준비되어 있어야 합니다.
* Network ACL을 적용할 [`서브넷`](/cloudia-manual/network/subnet.md)이 준비되어 있어야 합니다.
* 실제 서비스 허용 정책은 [`보안그룹`](/cloudia-manual/security/security-group.md)과 함께 검토합니다.
* Network ACL은 상태 비저장 정책입니다. 인바운드에서 요청 트래픽을 허용했더라도 응답 트래픽에 필요한 아웃바운드 규칙을 별도로 허용해야 합니다.
* 규칙은 `규칙 번호`가 작은 순서로 평가되며, 먼저 매칭된 규칙의 `허용/거부` 동작이 적용됩니다.

## Network ACL 생성

### 기본 정보

1. `프로젝트 > 보안 > Network ACL`로 이동합니다.
2. `생성`을 클릭합니다.
3. `이름`을 입력합니다.
4. `VPC`를 선택합니다.
5. 필요한 경우 `설명`을 입력합니다.
6. `생성`을 클릭합니다.

생성 화면의 입력 항목은 다음과 같습니다.

| 항목      | 설명                                                                        |
| ------- | ------------------------------------------------------------------------- |
| **이름**  | Network ACL 이름입니다. 영문 대/소문자, 숫자, `-`, `_`를 사용할 수 있으며 최대 80자까지 입력할 수 있습니다. |
| **VPC** | Network ACL을 생성할 VPC입니다. 생성 후에는 변경할 수 없습니다.                               |
| **설명**  | 운영 메모입니다. 최대 200자까지 입력할 수 있습니다.                                           |

필수 입력 항목이 유효하면 `생성` 버튼이 활성화됩니다. 생성된 커스텀 Network ACL은 초기 상태에서 사용자가 추가한 허용 규칙이 없으며, 마지막 `*` 기본 규칙에 의해 매칭되지 않은 트래픽이 거부됩니다.

## Network ACL 목록

### 주요 작업

* `생성`: 새 커스텀 Network ACL을 생성합니다.
* `편집`: 선택한 1개 Network ACL의 이름과 설명을 편집합니다.
* `삭제`: 선택한 Network ACL을 삭제합니다. `커스텀` 타입이면서 연결된 서브넷이 없는 경우에만 삭제할 수 있습니다.

### 테이블 컬럼

| 컬럼                    | 설명                                                    |
| --------------------- | ----------------------------------------------------- |
| **이름**                | Network ACL 이름입니다. 클릭하면 상세 화면으로 이동합니다.                |
| **ID**                | Network ACL 고유 ID입니다.                                 |
| **VPC**               | Network ACL이 속한 VPC 이름입니다.                            |
| **타입**                | `기본` 또는 `커스텀`입니다.                                     |
| **인바운드 / 아웃바운드 규칙 수** | 인바운드 규칙 수와 아웃바운드 규칙 수입니다. UI에서는 기본 `*` 규칙을 포함해 표시합니다. |
| **연결된 서브넷 수**         | 이 Network ACL이 적용 중인 서브넷 수입니다.                        |
| **설명**                | Network ACL 설명입니다.                                    |
| **생성 일시**             | Network ACL이 생성된 날짜와 시각입니다.                           |

### 버튼 활성화 기준

* 항목을 선택하지 않으면 `편집`, `삭제` 버튼이 비활성화됩니다.
* 항목 1개를 선택하면 `편집` 버튼이 활성화됩니다.
* 항목을 1개 이상 선택하면 `삭제` 버튼이 활성화됩니다.
* 삭제 모달에서 실제 삭제는 `타입=커스텀`이고 `연결된 서브넷 수=0`인 항목만 가능합니다.

## Network ACL 상세

상세 화면에서는 Network ACL의 기본 정보와 연결된 리소스를 확인합니다.

### 기본 정보

| 항목             | 설명                                            |
| -------------- | --------------------------------------------- |
| **이름**         | Network ACL 이름입니다.                            |
| **ID**         | Network ACL 고유 ID입니다.                         |
| **VPC**        | Network ACL이 속한 VPC입니다.                       |
| **설명**         | Network ACL 설명입니다. 입력된 값이 없으면 `-`로 표시됩니다.     |
| **인바운드 규칙 수**  | 인바운드 규칙 수입니다. 기본 `*` 규칙을 포함해 최대 20개까지 표시됩니다.  |
| **아웃바운드 규칙 수** | 아웃바운드 규칙 수입니다. 기본 `*` 규칙을 포함해 최대 20개까지 표시됩니다. |
| **타입**         | `기본` 또는 `커스텀`입니다.                             |
| **연결된 서브넷 수**  | 이 Network ACL에 연결된 서브넷 수입니다.                  |
| **생성 일시**      | 생성된 날짜와 시각입니다.                                |

### 하단 탭

* `인바운드 규칙`: 서브넷으로 들어오는 트래픽에 적용할 규칙을 확인하고 편집합니다.
* `아웃바운드 규칙`: 서브넷에서 나가는 트래픽에 적용할 규칙을 확인하고 편집합니다.
* `서브넷`: 이 Network ACL이 적용 중인 서브넷을 확인하고 연결 또는 해제합니다.

## Network ACL 편집

`Network ACL 편집`은 Network ACL의 기본 정보를 수정하는 기능입니다. 규칙 변경이나 서브넷 연결 변경은 상세 화면의 하단 탭에서 별도로 수행합니다.

### 편집 절차

1. `프로젝트 > 보안 > Network ACL`로 이동합니다.
2. 편집할 Network ACL을 1개 선택합니다.
3. `편집`을 클릭합니다.
4. `이름` 또는 `설명`을 수정합니다.
5. `편집`을 클릭해 저장합니다.

### 편집 가능한 항목

| 항목      | 편집 가능 여부 | 설명                                        |
| ------- | -------- | ----------------------------------------- |
| **이름**  | 가능       | Network ACL 이름입니다. 목록과 상세 화면에 표시됩니다.      |
| **VPC** | 불가       | 생성 시 선택한 VPC입니다. 편집 화면에 표시되지만 수정할 수 없습니다. |
| **설명**  | 가능       | 운영 메모입니다. 최대 200자까지 입력할 수 있습니다.           |

### 편집 시 확인 사항

* `이름`과 `설명`만 변경하면 연결된 서브넷의 트래픽 정책은 바뀌지 않습니다.
* VPC를 변경해야 한다면 새 Network ACL을 생성한 뒤 필요한 규칙을 구성하고 대상 서브넷을 새 Network ACL에 `연결`합니다.
* 이름은 운영자가 정책 목적을 식별할 수 있게 작성합니다. 예: `web-public-nacl`, `db-private-deny-admin`.

## 인바운드 규칙 관리

`인바운드 규칙`은 서브넷으로 들어오는 트래픽을 평가합니다.

### 테이블 컬럼

| 컬럼          | 설명                                                                       |
| ----------- | ------------------------------------------------------------------------ |
| **규칙 번호**   | 규칙 평가 순서입니다. 숫자가 작을수록 먼저 평가됩니다. `*`는 마지막 기본 규칙입니다.                       |
| **프로토콜**    | `모든 트래픽`, `TCP`, `UDP`, `TCP (임시 포트)`, `UDP (임시 포트)`, `모든 ICMP` 중 하나입니다. |
| **소스 CIDR** | 인바운드 트래픽의 출발지 IP 주소 범위입니다.                                               |
| **포트**      | 트래픽 대상 포트 또는 포트 범위입니다.                                                   |
| **허용/거부**   | 매칭된 트래픽을 `허용`할지 `거부`할지 나타냅니다.                                            |
| **설명**      | 규칙 설명입니다.                                                                |

### 인바운드 규칙 편집

1. Network ACL 상세 화면에서 `인바운드 규칙` 탭을 선택합니다.
2. `편집`을 클릭합니다.
3. `규칙 추가`를 클릭해 새 규칙을 추가하거나 기존 규칙 값을 수정합니다.
4. 규칙 왼쪽의 드래그 핸들을 이동해 평가 순서를 조정합니다.
5. 필요하지 않은 규칙은 `삭제`합니다.
6. `저장`을 클릭해 변경사항을 적용합니다.

### 입력 항목

| 항목          | 설명                                                       |
| ----------- | -------------------------------------------------------- |
| **규칙 번호**   | 화면 순서에 따라 자동으로 부여됩니다. 드래그로 순서를 바꾸면 저장 시 규칙 번호가 다시 계산됩니다. |
| **프로토콜**    | 적용할 프로토콜입니다.                                             |
| **소스 CIDR** | 출발지 CIDR입니다. `0.0.0.0/0`은 모든 IPv4 대역을 의미합니다.             |
| **포트**      | `TCP`, `UDP`에서는 단일 포트 또는 `시작포트-끝포트` 형식의 범위를 입력합니다.       |
| **허용/거부**   | `허용` 또는 `거부`를 선택합니다.                                     |
| **설명**      | 규칙 목적을 설명합니다. 최대 200자까지 입력할 수 있습니다.                      |

### 프로토콜별 포트 처리

| 프로토콜            | 포트 입력 방식                                    |
| --------------- | ------------------------------------------- |
| **모든 트래픽**      | `전체`로 고정됩니다.                                |
| **TCP**         | 직접 입력합니다. 예: `22`, `80`, `443`, `8080-8090` |
| **UDP**         | 직접 입력합니다. 예: `53`, `500`, `10000-20000`     |
| **TCP (임시 포트)** | `32768-65535`로 고정됩니다.                       |
| **UDP (임시 포트)** | `32768-65535`로 고정됩니다.                       |
| **모든 ICMP**     | `전체`로 고정됩니다.                                |

## 아웃바운드 규칙 관리

`아웃바운드 규칙`은 서브넷에서 나가는 트래픽을 평가합니다. 기본적인 편집 방식은 인바운드 규칙과 동일하며, CIDR 항목만 `대상 CIDR`로 표시됩니다.

### 테이블 컬럼

| 컬럼          | 설명                                                                       |
| ----------- | ------------------------------------------------------------------------ |
| **규칙 번호**   | 규칙 평가 순서입니다. 숫자가 작을수록 먼저 평가됩니다. `*`는 마지막 기본 규칙입니다.                       |
| **프로토콜**    | `모든 트래픽`, `TCP`, `UDP`, `TCP (임시 포트)`, `UDP (임시 포트)`, `모든 ICMP` 중 하나입니다. |
| **대상 CIDR** | 아웃바운드 트래픽의 목적지 IP 주소 범위입니다.                                              |
| **포트**      | 트래픽 대상 포트 또는 포트 범위입니다.                                                   |
| **허용/거부**   | 매칭된 트래픽을 `허용`할지 `거부`할지 나타냅니다.                                            |
| **설명**      | 규칙 설명입니다.                                                                |

### 아웃바운드 규칙 편집

1. Network ACL 상세 화면에서 `아웃바운드 규칙` 탭을 선택합니다.
2. `편집`을 클릭합니다.
3. `규칙 추가`, 기존 규칙 수정, 드래그 순서 조정, `삭제` 작업을 수행합니다.
4. `저장`을 클릭해 변경사항을 적용합니다.

아웃바운드 규칙은 응답 트래픽과 외부 통신에 직접 영향을 줍니다. 예를 들어 인바운드에서 SSH `22` 포트를 허용해도, 응답 경로에 필요한 아웃바운드 `TCP (임시 포트)` 또는 운영 정책에 맞는 대상 포트가 차단되면 연결이 실패할 수 있습니다.

## 규칙 편집 제약

* 인바운드와 아웃바운드는 각각 기본 `*` 규칙을 포함해 최대 20개까지 표시됩니다.
* 사용자가 직접 추가할 수 있는 규칙은 방향별 최대 19개입니다.
* 마지막 `*` 기본 규칙은 매칭되지 않은 나머지 트래픽을 거부하는 고정 규칙입니다.
* `*` 기본 규칙은 삭제, 수정, 드래그 순서 변경을 할 수 없습니다.
* 규칙은 위에서 아래로 평가됩니다. 넓은 범위의 `허용` 또는 `거부` 규칙을 앞에 배치하면 뒤의 세부 규칙은 적용되지 않을 수 있습니다.
* 규칙 저장 후에는 연결된 서브넷의 트래픽 정책에 즉시 영향을 줄 수 있습니다. 운영 중인 서브넷에서는 변경 전 영향 범위를 확인합니다.

## 연결된 서브넷 관리

Network ACL은 서브넷에 연결되어야 실제 트래픽 정책으로 적용됩니다.

### 서브넷 탭 컬럼

| 컬럼            | 설명                                 |
| ------------- | ---------------------------------- |
| **이름**        | 서브넷 이름입니다. 클릭하면 서브넷 상세 화면으로 이동합니다. |
| **ID**        | 서브넷 고유 ID입니다.                      |
| **VPC**       | 서브넷이 속한 VPC 이름입니다.                 |
| **타입**        | `퍼블릭` 또는 `프라이빗`입니다.                |
| **IP / CIDR** | 서브넷 주소 범위입니다.                      |
| **주소 사용 현황**  | 사용 중인 IP 주소 수와 전체 IP 주소 수입니다.      |
| **설명**        | 서브넷 설명입니다.                         |
| **생성 일시**     | 서브넷 생성 시각입니다.                      |

### 서브넷 연결

1. Network ACL 상세 화면에서 `서브넷` 탭을 선택합니다.
2. `연결`을 클릭합니다.
3. 연결할 서브넷을 선택합니다.
4. `연결`을 클릭합니다.
5. 서브넷 목록에 선택한 서브넷이 표시되는지 확인합니다.

서브넷을 커스텀 Network ACL에 연결하면 해당 서브넷은 기존 Network ACL 대신 새 Network ACL의 인바운드/아웃바운드 규칙을 적용받습니다.

### 서브넷 해제

1. Network ACL 상세 화면에서 `서브넷` 탭을 선택합니다.
2. 해제할 서브넷을 선택합니다.
3. `해제`를 클릭합니다.
4. 확인 모달에서 `해제`를 클릭합니다.
5. 서브넷 목록에서 대상 서브넷이 제거되었는지 확인합니다.

기본 Network ACL에서는 서브넷을 `해제`할 수 없습니다. 커스텀 Network ACL에서 서브넷을 해제하면 해당 서브넷은 기본 Network ACL로 다시 연결됩니다.

## Network ACL 삭제

한 번 삭제한 Network ACL은 복구할 수 없습니다. 동일한 이름으로 다시 생성해도 기존 규칙과 서브넷 연결 정보는 복원되지 않습니다.

### 삭제 절차

1. `프로젝트 > 보안 > Network ACL`로 이동합니다.
2. 삭제할 Network ACL을 선택합니다.
3. `삭제`를 클릭합니다.
4. 삭제 모달에서 대상 정보를 확인합니다.
5. `삭제`를 클릭합니다.

### 삭제 조건

* `기본` 타입 Network ACL은 삭제할 수 없습니다.
* `커스텀` 타입 Network ACL만 삭제할 수 있습니다.
* `연결된 서브넷 수`가 `0`이어야 삭제할 수 있습니다.
* 연결된 서브넷이 있으면 먼저 `서브넷` 탭에서 연결을 해제합니다.

## 운영 점검

* 정책 변경 전 연결된 서브넷과 해당 서브넷의 주요 서비스 포트를 확인합니다.
* NACL은 상태 비저장이므로 요청 방향과 응답 방향 규칙을 함께 점검합니다.
* SSH, HTTP, HTTPS처럼 외부에서 들어오는 서비스는 인바운드 서비스 포트와 아웃바운드 응답 경로를 함께 허용합니다.
* 규칙 번호가 작은 규칙이 먼저 적용되므로, 차단 규칙과 허용 규칙의 순서를 반드시 확인합니다.
* 변경 후에는 대상 서브넷의 인스턴스에서 실제 접속 테스트를 수행합니다.

## 연관 문서

* [`VPC`](/cloudia-manual/network/vpc.md)
* [`서브넷`](/cloudia-manual/network/subnet.md)
* [`보안그룹`](/cloudia-manual/security/security-group.md)
* [`Network ACL 커스터마이징하기`](https://github.com/iAcloud-inc/CloudiA-manual/blob/main/docs/user-guide/examples-and-labs/12-customize-nacl-and-bind-subnet.md)
