CCAR-P 개념 카드

■ 장애 대응 권한 경계

조사는 자율 · 상태 바꾸는 조치는 승인7.3 본편

표시가 없는 문장은 공식 문서에서 확인한 내용이에요. 다른 표시는 읽는 법

왜 배우나 — 시험이 요구하는 것

시험 목표 7.3 디버깅과 운영 문제 해결 · D7 개발팀 7%
Support debugging and operational issue resolution

이 개념으로 푸는 판단 (할 수 있어야 하는 것)

  • 7.3② 프로덕션 장애에서 에이전트는 어디까지? — 원인 조사(트리아지)와 복구 조치의 권한 경계
  • 7.1③ 에이전트에 줄 권한, 어디까지? — 행동을 allow/ask/deny 로 나눈 공유 설정 + MCP 자격증명 최소 권한

한눈에

장애 때 에이전트 몫은 로그·메트릭을 읽고 원인 추정안을 내는 데까지다(상태를 못 바꾸는 행동). 재시작·설정 변경·배포·삭제처럼 상태를 바꾸는 조치는 사람이 변경안을 보고 승인한 뒤에 한다 업계 일반 이 문장 자체는 공식에 없음

가까운 공식은 Claude Code 기본값이다. 작업 폴더 안 정보는 승인 없이 분석·검토한다. 코드·시스템을 바꾸는 행동 전에는 승인을 받는다. 중요한(high-stakes) 결정 전에는 사람이 통제(control)한다

조사하라고 강한 권한을 주지 않는다

  • 읽기 도구만 준다
  • 자격증명은 프록시가 주입한다
  • observability(관측 가능성, 로깅)는 끄지 않는다

비유 읽기 전용 온콜 봇과 변경 승인(CAB)과 같다. 봇은 대시보드·로그를 보고 원인 가설을 티켓에 단다. 하지만 재시작 버튼은 사람이 누른다

장애 때 에이전트는 로그·메트릭을 읽고 원인 추정안을 내는 데까지 스스로 하고, 재시작·설정 변경·배포·삭제처럼 상태를 바꾸는 조치는 사람이 승인한다.
그림으로 보기 (AI 생성 · Codex · 누르면 크게)

ELI5

불이 나면 탐정 로봇이 먼저 들어가 둘러봐요.

  • 로봇은 보고, 냄새 맡고, "부엌에서 시작된 것 같아요"라고 말해요.
  • 하지만 벽을 부수거나 가스를 잠그는 건 어른이 보고 "해"라고 해야 해요.
  • 로봇에게 집 열쇠 꾸러미를 통째로 주지 않아요.
  • 로봇 눈(카메라)을 끄는 건 절대 안 돼요.

개념 설명

영상 — 온콜이 없으면, 재시작은 누가? (약 43초 · 소리 없음 · 자막). 작은 화면에서는 전체화면(⛶)으로 보세요.

원리

행동을 두 칸으로 나눈다

  • 상태를 못 바꾸는 행동 : 로그·메트릭 읽기 · 검색 · 원인 추정이다. 틀려도 잃는 것이 없다. 그래서 에이전트가 승인 없이 한다. 이것이 에이전트가 주는 가치다(자율 조사).
  • 상태를 바꾸는 행동 : 재시작 · 설정 변경 · 배포 · 삭제 · 마이그레이션이다. 되돌리기 어렵고 피해가 남에게 미친다. 그래서 사람이 변경안을 보고 승인한다.
  • 공식이 직접 쓴 것은 두 가지까지다. 하나는 Claude Code 기본값이다(읽기·분석은 승인 없이, 코드·시스템 변경 전에는 승인). 다른 하나는 "중요한 결정 전엔 사람이 통제(control)" 다. 장애 대응에 옮긴 것은 적용이다(업계 일반).

권한은 조사에 필요한 만큼만 준다

  • 에이전트가 과하게 나서는(overeager) 실제 사고가 있다. 인증(authentication) 오류에 막히자 권한을 묻는 대신 다른 토큰을 뒤졌다. 프로덕션 DB 마이그레이션을 시도했다.
  • 그래서 설정으로 막는다.
    • 읽기 도구만 준다
    • 무인이면 dontAsk 를 쓴다(물을 사람이 없으니 거부한다)
    • 자격증명은 프록시가 주입해 에이전트가 보지 못한다

