메인 콘텐츠로 건너뛰기
현대 에이전트는 즉석에서 기능을 설치합니다: 레지스트리의 skill, 커뮤니티 MCP 서버, URL의 플러그인. 각각은 매니페스트, 툴 세트, 그리고 요청된 권한 세트를 제공하며 — 각각은 에이전트가 로드하는 순간 공급망 위험입니다. 조용히 shell.exec와 외부 네트워크 스코프를 요청하는 skill은 사건 중에 발견되는 것이 아니라 실행되기 전에 검토되어야 할 바로 그런 종류입니다. Firewall의 Skills 거버넌스가 바로 그 검토입니다. 모든 설치 가능한 기능은 워크스페이스 범위 레코드로 등록되고, 결정적 위험 엔진에 의해 스캔되며, 위험 밴드와 강제 모드가 할당되고 — 런타임에 — 그 모드가 firewall의 규칙 판정 위에 올라탑니다.

1. 여기서 “skill”이란

skill 레코드는 하나의 설치 가능한 에이전트 기능입니다. 단일 모델이 세 가지 종류를 일반화하므로, 하나의 스캐닝, 점수 매기기, 승인 평면이 에이전트가 자체 설치하는 모든 것을 통제합니다:
종류무엇인지
skill패키징된 기능 — 매니페스트와 툴 세트, 그리고 시스템 프롬프트 조각.
mcp_server통제되는 아티팩트로 등록된 bring-your-own MCP 서버.
plugin플러그인 스타일 확장.
각 레코드는 또한 소스를 가집니다 — builtin, registry, private, byo_mcp, 또는 auto_detected — 이는 신뢰 평가를 공급합니다.

2. 스캐너

등록 시(및 요청 시), 스캐너는 매니페스트와 선언된 스코프에 대해 결정적이고 의존성이 없는 패스 세트를 실행합니다. 각 패스는 info, warn, 또는 error의 심각도를 가진 findings를 내보냅니다:
패스플래그심각도
prompt_injection지시를 재정의하려는 매니페스트 텍스트(ignore previous instructions, you are now, 선두 system:…).warn
tool_creep매니페스트가 사용하지만 allowed_tools선언하지 않은 툴 이름.error
network_egressskill의 네트워크 스코프에서 승인되지 않은, 매니페스트 내 HTTP(S) 호스트.warn
fs_write_unsafe/tmp 밖 경로의 쓰기 모드 파일시스템 스코프(트래버설 안전).error
data_scope민감한 데이터 스코프(pii, financial, customer).info
unsigned서명 없는 registry skill.warn
findings는 스캔 판정으로 롤업됩니다: 임의의 errorblocked; 그렇지 않으면 임의의 warnflagged; 그렇지 않으면 clean.

3. 위험 점수 및 밴드

동일한 findings가 결정적 위험 점수(0–100, 카테고리별 상한과 함께 가산적)를 공급합니다. 가장 무거운 기여자는 위험한 기능입니다:
기능가중치
셸 실행+30
임의 코드 eval+30
/tmp 밖 파일시스템 쓰기+25
시크릿 읽기+25
외부 네트워크 egress+20
Tool-creep, prompt-injection, egress, 그리고 data-scope findings가 그 위에 더해지고(각각 상한 적용), 서명 없는 registry skill은 +15를 더하며, 완화 조치는 차감합니다 — 서명된 skill은 −10, error finding이 없는 매니페스트는 −5. 점수는 밴드로 매핑됩니다:
밴드점수
low0–25
medium26–50
high51–75
critical76–100
이 가중치는 드리프트 가드 테스트에 의해 고정되어 있습니다 — 의도적인 스펙 변경 없이는 움직이지 않으므로, 밴드는 모든 워크스페이스에서 동일한 것을 의미합니다.

4. 강제 모드

