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_egress | skill의 네트워크 스코프에서 승인되지 않은, 매니페스트 내 HTTP(S) 호스트. | warn |
| fs_write_unsafe | /tmp 밖 경로의 쓰기 모드 파일시스템 스코프(트래버설 안전). | error |
| data_scope | 민감한 데이터 스코프(pii, financial, customer). | info |
| unsigned | 서명 없는 registry skill. | warn |
error → blocked;
그렇지 않으면 임의의 warn → flagged; 그렇지 않으면 clean.
3. 위험 점수 및 밴드
동일한 findings가 결정적 위험 점수(0–100, 카테고리별 상한과 함께 가산적)를 공급합니다. 가장 무거운 기여자는 위험한 기능입니다:| 기능 | 가중치 |
|---|---|
| 셸 실행 | +30 |
| 임의 코드 eval | +30 |
/tmp 밖 파일시스템 쓰기 | +25 |
| 시크릿 읽기 | +25 |
| 외부 네트워크 egress | +20 |
| 밴드 | 점수 |
|---|---|
low | 0–25 |
medium | 26–50 |
high | 51–75 |
critical | 76–100 |
4. 강제 모드
밴드와 판정이 함께 강제 모드를 도출합니다 — 이 skill이 소유한 툴이 호출될 때 firewall이 실제로 무엇을 하는지:| 모드 | 런타임에서의 효과 |
|---|---|
allow | skill이 자체적으로 아무것도 부과하지 않음; 규칙 판정이 결정. |
quarantine | deny에 미치지 않는 모든 것을 pending_approval로 격상 — skill의 툴은 사람이 승인한 후에만 실행됨. |
block | skill의 툴에 deny를 강제. |
blocked로 만드는 단일 error finding은
수치 밴드가 low일 때에도 quarantine 또는 block합니다 — 신중한 방향.
오퍼레이터는 모드를 명시적으로 설정할 수 있습니다; 재스캔 시 모드는
오직 더 엄격하게 래칫될 뿐, 당신이 설정한 block이나 quarantine을 결코
완화하지 않습니다.
5. 신뢰 신호
정적 스캔을 넘어선 두 신호가 skill이 어떻게 취급되는지를 알려줍니다:- 서명된 게시자. 신뢰된 게시자의 서명을 지닌 skill은 더 신뢰할 수 있는 것으로 취급됩니다(서명 완화 조치가 그 위험 점수를 낮춤); 서명 없는 registry skill은 페널티를 받습니다. 워크스페이스가 신뢰하는 게시자를 당신이 관리합니다.
- 리소스 평판. skill의 입지는 시간에 걸친 라이브 동작에 의해 조정될 수 있습니다 — 거부와 이상이 위험을 높이고, 클린 스트릭이 낮춥니다 — 따라서 프로덕션에서 오작동하는 아티팩트는 매니페스트가 클린하게 스캔되었더라도 quarantine 쪽으로 표류합니다.
6. 자동 탐지된 기능
스캐너는 당신이 손수 무언가를 등록할 때만 실행되는 것이 아닙니다. 에이전트가 기능을 자체 설치하고 그 툴이 처음 게이트웨이를 가로지를 때, Firewall은 그것을 자동 탐지하고(핫 경로 밖에서, 비동기적으로), 관찰한 것으로부터 매니페스트를 합성하며, 동일한 스캔, 점수, 모드 도출을 실행합니다 —source = auto_detected로.
자동 탐지된 기능은 검토될 때까지 격리됩니다. 그렇지 않으면
allow로
해석될 자동 탐지된 모든 것은 사람이 검토할 때까지 quarantine으로
하한 처리됩니다(그리고 critical은 block으로 유지됩니다). 아무도 승인하지
않은 기능은 그것이 무해하게 스캔되었다는 이유만으로 무임승차를 얻지
않습니다 — 당신이 그것을 살펴본 후에만 실행됩니다.7. 런타임 강제
툴 호출이 firewall 엔진에 도달하면, 그것은 소유하는 skill에 귀속되고, 그런 다음 skill의 모드가 규칙 판정 위에 적용됩니다:- 귀속. 호출은 먼저 선언된
allowed_tools로, 그다음mcp_server네임스페이스 접두사로, 그다음 워크스페이스 전체의 가장 제한적인 강제 폴백으로 skill에 매치됩니다. - 규칙 판정. 정책의 규칙이 평소처럼 실행됩니다 — 그리고 규칙의
skill_name_glob은 규칙을 특정 skill로 범위 지정할 수 있게 합니다. - 모드 오버라이드.
blockskill은 deny를 강제합니다;quarantineskill은 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/skills | Member | skill 목록(마스킹됨; ?kind= 및 ?source=로 필터). |
GET /api/workspace/firewall/skills/:id | Developer+ | 전체 skill 레코드. |
POST /api/workspace/firewall/skills | Developer+ | 등록 + 스캔(중복 이름에 409). |
PUT /api/workspace/firewall/skills/:id | Developer+ | 업데이트 + 재스캔. |
POST /api/workspace/firewall/skills/:id/rescan | Developer+ | 재스캔; 저하 시 이벤트 내보냄. |
DELETE /api/workspace/firewall/skills/:id | Developer+ | 소프트 삭제. |
이름은 워크스페이스당 종류를 가로질러 고유합니다 —
github라는 이름의
skill과 github라는 이름의 mcp_server는 동일한 워크스페이스에서
충돌합니다. 아티팩트마다 구별되는 이름을 고르세요.FAQ
이것은 규칙 DSL과 어떻게 다른가요?
이것은 규칙 DSL과 어떻게 다른가요?
규칙은 툴 호출을 이름과 인자로
게이트합니다. Skills는 에이전트가 로드하는 기능 — 패키지, 그
매니페스트, 그리고 요청된 권한 — 을 그 툴이 실행되기 전에 게이트합니다.
그런 다음 skill의 모드가 규칙이 결정하는 것 위에 올라타므로, 둘은
조합됩니다: 규칙은 일반적으로
http.fetch를 allow할 수 있는 반면
그것을 소유한 격리된 skill은 여전히 보류됩니다.악의적인 skill이 클린한 매니페스트를 선언하는 것을 무엇이 막나요?
악의적인 skill이 클린한 매니페스트를 선언하는 것을 무엇이 막나요?
여러 가지. Tool-creep 탐지는 사용되었으나 선언되지 않은 툴을
플래그합니다; 자동 탐지는 주장된 매니페스트만이 아니라 실제로
게이트웨이를 가로지른 것으로부터 재스캔합니다; 모드는 재스캔에서 더
엄격하게(느슨하게가 아니라) 래칫됩니다; 리소스 평판은 오작동하는
아티팩트를 시간에 걸쳐 quarantine 쪽으로 표류시킵니다; 그리고 툴이
선언된 skill에 묶일 수 없을 때 귀속은 페일 클로즈합니다.
모든 skill을 수동으로 등록해야 하나요?
모든 skill을 수동으로 등록해야 하나요?
아니요. 미리 승인하고 싶은 것들을 등록하세요; 나머지는 최초 사용 시
자동 탐지되고 검토할 때까지 격리됩니다. 차단 없이 에이전트가 설치하는
모든 것을 표면화하려면 observe mode를 켜고, 그다음 실제 데이터로부터
조이세요.
더 보기
에이전트 보안을 더 깊이 파고드시나요? 에이전트 보안 (제로 트러스트) 가이드는 이 기능을 제로 트러스트 워크플로 안에 배치합니다.Secure Agents 베이스라인
단일 스위치로 모든 에이전트 기능에 제로 트러스트 자세를 적용하세요.
에이전트 guardrails
자율적으로 툴을 사용하는 에이전트를 위해 만들어진 guardrails.