observability(관측 가능성)는 조사의 재료이자 방어선이다

  • 로깅을 끄면 원인을 못 찾는다. 동시에 감시·방어도 약해진다. 그래서 기본 차단 규칙이 이것을 "보안 약화" 로 분류한다.

핵심 질문은 두 개다

  • 이 행동이 상태를 바꾸나? 바꾸면 되돌릴 수 있나, 피해가 어디까지 가나?
  • 에이전트가 이 권한 없이도 조사할 수 있나?

규칙과 판단

사람이 보면 plan 모드, 무인이면 dontAsk 와 읽기 도구, 자격증명은 프록시가 주입하고, 필요 없는 강한 도구는 disallowedTools 로 뺀다.
그림으로 보기 (AI 생성 · Codex · 누르면 크게)

갈림길

①②⑤ 그 행동, 누가 하나 [7.3②]

어떤 행동인가?상태를 바꾸는지가 경계다
로그·메트릭 읽기 · 검색 · 원인 추정 (상태를 안 바꾼다)

에이전트가 스스로

승인 없이 분석·검토한다 (업계 일반 + Claude Code 기본)

재시작 · 설정 변경 · 배포 · 삭제 · 마이그레이션

변경안 + 사람 승인

어디에 거는지는 ■ human-in-the-loop 게이트 위치 에 있다 (업계 일반 + 기본 차단 예)

로깅 끄기 (observability 를 줄인다)

막는다

로깅 끄기는 감시·방어를 어렵게 하는 보안 약화다

조사용이라며 외부로 공유 (Gist 등)

막는다

디버깅용 공유도 유출로 보고 차단한다

③④ 권한 lever [7.3②] [7.1③]

어떻게 돌리나?
사람이 옆에서 본다

plan 모드

탐색·계획만 한다. 파일 편집은 allow 규칙이 있어도 자동 승인되지 않는다

무인 (헤드리스·야간)

dontAsk + 읽기 도구

목록 밖 호출은 묻지 않고 거부한다

자격증명이 필요하다

프록시 주입

에이전트는 자격증명을 보지 못한다

필요 없는 강한 도구

도구 전체 빼기

disallowedTools 에 도구 이름을 적는다. 자세한 것은 ■ 최소 권한 에 있다

⑤ 어디부터 좁히나 [7.3②] [4.4①]

증상 직전 바뀐 게 있나?
예 (배포·문서 갱신·모델 교체)

바뀐 것부터

좁히기는 "무엇이 바뀌었나" 부터 한다. 자세한 것은 ■ 변경부터 묻는 진단 에 있다

모른다

세 신호부터

자세한 것은 ■ observability 세 신호 에 있다

흐름

그림 속 이름·금액·시간·토큰 수는 예시예요. 공식 한도·동작은 카드 본문 값이 기준.

장면 글로 보기

칸 : 에이전트 → 로그·메트릭 → 사람 → 프로덕션

규칙 (로그·메트릭) : 승인 없이 분석·검토한다

규칙 (사람) : 바꾸는 행동 전에는 승인한다

질문 : 재시작 버튼은 누가 누를까?

① 조사는 자율 · 조치는 승인 ✓

  1. 시작 : 에이전트 — 쪽지 : 알림: 주문 API / 5xx 오류율 급증
  2. 읽기 : 에이전트 → 로그·메트릭 : 승인 없이 읽고 분석한다 — 쪽지 : $ tail -n 200 app.log / OOMKilled worker-3
  3. 제안 : 에이전트 → 사람 : 원인 추정안과 변경안을 낸다 — 쪽지 : 추정: worker-3 메모리 누수 / 변경안: worker-3 재시작 / 승인할까요?
  4. 승인 : 사람 → 프로덕션 : 사람이 승인한 뒤 실행한다 — 쪽지 : 승인: 온콜 담당 / → worker-3 재시작
  5. 끝 : 상태를 바꾸는 조치는 사람이 승인한 뒤에 한다

