VMware NSX Security
고지사항: 이는 커뮤니티 유지 관리형 오픈소스 프로젝트이며, VMware, Inc. 또는 Broadcom Inc.와 제휴, 보증 또는 후원 관계가 아닙니다. "VMware" 및 "NSX"는 Broadcom의 상표입니다. 소스 코드는 MIT 라이선스 하에 github.com/vmware-skills/VMware-NSX-Security에서 공개적으로 감사 가능합니다.
VMware NSX DFW 마이크로세그멘테이션 및 보안 — 분산 방화벽, 보안 그룹, VM 태그, Traceflow 및 IDPS를 위한 21개의 MCP 도구입니다.
NSX-T / NSX 4.x Policy API를 위한 도메인 중심 보안 스킬입니다. 함께 사용하면 좋은 스킬: vmware-nsx (네트워킹), vmware-aiops (VM 수명주기), vmware-monitor (읽기 전용 모니터링), vmware-avi (AVI/ALB/AKO), vmware-harden (규정 준수 베이스라인). | vmware-pilot (워크플로우 오케스트레이션) | vmware-policy (감사/정책)
이 스킬이 하는 일
| 카테고리 | 도구 | 개수 |
|---|---|---|
| DFW 정책 | 목록, 조회, 생성, 업데이트, 삭제, 규칙 목록 | 6 |
| DFW 규칙 | 생성, 업데이트, 삭제, 통계 조회 | 4 |
| 보안 그룹 | 목록, 조회, 생성, 삭제 | 4 |
| VM 태그 | VM 태그 목록, 태그 적용, 태그 제거 | 3 |
| Traceflow | 추적 실행, 결과 조회 | 2 |
| IDPS | 프로필 목록, 상태 조회 | 2 |
총계: 21개 도구 (읽기 전용 10개 + 쓰기 11개)
빠른 설치
uv tool install vmware-nsx-security
vmware-nsx-security init # 안내식 설정: config + .env 작성 (chmod 600, 비밀번호 grep-safe), 이후 확인
vmware-nsx-security doctor
이 스킬을 사용해야 하는 경우
- DFW 보안 정책 및 규칙 목록, 생성 또는 수정
- VM 태그, IP 범위 또는 세그먼트 멤버십 기반 보안 그룹 생성
- 가상 머신에 NSX 태그 적용 또는 목록 확인
- Traceflow를 실행하여 패킷 경로 추적 및 드롭 원인 진단
- IDPS 프로필 구성, 서명 상태 및 글로벌 IDS 설정 확인
- 애플리케이션 계층 간 제로 트러스트 마이크로세그멘테이션 구현
함께 사용하면 좋은 스킬:
- NSX 세그먼트, 게이트웨이, NAT, 라우팅, IPAM →
vmware-nsx - VM 수명주기, 배포, 게스트 운영 →
vmware-aiops - vSphere 인벤토리, 상태, 알람, 이벤트 →
vmware-monitor - 스토리지: iSCSI, vSAN, 데이터스토어 →
vmware-storage - Tanzu Kubernetes →
vmware-vks - 로드 밸런싱, AVI/ALB, AKO, Ingress →
vmware-avi
관련 스킬 — 스킬 라우팅
| 사용자 의도 | 권장 스킬 |
|---|---|
| NSX 보안: DFW 규칙, 보안 그룹, IDS/IPS | vmware-nsx-security ← 이 스킬 |
| NSX 네트워킹: 세그먼트, 게이트웨이, NAT, 라우팅 | vmware-nsx |
| vSphere 읽기 전용 모니터링, 알람, 이벤트 | vmware-monitor |
| VM 수명주기, 배포, 게스트 운영 | vmware-aiops |
| 스토리지: iSCSI, vSAN, 데이터스토어 | vmware-storage |
| Tanzu Kubernetes | vmware-vks |
| 승인 포함 다단계 워크플로우 | vmware-pilot |
| 규정 준수 베이스라인 (CIS / 等保 / PCI-DSS), 드리프트 감지, LLM 수정 조언자 | vmware-harden (uv tool install vmware-harden) |
| 로드 밸런서, AVI, ALB, AKO, Ingress | vmware-avi (uv tool install vmware-avi) |
| 감사 로그 쿼리 | vmware-policy (vmware-audit CLI) |
일반적인 워크플로우
애플리케이션 계층 마이크로세그멘테이션 구현
사전 점검 (판단 — DFW 변경은 모든 사람을 잠글 수 있습니다):
- 기본 허용 우선: 새 정책의 첫 번째 규칙은 항상 관리 트래픽(DNS, NTP, vCenter, 점프 호스트 SSH)에 대해 ALLOW여야 합니다. 그렇지 않으면 기본 거부를 추가하는 순간 자신의 접근이 차단됩니다.
- 태그 인벤토리 확인: 보호하려는 VM에 실제로 태그가 있는지 확인합니다 (
tag list <vm>). 존재하지 않는 태그를 기반으로 한 그룹은 일치하는 VM이 0개입니다. 정책이 "적용된" 것처럼 보이지만 아무것도 적용되지 않습니다. - 카테고리 선택: 애플리케이션 계층 마이크로세그의 경우
Application을 사용하십시오 (Infrastructure 규칙이 통과된 후 나중에 평가됨). 일상적인 규칙에Emergency를 사용하면 실제 사고 대응 용량이 부족해집니다. - Stateless? 기본값은 stateful입니다. NSX DFW는 stateful이며 거의 모든 규칙은 stateless가 아니어야 합니다. Stateless = 양방향을 명시적으로 허용해야 합니다.
- 새 규칙에는 항상 로깅을 활성화하여 시작하고, 나중에 확인된 후 비활성화하십시오. 무음 드롭은 최악의 버그입니다.
단계:
- 먼저 VM에 태그를 지정합니다 (아래 워크플로우 참조) — 빈 그룹 = 적용되지 않음
tag_scope/tag_value와 함께create_groupMCP 도구를 사용하여 그룹을 생성합니다 (태그 조건은"scope|tag"로 일치됨, 예:tier|web; 여러 조건 유형(태그/IP/세그먼트)은 AND가 아닌 OR로 처리됨)policy create app-microseg --category Application- 규칙을 순서대로 추가: ALLOW 관리 → ALLOW 계층 내 → ALLOW web→app on app-port → DROP any-any (로깅 포함)
- 기본 거부를 활성화하기 전에 traceflow로 확인합니다 (아래 참조)
VM에 NSX 태그 적용
판단: 태그는 그룹 멤버십을 결정하고, 그룹 멤버십은 DFW 적용을 결정합니다. 오타가 있는 태그는 VM을 보호에서 조용히 제외시킵니다. 적용 후 항상 다시 목록을 확인하십시오.
tag list my-web-vm-01→ VM 외부 ID를 기록하고, 이미 존재하는 태그를 확인합니다 (중복/오타 충돌 방지)tag apply <vm-external-id> --scope tier --value web- 확인:
tag list my-web-vm-01을 다시 실행 → 새 태그가 있고 예상치 못한 태그가 없는지 확인합니다
Traceflow로 패킷 추적
판단: traceflow는 모든 DFW 변경에 대한 검증 메커니즘입니다. 거부 규칙을 활성화하기 전에 그리고 모든 규칙 수정 후에 실행하십시오. UI에서 "올바르게 보인다"고 믿지 마십시오.
vmware-nsx troubleshoot vm-segment를 통해 소스 VM의 논리적 포트 ID를 가져옵니다.traceflow run <lport-id> --src-ip <src> --dst-ip <dst> --proto TCP --dst-port <port>- DFW 적중 체인을 검사합니다: 어떤 규칙이 일치했는지, ALLOW 또는 DROP인지, 어떤 전송 노드에서 발생했는지
- 일반적인 실패: 규칙은 Application 카테고리에서 일치하지만 Environment 카테고리의 이전 DROP에 의해 가려짐 — 최종 결과뿐만 아니라 추적을 위에서 아래로 읽으십시오
DFW 정책 적중 횟수 확인
vmware-nsx-security policy list
vmware-nsx-security rule list <policy-id>
vmware-nsx-security rule stats <policy-id> <rule-id>
다중 대상 작업
모든 명령은 --target <name>을 허용하여 특정 NSX Manager에 대해 작업합니다:
# 기본 대상
vmware-nsx-security policy list
# 특정 대상
vmware-nsx-security policy list --target nsx-prod
vmware-nsx-security group list --target nsx-lab
사용 모드
| 시나리오 | 권장 | 이유 |
|---|---|---|
| 로컬/소형 모델 (Ollama, Qwen) | CLI | MCP의 ~8K 토큰 대비 ~2K 토큰 |
| 클라우드 모델 (Claude, GPT-4o) | 모두 가능 | MCP는 구조화된 JSON I/O 제공 |
| 자동화된 파이프라인 | MCP | 타입-세이프 파라미터, 구조화된 출력 |
로컬 또는 소형 모델로 실행하는 경우? 명시적인 운영 규칙은 references/agent-guardrails.md를 참조하십시오.
MCP 도구 (21개 — 읽기 10개, 쓰기 11개)
모든 MCP 도구는 선택적 target 파라미터를 허용합니다.
list_dfw_policies, list_dfw_rules, list_groups 및 list_idps_profiles는
패밀리 목록 래퍼를 반환합니다 — {items, returned, limit, total, truncated, hint} —
순수 배열 대신. items에서 행을 읽고 목록이 완전하다고 결론 내리기 전에
truncated를 확인하십시오. 50행 기본 페이지는 그것 없이 전체 에스테이트와 동일하게 보입니다.
total은 스캔이 증명한 경우에만 명시됩니다: 필터링되지 않은 목록이
1000개 항목 get_all 제한 미만으로 유지된 경우 실제 개수이며, 이름 필터링된 목록,
제한된 스캔 및 list_dfw_rules의 경우 null입니다(해당 가져오기는 요청된 창으로
제한됨). truncated: true와 함께 null total은 "더 있을 수 있음"을 의미합니다 —
offset으로 페이지를 나누어 확인하십시오. 오류는 {error, hint}를 반환합니다
(딕셔너리, 단일 요소 목록이 아님).
| 카테고리 | 도구 | 유형 | 설명 |
|---|---|---|---|
| DFW 정책 | list_dfw_policies | 읽기 | 카테고리, 시퀀스 및 규칙 수로 모든 DFW 보안 정책 나열 |
get_dfw_policy | 읽기 | 정책 세부 정보 조회: 카테고리, stateful, 잠김, 범위, 태그 | |
create_dfw_policy | 쓰기 | 카테고리 및 시퀀스 번호로 새 DFW 정책 생성 | |
update_dfw_policy | 쓰기 | 부분 업데이트: display_name, description, sequence_number, stateful | |
delete_dfw_policy | 쓰기 | 정책 삭제 — 활성 규칙이 있으면 거부 | |
list_dfw_rules | 읽기 | 정책 내 규칙 나열: 액션, 소스, 대상, 서비스 | |
| DFW 규칙 | create_dfw_rule | 쓰기 | 소스/대상/서비스/액션/범위로 규칙 생성 |
update_dfw_rule | 쓰기 | 규칙 필드 부분 업데이트 | |
delete_dfw_rule | 쓰기 | 정책에서 규칙 삭제 | |
get_dfw_rule_stats | 읽기 | 규칙에 대한 패킷/바이트/세션/적중 횟수 및 popularity_index 조회 | |
| 보안 그룹 | list_groups | 읽기 | 표현식 개수와 함께 모든 보안 그룹 나열 |
get_group | 읽기 | 그룹 세부 정보 조회: 표현식 기준 + 최대 50개의 유효 VM 멤버 | |
create_group | 쓰기 | 태그/IP/세그먼트 멤버십 기준으로 그룹 생성 (태그는 "scope | |
delete_group | 쓰기 | 그룹 삭제 — DFW 규칙/범위에서 참조되거나 참조 스캔이 실패하면 거부 | |
| VM 태그 | list_vm_tags | 읽기 | 표시 이름으로 VM의 NSX 태그 나열 |
apply_vm_tag | 쓰기 | VM에 scope/value 태그 적용 (추가적, 기존 태그 유지) | |
remove_vm_tag | 쓰기 | VM에서 scope/value 태그 제거 (다른 태그 유지됨, 동적 그룹 멤버십이 변경될 수 있음) | |
| Traceflow | run_traceflow | 쓰기 | 프로브 패킷 주입; operation_state + 홉별 관찰 (resource_type별) + dfw_hits 반환 |
get_traceflow_result | 읽기 | 기존 traceflow의 operation_state/observations 확인 | |
| IDPS | list_idps_profiles | 읽기 | 심각도 및 필터 기준으로 IDPS 프로필 나열 |
get_idps_status | 읽기 | IDPS 서명 상태 + 글로벌 IDS 설정 조회 (auto_update, syslog 내보내기) |
CLI 빠른 참조
# DFW 정책
vmware-nsx-security policy list [--target <name>]
vmware-nsx-security policy get <policy-id>
vmware-nsx-security policy create <id> --name "Display Name" --category Application [--dry-run]
vmware-nsx-security policy delete <id> [--dry-run]
# DFW 규칙
vmware-nsx-security rule list <policy-id>
vmware-nsx-security rule stats <policy-id> <rule-id>
vmware-nsx-security rule delete <policy-id> <rule-id> [--dry-run]
# 보안 그룹
vmware-nsx-security group list
vmware-nsx-security group get <group-id>
vmware-nsx-security group delete <group-id> [--dry-run]
# 태그
vmware-nsx-security tag list <vm-display-name>
vmware-nsx-security tag apply <vm-external-id> --scope env --value production [--dry-run]
vmware-nsx-security tag remove <vm-external-id> --scope env --value production [--dry-run]
# Traceflow
vmware-nsx-security traceflow run <lport-id> --src-ip <src-ip> --dst-ip <dst-ip>
# IDPS
vmware-nsx-security idps profiles
vmware-nsx-security idps status
# 진단
vmware-nsx-security doctor [--skip-auth]
문제 해결
"Cannot delete policy — active rules exist"
delete_dfw_policy는 삭제 전에 활성 규칙을 확인합니다. vmware-nsx-security rule list <policy-id>를 사용하여 먼저 제거해야 할 규칙을 확인하십시오. 그런 다음 각 규칙을 개별적으로 삭제하고 정책 삭제를 다시 시도하십시오.
"Cannot delete group — referenced by DFW rules"
delete_group는 규칙 source_groups, destination_groups, applied-to 범위 및 정책 수준 범위에서 그룹에 대한 참조를 모든 정책에서 검색합니다. 해당 참조에서 그룹을 먼저 제거한 후 (그룹 경로를 'ANY' 또는 다른 그룹으로 대체하는 update_dfw_rule을 통해) 다시 시도하십시오. 오류가 참조 스캔 자체가 실패했다고 표시하면 예방 조치로 삭제가 중단된 것입니다 — vmware-nsx-security doctor로 NSX 연결을 확인하고 다시 시도하십시오.
"No virtual machine named ... exists in the NSX fabric inventory"
list_vm_tags는 NSX 패브릭 API를 통해 표시 이름으로 VM을 조회합니다. 일반적인 원인:
- 표시 이름 불일치 — NSX Manager의 이름이 vCenter와 다를 수 있습니다. 정확한 NSX 패브릭 표시 이름은
vmware-monitor vm list로 확인하십시오. - VM 미등록 — 새로 배포된 VM이 NSX 패브릭에 나타나는 데 1분 정도 걸릴 수 있습니다.
- 이름이 같은 VM이 여러 개인 경우 — 특정 external_id와 함께
apply_vm_tag를 사용하십시오.
Traceflow가 빈 관찰 결과를 반환
operation_state가IN_PROGRESS이면 추적이 완료되지 않은 것입니다 —get_traceflow_result <traceflow-id>로 다시 폴링하십시오.src_lport_id가 올바른 논리적 포트 연결 UUID인지 확인하십시오 — 세그먼트 포트 경로가 아닙니다.vmware-nsx troubleshoot vm-segment <vm>에서 가져오십시오.- 소스 VM이 켜져 있고 NSX 오버레이 세그먼트에 연결되어 있어야 합니다.
- VM이 VLAN 기반 세그먼트에 있는 경우 Traceflow가 지원되지 않습니다.
- NSX Manager는 소스 VM을 호스팅하는 전송 노드에 연결 가능해야 합니다.
vmware-nsx health transport-nodes를 확인하십시오.
DFW 규칙 통계에 0 적중 표시
새로 생성된 규칙은 트래픽이 일치할 때까지 적중 횟수가 0입니다. 예상 트래픽에도 여전히 0이 표시되는 경우:
- 규칙이 비활성화되지 않았는지 확인하십시오 (
list_dfw_rules출력에서disabled: false). get_group을 사용하여 소스/대상 그룹 멤버십이 올바른지 확인하십시오.- 규칙 시퀀스 번호를 확인하십시오 — 낮은 시퀀스 번호의 ALLOW/DROP 규칙이 먼저 일치할 수 있습니다.
"Password not found" 오류
비밀번호 변수 규칙: VMWARE_NSX_SECURITY_<TARGET_UPPER>_PASSWORD
하이픈은 밑줄로 대체됩니다. 대상 nsx-prod의 경우:
VMWARE_NSX_SECURITY_NSX_PROD_PASSWORD. ~/.vmware-nsx-security/.env를 확인하십시오.
invalid peer certificate: UnknownIssuer (uvx)
회사 TLS 프록시가 uv의 번들 인증서 저장소에서 신뢰하지 않습니다. v1.5.15+
단일 명령 형식 vmware-nsx-security mcp를 사용하십시오 (PyPI 재해결 없음), 또는
export UV_NATIVE_TLS=true를 설정하여 uv가 운영 체제의 인증서 저장소를
사용하도록 하십시오.