security-requirement-extraction
작성자 wshobsonsecurity-requirement-extraction은 위협 모델과 비즈니스 맥락을 바탕으로 테스트 가능한 보안 요구사항, 사용자 스토리, 승인 기준, 그리고 Requirements Planning에 바로 활용할 수 있는 백로그 산출물로 정리해 주는 스킬입니다.
이 스킬은 68/100점을 받아 디렉터리에 등재할 수준은 되지만, 완전히 운영 가능한 스킬이라기보다 문서 중심의 프롬프트 가이드로 보는 편이 적절합니다. 저장소는 위협 분석을 보안 요구사항, 사용자 스토리, 테스트 케이스, 승인 기준으로 전환하는 목적과 작성 흐름을 충분히 설득력 있게 제시하지만, 설치 관점에서는 지원 파일, 실행 가능한 자산, 명시적인 설정 안내가 없어 명확성이 제한됩니다.
- 적용 시점이 분명합니다. 설명과 사용 사례에서 위협 모델을 실행 가능한 보안 요구사항으로 옮길 때 언제 써야 하는지 명확하게 보여 줍니다.
- 문서 완성도가 높습니다. SKILL.md가 임시 초안 수준이 아니라, 여러 섹션과 개념, 제약 조건, 예시를 갖춘 길고 구조화된 문서로 작성돼 있습니다.
- 일반적인 프롬프트보다 에이전트 활용도가 좋습니다. 비즈니스 요구사항, 보안 요구사항, 기술적 통제를 아우르는 요구사항 도출 방식을 제시해 더 구조화된 결과물을 만드는 데 도움이 됩니다.
- 실행 측면은 대부분 문서 설명에 머뭅니다. 설치 명령, 스크립트, 참고 자료, 함께 제공되는 리소스가 없습니다.
- 신뢰도와 도입 판단의 명확성은 보통 수준입니다. 저장소에 placeholder/test 성격의 신호가 보이고, 단일 SKILL.md 파일 외에는 저장소 차원의 근거가 많지 않습니다.
security-requirement-extraction 스킬 개요
security-requirement-extraction 스킬이 하는 일
security-requirement-extraction 스킬은 위협 분석과 비즈니스 맥락을 실제로 활용 가능한 보안 요구사항으로 바꾸는 데 도움을 줍니다. 이 스킬의 핵심은 일반적인 “보안 조언”을 내놓는 것이 아니라, 위험, 오용 사례, 컴플라이언스 요구를 요구사항, 사용자 스토리, 인수 기준, 검증 가능한 보안 기대치로 구조화해 변환하는 데 있습니다.
누가 사용하면 좋은가
이 스킬은 보안 엔지니어, 아키텍트, 제품 보안 팀, 비즈니스 분석가, 그리고 Requirements Planning을 수행하는 전달/개발 팀에 가장 잘 맞습니다. 특히 위협이나 비즈니스 목표는 이미 파악했지만, 이를 제품 팀과 엔지니어링 팀이 구현하고 검증할 수 있는 형태로 표현해야 할 때 유용합니다.
가장 잘 맞는 해결 과제
security-requirement-extraction은 다음과 같은 질문에 답해야 할 때 쓰는 것이 좋습니다.
- “이 위협들을 기준으로 보면 제품에는 어떤 보안 요구사항이 있어야 하나?”
- “위협 모델을 어떻게 인수 기준으로 바꿀 수 있지?”
- “백로그에는 어떤 보안 사용자 스토리가 들어가야 하지?”
- “비즈니스 보호 목표를 기술적 기대사항으로 어떻게 매핑하지?”
일반적인 프롬프트와 무엇이 다른가
security-requirement-extraction skill의 가장 큰 가치는 프레이밍에 있습니다. 이 스킬은 요구사항 카테고리, 요구사항 유형, 그리고 추적 가능성(traceability)과 테스트 가능성(testability) 같은 요구사항 품질 속성을 중심에 둡니다. 이 점이 중요한 이유는, 많은 일반 프롬프트가 곧바로 보안 통제(control)로 뛰어드는 반면, 이 스킬은 통제를 고르기 전에 검토, 우선순위화, 검증이 가능한 요구사항을 먼저 만들도록 유도하기 때문입니다.
설치 전에 알아둘 점
이 스킬은 가볍습니다. 저장소 기준으로 SKILL.md 파일만 있고, 보조 스크립트, 참고 자료, 규칙 파일은 없습니다. 덕분에 도입은 쉽지만, 반대로 결과물의 품질은 입력하는 맥락 정보의 품질에 크게 좌우됩니다. 위협을 모호하게 주면 요구사항도 모호하게 나옵니다.
이 스킬이 잘 맞지 않는 경우
실제 필요한 것이 아래와 같다면 security-requirement-extraction을 선택하지 않는 편이 좋습니다.
- 처음부터 끝까지 수행하는 완전한 위협 모델링 방법론
- 상세한 보안 통제 구현 절차
- 컴플라이언스의 법률적 해석
- 자동 스캔이나 정책 집행
이 스킬은 워크플로의 중간 구간, 즉 위험이 식별된 이후이면서 통제가 완전히 설계·구현되기 전 단계에서 가장 강합니다.
security-requirement-extraction 스킬 사용 방법
security-requirement-extraction 설치 맥락
Skills 생태계를 사용 중이라면, 해당 스킬이 포함된 저장소에서 아래 명령으로 설치할 수 있습니다.
npx skills add https://github.com/wshobson/agents --skill security-requirement-extraction
저장소 구조를 보면 이 스킬은 plugins/security-scanning/skills/security-requirement-extraction에 있으며, 실무적으로 가장 먼저 읽어야 할 소스는 다음입니다.
SKILL.md
가장 먼저 읽어야 할 파일
무엇보다 먼저 SKILL.md를 읽으세요. 이 스킬에서는 그 파일이 실제 운영 가이드를 담고 있습니다. 언제 써야 하는지, 어떤 요구사항 카테고리와 유형을 다루는지, 어떤 요구사항 속성을 중시하는지가 모두 들어 있습니다. 지원 리소스나 스크립트가 없기 때문에, 실질적으로 쓸 만한 로직 대부분이 이 한 파일에 담겨 있습니다.
이 스킬에 필요한 입력
강한 security-requirement-extraction usage를 위해서는 최소한 다음 정보를 제공하는 것이 좋습니다.
- 시스템 또는 기능 설명
- 비즈니스 목표
- 보호해야 할 자산
- 알려진 위협 또는 오용 사례
- 사용자 역할과 신뢰 경계
- 적용되는 컴플라이언스 또는 정책 제약
- 배포 맥락
- 원하는 출력 형식
이 정보 없이도 스킬이 요구사항을 생성할 수는 있지만, 결과는 훨씬 더 일반적이 되고 실제 위험과의 연결을 추적하기 어려워집니다.
최소한으로 쓸 수 있는 프롬프트
실제로 동작하는 프롬프트에는 보통 다음 3가지가 들어갑니다.
- 기능 또는 시스템 범위
- 변환하고 싶은 위협
- 필요한 출력 산출물
예시:
“Use the security-requirement-extraction skill for Requirements Planning. We are building a customer billing portal. Threats include credential stuffing, privilege escalation, and PII exposure in logs. Derive security requirements grouped by functional, non-functional, and constraint types. Include traceability to each threat and draft acceptance criteria.”
더 강한 프롬프트 패턴
더 좋은 프롬프트는 모델이 검토 가능한 요구사항을 만들 수 있도록 충분한 구조를 제공합니다.
- 비즈니스 맥락: 누가 시스템을 쓰는지, 상업적으로 무엇이 중요한지
- 위협 출처: STRIDE 결과, 오용 사례, 사고 이력, pentest 결과, 아키텍처 리뷰 메모
- 시스템 경계: 서비스, 데이터 저장소, 연동 지점, 관리자 경로
- 요구사항 스타일: 사용자 스토리, shall statements, 백로그 항목, 테스트 케이스
- 품질 기준: 테스트 가능, 추적 가능, 우선순위화 가능, 중복 없음
예시:
“Use security-requirement-extraction to convert the following threat model into backlog-ready requirements. System: multi-tenant SaaS admin console. Assets: tenant configs, audit logs, API tokens. Threats: broken access control on admin APIs, token leakage in frontend logs, insecure session handling, missing auditability for privileged changes. Constraints: must align with SOC 2 controls and existing SSO platform. Output:
- security requirements by type,
- linked threat IDs,
- rationale,
- measurable acceptance criteria,
- suggested security test cases.”
대략적인 목표를 더 좋은 프롬프트로 바꾸는 방법
약한 요청은 이렇게 말합니다. “이 앱의 보안 요구사항을 만들어줘.”
더 나은 요청은 다음을 함께 말합니다.
- 어떤 앱인지
- 어떤 위험이 있는지
- 어떤 데이터를 다루는지
- 어떤 제약이 있는지
- 어떤 형태의 출력이 필요한지
좋은 변환 예시:
약한 요청:
“Generate security requirements for a healthcare app.”
더 나은 요청:
“Use the security-requirement-extraction skill for a patient portal handling PHI. Threats include unauthorized record access, weak session expiration, insecure file upload, and audit log tampering. Produce functional, non-functional, and constraint requirements with traceability, testability, and acceptance criteria.”
실무에서 추천하는 워크플로
security-requirement-extraction guide를 실무에서 활용할 때 효과적인 흐름은 다음과 같습니다.
- 비즈니스 맥락과 기능 범위를 수집합니다.
- 위협 모델, 사고 리뷰, 아키텍처 메모 등에서 위협을 모읍니다.
- 스킬에 요구사항 후보를 유형별로 도출하게 합니다.
- 중복, 빠진 가정, 테스트 불가능한 표현이 없는지 검토합니다.
- 승인된 항목을 백로그 스토리, 아키텍처 요구사항, 테스트 케이스로 전환합니다.
- 위협 ID와 컴플라이언스 출처로 추적 링크를 추가합니다.
이 워크플로에서 이 스킬의 가치가 가장 크게 드러납니다. 보안 분석과 실제 전달 가능한 산출물 사이의 간극을 줄여주기 때문입니다.
어떤 출력 형식이 가장 잘 맞는가
이 스킬은 특히 아래와 같은 결과물을 만드는 데 강합니다.
- 요구사항 목록
- 보안 사용자 스토리
- 보안 인수 기준
- 보안 테스트 케이스
- 요구사항-위협 매핑
- 아키텍처 문서 입력 자료
팀에서 특정 형식을 사용한다면 그 형식을 직접 지정하세요. 이 스킬의 구조는 여러 요구사항 스타일을 지원하지만, 선호하는 산출물을 명확히 지정할수록 기본 출력보다 훨씬 유용한 결과를 얻을 수 있습니다.
출력 품질을 높이는 실전 팁
더 나은 security-requirement-extraction usage를 위해서는 다음이 도움이 됩니다.
- 추적 가능성이 분명해지도록 threat ID나 라벨을 제공합니다.
- 넓은 목표 대신 측정 가능한 표현을 요구합니다.
- 비즈니스 요구사항과 기술 통제를 분리합니다.
- 맥락이 불완전할 때는 가정과 열린 질문도 함께 요청합니다.
- 테스트할 수 없는 요구사항은 표시하도록 모델에 요청합니다.
이 팁이 중요한 이유는, 이 스킬이 단순 아이디어 생성이 아니라 요구사항 품질 자체를 중시하기 때문입니다.
저장소 차원의 한계로 감안해야 할 점
이 저장소에는 SKILL.md 외에 보조 자산이 없기 때문에, 더 풍부한 스킬보다 내장된 강제력이 약합니다. 따라서 최소 한 번은 아래 항목을 중심으로 리뷰할 것을 전제로 해야 합니다.
- 통제 수준으로 너무 일찍 내려간 과도한 구체화
- 중복된 요구사항
- “secure”, “appropriate”, “robust” 같은 모호한 표현
- 정책, 설계, 구현을 한 줄에 섞어 놓은 요구사항
security-requirement-extraction 스킬 FAQ
security-requirement-extraction은 Requirements Planning에 적합한가?
네. security-requirement-extraction for Requirements Planning은 보안 이슈를 백로그에 바로 넣을 수 있는 요구사항, 스토리, 인수 기준으로 바꾸는 데 강점이 있어 잘 맞습니다. 이미 구현이 시작된 뒤보다 계획 단계에서 더 유용합니다.
먼저 정식 위협 모델이 꼭 필요한가?
아니요. 다만 어떤 형태로든 위험 입력은 필요합니다. 정식 위협 모델이 가장 이상적이지만, 사고 패턴, 오용 사례, 보안 리뷰 메모, 아키텍처 위험 정보도 충분히 활용할 수 있습니다. 위협 입력의 품질이 좋을수록 요구사항 출력도 좋아집니다.
LLM에 그냥 보안 요구사항을 물어보는 것과 어떻게 다른가?
일반 프롬프트는 느슨한 체크리스트를 내놓는 경우가 많습니다. 반면 security-requirement-extraction skill은 요구사항 카테고리, 요구사항 유형, 그리고 추적 가능성·테스트 가능성 같은 요구사항 속성을 더 엄격하게 다룹니다. 이런 구조 덕분에 팀이 검토하고 구현하기 쉬운 산출물이 나올 가능성이 높습니다.
초보자도 쓰기 쉬운가?
중간 정도입니다. 설치는 간단하지만, 좋은 결과를 내려면 유의미한 맥락을 제공해야 합니다. 초보자도 사용할 수는 있지만 반복해서 다듬는 과정이 필요할 수 있고, 요구사항과 통제를 구분하는 데 도움을 받아야 할 수도 있습니다.
기술적 통제도 바로 만들어 줄 수 있나?
제안은 할 수 있지만, 그것이 이 스킬의 주목적은 아닙니다. 이 스킬은 먼저 비즈니스 요구와 위협을 보안 요구사항으로 옮기는 데 맞춰 설계되어 있습니다. 이 분리가 중요한 이유는, 솔루션 선택의 유연성을 남기고 싶거나 구현 선택 전에 이해관계자 검토가 필요할 때 특히 유용하기 때문입니다.
언제 security-requirement-extraction을 쓰지 말아야 하나?
당장 필요한 것이 아래와 같다면 건너뛰는 편이 좋습니다.
- 코드 수정 가이드
- 스캐너 설정
- 통제 검증 도구
- 법률 수준의 컴플라이언스 해석
- 완전한 보안 아키텍처 설계 패키지
이런 경우에도 이 스킬이 입력 자료 일부를 제공할 수는 있지만, 주된 방법이 되어서는 안 됩니다.
security-requirement-extraction 스킬 개선 방법
텍스트를 늘리기보다 위협 입력을 더 정확하게 주기
security-requirement-extraction 결과를 가장 빠르게 개선하는 방법은 위협을 더 명확하게 제공하는 것입니다. “데이터 유출 위험”은 약합니다. “보고서 엔드포인트의 인증/인가 체크 누락으로 인한 테넌트 간 무단 데이터 접근”은 강합니다. 위협이 구체적일수록 요구사항은 더 테스트 가능해지고 덜 일반적인 형태가 됩니다.
요구사항과 통제를 분리하기
흔한 실패 패턴은 요구사항을 요청했는데 구현 결정이 너무 빨리 나오는 것입니다. 결과를 개선하려면 다음을 구분해 요청하세요.
- requirement statement
- rationale
- acceptance criteria
- possible controls as a separate optional field
이렇게 하면 기술 스택이 바뀌어도 요구사항 자체는 재사용 가능하게 유지됩니다.
추적 가능성을 명시적으로 요구하기
추적 가능성이 중요하다면 프롬프트에서 분명히 말해야 합니다. 예를 들면:
- 각 요구사항을 threat ID에 매핑
- 비즈니스 목표에 매핑
- 관련이 있다면 컴플라이언스 출처에 매핑
이렇게 해야 security-requirement-extraction skill이 감사, 아키텍처 리뷰, 백로그 그루밍에서 더 실질적으로 쓸모 있어집니다.
테스트 가능한 언어를 강제하기
초기 출력은 완곡하고 느슨한 표현을 쓰는 경우가 많습니다. 모든 요구사항을 검증 가능하도록 다시 쓰라고 모델에 요청하세요. 좋은 추가 요소는 다음과 같습니다.
- 측정 가능한 임계값
- 이벤트 커버리지 기대치
- 행위자와 데이터 범위
- pass/fail acceptance criteria
테스트 가능한 표현은 이후 엔지니어링 단계에서의 활용도를 크게 높여줍니다.
백로그 압박이 크다면 우선순위화를 요청하기
의사결정 지원이 필요하다면, 스킬에 다음 기준으로 요구사항을 분류하게 하세요.
- must-have vs should-have
- pre-launch vs post-launch
- threat severity
- compliance criticality
이렇게 하면 양은 많지만 실제로는 쓰기 어려운 목록을 만드는 일을 피하는 데 도움이 됩니다.
한 번의 반복으로 모호성을 걷어내기
첫 초안이 나온 뒤에는 이렇게 물어보세요.
- 어떤 요구사항이 중복인가?
- 어떤 항목이 너무 모호해서 테스트할 수 없는가?
- 어떤 항목이 아직 결정되지 않은 아키텍처 선택에 의존하는가?
- 어떤 항목이 사실은 요구사항이 아니라 통제인가?
이 리뷰용 프롬프트는 완전히 새 초안을 다시 요청하는 것보다 결과를 더 크게 개선하는 경우가 많습니다.
시스템 경계와 가정을 추가하기
이 스킬은 다음과 같은 경계를 구체적으로 밝혀줄수록 더 잘 작동합니다.
- internal-only vs internet-facing
- single-tenant vs multi-tenant
- managed identity vs local auth
- 민감 데이터 분류
- 관리자 권한 범위
이런 세부 정보는 결과 요구사항을 실질적으로 바꿉니다. 특히 접근 통제, 로깅, 데이터 처리 영역에서 차이가 큽니다.
산출물별 요청으로 결과 강화하기
최종 산출물이 정해져 있다면 그것을 명시하세요. 예를 들면:
- “write security user stories”
- “produce acceptance criteria”
- “derive security test cases”
- “draft architecture security requirements”
이 스킬은 이 모든 형태를 다룰 수 있지만, 목표 산출물이 분명할수록 결과는 더 강해집니다.
도입 전에 최종 결과 세트를 검증하기
결과를 최종본으로 취급하기 전에 각 요구사항이 아래 조건을 충족하는지 확인하세요.
- 실제 위험 또는 비즈니스 요구와 연결되어 있는가
- 비보안 이해관계자도 이해할 수 있는가
- 의도를 추측하지 않고도 테스트 가능한가
- 단순히 복사한 통제 문장이 아닌가
- 실제 시스템 경계에 맞게 범위가 잡혀 있는가
실무에서 security-requirement-extraction install의 가치가 드러나는 지점이 바로 이 마지막 검증 단계입니다. 단순한 스킬을 일회성 프롬프트가 아니라 반복 가능한 계획 수립 도구로 바꿔주기 때문입니다.
