#MCP authorization 체크리스트: OAuth, scope, 승인, 로그
이 글은 MCP authorization 검토용 초안 worksheet입니다. 실제 OAuth 구현, 운영 보안, 컴플라이언스, 개인정보 보호, 침해 방지, 고객 데이터 처리 안전성, 자동화 성과를 증명하지 않습니다. 실제 계정·고객 데이터·쓰기 권한 연결 전에는 별도 보안 검토와 샌드박스 테스트가 필요합니다.
#바로 답변
MCP authorization 체크리스트는 “MCP 도구가 누구 권한으로, 어떤 scope를 받아, 어떤 데이터에 접근하고, 어떤 작업을 실행하며, 누가 승인·철회·rollback을 책임지는가”를 연결 전에 기록하는 검토표입니다.
실제 데이터나 쓰기 가능한 시스템에 MCP workflow를 연결하기 전, 최소한 authorization boundary, requested scope, exposed tool, human approval gate, allowed log field, redaction rule, revoke path, rollback owner를 적어야 합니다.
이 worksheet를 작성해도 OAuth가 구현됐다는 뜻은 아닙니다. production readiness, security, compliance, privacy, breach prevention, saved hours, conversion, ranking, traffic, leads, revenue를 증명하지도 않습니다. 목적은 credential과 민감 데이터가 workflow에 들어가기 전에 권한 경계, 승인, 로그 제한을 빠짐없이 기록하는 것입니다.
#오늘 확인한 공식 소스
| Source | URL | Final URL | Checked date | Owner | Supported claim family | Claim limit |
|---|---|---|---|---|---|---|
| MCP authorization tutorial | https://modelcontextprotocol.io/docs/tutorials/security/authorization | https://modelcontextprotocol.io/docs/tutorials/security/authorization | 2026-06-05 | Model Context Protocol | MCP authorization 개념과 검토 질문 구성. | 이 문서나 독자 환경에 OAuth가 구현됐다는 증거 아님. |
| MCP security best practices | https://modelcontextprotocol.io/docs/tutorials/security/security_best_practices | https://modelcontextprotocol.io/docs/tutorials/security/security_best_practices | 2026-06-05 | Model Context Protocol | security/privacy 관련 주의점, consent, redaction 검토 항목. | secure-by-default, compliance, privacy, breach-prevention 보장 아님. |
| MCP latest authorization spec | https://modelcontextprotocol.io/specification/latest/basic/authorization | https://modelcontextprotocol.io/specification/2025-11-25/basic/authorization | 2026-06-05 | Model Context Protocol | authorization spec-level reference. | implementation proof 아님. 배포별 local review와 test 필요. |
| MCP latest transports spec | https://modelcontextprotocol.io/specification/latest/basic/transports | https://modelcontextprotocol.io/specification/2025-11-25/basic/transports | 2026-06-05 | Model Context Protocol | authorization boundary를 볼 때 필요한 transport context. | setup guide, runtime evidence, deployment proof, security certification 아님. |
#1분 판단 기준
| 질문 | 연결 전 안전한 답 |
|---|---|
| 누가 승인했나요? | user, service owner, admin 중 승인 주체와 날짜가 기록돼야 합니다. |
| 어떤 scope가 필요한가요? | scope 문자열, 목적, 최소 권한 이유가 있어야 합니다. |
| 어떤 tool이 노출되나요? | read, write, delete, external send, account mutation 중 어디인지 분류해야 합니다. |
| 어떤 데이터에 닿나요? | public, internal, sensitive, regulated, customer data 여부를 분리해야 합니다. |
| 사람 승인이 필요한가요? | write, send, delete, sensitive-read는 승인 gate를 먼저 정해야 합니다. |
| 로그에 무엇이 남나요? | tool name, timestamp, approval ID처럼 최소 field만 허용해야 합니다. |
| 어떻게 철회하나요? | revoke owner, rollback path, test date가 있어야 합니다. |
한 줄로 줄이면 이렇습니다. “읽기 전용 sandbox tool인가, 아니면 실제 계정에 쓰기·전송·삭제·민감정보 접근을 할 수 있는 tool인가?” 두 번째라면 approval, redaction, rollback을 먼저 적어야 합니다.
#OAuth와 scope boundary 표
OAuth와 scope 검토는 기술 용어를 운영 질문으로 바꿔야 합니다. 핵심 질문은 “누가 이 tool에 무엇을 하도록 허용했고, 어떤 resource에 대해서만 허용되며, 누가 철회할 수 있는가?”입니다.
| Review item | Operator question | Record before live use | Boundary |
|---|---|---|---|
| OAuth grant | 어떤 user, service, admin이 access를 승인했나요? | approver, date, environment, consent context | grant record만으로 security proof가 되지 않습니다. |
| Requested scope | 정확히 어떤 permission이 필요한가요? | scope string, reason, minimum required access | broad scope는 더 강한 승인 없이는 normal 처리하지 않습니다. |
| Audience / resource | token을 받아야 하는 server나 API는 어디인가요? | resource server, tenant/environment, data class | token 하나가 모든 API에 맞는다고 가정하지 않습니다. |
| Token lifetime | access가 얼마나 오래 지속되나요? | expiry, refresh behavior, rotation owner | raw token이나 Authorization header를 log에 남기지 않습니다. |
| Revocation path | 누가 access를 제거할 수 있나요? | revoke owner, rollback path, test date | revoke plan은 production 의존 전 test가 필요합니다. |
| Human approval | 어떤 action이 명시적 승인 대상인가요? | trigger, approver role, approval record | approval gate는 ambiguity를 줄이지만 safe outcome을 보장하지 않습니다. |
#Tool permission 표
아래 표는 실제 connector 존재 증거가 아닙니다. 실제 CRM, email, Slack, Discord, customer-data workflow가 연결돼 있다는 뜻도 아닙니다. live account 연결 전 권한표를 어떻게 써야 하는지 보여주는 placeholder입니다.
| Tool | Data touched | Capability | Approval requirement | Allowed log fields | Redaction rule | Rollback owner |
|---|---|---|---|---|---|---|
| `search_docs` | 선택된 public 또는 internal document index | read | public sandbox는 no, private docs는 yes | tool name, timestamp, collection label | shared log에 raw private document text 금지 | workspace owner |
| `create_ticket` | issue tracker | write | ticket 생성 전 yes | ticket title summary, tool name, status | customer identifier, token, private incident detail 금지 | ops owner |
| `send_email` | email account | external send | 매번 yes | recipient domain class, approval ID, send status | full email body, private address, token, auth header 금지 | account owner |
| `update_crm` | CRM record | write/account mutation | 매번 yes | record type, field group, approval ID | customer name, email, phone, raw note, account ID 금지 | revenue ops owner |
| `delete_file` | storage workspace | destructive action | default blocked | blocked action, requester, reason | private customer/employee data가 들어간 path 금지 | system owner |
#사람 승인 gate
다음 MCP action은 실제 사용 전 명시적 사람 승인을 기본값으로 둡니다.
- 외부 시스템에 쓰기.
- 메시지, 이메일, notification 발송.
- sensitive, private, regulated, customer data 읽기.
- account, permission, billing setting, CRM field, ticket, file 변경.
- 삭제, 철회, overwrite, publish, submit, expose처럼 되돌리기 어렵거나 외부에 보이는 작업.
Approval screen이나 approval log에는 tool name, intended action, data class, expected result, reversibility, rollback owner, undo 가능 여부가 보여야 합니다. 이 정보는 review control입니다. certification이 아닙니다.
#Log와 redaction 체크리스트
log를 켜기 전 아래 항목을 막습니다.
- API key, OAuth token, cookie, refresh token, raw Authorization header, webhook secret.
- customer name, email, phone number, account ID, private workspace name, private document text.
- full tool input/output dump 기본 저장.
- raw OAuth response, token exchange, secret material이 들어간 prompt, connector payload.
- “secure by default”, “compliance-ready”, “privacy-safe”, “customer-data safe” 같은 검증 없는 표현.
- 실제 secret처럼 보일 수 있는 예시값. 필요한 경우 `sk_test_xxx`, `customer_example`, `workspace_demo` 같은 dummy value만 사용합니다.
#연결 전 decision worksheet
```text MCP authorization review worksheet
Workflow / server: Reviewer: Review date: Environment: sandbox / staging / production candidate Review status: sandbox / staging / production candidate
1) Authorization boundary
- OAuth grant owner:
- Requested scopes:
- Scope justification:
- Audience / resource server:
- Data class touched:
- Token lifetime / refresh behavior:
- Revoke owner:
- Rollback path:
2) Tool capability
- Tool name:
- Read/write/delete/external-send capability:
- External systems touched:
- Sensitive or customer data touched:
- Human approval required? yes/no + trigger:
- Blocked actions:
3) Logs and redaction
- Allowed log fields:
- Fields never logged:
- Redaction rule:
- Log retention owner:
- Example placeholder values only:
4) Decision
- Allow in sandbox / allow with approval / block:
- Reason:
- Next review date:
- Reviewer signoff:
```
#이 worksheet가 증명하지 않는 것
| Claim area | 이 worksheet가 도울 수 있는 것 | 여전히 증명되지 않는 것 |
|---|---|---|
| Authorization | grant, scope, approval, log, revoke owner를 기록. | OAuth가 production에서 올바르게 구현됨. |
| Tool safety | write, send, delete, sensitive-read action에 review gate 설정. | connector가 실패, leak, misuse 없이 동작함. |
| Logs | live use 전 redaction rule 문서화. | log가 compliant, private, breach-proof임. |
| Production readiness | review question 정리. | runtime reliability, saved time, conversion, ranking, traffic, leads, revenue, compliance. |
#NO_GO production/security claims
이 페이지에서는 아래처럼 말하지 않습니다.
- 이 site가 customer system용 production MCP를 운영한다.
- 실제 customer system에 OAuth가 구현됐다.
- MCP는 secure by default다.
- 이 체크리스트가 security, compliance, privacy, breach prevention, safe data handling, audit readiness를 보장한다.
- 이 worksheet 때문에 live connector, external credential, customer-data workflow, account automation, saved-hours result, conversion result, ranking result, traffic result, lead result, revenue result가 존재한다.
- setup command, connector JSON, credential flow, implementation walkthrough가 여기 있다. 그런 내용은 별도 test와 QA approval이 필요합니다.
#FAQ/schema parity note
Schema target은 `Article` primary입니다. `FAQPage`는 아래 질문과 답변이 body copy에 보이기 때문에 후보입니다. FAQ markup은 아래 visible answer보다 강한 claim을 포함하면 안 됩니다.
#CTA caveat
MCP authorization review worksheet는 운영자가 tool permission, approval gate, log redaction을 실제 데이터 처리 전 기록하도록 돕는 자료입니다. runtime success, saved hours, security, compliance, privacy, conversion, ranking, traffic, leads, revenue를 증명하지 않습니다.
#FAQ
#MCP는 기본적으로 안전한가요?
아니요. MCP는 connection과 tool 개념을 제공합니다. 하지만 authorization boundary, tool permission, token handling, human approval, log rule은 workflow마다 별도로 검토해야 합니다.
#이 체크리스트가 OAuth 구현을 증명하나요?
아니요. 이 글은 review worksheet입니다. grant, scope, audience, token lifetime, revocation 질문을 정리할 수는 있지만 implementation evidence가 아닙니다.
#쓰기 가능한 tool은 사람 승인이 필요한가요?
네. external send, record update, account mutation, destructive action, sensitive-data access는 live use 전 human approval과 rollback owner를 먼저 기록해야 합니다.
#로그에 raw tool input과 output을 남겨도 되나요?
기본값은 아니요. log는 secret, token, PII, customer identifier, private document text, raw OAuth response, connector payload를 저장하지 않는 기준으로 설계해야 합니다. 별도 security review가 승인한 최소 field만 남기는 방식으로 제한합니다.