mirror of
https://github.com/ceph/ceph-csi.git
synced 2025-02-07 11:59:29 +00:00
Bumps the github-dependencies group with 6 updates in the / directory: | Package | From | To | | --- | --- | --- | | [github.com/aws/aws-sdk-go](https://github.com/aws/aws-sdk-go) | `1.55.5` | `1.55.6` | | [github.com/aws/aws-sdk-go-v2/service/sts](https://github.com/aws/aws-sdk-go-v2) | `1.33.2` | `1.33.10` | | [github.com/kubernetes-csi/csi-lib-utils](https://github.com/kubernetes-csi/csi-lib-utils) | `0.19.0` | `0.20.0` | | [github.com/onsi/ginkgo/v2](https://github.com/onsi/ginkgo) | `2.22.0` | `2.22.2` | | [github.com/Azure/azure-sdk-for-go/sdk/azidentity](https://github.com/Azure/azure-sdk-for-go) | `1.8.0` | `1.8.1` | | [github.com/csi-addons/kubernetes-csi-addons](https://github.com/csi-addons/kubernetes-csi-addons) | `0.9.0` | `0.11.0` | Updates `github.com/aws/aws-sdk-go` from 1.55.5 to 1.55.6 - [Release notes](https://github.com/aws/aws-sdk-go/releases) - [Changelog](https://github.com/aws/aws-sdk-go/blob/main/CHANGELOG_PENDING.md) - [Commits](https://github.com/aws/aws-sdk-go/compare/v1.55.5...v1.55.6) Updates `github.com/aws/aws-sdk-go-v2/service/sts` from 1.33.2 to 1.33.10 - [Release notes](https://github.com/aws/aws-sdk-go-v2/releases) - [Changelog](https://github.com/aws/aws-sdk-go-v2/blob/main/changelog-template.json) - [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/fms/v1.33.2...service/sns/v1.33.10) Updates `github.com/kubernetes-csi/csi-lib-utils` from 0.19.0 to 0.20.0 - [Release notes](https://github.com/kubernetes-csi/csi-lib-utils/releases) - [Commits](https://github.com/kubernetes-csi/csi-lib-utils/compare/v0.19.0...v0.20.0) Updates `github.com/onsi/ginkgo/v2` from 2.22.0 to 2.22.2 - [Release notes](https://github.com/onsi/ginkgo/releases) - [Changelog](https://github.com/onsi/ginkgo/blob/master/CHANGELOG.md) - [Commits](https://github.com/onsi/ginkgo/compare/v2.22.0...v2.22.2) Updates `github.com/onsi/gomega` from 1.36.1 to 1.36.2 - [Release notes](https://github.com/onsi/gomega/releases) - [Changelog](https://github.com/onsi/gomega/blob/master/CHANGELOG.md) - [Commits](https://github.com/onsi/gomega/compare/v1.36.1...v1.36.2) Updates `github.com/Azure/azure-sdk-for-go/sdk/azidentity` from 1.8.0 to 1.8.1 - [Release notes](https://github.com/Azure/azure-sdk-for-go/releases) - [Changelog](https://github.com/Azure/azure-sdk-for-go/blob/main/documentation/release.md) - [Commits](https://github.com/Azure/azure-sdk-for-go/compare/sdk/azcore/v1.8.0...sdk/azidentity/v1.8.1) Updates `github.com/csi-addons/kubernetes-csi-addons` from 0.9.0 to 0.11.0 - [Release notes](https://github.com/csi-addons/kubernetes-csi-addons/releases) - [Commits](https://github.com/csi-addons/kubernetes-csi-addons/compare/v0.9.0...v0.11.0) --- updated-dependencies: - dependency-name: github.com/aws/aws-sdk-go dependency-type: direct:production update-type: version-update:semver-patch dependency-group: github-dependencies - dependency-name: github.com/aws/aws-sdk-go-v2/service/sts dependency-type: direct:production update-type: version-update:semver-patch dependency-group: github-dependencies - dependency-name: github.com/kubernetes-csi/csi-lib-utils dependency-type: direct:production update-type: version-update:semver-minor dependency-group: github-dependencies - dependency-name: github.com/onsi/ginkgo/v2 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: github-dependencies - dependency-name: github.com/onsi/gomega dependency-type: direct:production update-type: version-update:semver-patch dependency-group: github-dependencies - dependency-name: github.com/Azure/azure-sdk-for-go/sdk/azidentity dependency-type: direct:production update-type: version-update:semver-patch dependency-group: github-dependencies - dependency-name: github.com/csi-addons/kubernetes-csi-addons dependency-type: direct:production update-type: version-update:semver-minor dependency-group: github-dependencies ... Signed-off-by: dependabot[bot] <support@github.com>
121 lines
3.4 KiB
Go
121 lines
3.4 KiB
Go
/*
|
|
Copyright 2018 The Kubernetes Authors.
|
|
|
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
you may not use this file except in compliance with the License.
|
|
You may obtain a copy of the License at
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
Unless required by applicable law or agreed to in writing, software
|
|
distributed under the License is distributed on an "AS IS" BASIS,
|
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
See the License for the specific language governing permissions and
|
|
limitations under the License.
|
|
*/
|
|
|
|
// Package protosanitizer supports logging of gRPC messages without
|
|
// accidentally revealing sensitive fields.
|
|
package protosanitizer
|
|
|
|
import (
|
|
"encoding/json"
|
|
"fmt"
|
|
|
|
"github.com/container-storage-interface/spec/lib/go/csi"
|
|
"google.golang.org/protobuf/proto"
|
|
"google.golang.org/protobuf/reflect/protoreflect"
|
|
)
|
|
|
|
// StripSecrets returns a wrapper around the original CSI gRPC message
|
|
// which has a Stringer implementation that serializes the message
|
|
// as one-line JSON, but without including secret information.
|
|
// Instead of the secret value(s), the string "***stripped***" is
|
|
// included in the result.
|
|
//
|
|
// StripSecrets relies on an extension in CSI 1.0 and thus can only
|
|
// be used for messages based on that or a more recent spec!
|
|
//
|
|
// StripSecrets itself is fast and therefore it is cheap to pass the
|
|
// result to logging functions which may or may not end up serializing
|
|
// the parameter depending on the current log level.
|
|
func StripSecrets(msg interface{}) fmt.Stringer {
|
|
return &stripSecrets{msg}
|
|
}
|
|
|
|
type stripSecrets struct {
|
|
msg any
|
|
}
|
|
|
|
func (s *stripSecrets) String() string {
|
|
stripped := s.msg
|
|
|
|
// also support scalar types like string, int, etc.
|
|
msg, ok := s.msg.(proto.Message)
|
|
if ok {
|
|
stripped = stripMessage(msg.ProtoReflect())
|
|
}
|
|
|
|
b, err := json.Marshal(stripped)
|
|
if err != nil {
|
|
return fmt.Sprintf("<<json.Marshal %T: %s>>", s.msg, err)
|
|
}
|
|
return string(b)
|
|
}
|
|
|
|
func stripSingleValue(field protoreflect.FieldDescriptor, v protoreflect.Value) any {
|
|
switch field.Kind() {
|
|
case protoreflect.MessageKind:
|
|
return stripMessage(v.Message())
|
|
case protoreflect.EnumKind:
|
|
return field.Enum().Values().ByNumber(v.Enum()).Name()
|
|
default:
|
|
return v.Interface()
|
|
}
|
|
}
|
|
|
|
func stripValue(field protoreflect.FieldDescriptor, v protoreflect.Value) any {
|
|
if field.IsList() {
|
|
l := v.List()
|
|
res := make([]any, l.Len())
|
|
for i := range l.Len() {
|
|
res[i] = stripSingleValue(field, l.Get(i))
|
|
}
|
|
return res
|
|
} else if field.IsMap() {
|
|
m := v.Map()
|
|
res := make(map[string]any, m.Len())
|
|
m.Range(func(mk protoreflect.MapKey, v protoreflect.Value) bool {
|
|
res[mk.String()] = stripSingleValue(field.MapValue(), v)
|
|
return true
|
|
})
|
|
return res
|
|
} else {
|
|
return stripSingleValue(field, v)
|
|
}
|
|
}
|
|
|
|
func stripMessage(msg protoreflect.Message) map[string]any {
|
|
stripped := make(map[string]any)
|
|
|
|
// Walk through all fields and replace those with ***stripped*** that
|
|
// are marked as secret.
|
|
msg.Range(func(field protoreflect.FieldDescriptor, v protoreflect.Value) bool {
|
|
name := field.TextName()
|
|
if isCSI1Secret(field) {
|
|
stripped[name] = "***stripped***"
|
|
} else {
|
|
stripped[name] = stripValue(field, v)
|
|
}
|
|
return true
|
|
})
|
|
return stripped
|
|
}
|
|
|
|
// isCSI1Secret uses the csi.E_CsiSecret extension from CSI 1.0 to
|
|
// determine whether a field contains secrets.
|
|
func isCSI1Secret(desc protoreflect.FieldDescriptor) bool {
|
|
ex := proto.GetExtension(desc.Options(), csi.E_CsiSecret)
|
|
return ex.(bool)
|
|
}
|