밴드와 판정이 함께 강제 모드를 도출합니다 — 이 skill이 소유한 툴이 호출될 때 firewall이 실제로 무엇을 하는지:
모드런타임에서의 효과
allowskill이 자체적으로 아무것도 부과하지 않음; 규칙 판정이 결정.
quarantinedeny에 미치지 않는 모든 것을 pending_approval로 격상 — skill의 툴은 사람이 승인한 후에만 실행됨.
blockskill의 툴에 deny를 강제.
도출은 두 신호 중 더 엄격한 것을 취합니다: 밴드(low/medium → allow, high → quarantine, critical → block)와 스캔 판정(blocked → block, flagged → quarantine). 판정을 blocked로 만드는 단일 error finding은 수치 밴드가 low일 때에도 quarantine 또는 block합니다 — 신중한 방향. 오퍼레이터는 모드를 명시적으로 설정할 수 있습니다; 재스캔 시 모드는 오직 더 엄격하게 래칫될 뿐, 당신이 설정한 block이나 quarantine을 결코 완화하지 않습니다.

5. 신뢰 신호

정적 스캔을 넘어선 두 신호가 skill이 어떻게 취급되는지를 알려줍니다:
  • 서명된 게시자. 신뢰된 게시자의 서명을 지닌 skill은 더 신뢰할 수 있는 것으로 취급됩니다(서명 완화 조치가 그 위험 점수를 낮춤); 서명 없는 registry skill은 페널티를 받습니다. 워크스페이스가 신뢰하는 게시자를 당신이 관리합니다.
  • 리소스 평판. skill의 입지는 시간에 걸친 라이브 동작에 의해 조정될 수 있습니다 — 거부와 이상이 위험을 높이고, 클린 스트릭이 낮춥니다 — 따라서 프로덕션에서 오작동하는 아티팩트는 매니페스트가 클린하게 스캔되었더라도 quarantine 쪽으로 표류합니다.

6. 자동 탐지된 기능

스캐너는 당신이 손수 무언가를 등록할 때만 실행되는 것이 아닙니다. 에이전트가 기능을 자체 설치하고 그 툴이 처음 게이트웨이를 가로지를 때, Firewall은 그것을 자동 탐지하고(핫 경로 밖에서, 비동기적으로), 관찰한 것으로부터 매니페스트를 합성하며, 동일한 스캔, 점수, 모드 도출을 실행합니다 — source = auto_detected로.
자동 탐지된 기능은 검토될 때까지 격리됩니다. 그렇지 않으면 allow로 해석될 자동 탐지된 모든 것은 사람이 검토할 때까지 quarantine으로 하한 처리됩니다(그리고 criticalblock으로 유지됩니다). 아무도 승인하지 않은 기능은 그것이 무해하게 스캔되었다는 이유만으로 무임승차를 얻지 않습니다 — 당신이 그것을 살펴본 후에만 실행됩니다.

7. 런타임 강제

툴 호출이 firewall 엔진에 도달하면, 그것은 소유하는 skill에 귀속되고, 그런 다음 skill의 모드가 규칙 판정 위에 적용됩니다:
  1. 귀속. 호출은 먼저 선언된 allowed_tools로, 그다음 mcp_server 네임스페이스 접두사로, 그다음 워크스페이스 전체의 가장 제한적인 강제 폴백으로 skill에 매치됩니다.
  2. 규칙 판정. 정책의 규칙이 평소처럼 실행됩니다 — 그리고 규칙의 skill_name_glob은 규칙을 특정 skill로 범위 지정할 수 있게 합니다.
  3. 모드 오버라이드. block skill은 deny를 강제합니다; quarantine skill은 deny에 미치지 않는 모든 것을 pending_approval로 격상시킵니다; allow는 판정을 그대로 둡니다.
skill 귀속은 페일 클로즈합니다. 툴이 귀속될 수 없으면(캐시 없는 DB 오류, 또는 큐레이팅된 소스 아래의 선언되지 않은 툴), 호출은 허용되기보다 검토를 위해 보류됩니다. 그리고 skill 모드는 shadow mode와 독립적입니다 — 격리되거나 차단된 skill은 정책이 shadow 롤아웃 중일 때에도 여전히 강제됩니다.

