1. 왜 API 보안인가 — Shadow API가 가장 큰 위험
Salt Security 2024 State of API Security: 평균 기업이 운영하는 API 수 613개, 그중 31%가 미문서·미관리(Shadow API). Gartner 2024: 2025년부터 API가 가장 빈번한 공격 표면, 45%+ 데이터 유출이 API 경로. Optus(2022.9·1,030만 PII)·T-Mobile(2023.1·3,700만)·Dell(2024.5·4,900만)·Twilio(2022.8) — 모두 API 인가 결함.
API는 ① 자동화(스크립트), ② 표준화(JSON/XML), ③ 풍부한 데이터(원시 객체 전체 노출), ④ WAF 우회 용이(정상 HTTPS 트래픽), ⑤ 인증·인가가 객체·기능 단위 복잡 — 모두 공격자에게 유리.
오해 1 — “API Gateway 있으면 보호됨.” Gateway는 1차 게이트, 인가 로직은 앱 단위. 오해 2 — “REST OK, GraphQL은 별개.” Top 10은 모든 프로토콜 공통, GraphQL·gRPC·WebSocket·AsyncAPI 모두 해당. 오해 3 — “Zero Trust 도입했으니 API는 자동 보안.” Zero Trust는 신원·세션 수준, API는 객체·함수 인가가 핵심.
관련 압박:
- EU NIS2 Article 21·EU CRA: API 인터페이스 보안
- PCI DSS v4.0.1 6.4.2: API 인증 의무
- 한국 ISMS-P 통신 보안
- GDPR Art. 32: 적정 보안
- 고객 RFP: SOC 2·ISO 27001 + API 보안 보고서
2. OWASP API Security Top 10 2023 — 10대 위험
2019 → 2023 변경(2023.6 발표):
| ID | 2023 | 2019 | 변경 |
|---|---|---|---|
| API1 | Broken Object Level Authorization (BOLA) | Broken Object Level Authorization | 유지 (가장 위험) |
| API2 | Broken Authentication | Broken Authentication | 유지 |
| API3 | Broken Object Property Level Authorization (BOPLA) | Excessive Data Exposure | 통합·확장 |
| API4 | Unrestricted Resource Consumption | Lack of Resources & Rate Limiting | 명칭 변경 |
| API5 | Broken Function Level Authorization (BFLA) | Broken Function Level Authorization | 유지 |
| API6 | Unrestricted Access to Sensitive Business Flows | (신규) | 신규 — 봇·자동화 남용 |
| API7 | Server Side Request Forgery (SSRF) | (신규) | 신규 |
| API8 | Security Misconfiguration | Security Misconfiguration | 유지 |
| API9 | Improper Inventory Management | Improper Assets Management | 명칭 변경 |
| API10 | Unsafe Consumption of APIs | Insufficient Logging & Monitoring | 신규 — 3rd party API 신뢰 |
API1 BOLA(60%+ 발견): URL·바디·JWT의 객체 ID 변경으로 다른 사용자 데이터 접근. 예: /api/users/123/orders → /api/users/456/orders. 차단 — 모든 객체 접근 시 사용자×객체 권한 검증.
API3 BOPLA(2023 확장): 객체 단위 권한 OK여도 속성(Property) 단위 미통제 — 사용자가 다른 필드 변경(예: role=user → role=admin). 차단 — Mass Assignment 차단, 명시적 필드만 허용.
API6 신규: 결제·할인·쿠폰·티켓 등 비즈니스 흐름 봇 남용. 차단 — 봇 탐지·인간 검증·Rate Limit·CAPTCHA.
3. OAuth 2.1·OIDC·JWT 모범 사례
OAuth 2.1(IETF Draft 2024 진행 중) — OAuth 2.0 + Best Current Practice 통합:
- PKCE 모든 클라이언트 의무(이전 Public Client만)
- Implicit Grant 폐지
- Resource Owner Password Credentials 폐지
- Refresh Token Rotation 권장
- HTTP only Cookie · Token Sender-constraining 권장
Grant Types(2.1):
- Authorization Code + PKCE: 모든 클라이언트
- Client Credentials: 서비스 간
- Device Code: IoT·TV
- Refresh Token: 갱신
OIDC(OpenID Connect):
- OAuth 2.0 위에 인증 레이어
- ID Token(JWT) — 사용자 정보
- UserInfo 엔드포인트
- Discovery·Dynamic Registration
JWT 모범사례 (RFC 8725·2020.2):
alg: "none"금지- 알고리즘 화이트리스트(서버 강제)
- 짧은 만료(
exp15분) aud·iss검증jti재사용 차단(Token Replay)- Refresh Token은 회전·DB 저장·취소 가능
- 민감 정보 페이로드 X — JWT는 평문(Base64) 디코딩 가능
DPoP(Demonstration of Proof-of-Possession·RFC 9449·2023.9):
- Bearer Token Sender-constraining
- 클라이언트 키 쌍 → 요청마다 서명
- Bearer 탈취 시 재사용 불가
- 모바일·SPA에 강력
mTLS·SPIFFE/SPIRE:
- 서비스 간 통신 — Bearer 대신 mTLS
- SPIFFE/SPIRE — Cloud-Native Workload Identity
- Service Mesh(Istio·Linkerd·Cilium)에 자동
4. Stage 1 — API 인벤토리·Shadow 발견 (1~2개월)
API Discovery·Inventory:
- 트래픽 분석 — 미문서 API 자동 발견
- 도구: Salt Security·Noname·Cequence·Wallarm·Akamai API Security·Traceable·Imvision(Palo Alto)
- 클라우드 네이티브: Wiz API Security·Orca API·42Crunch
- 오픈 소스: Akto(API 보안)·Mayhem·KrakenD
Shadow API 유형:
- Shadow: 회사 미인지 API
- Zombie: 더 이상 사용 안 됨, 노출만 있음
- Rogue: 비공식 개발자·외주가 만든 API
OpenAPI Spec 표준화:
- OpenAPI 3.1(2021·JSON Schema 2020-12 호환)
- 모든 API에 Spec 의무화
- 도구: Swagger·Redoc·Stoplight·Bump·OpenAPI Generator
- Spec → 자동 SDK·문서·테스트·게이트웨이 정책
AsyncAPI(이벤트·메시지):
- AsyncAPI 3.0(2023.12)
- Kafka·MQTT·AMQP·WebSocket·SSE 표준 문서화
위험 평가:
- 각 API에 OWASP API Top 10 적용 가능성
- 민감 데이터(PII·PCI·PHI·기밀) 처리 여부
- 외부 노출·내부·B2B 분류
- 트래픽·소비자 수
- 비즈니스 영향(Tier 1·2·3)
5. Stage 2 — 설계·인증·인가 (3~6개월)
Authentication 표준화:
- 외부 사용자: OAuth 2.1 + OIDC + PKCE
- 서비스 간: mTLS 또는 OAuth Client Credentials
- IoT·머신: Client Credentials + DPoP
- 레거시 통합: API Key (Rate Limit·Rotation 강화)
- MFA: 민감 작업에 Step-up
Authorization 패턴:
- RBAC: 역할 기반
- ABAC: 속성 기반 (사용자·자원·환경·행동)
- ReBAC: 관계 기반 (Google Zanzibar·OpenFGA·SpiceDB·Permify·Topaz)
- Policy as Code: OPA·Cedar(AWS)·OPAL
Object-level Authorization(API1 차단):
- 미들웨어에서 사용자×자원 권한 자동 검증
- 절대 클라이언트 신뢰 X (
user_id헤더 X) - DB 쿼리에 사용자 ID 필수 결합:
# Wrong:
order = Order.find(request.params['id'])
# Right:
order = Order.find(request.params['id'], owner: current_user.id)
# OR
authorize! :read, order
Property-level(API3 차단) — Mass Assignment 차단:
- 명시적 필드 허용(Strong Parameters·DTO 검증·Whitelisting)
- 응답 시 민감 필드 제거(Serializer·Output Schema)
- 예: User에
is_admin·balance필드 직렬화 X
Schema Validation:
- OpenAPI Spec → 자동 입력·출력 검증
- 도구: Express-OpenAPI-Validator·FastAPI(자동)·Spring Boot 3 + springdoc·Connexion·Stoplight Prism
- 게이트웨이에서 사전 차단
6. Stage 3 — API Gateway·정책·Rate Limiting (3~6개월)
API Gateway 선택:
| 도구 | 특징 |
|---|---|
| Kong | OSS·플러그인 풍부·Konnect SaaS |
| Apigee(Google) | 엔터프라이즈·관리·분석 |
| AWS API Gateway | 서버리스 Native |
| Azure APIM | M365 통합 |
| KrakenD | 고성능·OSS·Ultra-fast |
| Tyk | OSS·Multi-cloud |
| Gloo Edge(Solo) | Envoy 기반·K8s 친화 |
| Emissary-ingress | Envoy·CNCF Incubating |
| WSO2 API Manager | 종합·OSS |
필수 정책:
- OAuth 검증(JWKS·Introspection)
- API Key 인증·Rate Limit
- Schema Validation(OpenAPI 기반)
- Rate Limit: 사용자·IP·API Key·티어별
- Quota: 일·월
- CORS 명시적 origin
- TLS 1.3 강제
- Bot Detection(Reblaze·Cloudflare Bot Mgmt·Akamai Bot Manager)
- WAF 통합(Cloudflare·AWS WAF·F5·Imperva)
Rate Limiting 전략:
- 익명: 분당 60·시간당 1,000
- 인증: 분당 600·시간당 10,000
- 프리미엄: 분당 6,000·시간당 100,000
- 비즈니스 흐름(체크아웃·로그인): 별도 엄격
- 알고리즘: Token Bucket·Sliding Window·Fixed Window
Backend for Frontend(BFF) 패턴:
- 클라이언트별 BFF — 모바일·웹·B2B 분리
- 인증·인가·집계를 BFF에 집중
- 백엔드는 내부 mTLS만 노출
GraphQL 보안:
- Query Depth Limit
- Query Complexity Analysis
- Persisted Queries(허용 쿼리만)
- Field-level 인가
- Introspection 비활성(프로덕션)
- GraphQL Armor·Apollo Operation Safelist
gRPC 보안:
- mTLS 의무
- Interceptor 기반 인가
- Protobuf schema 검증
- ALTS(Google) 또는 SPIFFE
7. Stage 4 — 테스트·DAST·Fuzzing (지속)
Pre-deployment 테스트:
- 단위·통합: 인증·인가 시나리오 의무
- 계약 테스트: Pact·OpenAPI Diff
- Spec 검증: Spectral·Stoplight
DAST for API:
- OWASP ZAP API Scan: OpenAPI 기반
- Burp Suite Professional API Scanner(2024.4 신규)
- StackHawk: CI/CD 통합
- Acunetix·Invicti·Veracode
- APIsec.ai·Mayhem(API Fuzzing)
Fuzzing:
- Schemathesis: Property-based, OpenAPI 기반
- APIFuzzer·RESTler(Microsoft)
- 의도하지 않은 입력으로 5xx·인가 우회·SQLi 발견
Security Testing 매트릭스(OWASP WSTG·ASVS V11/V12):
- 인증 우회(Bearer 변조·JWT alg=none·만료 무시)
- 인가 우회(BOLA·BFLA·BOPLA)
- Mass Assignment
- Rate Limit 회피
- SSRF(외부 호출)
- JSON Injection·XML XXE
- Race Condition(Tocou)
Production 모니터링:
- 인증 실패 폭증
- 비정상 404·403 패턴(Enumeration)
- 비정상 Rate(스크래핑)
- 비정상 페이로드 크기·필드
- 다른 ASN·국가에서 동시 접근
Anomaly Detection·BAS:
- Salt Security·Noname·Wallarm: ML 이상 탐지
- Cequence: 봇·자동화 차단
- Wallarm Goth/Akto: 정책 학습
8. Stage 5 — 거버넌스·고도화 (지속)
거버넌스 체계:
- API Product Manager: 비즈니스 측면
- API Architect: 기술 표준
- API Security Lead: 보안 거버넌스
- API Council: 분기 운영
Style Guide·Standard:
- 명명 규칙(snake_case·camelCase·kebab-case)
- 버저닝(URL·Header·Media Type)
- 페이지네이션·필터·정렬
- 에러 표준(RFC 9457 Problem Details)
- 인증·인가 표준 단일화
- 도구: Spectral(Stoplight)·Vacuum(Quobix)·Optic
API Catalog·Portal:
- 내부: Backstage(Spotify)·Roadie·Port·Cortex
- 외부: Apigee Portal·Kong Konnect·Stoplight·Bump·ReadMe
- Discovery·문서·SDK·테스트·등록
버전·폐기:
- 명확한 Deprecation 정책(6~12개월)
Sunset헤더(RFC 8594)- API Catalog에 EOL 표시
- 강제 차단 전 다단계 통지
컴플라이언스 매핑:
- OWASP ASVS 5.0 V11(Web Service)·V12(API)
- PCI DSS v4.0.1 — 인증·암호화·로깅
- ISMS-P — 인증·통신 보안
- NIST CSF·SP 800-204(API)
- EU NIS2·CRA
고도화:
- eBPF API Observability: Pixie·Inspektor Gadget·Tetragon
- Service Mesh + WAF: Coraza WAF(OSS·Apache ModSecurity 호환)
- AI for API Security: 자동 정책 생성·이상 탐지
- Agentic AI API: LLM·MCP — API 호출 권한·승인 게이트
- WebAssembly Filter: Envoy·Istio Wasm Filter 보안 통제
9. 비용·ROI
| 항목 | 비용 (연간) |
|---|---|
| API Gateway 라이선스(Kong·Apigee·Tyk) | 1~30억 |
| API Security Platform(Salt·Noname·Wallarm) | 1~20억 |
| WAF·Bot Detection(Cloudflare·F5·Akamai) | 1~10억 |
| DAST·Fuzzing(StackHawk·Burp·Schemathesis 무료) | 0~5억 |
| Identity(Auth0·Okta·Entra ID API용) | 1~10억 |
| 인력(API Security 1~5명) | 2~25억 |
| 합계 (중견 제조사) | 5~100억 |
ROI:
- T-Mobile 2023 침해 $350M 합의 → BOLA·BFLA 단일 결함 손실
- 평균 API 침해 비용(Salt 2024) $670K → 1건 예방 = 5~10년치 비용
- 사이버보험 — API Security 운영 시 15~25% 할인
- 컴플라이언스 자동화(ISMS-P·PCI·SOC 2)
- 개발 속도 — 표준화로 API 출시 30~50% 단축
10. 자가 점검
인벤토리·표준:
- 모든 API OpenAPI 3.1 Spec
- AsyncAPI 3.0 (이벤트)
- Shadow API 자동 발견
- API Catalog·Portal
- Style Guide·Linter(Spectral)
인증·인가:
- OAuth 2.1 + PKCE·외부
- mTLS·서비스 간
- DPoP 검토
- JWT RFC 8725 준수
- Object·Property·Function 단위 인가(API1·3·5)
- ReBAC/ABAC(OpenFGA·OPA)
게이트웨이·정책:
- Schema Validation 강제
- Rate Limit·Quota
- WAF·Bot Detection
- CORS 명시적
- TLS 1.3 강제
테스트·모니터링:
- OWASP ZAP API·Burp·StackHawk DAST
- Schemathesis·RESTler Fuzzing
- OWASP API Top 10 매트릭스
- 이상 탐지(Salt·Noname·Wallarm)
- SIEM·SOAR 통합
거버넌스·매핑:
- API Council 분기
- Deprecation·Sunset
- OWASP ASVS V11/V12
- PCI DSS·ISMS-P·NIS2 매핑
- eBPF·Service Mesh·Wasm Filter 검토
11. 마무리 — API는 새 데이터 경계
API Security는 ① 인벤토리·Shadow 발견·표준화, ② 설계·인증·인가, ③ 게이트웨이·정책·Rate Limiting, ④ 테스트·DAST·Fuzzing, ⑤ 거버넌스·고도화 — 5단계로 정착시킨다. 가장 중요한 통제는 API1 BOLA·API3 BOPLA·API5 BFLA — 객체·속성·기능 단위 인가, 세 가지 모두 백엔드 로직 의무다. Gateway·WAF·DAST는 보조, 본질은 코드에 있다.
통합 사이클
- Kubernetes 컨테이너 보안
- Cloud Security CNAPP
- AI/LLM 보안 OWASP LLM Top 10
- NIST PQC·FIPS 140-3
- Penetration Testing·Red Team
- CTI 위협 인텔리전스 MISP·STIX
- 침해사고 대응 NIST SP 800-61
- BCP·DRP·ISO 22301
- DevSecOps Shift-Left CI/CD
- Threat Modeling STRIDE·PASTA·LINDDUN
- CWE·CVSS·EPSS·KEV
- FIDO2·WebAuthn·Passkey
- SLSA·OpenSSF·Sigstore
- NIST SSDF SP 800-218
- Zero Trust Architecture
- OWASP Top 10·ASVS·SAMM
- ISO 27001 인증
- 한국 ISMS-P
- NIST CSF 2.0
- EU NIS2
- EU CRA
- HITRUST CSF
- CIS Controls v8.1
- MITRE ATT&CK
