# 계정 · 비밀번호 · API 키 · 권한

> **이 장에서 배우는 것**
> 인증과 인가의 차이, 비밀번호·토큰·키가 각각 무엇인지, 최소 권한이 왜
> 원칙인지, 그리고 열쇠를 잃어버렸을 때 무엇을 해야 하는지.

## 질문이 둘입니다

```mermaid
graph TD
  A["요청이 들어옴"] --> B["인증<br/>누구인가?"]
  B -->|"모르겠음 → 401"| X["거절"]
  B -->|"확인됨"| C["인가<br/>이 사람이 이걸 해도 되나?"]
  C -->|"안 됨 → 403"| X
  C -->|"됨"| D["실행"]
```

| | 인증(Authentication) | 인가(Authorization) |
|---|---|---|
| 묻는 것 | **누구인가** | **무엇을 해도 되는가** |
| 수단 | 비밀번호 · 키 · SSO | 역할 · 권한 |
| 실패하면 | `401` | `403` |

**[HTTP](/guide/it-http)의 401·403이 정확히 이 둘입니다.** 열쇠를 아무리 새로
발급해도 403은 안 풀립니다 — 권한을 줘야 합니다.

## 신분을 밝히는 세 가지

| | 비밀번호 | 토큰 · API 키 | SSO |
|---|---|---|---|
| 누가 쓰나 | 사람 | **프로그램** | 사람 |
| 개수 | 하나 | 용도마다 여러 개 | 회사 계정 하나로 |
| 만료 | 없음(바꾸기 전까지) | **기한을 둘 수 있음** | 세션 단위 |
| 유출되면 | 계정 전체 | **그 키의 범위만** | 회사 정책으로 차단 |

**토큰이 비밀번호보다 나은 점은 맨 아래 두 줄입니다.** 범위와 기한을 좁힐 수
있어서, 새어도 피해가 그 범위에 갇힙니다. 하이퍼팀즈(HyperTeams)의 `tt_` 로 시작하는 시스템
토큰, Connect의 API 키가 모두 이 방식입니다([API 키로 외부에서
부르기](/guide/cn-api)).

## 최소 권한 — 지금 필요한 만큼만

```
✗ 일단 관리자로 주고 나중에 줄이기   → "나중"은 오지 않습니다
✓ 필요한 것만 주고 막히면 그때 넓히기
```

넓히는 것은 언제든 됩니다. **줄이는 것은 누군가의 일이 멈춘 뒤에야
알려집니다.** 그래서 순서가 중요합니다 — [도구는
권한이다](/guide/mcp-security)와 [멤버와 역할](/guide/cn-members)이 같은
원칙을 각각 도구와 사람 쪽에서 적용합니다.

**에이전트에게도 그대로 적용됩니다.** 에이전트는 자기 권한이 아니라 **자기에게
주어진 계정의 권한**으로 움직입니다. 읽기 전용 계정을 준 에이전트는 지우고
싶어도 못 지웁니다.

## 2단계 인증 — 아는 것 + 가진 것

비밀번호는 **아는 것**이라 남이 알아내면 끝입니다. 여기에 **가진 것**(휴대폰의
인증 앱)을 하나 더 요구하는 것이 2단계 인증(2FA·MFA)입니다.

> **관리자 계정에는 반드시 켜세요.** 사고의 대부분은 정교한 해킹이 아니라
> 다른 데서 새어 나온 비밀번호를 그대로 넣어보는 것에서 시작합니다.

## 비밀번호는 재사용이 문제입니다

```
□ 서비스마다 다른 비밀번호      — 한 곳이 털려도 거기서 끝납니다
□ 길이가 복잡함보다 중요합니다   — 짧고 특수문자 많은 것보다 긴 문장이 강합니다
□ 비밀번호 관리자를 쓰세요       — 외우려 하니까 재사용하게 됩니다
```

## 열쇠는 발급보다 회수가 어렵습니다

키를 만드는 데는 10초, 어디에 심었는지 찾아내는 데는 며칠이 걸립니다.

```
□ 이름을 알아보게 짓기        ✓ "사내포털-요약기능"   ✗ "key1" · "테스트"
□ 어디에 넣었는지 적어두기
□ 코드나 대화창에 붙여넣지 않기
□ 담당자가 바뀌면 그때 교체하기
□ 새면 지우고 새로 발급 — 고치는 것이 아니라 폐기입니다
```

**`.env` 같은 설정 파일에 두고 공유 폴더·저장소에 올리지 마세요.**
[파일 · 폴더 · 경로](/guide/it-files)에서 본 숨은 파일이 그래서 위험합니다 —
안 보이니까 같이 올라갑니다.

## 사람이 아니라 역할에 권한을 붙입니다

| | 사람마다 설정 | **역할로 묶기** |
|---|---|---|
| 새 직원 | 하나하나 설정 | 역할만 지정 |
| 퇴사 | 어디 어디 있었는지 추적 | 역할 회수 |
| 점검 | 사람 수만큼 | 역할 수만큼 |

이것이 [멤버와 역할](/guide/cn-members) · [그룹과 부서](/guide/cn-groups)가
하는 일이고, 회사 계정 체계와 이어 붙이는 것이 [SSO](/guide/cn-sso)입니다.

## 자주 하는 오해

### "우리는 작은 회사라 권한을 나눌 필요가 있나요"

**사람 때문이 아니라 사고 때문입니다.** 계정 하나가 새면 그 계정이 닿는 전부가
새고, 실수로 지운 것도 그 범위만큼 지워집니다.

### "키를 코드에 적어두면 편한데요"

편합니다. 그리고 그 코드가 복사되거나 공유되는 순간 키도 함께 갑니다. **키는
설정에, 코드에는 이름만.**

---

## 확인

**1. 인증과 인가는 무엇이 다릅니까?**

<details>
<summary>답</summary>

**인증은 "누구인가", 인가는 "무엇을 해도 되는가"** 입니다. 각각 401과 403으로
드러납니다.
</details>

**2. 권한을 "일단 넓게 주고 나중에 줄이는" 방식이 위험한 이유는?**

<details>
<summary>답</summary>

**줄이는 일은 미뤄지기 때문**입니다. 넓히는 것은 막혔을 때 바로 알려지지만,
너무 넓은 권한은 사고가 나기 전까지 아무도 모릅니다.
</details>

**3. API 키가 유출되면 무엇을 해야 합니까?**

<details>
<summary>답</summary>

**그 키를 폐기하고 새로 발급합니다.** 고쳐 쓰는 것이 아닙니다. 그래서 어느
키가 어디에 쓰였는지 알아볼 이름이 필요합니다.
</details>

---

여기까지가 **IT 기초**입니다. 이제 같은 눈으로 AI 자체를 봅니다 →
[언어 모델은 무엇을 하는 기계인가](/guide/ai-language-model)
