> ## Documentation Index
> Fetch the complete documentation index at: https://docs.marketplace.bsggo.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 스캔 대상 AWS Account 관리

> 스캔 대상 AWS 계정 추가/제거 방법을 안내합니다.

## 개요

대시보드는 최대 20개의 AWS 계정을 동시에 모니터링할 수 있습니다. 계정을 추가하면 대상 계정에 읽기 전용 스캔 역할(`ISMS-P-ScanRole`)이 **자동으로 생성**되며, 이후 매일 스캔이 수행됩니다.

계정 추가/제거는 **CLI**와 **Terraform Cloud UI** 두 가지 방법으로 할 수 있습니다.

## 사전 준비

대상 계정에 IAM 사용자를 생성하고 **IAMFullAccess** 권한을 부여한 뒤, Access Key와 Secret Key를 발급받으세요.

<Info>
  이 자격 증명은 스캔 역할(`ISMS-P-ScanRole`)을 자동 생성하는 데만 사용됩니다. 역할 생성이 완료된 후에는 해당 IAM 사용자와 액세스 키를 삭제해도 됩니다.
</Info>

## 방법 1: CLI로 추가

```bash theme={null}
isms-p target add <계정 ID>
```

실행하면 Access Key ID와 Secret Access Key를 입력하라는 안내가 표시됩니다. 입력 완료 후 Terraform Apply가 자동 실행되며, 완료 시 즉시 스캔을 실행할지 물어봅니다.

**기타 CLI 명령:**

| 명령                             | 설명                         |
| ------------------------------ | -------------------------- |
| `isms-p target list`           | 등록된 대상 계정 목록 확인            |
| `isms-p target auth <계정 ID>`   | 기존 계정의 자격 증명 변경            |
| `isms-p target remove <계정 ID>` | 대상 계정 제거 (ScanRole도 자동 삭제) |
| `isms-p scan`                  | 수동 스캔 즉시 실행                |

## 방법 2: Terraform Cloud UI에서 추가

Terraform Cloud 워크스페이스에서 직접 변수를 수정하여 계정을 추가할 수 있습니다.

<Info>
  CLI(`isms-p target add`)를 사용하면 슬롯 변수 생성과 자격 증명 입력이 자동으로 처리됩니다. TFC UI에서 직접 작업하는 경우 아래 단계를 모두 수동으로 수행해야 합니다.
</Info>

### 1단계: 현재 슬롯 상태 확인

워크스페이스 > Variables에서 `target_slot_map`을 확인하여 현재 몇 번째 슬롯까지 사용 중인지 파악합니다.

예시 (현재 2개 계정이 등록된 상태):

```
["111111111111", "222222222222"]
```

### 2단계: 자격 증명 변수 생성

TFC UI에서 계정을 추가할 때는 해당 슬롯의 자격 증명 변수를 **직접 생성**해야 합니다. (CLI 사용 시에는 자동으로 생성됩니다.)

추가할 계정이 3번째라면, 워크스페이스 > Variables에서 다음 2개 변수를 **새로 생성**합니다:

| 변수명                    | 값                        | Category           | 설정               |
| ---------------------- | ------------------------ | ------------------ | ---------------- |
| `target_03_access_key` | 대상 계정의 Access Key ID     | Terraform variable | **Sensitive 체크** |
| `target_03_secret_key` | 대상 계정의 Secret Access Key | Terraform variable | **Sensitive 체크** |

<Warning>
  **변수를 생성하지 않고 `target_slot_map`만 수정하면 스캔이 실패합니다.** Terraform 코드에 default=""로 정의되어 있어 Apply 자체는 성공하지만, 자격 증명이 비어있어 ScanRole을 생성할 수 없습니다.
</Warning>

### 3단계: target\_slot\_map 끝에 계정 ID 추가

`target_slot_map` 변수를 수정하여 **기존 목록의 끝에** 새 계정 ID를 추가합니다.

```
["111111111111", "222222222222", "333333333333"]
```

<Warning>
  **기존 계정의 순서를 절대 변경하지 마세요.** 슬롯 번호와 순서가 1:1 매핑되어 있습니다. 첫 번째 = `target_01_*`, 두 번째 = `target_02_*` 입니다. 순서가 바뀌면 자격 증명이 잘못된 계정에 적용됩니다.
</Warning>

### 4단계: Apply 실행

변수 저장 후 "Start new run" → "Plan and apply"를 실행합니다. Apply가 완료되면 다음 스캔 시 자동으로 ScanRole이 생성됩니다.

## 자동으로 일어나는 일

어떤 방법으로 계정을 추가하든, 이후 과정은 동일하게 자동 처리됩니다.

| 순서 | 처리 내용                                        |
| -- | -------------------------------------------- |
| 1  | 입력한 자격 증명이 Secrets Manager에 안전하게 저장됨         |
| 2  | 대상 계정 목록이 업데이트됨                              |
| 3  | 다음 스캔 시작 시, 대상 계정에 `ISMS-P-ScanRole`이 자동 생성됨 |
| 4  | 생성된 역할로 읽기 전용 보안 데이터 수집 시작                   |

<Info>
  **ScanRole은 읽기 전용입니다.** 대상 계정의 리소스를 수정하거나 삭제하지 않습니다. 부여되는 권한은 `ViewOnlyAccess`(리소스 조회)와 `SecurityAudit`(보안 감사)뿐입니다.
</Info>

## 계정 제거

**CLI:** `isms-p target remove <계정 ID>`

**Terraform Cloud UI:** `target_slot_map`에서 해당 계정 ID를 제거하고, 해당 슬롯의 `access_key`/`secret_key` 변수를 비운 뒤 Apply를 실행합니다.

제거 시 대상 계정의 `ISMS-P-ScanRole`도 자동으로 삭제됩니다. 이미 수집된 과거 데이터는 보존됩니다 (원본 데이터 90일, 분석 데이터 영구).

## 병렬 처리와 스캔 시간

최대 5개 계정이 동시에 스캔되며, 계정 수에 따라 전체 소요 시간이 달라집니다.

| 계정 수  | 예상 스캔 시간 |
| ----- | -------- |
| 1-5   | 30-60분   |
| 6-10  | 60-90분   |
| 11-20 | 90-120분  |