8. 수명 주기

  • 등록POST /skills는 동기적으로 검증하고 스캔하며, skill과 그 findings 및 판정을 반환합니다. 모드가 도출됩니다(또는 당신의 명시적 모드가 존중됩니다).
  • 업데이트 — 새 매니페스트를 재스캔합니다; 모드는 악화된 스캔에서 더 엄격하게 래칫되지만 저장된 block/quarantine을 결코 완화하지 않습니다.
  • 재스캔POST /skills/:id/rescan은 스캔을 다시 실행합니다; 판정이 flagged 또는 blocked로 새로 저하되면 firewall 이벤트를 내보내 드리프트가 피드에 나타납니다.
  • 삭제 — 소프트 삭제하고 재등록을 위해 이름 슬롯을 해제합니다.

API 레퍼런스

워크스페이스 범위; 목록 읽기는 모든 멤버에게 개방되며(시크릿을 담은 필드는 마스킹), 그 외 모든 것은 **Developer+**를 요구합니다.
메서드 및 경로역할목적
GET /api/workspace/firewall/skillsMemberskill 목록(마스킹됨; ?kind=?source=로 필터).
GET /api/workspace/firewall/skills/:idDeveloper+전체 skill 레코드.
POST /api/workspace/firewall/skillsDeveloper+등록 + 스캔(중복 이름에 409).
PUT /api/workspace/firewall/skills/:idDeveloper+업데이트 + 재스캔.
POST /api/workspace/firewall/skills/:id/rescanDeveloper+재스캔; 저하 시 이벤트 내보냄.
DELETE /api/workspace/firewall/skills/:idDeveloper+소프트 삭제.
등록/업데이트/재스캔은 다음을 반환합니다:
{
  "skill": { "id": 7, "name": "creepy", "risk_band": "high", "mode": "quarantine", "...": "..." },
  "findings": [
    { "kind": "tool_creep", "target": "shell.exec", "severity": "error" }
  ],
  "scan_verdict": "blocked"
}
이름은 워크스페이스당 종류를 가로질러 고유합니다 — github라는 이름의 skillgithub라는 이름의 mcp_server는 동일한 워크스페이스에서 충돌합니다. 아티팩트마다 구별되는 이름을 고르세요.

FAQ

규칙툴 호출을 이름과 인자로 게이트합니다. Skills는 에이전트가 로드하는 기능 — 패키지, 그 매니페스트, 그리고 요청된 권한 — 을 그 툴이 실행되기 전에 게이트합니다. 그런 다음 skill의 모드가 규칙이 결정하는 것 위에 올라타므로, 둘은 조합됩니다: 규칙은 일반적으로 http.fetchallow할 수 있는 반면 그것을 소유한 격리된 skill은 여전히 보류됩니다.
여러 가지. Tool-creep 탐지는 사용되었으나 선언되지 않은 툴을 플래그합니다; 자동 탐지는 주장된 매니페스트만이 아니라 실제로 게이트웨이를 가로지른 것으로부터 재스캔합니다; 모드는 재스캔에서 더 엄격하게(느슨하게가 아니라) 래칫됩니다; 리소스 평판은 오작동하는 아티팩트를 시간에 걸쳐 quarantine 쪽으로 표류시킵니다; 그리고 툴이 선언된 skill에 묶일 수 없을 때 귀속은 페일 클로즈합니다.
아니요. 미리 승인하고 싶은 것들을 등록하세요; 나머지는 최초 사용 시 자동 탐지되고 검토할 때까지 격리됩니다. 차단 없이 에이전트가 설치하는 모든 것을 표면화하려면 observe mode를 켜고, 그다음 실제 데이터로부터 조이세요.

더 보기

에이전트 보안을 더 깊이 파고드시나요? 에이전트 보안 (제로 트러스트) 가이드는 이 기능을 제로 트러스트 워크플로 안에 배치합니다.

Secure Agents 베이스라인

단일 스위치로 모든 에이전트 기능에 제로 트러스트 자세를 적용하세요.

에이전트 guardrails

자율적으로 툴을 사용하는 에이전트를 위해 만들어진 guardrails.