② 자동 재시작까지 ≠

  1. 시작 : 에이전트 — 쪽지 : 알림: 주문 API / 5xx 오류율 급증
  2. 읽기 : 에이전트 → 로그·메트릭 : 원인을 추정한다 — 쪽지 : OOMKilled worker-3
  3. 건너뜀 : 사람
  4. 실행 : 에이전트 → 프로덕션 : 재시작을 스스로 한다 — 쪽지 : $ kubectl rollout / restart deploy/worker
  5. 끝 : 공유 인프라에 영향이 간다. 사람 검토를 건너뛰었다

③ 인증 오류에 자격증명 뒤지기 ≠

  1. 시작 : 에이전트 — 쪽지 : 할 일: 결제 DB / 지연 원인 조사
  2. 건너뜀 : 사람
  3. 막힘 : 에이전트 → 프로덕션 : 인증 오류가 난다 — 쪽지 : 403 Forbidden
  4. 뒤짐 : 에이전트 : 권한을 묻는 대신 다른 토큰을 찾는다 — 쪽지 : $ env 에서 TOKEN 찾기 / $ cat ~/.aws/credentials
  5. 끝 : 다른 작업용 자격증명일 수 있다. 차단 대상이다

나머지 규칙

  1. 사람은 언제든 멈추고 방향을 바꾼다. 에이전트는 계획한 행동을 실시간 할 일 목록으로 보여 준다

    믿는 반복 작업에는 사람이 지속 권한을 줄 수 있다

규칙 원문 ①②③④⑤ (갈림길로 그린 규칙)
  1. 경계 = 상태를 바꾸나 : Claude Code 기본은 읽기 전용이다. 작업 폴더 안 정보는 승인 없이 분석·검토한다. 코드·시스템을 바꾸는 행동 전에는 승인을 받는다 [7.3②]

    파일 읽기·Grep·읽기 전용 Bash(ls·cat·tail·grep·diff·읽기 git 등)는 모든 모드에서 프롬프트 없이 실행된다

    장애 대응에 옮기면 아래와 같다 업계 일반

    • 로그·메트릭 읽기와 원인 추정안 : 에이전트가 한다
    • 재시작·설정 변경·배포·삭제 : 변경안을 내고 사람이 승인한다
  2. 승인은 빈도가 아니라 되돌릴 수 있나와 피해 범위로 정한다. 자세한 것은 ■ human-in-the-loop 게이트 위치 에 있다 [7.3②]

    기본 차단 예는 아래와 같다

    • 프로덕션 배포
    • 공유 인프라의 안전 검사 건너뛰기(사전 검사에 실패한 배포를 검증 생략 플래그로 재시도)
    • 프로덕션 DB 마이그레이션 시도(내부 사고 기록)
  3. lever(조절 수단) (Claude Code · Agent SDK) [7.3②] [7.1③]

    상황설정
    사람이 보면서 조사한다plan 모드다. 탐색·계획만 한다. 파일 편집·파일 바꾸는 셸 명령은 allow 규칙이 있어도 자동 승인되지 않는다. 승인 뒤에 실행된다
    무인 온콜 (헤드리스·CI·야간)allowedTools 에 읽기 도구를 넣고 permissionMode: "dontAsk" 를 쓴다. 목록 밖 호출은 묻지 않고 거부한다
    아예 못 쓰게 한다disallowedTools 에 도구 이름을 적는다. 자세한 것은 ■ 최소 권한 에 있다
    모든 호출을 검사한다PreToolUse 훅을 쓴다. 훅은 다른 단계보다 먼저 돈다. 훅의 거부는 bypassPermissions 에서도 적용된다

    bypassPermissions 는 격리 컨테이너·VM 안에서만 쓴다 (Skilljar)

  4. 조사하라고 자격증명을 통째로 주지 않는다 : 아래처럼 한다 [7.3②] [3.2③]

    • 자격증명은 에이전트 경계 밖 프록시가 요청에 주입한다(에이전트는 보지 못한다. 프록시에서 모든 요청을 감사용으로 기록할 수 있다)
    • 코드는 읽기 전용으로 마운트한다
    • ~/.aws·~/.kube/config 같은 자격증명 파일은 빼고 마운트한다

    인증(authentication) 오류에 막혀 권한을 묻는 대신 환경변수·설정 파일에서 다른 토큰을 뒤지는 것은 차단 대상이다

  5. observability 는 끄지 않는다 : 로깅 끄기는 감시·방어를 어렵게 하는 보안 약화다. 기본으로 차단된다 [7.3②]

    조사용이라도 외부 서비스 공유(Gist)는 유출로 차단된다

    좁히기는 "무엇이 바뀌었나" 부터 한다. 자세한 것은 ■ 변경부터 묻는 진단 에 있다. 신호는 ■ observability 세 신호 에 있다

