mirror of
https://github.com/gravitational/teleport.git
synced 2026-09-21 14:35:22 +08:00
Convert some lib/auth subpackages to slog (#47477)
* Convert some `auth` subpackages to `slog` * Add missing log param in test
This commit is contained in:
@@ -23,11 +23,11 @@ package accesspoint
|
||||
|
||||
import (
|
||||
"context"
|
||||
"log/slog"
|
||||
"slices"
|
||||
"time"
|
||||
|
||||
"github.com/gravitational/trace"
|
||||
log "github.com/sirupsen/logrus"
|
||||
oteltrace "go.opentelemetry.io/otel/trace"
|
||||
|
||||
"github.com/gravitational/teleport"
|
||||
@@ -124,7 +124,7 @@ func NewCache(cfg Config) (*cache.Cache, error) {
|
||||
if err := cfg.CheckAndSetDefaults(); err != nil {
|
||||
return nil, trace.Wrap(err)
|
||||
}
|
||||
log.Debugf("Creating in-memory backend for %v.", cfg.CacheName)
|
||||
slog.DebugContext(cfg.Context, "Creating in-memory backend cache.", "cache_name", cfg.CacheName)
|
||||
mem, err := memory.New(memory.Config{
|
||||
Context: cfg.Context,
|
||||
EventsOff: !cfg.EventsSystem,
|
||||
|
||||
@@ -20,9 +20,9 @@ package dbobjectv1
|
||||
|
||||
import (
|
||||
"context"
|
||||
"log/slog"
|
||||
|
||||
"github.com/gravitational/trace"
|
||||
"github.com/sirupsen/logrus"
|
||||
"google.golang.org/protobuf/types/known/emptypb"
|
||||
|
||||
"github.com/gravitational/teleport"
|
||||
@@ -43,7 +43,7 @@ type Backend interface {
|
||||
type DatabaseObjectServiceConfig struct {
|
||||
Authorizer authz.Authorizer
|
||||
Backend Backend
|
||||
Logger logrus.FieldLogger
|
||||
Logger *slog.Logger
|
||||
}
|
||||
|
||||
// NewDatabaseObjectService returns a new instance of the DatabaseObjectService.
|
||||
@@ -55,7 +55,7 @@ func NewDatabaseObjectService(cfg DatabaseObjectServiceConfig) (*DatabaseObjectS
|
||||
return nil, trace.BadParameter("backend service is required")
|
||||
}
|
||||
if cfg.Logger == nil {
|
||||
cfg.Logger = logrus.WithField(teleport.ComponentKey, "db_object")
|
||||
cfg.Logger = slog.With(teleport.ComponentKey, "db_object")
|
||||
}
|
||||
return &DatabaseObjectService{
|
||||
logger: cfg.Logger,
|
||||
@@ -72,7 +72,7 @@ type DatabaseObjectService struct {
|
||||
|
||||
backend Backend
|
||||
authorizer authz.Authorizer
|
||||
logger logrus.FieldLogger
|
||||
logger *slog.Logger
|
||||
}
|
||||
|
||||
func (rs *DatabaseObjectService) authorize(ctx context.Context, adminAction bool, verb string, additionalVerbs ...string) error {
|
||||
|
||||
@@ -20,9 +20,9 @@ package dbobjectimportrulev1
|
||||
|
||||
import (
|
||||
"context"
|
||||
"log/slog"
|
||||
|
||||
"github.com/gravitational/trace"
|
||||
"github.com/sirupsen/logrus"
|
||||
"google.golang.org/protobuf/types/known/emptypb"
|
||||
|
||||
"github.com/gravitational/teleport"
|
||||
@@ -43,7 +43,7 @@ type Backend interface {
|
||||
type DatabaseObjectImportRuleServiceConfig struct {
|
||||
Authorizer authz.Authorizer
|
||||
Backend Backend
|
||||
Logger logrus.FieldLogger
|
||||
Logger *slog.Logger
|
||||
}
|
||||
|
||||
// NewDatabaseObjectImportRuleService returns a new instance of the DatabaseObjectImportRuleService.
|
||||
@@ -55,7 +55,7 @@ func NewDatabaseObjectImportRuleService(cfg DatabaseObjectImportRuleServiceConfi
|
||||
return nil, trace.BadParameter("backend service is required")
|
||||
}
|
||||
if cfg.Logger == nil {
|
||||
cfg.Logger = logrus.WithField(teleport.ComponentKey, "db_obj_import_rule")
|
||||
cfg.Logger = slog.With(teleport.ComponentKey, "db_obj_import_rule")
|
||||
}
|
||||
return &DatabaseObjectImportRuleService{
|
||||
logger: cfg.Logger,
|
||||
@@ -72,7 +72,7 @@ type DatabaseObjectImportRuleService struct {
|
||||
|
||||
backend Backend
|
||||
authorizer authz.Authorizer
|
||||
logger logrus.FieldLogger
|
||||
logger *slog.Logger
|
||||
}
|
||||
|
||||
func (rs *DatabaseObjectImportRuleService) authorize(ctx context.Context, adminAction bool, verb string, additionalVerbs ...string) error {
|
||||
|
||||
@@ -20,10 +20,10 @@ package discoveryconfigv1
|
||||
|
||||
import (
|
||||
"context"
|
||||
"log/slog"
|
||||
|
||||
"github.com/gravitational/trace"
|
||||
"github.com/jonboulle/clockwork"
|
||||
"github.com/sirupsen/logrus"
|
||||
"google.golang.org/protobuf/types/known/emptypb"
|
||||
|
||||
"github.com/gravitational/teleport"
|
||||
@@ -40,7 +40,7 @@ import (
|
||||
// ServiceConfig holds configuration options for the DiscoveryConfig gRPC service.
|
||||
type ServiceConfig struct {
|
||||
// Logger is the logger to use.
|
||||
Logger logrus.FieldLogger
|
||||
Logger *slog.Logger
|
||||
|
||||
// Authorizer is the authorizer to use.
|
||||
Authorizer authz.Authorizer
|
||||
@@ -70,7 +70,7 @@ func (s *ServiceConfig) CheckAndSetDefaults() error {
|
||||
}
|
||||
|
||||
if s.Logger == nil {
|
||||
s.Logger = logrus.New().WithField(teleport.ComponentKey, "discoveryconfig_crud_service")
|
||||
s.Logger = slog.With(teleport.ComponentKey, "discoveryconfig_crud_service")
|
||||
}
|
||||
|
||||
if s.Clock == nil {
|
||||
@@ -84,7 +84,7 @@ func (s *ServiceConfig) CheckAndSetDefaults() error {
|
||||
type Service struct {
|
||||
discoveryconfigv1.UnimplementedDiscoveryConfigServiceServer
|
||||
|
||||
log logrus.FieldLogger
|
||||
log *slog.Logger
|
||||
authorizer authz.Authorizer
|
||||
backend services.DiscoveryConfigs
|
||||
clock clockwork.Clock
|
||||
@@ -189,7 +189,7 @@ func (s *Service) CreateDiscoveryConfig(ctx context.Context, req *discoveryconfi
|
||||
},
|
||||
ConnectionMetadata: authz.ConnectionMetadata(ctx),
|
||||
}); err != nil {
|
||||
s.log.WithError(err).Warn("Failed to emit discovery config create event.")
|
||||
s.log.WarnContext(ctx, "Failed to emit discovery config create event.", "error", err)
|
||||
}
|
||||
|
||||
return conv.ToProto(resp), nil
|
||||
@@ -235,7 +235,7 @@ func (s *Service) UpdateDiscoveryConfig(ctx context.Context, req *discoveryconfi
|
||||
},
|
||||
ConnectionMetadata: authz.ConnectionMetadata(ctx),
|
||||
}); err != nil {
|
||||
s.log.WithError(err).Warn("Failed to emit discovery config update event.")
|
||||
s.log.WarnContext(ctx, "Failed to emit discovery config update event.", "error", err)
|
||||
}
|
||||
|
||||
return conv.ToProto(resp), nil
|
||||
@@ -278,7 +278,7 @@ func (s *Service) UpsertDiscoveryConfig(ctx context.Context, req *discoveryconfi
|
||||
},
|
||||
ConnectionMetadata: authz.ConnectionMetadata(ctx),
|
||||
}); err != nil {
|
||||
s.log.WithError(err).Warn("Failed to emit discovery config create event.")
|
||||
s.log.WarnContext(ctx, "Failed to emit discovery config create event.", "error", err)
|
||||
}
|
||||
|
||||
return conv.ToProto(resp), nil
|
||||
@@ -310,7 +310,7 @@ func (s *Service) DeleteDiscoveryConfig(ctx context.Context, req *discoveryconfi
|
||||
},
|
||||
ConnectionMetadata: authz.ConnectionMetadata(ctx),
|
||||
}); err != nil {
|
||||
s.log.WithError(err).Warn("Failed to emit discovery config delete event.")
|
||||
s.log.WarnContext(ctx, "Failed to emit discovery config delete event.", "error", err)
|
||||
}
|
||||
|
||||
return &emptypb.Empty{}, nil
|
||||
@@ -339,7 +339,7 @@ func (s *Service) DeleteAllDiscoveryConfigs(ctx context.Context, _ *discoverycon
|
||||
UserMetadata: authCtx.GetUserMetadata(),
|
||||
ConnectionMetadata: authz.ConnectionMetadata(ctx),
|
||||
}); err != nil {
|
||||
s.log.WithError(err).Warn("Failed to emit discovery config delete all event.")
|
||||
s.log.WarnContext(ctx, "Failed to emit discovery config delete all event.", "error", err)
|
||||
}
|
||||
|
||||
return &emptypb.Empty{}, nil
|
||||
|
||||
@@ -5091,6 +5091,7 @@ func NewGRPCServer(cfg GRPCServerConfig) (*GRPCServer, error) {
|
||||
dbObjectImportRuleService, err := dbobjectimportrulev1.NewDatabaseObjectImportRuleService(dbobjectimportrulev1.DatabaseObjectImportRuleServiceConfig{
|
||||
Authorizer: cfg.Authorizer,
|
||||
Backend: cfg.AuthServer.Services,
|
||||
Logger: cfg.AuthServer.logger.With(teleport.ComponentKey, "db_obj_import_rule"),
|
||||
})
|
||||
if err != nil {
|
||||
return nil, trace.Wrap(err, "creating database objectImportRule service")
|
||||
@@ -5100,6 +5101,7 @@ func NewGRPCServer(cfg GRPCServerConfig) (*GRPCServer, error) {
|
||||
dbObjectService, err := dbobjectv1.NewDatabaseObjectService(dbobjectv1.DatabaseObjectServiceConfig{
|
||||
Authorizer: cfg.Authorizer,
|
||||
Backend: cfg.AuthServer.Services,
|
||||
Logger: cfg.AuthServer.logger.With(teleport.ComponentKey, "db_object"),
|
||||
})
|
||||
if err != nil {
|
||||
return nil, trace.Wrap(err, "creating database object service")
|
||||
@@ -5164,6 +5166,7 @@ func NewGRPCServer(cfg GRPCServerConfig) (*GRPCServer, error) {
|
||||
KeyStoreManager: cfg.AuthServer.GetKeyStore(),
|
||||
Clock: cfg.AuthServer.clock,
|
||||
Emitter: cfg.Emitter,
|
||||
Logger: cfg.AuthServer.logger.With(teleport.ComponentKey, "integrations.service"),
|
||||
})
|
||||
if err != nil {
|
||||
return nil, trace.Wrap(err)
|
||||
@@ -5197,6 +5200,7 @@ func NewGRPCServer(cfg GRPCServerConfig) (*GRPCServer, error) {
|
||||
Backend: cfg.AuthServer.Services,
|
||||
Clock: cfg.AuthServer.clock,
|
||||
Emitter: cfg.Emitter,
|
||||
Logger: cfg.AuthServer.logger.With(teleport.ComponentKey, "discoveryconfig_crud_service"),
|
||||
})
|
||||
if err != nil {
|
||||
return nil, trace.Wrap(err)
|
||||
|
||||
+1
-1
@@ -531,7 +531,7 @@ func initCluster(ctx context.Context, cfg InitConfig, asrv *Server) error {
|
||||
cfg.ClusterName = cn
|
||||
|
||||
// Apply any outstanding migrations.
|
||||
if err := migration.Apply(ctx, cfg.Backend); err != nil {
|
||||
if err := migration.Apply(ctx, asrv.logger, cfg.Backend); err != nil {
|
||||
return trace.Wrap(err, "applying migrations")
|
||||
}
|
||||
|
||||
|
||||
@@ -22,10 +22,10 @@ import (
|
||||
"context"
|
||||
"crypto"
|
||||
"fmt"
|
||||
"log/slog"
|
||||
|
||||
"github.com/gravitational/trace"
|
||||
"github.com/jonboulle/clockwork"
|
||||
"github.com/sirupsen/logrus"
|
||||
"google.golang.org/protobuf/types/known/emptypb"
|
||||
|
||||
"github.com/gravitational/teleport"
|
||||
@@ -66,7 +66,7 @@ type ServiceConfig struct {
|
||||
Backend services.Integrations
|
||||
Cache Cache
|
||||
KeyStoreManager KeyStoreManager
|
||||
Logger *logrus.Entry
|
||||
Logger *slog.Logger
|
||||
Clock clockwork.Clock
|
||||
Emitter apievents.Emitter
|
||||
}
|
||||
@@ -96,7 +96,7 @@ func (s *ServiceConfig) CheckAndSetDefaults() error {
|
||||
}
|
||||
|
||||
if s.Logger == nil {
|
||||
s.Logger = logrus.WithField(teleport.ComponentKey, "integrations.service")
|
||||
s.Logger = slog.With(teleport.ComponentKey, "integrations.service")
|
||||
}
|
||||
|
||||
if s.Clock == nil {
|
||||
@@ -113,7 +113,7 @@ type Service struct {
|
||||
cache Cache
|
||||
keyStoreManager KeyStoreManager
|
||||
backend services.Integrations
|
||||
logger *logrus.Entry
|
||||
logger *slog.Logger
|
||||
clock clockwork.Clock
|
||||
emitter apievents.Emitter
|
||||
}
|
||||
@@ -209,7 +209,7 @@ func (s *Service) CreateIntegration(ctx context.Context, req *integrationpb.Crea
|
||||
|
||||
igMeta, err := getIntegrationMetadata(ig)
|
||||
if err != nil {
|
||||
s.logger.WithError(err).Warn("Failed to build all integration metadata for audit event")
|
||||
s.logger.WarnContext(ctx, "Failed to build all integration metadata for audit event.", "error", err)
|
||||
}
|
||||
|
||||
if err := s.emitter.EmitAuditEvent(ctx, &apievents.IntegrationCreate{
|
||||
@@ -225,7 +225,7 @@ func (s *Service) CreateIntegration(ctx context.Context, req *integrationpb.Crea
|
||||
IntegrationMetadata: igMeta,
|
||||
ConnectionMetadata: authz.ConnectionMetadata(ctx),
|
||||
}); err != nil {
|
||||
s.logger.WithError(err).Warn("Failed to emit integration create event.")
|
||||
s.logger.WarnContext(ctx, "Failed to emit integration create event.", "error", err)
|
||||
}
|
||||
|
||||
igV1, ok := ig.(*types.IntegrationV1)
|
||||
@@ -254,7 +254,7 @@ func (s *Service) UpdateIntegration(ctx context.Context, req *integrationpb.Upda
|
||||
|
||||
igMeta, err := getIntegrationMetadata(ig)
|
||||
if err != nil {
|
||||
s.logger.WithError(err).Warn("Failed to build all integration metadata for audit event")
|
||||
s.logger.WarnContext(ctx, "Failed to build all integration metadata for audit event.", "error", err)
|
||||
}
|
||||
|
||||
if err := s.emitter.EmitAuditEvent(ctx, &apievents.IntegrationUpdate{
|
||||
@@ -270,7 +270,7 @@ func (s *Service) UpdateIntegration(ctx context.Context, req *integrationpb.Upda
|
||||
IntegrationMetadata: igMeta,
|
||||
ConnectionMetadata: authz.ConnectionMetadata(ctx),
|
||||
}); err != nil {
|
||||
s.logger.WithError(err).Warn("Failed to emit integration update event.")
|
||||
s.logger.WarnContext(ctx, "Failed to emit integration update event.", "error", err)
|
||||
}
|
||||
|
||||
igV1, ok := ig.(*types.IntegrationV1)
|
||||
@@ -303,7 +303,7 @@ func (s *Service) DeleteIntegration(ctx context.Context, req *integrationpb.Dele
|
||||
|
||||
igMeta, err := getIntegrationMetadata(ig)
|
||||
if err != nil {
|
||||
s.logger.WithError(err).Warn("Failed to build all integration metadata for audit event")
|
||||
s.logger.WarnContext(ctx, "Failed to build all integration metadata for audit event.", "error", err)
|
||||
}
|
||||
|
||||
if err := s.emitter.EmitAuditEvent(ctx, &apievents.IntegrationDelete{
|
||||
@@ -318,7 +318,7 @@ func (s *Service) DeleteIntegration(ctx context.Context, req *integrationpb.Dele
|
||||
IntegrationMetadata: igMeta,
|
||||
ConnectionMetadata: authz.ConnectionMetadata(ctx),
|
||||
}); err != nil {
|
||||
s.logger.WithError(err).Warn("Failed to emit integration delete event.")
|
||||
s.logger.WarnContext(ctx, "Failed to emit integration delete event.", "error", err)
|
||||
}
|
||||
|
||||
return &emptypb.Empty{}, nil
|
||||
|
||||
@@ -22,12 +22,12 @@ import (
|
||||
"context"
|
||||
"crypto/rand"
|
||||
"fmt"
|
||||
"log/slog"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/gravitational/trace"
|
||||
"github.com/jonboulle/clockwork"
|
||||
log "github.com/sirupsen/logrus"
|
||||
"golang.org/x/crypto/ssh"
|
||||
|
||||
"github.com/gravitational/teleport"
|
||||
@@ -125,8 +125,11 @@ func (k *Keygen) GenerateHostCertWithoutValidation(c services.HostCertParams) ([
|
||||
return nil, trace.Wrap(err)
|
||||
}
|
||||
|
||||
log.Debugf("Generated SSH host certificate for role %v with principals: %v.",
|
||||
c.Role, principals)
|
||||
slog.DebugContext(
|
||||
context.TODO(),
|
||||
"Generated SSH host certificate.",
|
||||
"role", c.Role, "principals", principals,
|
||||
)
|
||||
return ssh.MarshalAuthorizedKey(cert), nil
|
||||
}
|
||||
|
||||
@@ -150,7 +153,13 @@ func (k *Keygen) GenerateUserCertWithoutValidation(c services.UserCertParams) ([
|
||||
if c.TTL != 0 {
|
||||
b := k.clock.Now().UTC().Add(c.TTL)
|
||||
validBefore = uint64(b.Unix())
|
||||
log.Debugf("generated user key for %v with expiry on (%v) %v", c.AllowedLogins, validBefore, b)
|
||||
slog.DebugContext(
|
||||
context.TODO(),
|
||||
"Generated user key with expiry.",
|
||||
"allowed_logins", c.AllowedLogins,
|
||||
"valid_before_unix_ts", validBefore,
|
||||
"valid_before", b,
|
||||
)
|
||||
}
|
||||
cert := &ssh.Certificate{
|
||||
// we have to use key id to identify teleport user
|
||||
|
||||
@@ -22,16 +22,15 @@ import (
|
||||
"cmp"
|
||||
"context"
|
||||
"encoding/json"
|
||||
"log/slog"
|
||||
"slices"
|
||||
"time"
|
||||
|
||||
"github.com/gravitational/trace"
|
||||
"github.com/sirupsen/logrus"
|
||||
"go.opentelemetry.io/otel/attribute"
|
||||
"go.opentelemetry.io/otel/codes"
|
||||
oteltrace "go.opentelemetry.io/otel/trace"
|
||||
|
||||
"github.com/gravitational/teleport"
|
||||
"github.com/gravitational/teleport/api/observability/tracing"
|
||||
"github.com/gravitational/teleport/lib/backend"
|
||||
)
|
||||
@@ -51,10 +50,6 @@ func withMigrations(m []migration) func(c *applyConfig) {
|
||||
}
|
||||
}
|
||||
|
||||
var log = logrus.WithFields(logrus.Fields{
|
||||
teleport.ComponentKey: teleport.ComponentAuth,
|
||||
})
|
||||
|
||||
var tracer = tracing.NewTracer("migrations")
|
||||
|
||||
// migration is an interface responsible for applying data migrations to the backend.
|
||||
@@ -77,7 +72,7 @@ type migration interface {
|
||||
}
|
||||
|
||||
// Apply executes any outstanding registered migrations.
|
||||
func Apply(ctx context.Context, b backend.Backend, opts ...func(c *applyConfig)) (err error) {
|
||||
func Apply(ctx context.Context, log *slog.Logger, b backend.Backend, opts ...func(c *applyConfig)) (err error) {
|
||||
cfg := applyConfig{
|
||||
migrations: []migration{
|
||||
createDBAuthority{},
|
||||
@@ -120,7 +115,8 @@ func Apply(ctx context.Context, b backend.Backend, opts ...func(c *applyConfig))
|
||||
continue
|
||||
}
|
||||
|
||||
log.Infof("Starting migration %d %s", version, m.Name())
|
||||
log := log.With("version", version, "name", m.Name())
|
||||
log.InfoContext(ctx, "Starting migration.")
|
||||
span.AddEvent("Starting migration", oteltrace.WithAttributes(attribute.Int("migration", version)))
|
||||
|
||||
started := time.Now().UTC()
|
||||
@@ -140,7 +136,7 @@ func Apply(ctx context.Context, b backend.Backend, opts ...func(c *applyConfig))
|
||||
return trace.Wrap(err)
|
||||
}
|
||||
|
||||
log.Infof("Completed migration %d %s", version, m.Name())
|
||||
log.InfoContext(ctx, "Completed migration.")
|
||||
span.AddEvent("Completed migration", oteltrace.WithAttributes(attribute.Int("migration", version)))
|
||||
}
|
||||
|
||||
|
||||
@@ -29,6 +29,7 @@ import (
|
||||
|
||||
"github.com/gravitational/teleport/lib/backend"
|
||||
"github.com/gravitational/teleport/lib/backend/memory"
|
||||
"github.com/gravitational/teleport/lib/utils"
|
||||
)
|
||||
|
||||
type testMigration struct {
|
||||
@@ -62,6 +63,7 @@ func (t testMigration) Name() string {
|
||||
}
|
||||
|
||||
func TestApply(t *testing.T) {
|
||||
log := utils.NewSlogLoggerForTests()
|
||||
cases := []struct {
|
||||
name string
|
||||
migrations []migration
|
||||
@@ -161,7 +163,7 @@ func TestApply(t *testing.T) {
|
||||
require.NoError(t, setCurrentMigration(ctx, b, *test.initialStatus))
|
||||
}
|
||||
|
||||
test.errAssertion(t, Apply(ctx, b, withMigrations(test.migrations)))
|
||||
test.errAssertion(t, Apply(ctx, log, b, withMigrations(test.migrations)))
|
||||
|
||||
current, err := getCurrentMigration(ctx, b)
|
||||
require.NoError(t, err)
|
||||
|
||||
Reference in New Issue
Block a user