감사 데이터 필터 문법
감사 데이터 필터 문법
Enterprise
적절한 Vault Enterprise 라이선스가 필요합니다.
Vault 1.16.0부터 filter 옵션으로 감사 디바이스를 활성화해 특정 감사 로그에 기록되는 감사 항목을 제한하고 감사 과정을 세밀하게 조정할 수 있습니다.
경고 — 감사 로그 필터링은 고급 기능입니다. 오디트 폴백(fallback) 없이 필터된 디바이스만 활성화하면 감사 로그에 누락이 생길 수 있습니다.
필터를 프로덕션에 배포하기 전에 항상 비프로덕션 환경에서 감사 구성을 테스트하세요. 여기에는 구성한 필터의 성능 영향도 포함됩니다. 그리고 필터된 감사 디바이스를 활성화하기 전에 Vault 보안 모델과 필터링 개요를 읽어 Vault 감사와 필터링 기본을 익히세요.
필터가 있는 감사 디바이스를 활성화하면, Vault가 그 감사 디바이스로 보내는 모든 감사 항목이 필터의 조건식과 비교됩니다. 필터와 일치하는 감사 항목만 해당 디바이스의 감사 로그에 기록됩니다.
필터된 감사 디바이스를 활성화해도 기존 감사 디바이스의 동작과 필터를 사용하지 않는 새 감사 디바이스의 동작은 변경되지 않습니다.
폴백 감사 디바이스
필터링은 감사 워크플로에 유연성을 더하지만, 실수로 로그에서 항목이 빠질 수 있는 복잡성도 더합니다. 예를 들어 감사 항목을 (N < 10)에 대해 한 디바이스에, (N > 10)에 대해 다른 디바이스에 작성하면 (N == 10)인 감사 항목이 제외되며, 이는 의도한 동작이 아닐 수 있습니다.
폴백 감사 디바이스는 그렇지 않으면 필터링되어 감사 기록에서 버려졌을 모든 감사 항목을 저장합니다. fallback 매개변수로 감사 디바이스를 활성화하면 Vault가 기본 보안 모델을 계속 준수한다는 것을 보장합니다. 이 보안 모델은 모든 요청과 응답이 클라이언트가 시크릿 자료를 받기 전에 성공적으로 기록되어야 한다고 규정합니다.
필터된 감사 디바이스만 독점적으로 사용하는 Vault 설치 환경은, 표준(비필터) 감사 디바이스만 사용하는 Vault 설치 환경과 비슷한 보안 수준을 보장하기 위해 항상 폴백 감사 디바이스를 구성해야 합니다.
폴백 디바이스는 1개만 가능합니다
폴백 감사 디바이스를 신중히 선택하세요. 활성 감사 디바이스 전체 중에서 Vault 설치 환경 전체에 대해 폴백 감사 디바이스는 단 하나만 지정할 수 있습니다.
폴백 텔레메트리 메트릭
폴백 디바이스가 감사 로그에 감사 항목을 성공적으로 기록하면 Vault는 폴백 '성공' 메트릭을 내보냅니다.
폴백 디바이스 없이 필터링을 활성화하면, 감사 항목이 폴백 디바이스에 기록되었을 때마다 Vault는 폴백 'miss' 메트릭을 내보내므로 감사 가능한 이벤트를 얼마나 잃었는지 추적할 수 있습니다.
감사 디바이스 제한 사항
- 기존 감사 디바이스에 필터링을 추가할 수 없습니다.
- 다음 지원되는 감사 디바이스 유형 중 하나를 활성화할 때 필터링을 구성할 수 있습니다.
- 감사 폴백 디바이스는 하나만 지정할 수 있습니다.
필터링과 테스트 메시지
기본적으로 Vault는 감사 디바이스를 활성화할 때 감사 디바이스에 테스트 메시지를 보냅니다. 필터를 구성하는 방식에 따라 기본 테스트 메시지가 조건식을 통과하지 못하고 새 디바이스에 기록되지 않을 수 있습니다.
아래 속성 표에 따라 새로 활성화된 감사 디바이스의 싱크에 테스트 메시지가 나타나야 하는지 결정할 수 있습니다. 이 속성은 모든 기본 테스트 메시지에 공통입니다.
| 속성 | 값 |
|---|---|
mount_point |
비어 있음 |
mount_type |
비어 있음 |
namespace |
비어 있음 |
operation |
update |
path |
sys/audit/test |
감사 디바이스의 filter 속성
필터는 감사 항목의 다음 속성만 참조할 수 있습니다.
| 속성 | 예시 | 설명 |
|---|---|---|
mount_point |
mount_point == \"auth/oidc\" |
auth/oidc 마운트 포인트의 모든 항목 기록 |
mount_type |
mount_type == \"kv-v2\" |
kv-v2 플러그인의 모든 항목 기록 |
namespace |
namespace != \"admin/\" |
admin 네임스페이스에 없는 모든 항목 기록 |
operation |
operation == \"read\" |
모든 읽기 작업 기록 |
path |
path == \"auth/approle/login\" |
AppRole 로그인 경로에 대한 모든 활동 기록 |
루트 네임스페이스는 이름이 없습니다
비루트 네임스페이스 경로는 올바르게 일치하려면 반드시 후행 슬래시(/)로 끝나야 합니다. 그러나 루트 네임스페이스는 경로가 없고 빈 문자열에만 일치합니다. 필터에서 루트 네임스페이스와 일치시키려면 \"\"를 사용하세요. 예를 들어, namespace != \"\"는 루트 네임스페이스에 없는 감사된 요청과 일치합니다.
실제 예시
이미 vault-audit.log라는 감사 파일이 있고, 감사 항목을 필터링해 키/값(kv) 유형 이벤트를 모두 kv-audit.log라는 특정 감사 로그 파일에 저장하고 싶다고 가정합니다.
이벤트를 필터링하려면:
-
mount_type필터로file감사 디바이스를 활성화합니다.vault audit enable \ -path kv-only \ file \ filter="mount_type == \"kv\"" \ file_path=/logs/kv-audit.log -
폴백 디바이스를 활성화합니다.
vault audit enable \ -path=my-fallback \ -description="fallback device" \ file \ fallback=true \ file_path=/tmp/kv-audit.fallback.log -
감사 디바이스가 활성화되었는지 확인합니다.
vault audit list --detailed -
my-kv라는 새kv시크릿 엔진을 활성화합니다.vault secrets enable -path my-kv kv-v2 -
kv엔진에 시크릿 데이터를 기록합니다.vault kv put -mount=my-kv my_secret the_value=always_angry
이제 /var/kv-audit.log에 총 4개의 항목이 포함됩니다.
my-kv를 활성화한 명령 요청my-kv활성화에 대한 응답 항목my-kv에 시크릿을 기록한 명령 요청my-kv에 시크릿을 기록한 응답 항목.
폴백 디바이스는 다른 명령의 항목을 캡처했습니다. 그리고 원본 감사 파일인 vault-audit.log는 모든 감사 이벤트를 계속 캡처합니다.
추가 자료
출처: 문서