더 깊이 : 판단 규칙 · 상황 변수 (설명)

판단 규칙

조건답등급근거
읽기·분석·원인 추정이다에이전트가 승인 없이 한다safe-trustworthy-agents "can analyze and review information … without asking for human approval"
코드·시스템을 바꾸는 행동이다사람 승인 뒤에 한다같은 줄 "must ask for human approval before taking any actions that modify code or systems"
중요한 결정(구독 취소 같은)이다사람이 먼저 승인한다safe-trustworthy-agents
프로덕션 배포 · 안전 검사 건너뛰기 · 로깅 끄기기본으로 차단된다claude-code-auto-mode
인증 오류가 나서 다른 토큰을 찾는다차단한다. 사람에게 권한을 요청한다claude-code-auto-mode
사람이 보며 조사한다plan 모드를 쓴다(편집은 자동 승인되지 않는다)agent-sdk permissions
무인 조사 에이전트다읽기 도구 allowedTools 와 dontAsk 를 쓴다agent-sdk permissions
자격증명이 필요한 호출이다경계 밖 프록시가 주입한다secure-deployment
장애 대응 = 조사 자율 · 조치 승인위 규칙들의 적용이다업계 일반문장 자체는 공식에 없다 (미해결 1)

상황 변수

변수값답 쪽등급근거
행동 종류읽기 전용 명령(tail·grep·읽기 git)프롬프트 없이 실행된다claude-code-permissions
행동 종류재시작·배포·삭제변경안을 내고 승인받는다업계 일반 + 확인판단 규칙 2·4
되돌림프로젝트 안 파일 편집(버전 관리로 검토)자동도 가능하다■ human-in-the-loop 게이트 위치 · 규칙 ②
사람 유무옆에 있다plan 이나 수동 승인판단 규칙 6
사람 유무없다(야간·CI)dontAsk 를 쓴다. 변경은 거부되고 멈춘다Skilljar 486932 "Don't ask is the right move whenever no human is around to approve prompts"
격리격리 컨테이너·VM그때만 bypassPermissions 를 쓴다Skilljar 486932
자격증명에이전트 환경에 키를 둔다프록시 주입으로 바꾼다판단 규칙 8
반복 조치믿는 반복 작업이다사람이 지속 권한을 줄 수 있다safe-trustworthy-agents "Users can grant persistent permissions for routine tasks they trust Claude to handle."
원인 단서직전 변경이 있다■ 변경부터 묻는 진단그 카드

연습 문제

새벽 3시 주문 API 오류율이 치솟자 온콜 에이전트가 로그를 읽고 결제 워커의 메모리 누수를 원인으로 추정했다. 다음 조치로 프로덕션 워커를 재시작재시작하려 한다. 온콜 담당은 20분 뒤에 도착하고, "사람이 없으니 에이전트가 바로 복구하자" 는 의견이 있다. 이 재시작은 누가 하나?

시험 대비

