계정 · 비밀번호 · API 키 · 권한
이 장에서 배우는 것 인증과 인가의 차이, 비밀번호·토큰·키가 각각 무엇인지, 최소 권한이 왜 원칙인지, 그리고 열쇠를 잃어버렸을 때 무엇을 해야 하는지.
질문이 둘입니다
graph TD
A["요청이 들어옴"] --> B["인증<br/>누구인가?"]
B -->|"모르겠음 → 401"| X["거절"]
B -->|"확인됨"| C["인가<br/>이 사람이 이걸 해도 되나?"]
C -->|"안 됨 → 403"| X
C -->|"됨"| D["실행"]| 인증(Authentication) | 인가(Authorization) | |
|---|---|---|
| 묻는 것 | 누구인가 | 무엇을 해도 되는가 |
| 수단 | 비밀번호 · 키 · SSO | 역할 · 권한 |
| 실패하면 | 401 | 403 |
HTTP의 401·403이 정확히 이 둘입니다. 열쇠를 아무리 새로 발급해도 403은 안 풀립니다 — 권한을 줘야 합니다.
신분을 밝히는 세 가지
| 비밀번호 | 토큰 · API 키 | SSO | |
|---|---|---|---|
| 누가 쓰나 | 사람 | 프로그램 | 사람 |
| 개수 | 하나 | 용도마다 여러 개 | 회사 계정 하나로 |
| 만료 | 없음(바꾸기 전까지) | 기한을 둘 수 있음 | 세션 단위 |
| 유출되면 | 계정 전체 | 그 키의 범위만 | 회사 정책으로 차단 |
토큰이 비밀번호보다 나은 점은 맨 아래 두 줄입니다. 범위와 기한을 좁힐 수
있어서, 새어도 피해가 그 범위에 갇힙니다. 하이퍼팀즈(HyperTeams)의 tt_ 로 시작하는 시스템
토큰, Connect의 API 키가 모두 이 방식입니다(API 키로 외부에서
부르기).
최소 권한 — 지금 필요한 만큼만
넓히는 것은 언제든 됩니다. 줄이는 것은 누군가의 일이 멈춘 뒤에야 알려집니다. 그래서 순서가 중요합니다 — 도구는 권한이다와 멤버와 역할이 같은 원칙을 각각 도구와 사람 쪽에서 적용합니다.
에이전트에게도 그대로 적용됩니다. 에이전트는 자기 권한이 아니라 자기에게 주어진 계정의 권한으로 움직입니다. 읽기 전용 계정을 준 에이전트는 지우고 싶어도 못 지웁니다.
2단계 인증 — 아는 것 + 가진 것
비밀번호는 아는 것이라 남이 알아내면 끝입니다. 여기에 가진 것(휴대폰의 인증 앱)을 하나 더 요구하는 것이 2단계 인증(2FA·MFA)입니다.
관리자 계정에는 반드시 켜세요. 사고의 대부분은 정교한 해킹이 아니라 다른 데서 새어 나온 비밀번호를 그대로 넣어보는 것에서 시작합니다.
비밀번호는 재사용이 문제입니다
열쇠는 발급보다 회수가 어렵습니다
키를 만드는 데는 10초, 어디에 심었는지 찾아내는 데는 며칠이 걸립니다.
.env 같은 설정 파일에 두고 공유 폴더·저장소에 올리지 마세요.
파일 · 폴더 · 경로에서 본 숨은 파일이 그래서 위험합니다 —
안 보이니까 같이 올라갑니다.
사람이 아니라 역할에 권한을 붙입니다
| 사람마다 설정 | 역할로 묶기 | |
|---|---|---|
| 새 직원 | 하나하나 설정 | 역할만 지정 |
| 퇴사 | 어디 어디 있었는지 추적 | 역할 회수 |
| 점검 | 사람 수만큼 | 역할 수만큼 |
이것이 멤버와 역할 · 그룹과 부서가 하는 일이고, 회사 계정 체계와 이어 붙이는 것이 SSO입니다.
자주 하는 오해
"우리는 작은 회사라 권한을 나눌 필요가 있나요"
사람 때문이 아니라 사고 때문입니다. 계정 하나가 새면 그 계정이 닿는 전부가 새고, 실수로 지운 것도 그 범위만큼 지워집니다.
"키를 코드에 적어두면 편한데요"
편합니다. 그리고 그 코드가 복사되거나 공유되는 순간 키도 함께 갑니다. 키는 설정에, 코드에는 이름만.
확인
1. 인증과 인가는 무엇이 다릅니까?
답
인증은 "누구인가", 인가는 "무엇을 해도 되는가" 입니다. 각각 401과 403으로 드러납니다.
2. 권한을 "일단 넓게 주고 나중에 줄이는" 방식이 위험한 이유는?
답
줄이는 일은 미뤄지기 때문입니다. 넓히는 것은 막혔을 때 바로 알려지지만, 너무 넓은 권한은 사고가 나기 전까지 아무도 모릅니다.
3. API 키가 유출되면 무엇을 해야 합니까?
답
그 키를 폐기하고 새로 발급합니다. 고쳐 쓰는 것이 아닙니다. 그래서 어느 키가 어디에 쓰였는지 알아볼 이름이 필요합니다.
여기까지가 IT 기초입니다. 이제 같은 눈으로 AI 자체를 봅니다 → 언어 모델은 무엇을 하는 기계인가