VMware Policy
면책 조항: 이는 커뮤니티 유지 관리 오픈 소스 프로젝트이며 VMware, Inc. 또는 Broadcom Inc.와 제휴, 보증 또는 후원되지 않습니다. "VMware" 및 "vSphere"는 Broadcom의 상표입니다. 소스 코드는 MIT 라이선스 하에 github.com/zw008/VMware-Policy에서 공개 감사 가능합니다.
모든 VMware MCP 스킬 제품군을 위한 통합 감사 로깅, 정책 적용 및 입력 정화를 제공하는 인프라 계층입니다.
인프라 종속성: 8개의 모든 VMware 스킬은 vmware-policy에 의존합니다. 이는 자동 설치되며
@vmware_tool데코레이터,sanitize(), 그리고 공유 감사 데이터베이스를 제공합니다. 제품군: vmware-aiops (VM 수명 주기), vmware-monitor (읽기 전용 모니터링), vmware-storage (iSCSI/vSAN), vmware-vks (Tanzu Kubernetes), vmware-nsx (NSX 네트워킹), vmware-nsx-security (DFW/방화벽), vmware-aria (메트릭/알림/용량), vmware-avi (AVI/ALB/AKO). | vmware-pilot (워크플로 오케스트레이션)
이 스킬이 하는 일
| 카테고리 | 구성 요소 | 개수 |
|---|---|---|
| 감사 로깅 | AuditEngine (SQLite WAL), 로그 순환, 에이전트 탐지 | 3 |
| 정책 엔진 | 거부 규칙, 유지 관리 기간, 핫 리로드 | 3 |
| 정화 | sanitize() -- 프롬프트 인젝션 방어, 제어 문자 제거 | 1 |
| 데코레이터 | @vmware_tool -- 사전 확인 + 실행 + 사후 로깅 + 메타데이터 | 1 |
| CLI | vmware-audit log, vmware-audit export, vmware-audit stats | 3 |
빠른 설치
uv tool install vmware-policy
vmware-audit stats # 설치 확인
vmware-policy는 모든 VMware 스킬의 종속성으로 자동 설치됩니다. 독립 실행형 감사 쿼리에만 수동 설치가 필요합니다.
이 스킬을 사용해야 하는 경우
- 모든 VMware 스킬의 통합 감사 추적 쿼리
- 거부된 작업 및 정책 위반 확인
- 감사 통계 확인 (스킬별, 상태별, 시간 범위별)
- 외부 분석을 위해 JSON 형식으로 감사 로그 내보내기
- 거부 규칙 또는 유지 관리 기간 구성
- 새 VMware 스킬에
@vmware_tool데코레이터 통합
이 스킬은 종속성으로 자동 로드됩니다 -- 직접 호출할 필요가 없습니다. 다음 경우에 활성화됩니다:
- VMware 스킬 도구 함수가 호출될 때 (
@vmware_tool데코레이터를 통해) - 사용자가 감사 로그, 거부된 작업 또는 정책 규칙에 대해 질문할 때
- 사용자가
vmware-auditCLI 명령어를 실행할 때
관련 스킬 -- 스킬 라우팅
| 사용자 의도 | 권장 스킬 |
|---|---|
| VM 수명 주기, 배포, 게스트 작업 | vmware-aiops (uv tool install vmware-aiops) |
| 읽기 전용 모니터링, 위험 없음 | vmware-monitor (uv tool install vmware-monitor) |
| 스토리지: iSCSI, vSAN, 데이터스토어 | vmware-storage (uv tool install vmware-storage) |
| Tanzu Kubernetes (vSphere 8.x+) | vmware-vks (uv tool install vmware-vks) |
| NSX 네트워킹: 세그먼트, 게이트웨이, NAT | vmware-nsx (uv tool install vmware-nsx-mgmt) |
| NSX 보안: DFW 규칙, 보안 그룹 | vmware-nsx-security (uv tool install vmware-nsx-security) |
| Aria Ops: 메트릭, 알림, 용량 | vmware-aria (uv tool install vmware-aria) |
| 로드 밸런서, AVI, ALB, AKO, Ingress | vmware-avi (uv tool install vmware-avi) |
| 승인을 포함한 다단계 워크플로 | vmware-pilot |
| 감사 로그 쿼리, 정책 규칙 | vmware-policy -- 이 스킬 |
일반적인 워크플로
최근 감사 활동 쿼리
- 최근 20개 감사 항목 보기:
vmware-audit log --last 20 - 스킬별 필터링:
vmware-audit log --skill vmware-nsx --last 50 - 거부된 작업 확인:
vmware-audit log --status denied --since 2026-03-28 - 집계 통계 보기:
vmware-audit stats --days 7
프로덕션을 위한 정책 규칙 설정
- 기본 규칙 복사:
cp $(python -c "import vmware_policy; print(vmware_policy.__file__.replace('__init__.py','rules_default.yaml'))") ~/.vmware/rules.yaml ~/.vmware/rules.yaml편집 -- 프로덕션에 거부 규칙 추가:deny: - name: no-delete-in-prod operations: ["delete_*", "cluster_delete"] environments: ["production"] reason: "프로덕션에서 파괴적 작업이 차단되었습니다" maintenance_window: start: "22:00" end: "06:00"- 규칙이 자동으로 핫 리로드됩니다 -- 재시작 불필요
- 확인:
vmware-audit log --status denied로 차단된 작업 확인
규정 준수를 위한 감사 로그 내보내기
- 모든 로그를 JSON으로 내보내기:
vmware-audit export --format json > audit-export.json - 스킬별 필터링:
vmware-audit export --skill vmware-aiops --since 2026-01-01 - SIEM 또는 규정 준수 도구로 가져오기
사용 모드
| 시나리오 | 권장 | 이유 |
|---|---|---|
| 감사 로그 쿼리 | CLI | vmware-audit는 풍부한 테이블 출력 제공 |
| 스킬에 통합 | Python API | from vmware_policy import vmware_tool, sanitize |
| 자동 규정 준수 내보내기 | CLI | vmware-audit export --format json은 모든 도구로 파이프 가능 |
CLI 빠른 참조
# 최근 감사 항목 보기
vmware-audit log --last 20
vmware-audit log --skill vmware-nsx --status denied
vmware-audit log --since 2026-03-28 --tool delete_segment
# 규정 준수를 위한 내보내기
vmware-audit export --format json > audit.json
vmware-audit export --skill vmware-aiops --since 2026-01-01
# 집계 통계
vmware-audit stats --days 7
vmware-audit stats --days 30
전체 CLI 참조:
references/cli-reference.md참조
Python API
from vmware_policy import vmware_tool, sanitize
# 모든 MCP 도구 함수 래핑
@vmware_tool(risk_level="high", sensitive_params=["password"])
def delete_segment(name: str, env: str = "") -> dict:
...
# 신뢰할 수 없는 API 응답을 LLM에 반환하기 전에 정화
clean_text = sanitize(api_response_text, max_len=500)
MCP 도구 (0개)
vmware-policy는 MCP 도구를 노출하지 않습니다. 다른 VMware 스킬이 사용하는 Python 라이브러리 및 CLI입니다.
| 구성 요소 | 유형 | 설명 |
|---|---|---|
@vmware_tool | 데코레이터 | 8개 스킬의 156개 이상 MCP 도구 래핑 |
sanitize() | 함수 | API 응답에 대한 프롬프트 인젝션 방어 |
AuditEngine | 클래스 | 순환 기능이 있는 SQLite WAL 감사 로거 |
PolicyEngine | 클래스 | 핫 리로드가 가능한 YAML 규칙 평가 |
vmware-audit | CLI | 감사 추적 쿼리를 위한 Typer CLI |
detect_agent() | 함수 | 환경 변수에서 호출 AI 에이전트 추론 (아래 참조) |
에이전트 탐지 (투명성 참고)
audit.py의 detect_agent() 함수는 도구를 호출하는 AI 에이전트를 식별하기 위해 다음 환경 변수를 확인합니다. 이는 감사 로깅 목적의 읽기 전용 검사이며 -- 어떤 자격 증명도 추출되거나 저장되지 않습니다:
| 환경 변수 | 탐지된 에이전트 | 목적 |
|---|---|---|
CLAUDE_SESSION_ID 또는 CLAUDE_CODE | claude | Claude Code 세션 |
OPENAI_API_KEY 또는 CODEX_SESSION | codex | OpenAI Codex 세션 |
OLLAMA_HOST | local | 로컬 Ollama 모델 |
DEERFLOW_SESSION | deerflow | DeerFlow 세션 |
| (일치 없음) | unknown | 인식되지 않은 에이전트 |
탐지된 에이전트 이름은 감사 추적 목적으로만 ~/.vmware/audit.db의 agent 열에 저장됩니다. API 키나 토큰은 기록되지 않습니다.
문제 해결
"Cannot initialize audit DB" 경고
감사 데이터베이스 디렉토리 ~/.vmware/는 쓰기 가능해야 합니다. 수동으로 생성하십시오: mkdir -p ~/.vmware && chmod 700 ~/.vmware.
정책 규칙이 적용되지 않음
규칙은 ~/.vmware/rules.yaml에서 로드됩니다. 파일이 존재하고 유효한 YAML인지 확인하십시오. PolicyEngine은 파일 변경 시 핫 리로드되며 -- 재시작이 필요하지 않습니다.
감사 로그가 너무 커짐
AuditEngine은 자동으로 100MB에서 순환하며 가장 최근 5개의 아카이브를 유지합니다. 수동 정리: ls ~/.vmware/audit.*.db로 아카이브 확인.
스킬에서 "PolicyDenied" 예외 발생
이는 ~/.vmware/rules.yaml의 거부 규칙이 작업과 일치했음을 의미합니다. vmware-audit log --status denied로 규칙 이름과 이유를 확인하십시오. 임시 우회: VMWARE_POLICY_DISABLED=1 (여전히 우회된 것으로 기록됨).
데코레이터가 스킬 이름을 감지하지 못함
@vmware_tool 데코레이터는 모듈 경로에서 스킬 이름을 추론합니다 (예: vmware_aiops.ops.vm_lifecycle -> aiops). 모듈이 vmware_<skill> 규칙을 따르지 않으면 스킬이 "unknown"으로 기록됩니다.
SQLite "database is locked" 오류
여러 동시 스킬 프로세스가 WAL 모드를 통해 동일한 audit.db에 쓸 수 있습니다. 잠금이 5초 이상 지속되면 데이터베이스 파일을 보유한 좀비 프로세스를 확인하십시오.
설정
uv tool install vmware-policy
mkdir -p ~/.vmware
vmware-policy는 모든 VMware 스킬의 종속성으로 자동 설치됩니다.
~/.vmware/디렉토리는 첫 번째 감사 쓰기 시 자동으로 생성됩니다.
전체 설정 가이드, 보안 세부 정보 및 통합 지침:
references/setup-guide.md참조
보안
- 소스 코드: github.com/zw008/VMware-Policy
- 설정 파일 내용:
~/.vmware/rules.yaml에는 규칙 정의만 포함되며 자격 증명은 포함되지 않습니다. - 웹훅 데이터 범위: 해당 없음 -- vmware-policy는 데이터를 외부로 전송하지 않습니다.
- TLS 검증: 해당 없음 -- vmware-policy는 네트워크 연결을 만들지 않습니다.
- 프롬프트 인젝션 보호:
sanitize()는 500자로 자르고 C0/C1 제어 문자를 제거합니다. - 최소 권한: 감사 데이터베이스는 로컬 전용(
~/.vmware/audit.db)이며 네트워크에 노출되지 않습니다.