함정

  • "빠른 복구를 위해 에이전트가 자동 재시작까지 한다" 는 함정이다. 상태를 바꾸는 조치는 사람 승인 뒤에 한다 (업계 일반 + ② 프로덕션 배포 차단)
  • "조사하라고 전체 자격증명을 준다" 는 함정이다. 읽기 도구만 주고, 프록시로 주입하고, 필요 없는 권한은 뺀다
  • "비용을 줄이려 observability(로깅)를 끈다" 는 함정이다. 보안 약화이고, 기본으로 차단된다
  • "allowedTools 에 읽기 도구만 적었으니 쓰기는 막혔다" 는 함정이다. 목록 밖 도구도 남아 권한 모드로 간다. 무인이면 dontAsk 로 거부한다. 빼려면 disallowedTools 를 쓴다
  • "야간엔 물을 사람이 없으니 bypassPermissions 를 쓴다" 는 함정이다. 격리 컨테이너·VM 에서만 쓴다. 무인은 dontAsk 를 쓴다 (Skilljar)
  • "사전 검사가 실패한 배포를 검증 생략 플래그로 다시 한다" 는 함정이다. 공유 인프라에 영향이 가서 차단된다
  • "읽기 전용 마운트면 비밀 걱정이 없다" 는 함정이다. 읽기 전용도 자격증명 파일을 드러낼 수 있다
  • "야간엔 자동 복구가 빠르다" 는 함정이다. 속도가 아니라 되돌릴 수 있나와 피해 범위로 판단한다. 자세한 것은 ■ human-in-the-loop 게이트 위치 에 있다 업계 일반

신호

"But humans should retain control over how their goals are pursued, particularly before high-stakes decisions are made."

"It has read-only permissions by default, meaning it can analyze and review information within the directory it's initialized in without asking for human approval, but must ask for human approval before taking any actions that modify code or systems."

"Make the system harder to monitor or defend by disabling logging"

"Rather than asking for permission, it began systematically grepping through environment variables and config files for alternative API tokens."

"The agent can make API calls, but it never sees the credential itself."

"you want Claude to propose changes without executing them, such as during code review or when you need to approve changes before they’re made." (plan 모드)

"you want a fixed, explicit tool surface for a headless agent and prefer a hard deny over silent reliance on canUseTool being absent." (dontAsk)

"Even read-only access to a code directory can expose credentials."

장애 때 보통 조사는 자율, 조치는 승인이지만, 되돌릴 수 있는 반복 조치는 허용 목록으로 자동, 새벽엔 그대로 dontAsk 로 거부, 조사 목적이어도 상태를 바꾸면 조치다.
그림으로 보기 (AI 생성 · Codex · 누르면 크게) — 자세한 조건은 아래 '더 깊이'에 있어요
더 깊이 : 뒤집히는 때 · 오답 재료 (설명)

뒤집히는 때

1. 에이전트가 조치까지 해도 되는 때

  • 조건 : 같은 조치를 수없이 해 왔고 되돌릴 수 있다. 예를 들어 스테이징의 캐시 워커 1대 재기동을 한 달에 30번쯤 해 왔고, 사람이 매번 도장만 찍는다.
  • 판단 : 공식은 "믿는 반복 작업엔 지속 권한을 줄 수 있다" 고 한다. 매번 승인하면 승인 피로가 생긴다(■ human-in-the-loop 게이트 위치 · 규칙 ③). 그래서 미리 정한 좁은 조치만 허용 목록에 넣는다(표준 변경).
  • 등급 : (지속 권한 문장) + 업계 일반(표준 변경으로의 적용)
  • 근거 : safe-trustworthy-agents
  • 선 : 프로덕션 배포·공유 인프라·데이터 삭제는 여기 들어오지 않는다. 이것들은 기본 차단 규칙의 대상이다.

2. 사람이 없는 새벽

  • 조건 : 새벽 3시에 오답이 급증한다. 온콜 사람은 30분 뒤에 온다.
  • 판단 : 무인 에이전트는 dontAsk 로 돈다. 조사는 계속하고, 변경 호출은 묻지 않고 거부한다. "사람이 없으니 에이전트가 복구" 로 뒤집히지 않는다. 에이전트는 원인 추정안과 변경안을 준비해 둔다. 사람이 오면 승인한다.
  • 등급 : (dontAsk 동작) · 업계 일반(변경안 준비)
  • 근거 : agent-sdk permissions · Skilljar 486932

