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:
Noah Stride
2024-10-11 10:00:37 +00:00
committed by GitHub
parent 4458533f58
commit 96a5bb2b9e
10 changed files with 55 additions and 44 deletions
+2 -2
View File
@@ -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,
+4 -4
View File
@@ -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
+4
View File
@@ -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
View File
@@ -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")
}
+10 -10
View File
@@ -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
+13 -4
View File
@@ -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
+5 -9
View File
@@ -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)))
}
+3 -1
View File
@@ -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)