mirror of
https://github.com/minio/minio.git
synced 2024-12-24 06:05:55 -05:00
move audit and logger message structure to minio/pkg (#16655)
Signed-off-by: Daniel Valdivia <18384552+dvaldivia@users.noreply.github.com>
This commit is contained in:
parent
6b65ba1551
commit
fb17f97cf3
@ -53,9 +53,9 @@ import (
|
|||||||
xhttp "github.com/minio/minio/internal/http"
|
xhttp "github.com/minio/minio/internal/http"
|
||||||
"github.com/minio/minio/internal/kms"
|
"github.com/minio/minio/internal/kms"
|
||||||
"github.com/minio/minio/internal/logger"
|
"github.com/minio/minio/internal/logger"
|
||||||
"github.com/minio/minio/internal/logger/message/log"
|
|
||||||
"github.com/minio/mux"
|
"github.com/minio/mux"
|
||||||
iampolicy "github.com/minio/pkg/iam/policy"
|
iampolicy "github.com/minio/pkg/iam/policy"
|
||||||
|
"github.com/minio/pkg/logger/message/log"
|
||||||
xnet "github.com/minio/pkg/net"
|
xnet "github.com/minio/pkg/net"
|
||||||
"github.com/secure-io/sio-go"
|
"github.com/secure-io/sio-go"
|
||||||
)
|
)
|
||||||
|
@ -25,10 +25,10 @@ import (
|
|||||||
|
|
||||||
"github.com/minio/madmin-go/v2"
|
"github.com/minio/madmin-go/v2"
|
||||||
"github.com/minio/minio/internal/logger"
|
"github.com/minio/minio/internal/logger"
|
||||||
"github.com/minio/minio/internal/logger/message/log"
|
|
||||||
"github.com/minio/minio/internal/logger/target/console"
|
"github.com/minio/minio/internal/logger/target/console"
|
||||||
"github.com/minio/minio/internal/logger/target/types"
|
"github.com/minio/minio/internal/logger/target/types"
|
||||||
"github.com/minio/minio/internal/pubsub"
|
"github.com/minio/minio/internal/pubsub"
|
||||||
|
"github.com/minio/pkg/logger/message/log"
|
||||||
xnet "github.com/minio/pkg/net"
|
xnet "github.com/minio/pkg/net"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -29,8 +29,8 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/minio/minio/internal/logger"
|
"github.com/minio/minio/internal/logger"
|
||||||
"github.com/minio/minio/internal/logger/message/log"
|
|
||||||
"github.com/minio/minio/internal/logger/target/types"
|
"github.com/minio/minio/internal/logger/target/types"
|
||||||
|
"github.com/minio/pkg/logger/message/log"
|
||||||
)
|
)
|
||||||
|
|
||||||
type testLoggerI interface {
|
type testLoggerI interface {
|
||||||
|
@ -34,8 +34,8 @@ import (
|
|||||||
"github.com/minio/minio/internal/event"
|
"github.com/minio/minio/internal/event"
|
||||||
xhttp "github.com/minio/minio/internal/http"
|
xhttp "github.com/minio/minio/internal/http"
|
||||||
"github.com/minio/minio/internal/logger"
|
"github.com/minio/minio/internal/logger"
|
||||||
"github.com/minio/minio/internal/logger/message/log"
|
|
||||||
"github.com/minio/minio/internal/rest"
|
"github.com/minio/minio/internal/rest"
|
||||||
|
"github.com/minio/pkg/logger/message/log"
|
||||||
xnet "github.com/minio/pkg/net"
|
xnet "github.com/minio/pkg/net"
|
||||||
"github.com/tinylib/msgp/msgp"
|
"github.com/tinylib/msgp/msgp"
|
||||||
)
|
)
|
||||||
|
@ -34,9 +34,9 @@ import (
|
|||||||
b "github.com/minio/minio/internal/bucket/bandwidth"
|
b "github.com/minio/minio/internal/bucket/bandwidth"
|
||||||
"github.com/minio/minio/internal/event"
|
"github.com/minio/minio/internal/event"
|
||||||
"github.com/minio/minio/internal/logger"
|
"github.com/minio/minio/internal/logger"
|
||||||
"github.com/minio/minio/internal/logger/message/log"
|
|
||||||
"github.com/minio/minio/internal/pubsub"
|
"github.com/minio/minio/internal/pubsub"
|
||||||
"github.com/minio/mux"
|
"github.com/minio/mux"
|
||||||
|
"github.com/minio/pkg/logger/message/log"
|
||||||
"github.com/tinylib/msgp/msgp"
|
"github.com/tinylib/msgp/msgp"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -62,6 +62,7 @@ import (
|
|||||||
"github.com/minio/mux"
|
"github.com/minio/mux"
|
||||||
"github.com/minio/pkg/certs"
|
"github.com/minio/pkg/certs"
|
||||||
"github.com/minio/pkg/env"
|
"github.com/minio/pkg/env"
|
||||||
|
pkgAudit "github.com/minio/pkg/logger/message/audit"
|
||||||
xnet "github.com/minio/pkg/net"
|
xnet "github.com/minio/pkg/net"
|
||||||
"golang.org/x/oauth2"
|
"golang.org/x/oauth2"
|
||||||
)
|
)
|
||||||
@ -1061,7 +1062,7 @@ func auditLogInternal(ctx context.Context, opts AuditLogOptions) {
|
|||||||
entry.Error = opts.Error
|
entry.Error = opts.Error
|
||||||
entry.API.Name = opts.APIName
|
entry.API.Name = opts.APIName
|
||||||
entry.API.Bucket = opts.Bucket
|
entry.API.Bucket = opts.Bucket
|
||||||
entry.API.Objects = []audit.ObjectVersion{{ObjectName: opts.Object, VersionID: opts.VersionID}}
|
entry.API.Objects = []pkgAudit.ObjectVersion{{ObjectName: opts.Object, VersionID: opts.VersionID}}
|
||||||
entry.API.Status = opts.Status
|
entry.API.Status = opts.Status
|
||||||
entry.Tags = opts.Tags
|
entry.Tags = opts.Tags
|
||||||
// Merge tag information if found - this is currently needed for tags
|
// Merge tag information if found - this is currently needed for tags
|
||||||
|
2
go.mod
2
go.mod
@ -51,7 +51,7 @@ require (
|
|||||||
github.com/minio/madmin-go/v2 v2.0.13-0.20230220143547-e6641ef0b8d5
|
github.com/minio/madmin-go/v2 v2.0.13-0.20230220143547-e6641ef0b8d5
|
||||||
github.com/minio/minio-go/v7 v7.0.48
|
github.com/minio/minio-go/v7 v7.0.48
|
||||||
github.com/minio/mux v1.9.0
|
github.com/minio/mux v1.9.0
|
||||||
github.com/minio/pkg v1.6.1
|
github.com/minio/pkg v1.6.2
|
||||||
github.com/minio/selfupdate v0.6.0
|
github.com/minio/selfupdate v0.6.0
|
||||||
github.com/minio/sha256-simd v1.0.0
|
github.com/minio/sha256-simd v1.0.0
|
||||||
github.com/minio/simdjson-go v0.4.2
|
github.com/minio/simdjson-go v0.4.2
|
||||||
|
4
go.sum
4
go.sum
@ -788,8 +788,8 @@ github.com/minio/minio-go/v7 v7.0.48/go.mod h1:nCrRzjoSUQh8hgKKtu3Y708OLvRLtuASM
|
|||||||
github.com/minio/mux v1.9.0 h1:dWafQFyEfGhJvK6AwLOt83bIG5bxKxKJnKMCi0XAaoA=
|
github.com/minio/mux v1.9.0 h1:dWafQFyEfGhJvK6AwLOt83bIG5bxKxKJnKMCi0XAaoA=
|
||||||
github.com/minio/mux v1.9.0/go.mod h1:1pAare17ZRL5GpmNL+9YmqHoWnLmMZF9C/ioUCfy0BQ=
|
github.com/minio/mux v1.9.0/go.mod h1:1pAare17ZRL5GpmNL+9YmqHoWnLmMZF9C/ioUCfy0BQ=
|
||||||
github.com/minio/pkg v1.5.4/go.mod h1:2MOaRFdmFKULD+uOLc3qHLGTQTuxCNPKNPfLBTxC8CA=
|
github.com/minio/pkg v1.5.4/go.mod h1:2MOaRFdmFKULD+uOLc3qHLGTQTuxCNPKNPfLBTxC8CA=
|
||||||
github.com/minio/pkg v1.6.1 h1:6/ExL3LdNPKbDU/lbHxOUaYKbEOC74IUEExB1VaLUXI=
|
github.com/minio/pkg v1.6.2 h1:BFbBFtmODnQb7YgG/BDPVWeUcbVX7ZRBrX0wf8+sH5o=
|
||||||
github.com/minio/pkg v1.6.1/go.mod h1:HisnbndsCEaQHLvEurhBxt6mk6SGAn2LgJqChIfkb+s=
|
github.com/minio/pkg v1.6.2/go.mod h1:HisnbndsCEaQHLvEurhBxt6mk6SGAn2LgJqChIfkb+s=
|
||||||
github.com/minio/selfupdate v0.6.0 h1:i76PgT0K5xO9+hjzKcacQtO7+MjJ4JKA8Ak8XQ9DDwU=
|
github.com/minio/selfupdate v0.6.0 h1:i76PgT0K5xO9+hjzKcacQtO7+MjJ4JKA8Ak8XQ9DDwU=
|
||||||
github.com/minio/selfupdate v0.6.0/go.mod h1:bO02GTIPCMQFTEvE5h4DjYB58bCoZ35XLeBf0buTDdM=
|
github.com/minio/selfupdate v0.6.0/go.mod h1:bO02GTIPCMQFTEvE5h4DjYB58bCoZ35XLeBf0buTDdM=
|
||||||
github.com/minio/sha256-simd v1.0.0 h1:v1ta+49hkWZyvaKwrQB8elexRqm6Y0aMLjCNsrYxo6g=
|
github.com/minio/sha256-simd v1.0.0 h1:v1ta+49hkWZyvaKwrQB8elexRqm6Y0aMLjCNsrYxo6g=
|
||||||
|
@ -24,10 +24,12 @@ import (
|
|||||||
"strconv"
|
"strconv"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
internalAudit "github.com/minio/minio/internal/logger/message/audit"
|
||||||
|
"github.com/minio/pkg/logger/message/audit"
|
||||||
|
|
||||||
"github.com/klauspost/compress/gzhttp"
|
"github.com/klauspost/compress/gzhttp"
|
||||||
"github.com/minio/madmin-go/v2"
|
"github.com/minio/madmin-go/v2"
|
||||||
xhttp "github.com/minio/minio/internal/http"
|
xhttp "github.com/minio/minio/internal/http"
|
||||||
"github.com/minio/minio/internal/logger/message/audit"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
const contextAuditKey = contextKeyType("audit-entry")
|
const contextAuditKey = contextKeyType("audit-entry")
|
||||||
@ -49,7 +51,7 @@ func GetAuditEntry(ctx context.Context) *audit.Entry {
|
|||||||
return r
|
return r
|
||||||
}
|
}
|
||||||
r = &audit.Entry{
|
r = &audit.Entry{
|
||||||
Version: audit.Version,
|
Version: internalAudit.Version,
|
||||||
DeploymentID: xhttp.GlobalDeploymentID,
|
DeploymentID: xhttp.GlobalDeploymentID,
|
||||||
Time: time.Now().UTC(),
|
Time: time.Now().UTC(),
|
||||||
}
|
}
|
||||||
@ -74,7 +76,7 @@ func AuditLog(ctx context.Context, w http.ResponseWriter, r *http.Request, reqCl
|
|||||||
reqInfo.RLock()
|
reqInfo.RLock()
|
||||||
defer reqInfo.RUnlock()
|
defer reqInfo.RUnlock()
|
||||||
|
|
||||||
entry = audit.ToEntry(w, r, reqClaims, xhttp.GlobalDeploymentID)
|
entry = internalAudit.ToEntry(w, r, reqClaims, xhttp.GlobalDeploymentID)
|
||||||
// indicates all requests for this API call are inbound
|
// indicates all requests for this API call are inbound
|
||||||
entry.Trigger = "incoming"
|
entry.Trigger = "incoming"
|
||||||
|
|
||||||
|
@ -25,8 +25,8 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/minio/minio/internal/color"
|
"github.com/minio/minio/internal/color"
|
||||||
"github.com/minio/minio/internal/logger/message/log"
|
|
||||||
c "github.com/minio/pkg/console"
|
c "github.com/minio/pkg/console"
|
||||||
|
"github.com/minio/pkg/logger/message/log"
|
||||||
)
|
)
|
||||||
|
|
||||||
// ConsoleLoggerTgt is a stringified value to represent console logging
|
// ConsoleLoggerTgt is a stringified value to represent console logging
|
||||||
|
@ -32,7 +32,7 @@ import (
|
|||||||
"github.com/minio/madmin-go/v2"
|
"github.com/minio/madmin-go/v2"
|
||||||
"github.com/minio/minio-go/v7/pkg/set"
|
"github.com/minio/minio-go/v7/pkg/set"
|
||||||
xhttp "github.com/minio/minio/internal/http"
|
xhttp "github.com/minio/minio/internal/http"
|
||||||
"github.com/minio/minio/internal/logger/message/log"
|
"github.com/minio/pkg/logger/message/log"
|
||||||
)
|
)
|
||||||
|
|
||||||
// HighwayHash key for logging in anonymous mode
|
// HighwayHash key for logging in anonymous mode
|
||||||
|
@ -22,6 +22,8 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"github.com/minio/pkg/logger/message/audit"
|
||||||
|
|
||||||
"github.com/minio/minio/internal/handlers"
|
"github.com/minio/minio/internal/handlers"
|
||||||
xhttp "github.com/minio/minio/internal/http"
|
xhttp "github.com/minio/minio/internal/http"
|
||||||
)
|
)
|
||||||
@ -29,52 +31,9 @@ import (
|
|||||||
// Version - represents the current version of audit log structure.
|
// Version - represents the current version of audit log structure.
|
||||||
const Version = "1"
|
const Version = "1"
|
||||||
|
|
||||||
// ObjectVersion object version key/versionId
|
|
||||||
type ObjectVersion struct {
|
|
||||||
ObjectName string `json:"objectName"`
|
|
||||||
VersionID string `json:"versionId,omitempty"`
|
|
||||||
}
|
|
||||||
|
|
||||||
// Entry - audit entry logs.
|
|
||||||
type Entry struct {
|
|
||||||
Version string `json:"version"`
|
|
||||||
DeploymentID string `json:"deploymentid,omitempty"`
|
|
||||||
Time time.Time `json:"time"`
|
|
||||||
Event string `json:"event"`
|
|
||||||
// deprecated replaced by 'Event', kept here for some
|
|
||||||
// time for backward compatibility with k8s Operator.
|
|
||||||
Trigger string `json:"trigger"`
|
|
||||||
API struct {
|
|
||||||
Name string `json:"name,omitempty"`
|
|
||||||
Bucket string `json:"bucket,omitempty"`
|
|
||||||
Object string `json:"object,omitempty"`
|
|
||||||
Objects []ObjectVersion `json:"objects,omitempty"`
|
|
||||||
Status string `json:"status,omitempty"`
|
|
||||||
StatusCode int `json:"statusCode,omitempty"`
|
|
||||||
InputBytes int64 `json:"rx"`
|
|
||||||
OutputBytes int64 `json:"tx"`
|
|
||||||
HeaderBytes int64 `json:"txHeaders,omitempty"`
|
|
||||||
TimeToFirstByte string `json:"timeToFirstByte,omitempty"`
|
|
||||||
TimeToResponse string `json:"timeToResponse,omitempty"`
|
|
||||||
} `json:"api"`
|
|
||||||
RemoteHost string `json:"remotehost,omitempty"`
|
|
||||||
RequestID string `json:"requestID,omitempty"`
|
|
||||||
UserAgent string `json:"userAgent,omitempty"`
|
|
||||||
ReqClaims map[string]interface{} `json:"requestClaims,omitempty"`
|
|
||||||
ReqQuery map[string]string `json:"requestQuery,omitempty"`
|
|
||||||
ReqHeader map[string]string `json:"requestHeader,omitempty"`
|
|
||||||
RespHeader map[string]string `json:"responseHeader,omitempty"`
|
|
||||||
Tags map[string]interface{} `json:"tags,omitempty"`
|
|
||||||
|
|
||||||
AccessKey string `json:"accessKey,omitempty"`
|
|
||||||
ParentUser string `json:"parentUser,omitempty"`
|
|
||||||
|
|
||||||
Error string `json:"error,omitempty"`
|
|
||||||
}
|
|
||||||
|
|
||||||
// NewEntry - constructs an audit entry object with some fields filled
|
// NewEntry - constructs an audit entry object with some fields filled
|
||||||
func NewEntry(deploymentID string) Entry {
|
func NewEntry(deploymentID string) audit.Entry {
|
||||||
return Entry{
|
return audit.Entry{
|
||||||
Version: Version,
|
Version: Version,
|
||||||
DeploymentID: deploymentID,
|
DeploymentID: deploymentID,
|
||||||
Time: time.Now().UTC(),
|
Time: time.Now().UTC(),
|
||||||
@ -82,7 +41,7 @@ func NewEntry(deploymentID string) Entry {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// ToEntry - constructs an audit entry from a http request
|
// ToEntry - constructs an audit entry from a http request
|
||||||
func ToEntry(w http.ResponseWriter, r *http.Request, reqClaims map[string]interface{}, deploymentID string) Entry {
|
func ToEntry(w http.ResponseWriter, r *http.Request, reqClaims map[string]interface{}, deploymentID string) audit.Entry {
|
||||||
entry := NewEntry(deploymentID)
|
entry := NewEntry(deploymentID)
|
||||||
|
|
||||||
entry.RemoteHost = handlers.GetSourceIP(r)
|
entry.RemoteHost = handlers.GetSourceIP(r)
|
||||||
|
@ -1,89 +0,0 @@
|
|||||||
// Copyright (c) 2015-2021 MinIO, Inc.
|
|
||||||
//
|
|
||||||
// This file is part of MinIO Object Storage stack
|
|
||||||
//
|
|
||||||
// This program is free software: you can redistribute it and/or modify
|
|
||||||
// it under the terms of the GNU Affero General Public License as published by
|
|
||||||
// the Free Software Foundation, either version 3 of the License, or
|
|
||||||
// (at your option) any later version.
|
|
||||||
//
|
|
||||||
// This program is distributed in the hope that it will be useful
|
|
||||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
// GNU Affero General Public License for more details.
|
|
||||||
//
|
|
||||||
// You should have received a copy of the GNU Affero General Public License
|
|
||||||
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
package log
|
|
||||||
|
|
||||||
import (
|
|
||||||
"strings"
|
|
||||||
"time"
|
|
||||||
|
|
||||||
"github.com/minio/madmin-go/v2"
|
|
||||||
)
|
|
||||||
|
|
||||||
// ObjectVersion object version key/versionId
|
|
||||||
type ObjectVersion struct {
|
|
||||||
ObjectName string `json:"objectName"`
|
|
||||||
VersionID string `json:"versionId,omitempty"`
|
|
||||||
}
|
|
||||||
|
|
||||||
// Args - defines the arguments for the API.
|
|
||||||
type Args struct {
|
|
||||||
Bucket string `json:"bucket,omitempty"`
|
|
||||||
Object string `json:"object,omitempty"`
|
|
||||||
VersionID string `json:"versionId,omitempty"`
|
|
||||||
Objects []ObjectVersion `json:"objects,omitempty"`
|
|
||||||
Metadata map[string]string `json:"metadata,omitempty"`
|
|
||||||
}
|
|
||||||
|
|
||||||
// Trace - defines the trace.
|
|
||||||
type Trace struct {
|
|
||||||
Message string `json:"message,omitempty"`
|
|
||||||
Source []string `json:"source,omitempty"`
|
|
||||||
Variables map[string]interface{} `json:"variables,omitempty"`
|
|
||||||
}
|
|
||||||
|
|
||||||
// API - defines the api type and its args.
|
|
||||||
type API struct {
|
|
||||||
Name string `json:"name,omitempty"`
|
|
||||||
Args *Args `json:"args,omitempty"`
|
|
||||||
}
|
|
||||||
|
|
||||||
// Entry - defines fields and values of each log entry.
|
|
||||||
type Entry struct {
|
|
||||||
DeploymentID string `json:"deploymentid,omitempty"`
|
|
||||||
Level string `json:"level"`
|
|
||||||
LogKind madmin.LogKind `json:"errKind"`
|
|
||||||
Time time.Time `json:"time"`
|
|
||||||
API *API `json:"api,omitempty"`
|
|
||||||
RemoteHost string `json:"remotehost,omitempty"`
|
|
||||||
Host string `json:"host,omitempty"`
|
|
||||||
RequestID string `json:"requestID,omitempty"`
|
|
||||||
UserAgent string `json:"userAgent,omitempty"`
|
|
||||||
Message string `json:"message,omitempty"`
|
|
||||||
Trace *Trace `json:"error,omitempty"`
|
|
||||||
}
|
|
||||||
|
|
||||||
// Info holds console log messages
|
|
||||||
type Info struct {
|
|
||||||
Entry
|
|
||||||
ConsoleMsg string
|
|
||||||
NodeName string `json:"node"`
|
|
||||||
Err error `json:"-"`
|
|
||||||
}
|
|
||||||
|
|
||||||
// Mask returns the mask based on the error level.
|
|
||||||
func (l Info) Mask() uint64 {
|
|
||||||
return l.LogKind.LogMask().Mask()
|
|
||||||
}
|
|
||||||
|
|
||||||
// SendLog returns true if log pertains to node specified in args.
|
|
||||||
func (l Info) SendLog(node string, logKind madmin.LogMask) bool {
|
|
||||||
if logKind.Contains(l.LogKind.LogMask()) {
|
|
||||||
return node == "" || strings.EqualFold(node, l.NodeName) && !l.Time.IsZero()
|
|
||||||
}
|
|
||||||
return false
|
|
||||||
}
|
|
@ -25,8 +25,8 @@ import (
|
|||||||
|
|
||||||
"github.com/minio/minio/internal/color"
|
"github.com/minio/minio/internal/color"
|
||||||
"github.com/minio/minio/internal/logger"
|
"github.com/minio/minio/internal/logger"
|
||||||
"github.com/minio/minio/internal/logger/message/log"
|
|
||||||
"github.com/minio/pkg/console"
|
"github.com/minio/pkg/console"
|
||||||
|
"github.com/minio/pkg/logger/message/log"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Target implements loggerTarget to send log
|
// Target implements loggerTarget to send log
|
||||||
|
@ -27,10 +27,11 @@ import (
|
|||||||
"sync"
|
"sync"
|
||||||
"sync/atomic"
|
"sync/atomic"
|
||||||
|
|
||||||
|
"github.com/minio/pkg/logger/message/audit"
|
||||||
|
|
||||||
"github.com/Shopify/sarama"
|
"github.com/Shopify/sarama"
|
||||||
saramatls "github.com/Shopify/sarama/tools/tls"
|
saramatls "github.com/Shopify/sarama/tools/tls"
|
||||||
|
|
||||||
"github.com/minio/minio/internal/logger/message/audit"
|
|
||||||
"github.com/minio/minio/internal/logger/target/types"
|
"github.com/minio/minio/internal/logger/target/types"
|
||||||
xnet "github.com/minio/pkg/net"
|
xnet "github.com/minio/pkg/net"
|
||||||
)
|
)
|
||||||
|
Loading…
Reference in New Issue
Block a user