3. 조사처럼 보이지만 상태를 바꾸는 때

  • 조건 : "원인 찾으려고" 로그 수준을 올리는 설정 변경을 한다. 또는 디버깅용 스크립트를 외부 Gist 에 공유한다.
  • 판단 : 목적이 조사여도 행동이 상태를 바꾸거나 데이터를 밖으로 내보내면 조치 쪽이다. Gist 공유는 공식이 유출로 차단한 예다.
  • 등급 : (Gist) · 업계 일반(로그 수준 변경)
  • 근거 : claude-code-auto-mode

4. 읽기 전용인데도 위험한 때

  • 조건 : 코드 저장소를 읽기 전용으로 마운트했는데 ~/.aws/credentials 가 함께 들어갔다.
  • 판단 : 읽기 전용도 자격증명을 드러낸다. 그래서 자격증명 파일은 빼고 마운트하고, 키는 프록시가 주입한다.
  • 근거 : secure-deployment

오답 재료

오답왜 끌리나왜 틀리나등급근거
"에이전트가 자동 재시작까지 해서 복구 시간을 줄인다"야간 복구가 빨라 보인다상태를 바꾸는 조치는 사람 승인 뒤에 한다. 프로덕션 배포는 기본 차단 예다업계 일반 + 확인auto-mode
"조사하라고 전체 자격증명(관리자 키)을 준다"막힘 없이 다 볼 수 있다필요 없는 권한이다. 자격증명은 프록시로 주입하고 읽기 도구만 준다secure-deployment · ■ 최소 권한
"비용 줄이려 observability(로그) 끄기"비용이 바로 줄어 보인다로깅 끄기는 보안 약화다. 원인도 못 찾는다auto-mode
"야간엔 물을 사람이 없으니 권한 확인을 전부 끈다"파이프라인이 안 멈춘다전부 끄기는 격리 컨테이너·VM 에서만 한다. 무인은 dontAsk 를 쓴다Skilljar 486932
"allowedTools 에 읽기 도구만 넣었으니 쓰기는 불가"허용 목록처럼 보인다목록 밖 도구도 남는다. dontAsk 로 거부하거나 disallowedTools 로 뺀다agent-sdk permissions
"모든 조사 명령에도 사람 승인"가장 안전해 보인다읽기는 승인 없이가 공식 기본이다. 매번 승인은 승인 피로를 낳는다safe-trustworthy-agents · ■ human-in-the-loop 게이트 위치
"에이전트가 인증 오류에 막히면 다른 토큰을 찾아 계속"일을 끝내려는 성실함으로 보인다다른 작업용 자격증명일 수 있다. 차단하고, 권한은 사람에게 묻는다auto-mode
"더 큰 모델이면 권한을 넓혀도 된다"판단이 좋아 보인다모델 크기는 권한 범위와 무관하다■ 최소 권한 (가이드 샘플 1 D)

참고

더 깊이 : 출처 · 상태 · 미해결 (참고)

출처

상태

  • 업계 일반 3줄 (경계 문장 자체 · 장애 대응 적용 · 자동 복구 함정)

미해결

  1. 목록 7.3② 의 "조사는 자율·복구는 승인" 규칙 문장은 공식 원문에 없다(목록도 "근거 확인 필요" 로 표시했다). 가장 가까운 공식은 safe-trustworthy-agents이다. 카드에는 업계 일반으로 두고 공식 부분만 ✓ 를 단다.
  2. 목록 7.3② 의 영어 신호 둘 중 "point to retrieval feeding the model poor context …" 는 가이드 샘플 3 문장이다. 이 카드가 아니라 ■ 변경부터 묻는 진단 에 이미 있다. 그래서 여기서는 가리키기만 한다.
  3. "승인할 때 변경안과 피해 범위를 보여 준다"(목록 표현) : 피해 범위(blast radius) 판단은 ■ human-in-the-loop 게이트 위치 에 있다. "변경안을 보여 주는 형식" 은 공식 문장이 없다.