From d4737850b8ec7a7b76e6a6e71b9dd7f68669eaf3 Mon Sep 17 00:00:00 2001 From: Igor Wiedler Date: Tue, 17 Nov 2020 15:12:38 +0100 Subject: [PATCH] Support for logging propagated client identity --- changelogs/unreleased/client-identity.yml | 5 ++++ .../metadatahandler/metadatahandler.go | 24 +++++++++++++++++++ 2 files changed, 29 insertions(+) create mode 100644 changelogs/unreleased/client-identity.yml diff --git a/changelogs/unreleased/client-identity.yml b/changelogs/unreleased/client-identity.yml new file mode 100644 index 0000000000..0f4c30f712 --- /dev/null +++ b/changelogs/unreleased/client-identity.yml @@ -0,0 +1,5 @@ +--- +title: Support for logging propagated client identity +merge_request: 2802 +author: +type: added diff --git a/internal/middleware/metadatahandler/metadatahandler.go b/internal/middleware/metadatahandler/metadatahandler.go index 70e38b7cdf..cfe5cb1a41 100644 --- a/internal/middleware/metadatahandler/metadatahandler.go +++ b/internal/middleware/metadatahandler/metadatahandler.go @@ -49,6 +49,15 @@ const AuthVersionKey = "grpc.meta.auth_version" // DeadlineTypeKey is the key used in ctx_tags to store the deadline type const DeadlineTypeKey = "grpc.meta.deadline_type" +// RemoteIPKey is the key used in ctx_tags to store the remote_ip +const RemoteIPKey = "remote_ip" + +// UserIDKey is the key used in ctx_tags to store the user_id +const UserIDKey = "user_id" + +// UsernameKey is the key used in ctx_tags to store the username +const UsernameKey = "username" + // CorrelationIDKey is the key used in ctx_tags to store the correlation ID const CorrelationIDKey = "correlation_id" @@ -117,6 +126,21 @@ func addMetadataTags(ctx context.Context) metadataTags { tags.Set(AuthVersionKey, authInfo.Version) } + metadata = getFromMD(md, "remote_ip") + if metadata != "" { + tags.Set(RemoteIPKey, metadata) + } + + metadata = getFromMD(md, "user_id") + if metadata != "" { + tags.Set(UserIDKey, metadata) + } + + metadata = getFromMD(md, "username") + if metadata != "" { + tags.Set(UsernameKey, metadata) + } + // This is a stop-gap approach to logging correlation_ids correlationID := correlation.ExtractFromContext(ctx) if correlationID != "" { -- GitLab