1
1
package vault
2
2
3
3
import (
4
+ "crypto/sha256"
5
+ "encoding/hex"
6
+ "fmt"
4
7
"log/slog"
5
8
"net/http"
6
9
"time"
10
+
11
+ vaultapi "github.com/hashicorp/vault/api"
7
12
)
8
13
9
14
type loggingTransport struct {
@@ -21,26 +26,27 @@ func (lt *loggingTransport) RoundTrip(req *http.Request) (*http.Response, error)
21
26
22
27
// don't log health checks
23
28
if req .URL .Path != "/v1/sys/health" {
29
+ auth := obfuscateToken (req .Header .Get (vaultapi .AuthHeaderName ))
24
30
switch {
25
31
case err != nil :
26
32
slog .Debug ("HTTP error" ,
27
33
slog .String ("method" , req .Method ),
28
34
slog .String ("url" , req .URL .String ()),
29
- slog .String ("auth" , obfuscateToken ( req . Header . Get ( "X-Vault-Token" )) ),
35
+ slog .String ("auth" , auth ),
30
36
slog .Duration ("duration" , time .Since (start )),
31
37
slog .String ("error" , err .Error ()))
32
38
case resp .StatusCode >= 300 :
33
39
slog .Debug ("HTTP error response" ,
34
40
slog .String ("method" , req .Method ),
35
41
slog .String ("url" , req .URL .String ()),
36
- slog .String ("auth" , obfuscateToken ( req . Header . Get ( "X-Vault-Token" )) ),
42
+ slog .String ("auth" , auth ),
37
43
slog .Duration ("duration" , time .Since (start )),
38
44
slog .String ("status" , resp .Status ))
39
45
default :
40
46
slog .Debug ("HTTP success response" ,
41
47
slog .String ("method" , req .Method ),
42
48
slog .String ("url" , req .URL .String ()),
43
- slog .String ("auth" , obfuscateToken ( req . Header . Get ( "X-Vault-Token" )) ),
49
+ slog .String ("auth" , auth ),
44
50
slog .Duration ("duration" , time .Since (start )),
45
51
slog .String ("status" , resp .Status ))
46
52
}
@@ -50,12 +56,9 @@ func (lt *loggingTransport) RoundTrip(req *http.Request) (*http.Response, error)
50
56
}
51
57
52
58
func obfuscateToken (token string ) string {
53
- switch {
54
- case len (token ) == 0 :
59
+ if len (token ) == 0 {
55
60
return ""
56
- case len (token ) > 8 :
57
- return "***" + token [len (token )- 4 :]
58
- default :
59
- return "***"
60
61
}
62
+ hash := sha256 .Sum256 ([]byte (token ))
63
+ return fmt .Sprintf ("%s (hashed)" , hex .EncodeToString (hash [:16 ]))
61
64
}
0 commit comments