feat: wire GetSecret gRPC endpoint with audit logging (#25) #109

Merged
shahondin1624 merged 1 commits from feature/issue-25-get-secret-endpoint into main 2026-03-09 08:09:32 +01:00

Summary\n\n- Wire GetSecret handler to audit service for access logging (AUDIT_ACTION_SECRET_ACCESS)\n- SHA-256 hash secret names in audit logs (never log raw names)\n- Add audit_addr config field for audit service connection\n- Graceful fallback if audit service unavailable\n- 19 unit tests pass, clippy clean\n\n## Test plan\n\n- [x] cargo test -p secrets-service — 19 tests pass\n- [x] cargo clippy -p secrets-service --tests -- -D warnings — clean\n- [x] Tests cover: all validation paths, found/not-found, multiple secrets, works without audit client, hash determinism\n\n🤖 Generated with Claude Code

## Summary\n\n- Wire GetSecret handler to audit service for access logging (AUDIT_ACTION_SECRET_ACCESS)\n- SHA-256 hash secret names in audit logs (never log raw names)\n- Add `audit_addr` config field for audit service connection\n- Graceful fallback if audit service unavailable\n- 19 unit tests pass, clippy clean\n\n## Test plan\n\n- [x] `cargo test -p secrets-service` — 19 tests pass\n- [x] `cargo clippy -p secrets-service --tests -- -D warnings` — clean\n- [x] Tests cover: all validation paths, found/not-found, multiple secrets, works without audit client, hash determinism\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)
shahondin1624 added 1 commit 2026-03-09 08:09:29 +01:00
Add audit service integration to secrets service — every secret access
is logged via Audit Service Append RPC with AUDIT_ACTION_SECRET_ACCESS.
Secret names are SHA-256 hashed in audit logs. Audit connection is
optional and gracefully degrades if unavailable.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
shahondin1624 merged commit 0ccc0e30a3 into main 2026-03-09 08:09:32 +01:00
shahondin1624 deleted branch feature/issue-25-get-secret-endpoint 2026-03-09 08:09:32 +01:00
Sign in to join this conversation.