Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 4 additions & 2 deletions service/internal/security/in_process_provider.go
Original file line number Diff line number Diff line change
Expand Up @@ -97,8 +97,10 @@ func (k *KeyDetailsAdapter) ExportCertificate(_ context.Context) (string, error)
}

func (k *KeyDetailsAdapter) ProviderConfig() *policy.KeyProviderConfig {
// Provider config is not supported for this adapter.
return nil
return &policy.KeyProviderConfig{
Manager: inProcessSystemName,
Name: "static",
}
}

// NewSecurityProviderAdapter creates a new adapter that implements SecurityProvider using a CryptoProvider
Expand Down
6 changes: 4 additions & 2 deletions service/kas/access/publicKey_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -182,7 +182,9 @@ func TestPublicKeyWithSecurityProvider(t *testing.T) {

// Create Provider with the mock security provider
delegator := trust.NewDelegatingKeyService(mockProvider, logger.CreateTestLogger(), nil)
delegator.RegisterKeyManager(mockProvider.Name(), func(_ *trust.KeyManagerFactoryOptions) (trust.KeyManager, error) { return mockProvider, nil })
delegator.RegisterKeyManagerCtx(mockProvider.Name(), func(_ context.Context, _ *trust.KeyManagerFactoryOptions) (trust.KeyManager, error) {
return mockProvider, nil
})
kas := Provider{
KeyDelegator: delegator,
KASConfig: KASConfig{
Expand Down Expand Up @@ -351,7 +353,7 @@ func TestStandardCertificateHandlerEmpty(t *testing.T) {
inProcess := security.NewSecurityProviderAdapter(c, nil, nil)

delegator := trust.NewDelegatingKeyService(inProcess, logger.CreateTestLogger(), nil)
delegator.RegisterKeyManager(inProcess.Name(), func(_ *trust.KeyManagerFactoryOptions) (trust.KeyManager, error) {
delegator.RegisterKeyManagerCtx(inProcess.Name(), func(_ context.Context, _ *trust.KeyManagerFactoryOptions) (trust.KeyManager, error) {
return inProcess, nil
})

Expand Down
25 changes: 14 additions & 11 deletions service/kas/kas.go
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ func NewRegistration() *serviceregistry.Service[kasconnect.AccessServiceHandler]
}
}

var kmgrNames []string
var kmgrs []string

if kasCfg.Preview.KeyManagement {
srp.Logger.Info("preview feature: key management is enabled")
Expand All @@ -75,23 +75,26 @@ func NewRegistration() *serviceregistry.Service[kasconnect.AccessServiceHandler]

// Configure new delegation service
p.KeyDelegator = trust.NewDelegatingKeyService(NewPlatformKeyIndexer(srp.SDK, kasURL.String(), srp.Logger), srp.Logger, cacheClient)
for _, manager := range srp.KeyManagerFactories {
p.KeyDelegator.RegisterKeyManager(manager.Name, manager.Factory)
kmgrNames = append(kmgrNames, manager.Name)
if len(srp.KeyManagerFactories) > 0 {
srp.Logger.Error("kas service ignores legacy KeyManagerFactories; using KeyManagerCtxFactories instead")
}
for _, manager := range srp.KeyManagerCtxFactories {
p.KeyDelegator.RegisterKeyManagerCtx(manager.Name, manager.Factory)
kmgrs = append(kmgrs, manager.Name)
}

// Register Basic Key Manager
p.KeyDelegator.RegisterKeyManager(security.BasicManagerName, func(opts *trust.KeyManagerFactoryOptions) (trust.KeyManager, error) {
p.KeyDelegator.RegisterKeyManagerCtx(security.BasicManagerName, func(_ context.Context, opts *trust.KeyManagerFactoryOptions) (trust.KeyManager, error) {
bm, err := security.NewBasicManager(opts.Logger, opts.Cache, kasCfg.RootKey)
if err != nil {
return nil, err
}
return bm, nil
})
kmgrNames = append(kmgrNames, security.BasicManagerName)
kmgrs = append(kmgrs, security.BasicManagerName)
// Explicitly set the default manager for session key generation.
// This should be configurable, e.g., defaulting to BasicManager or an HSM if available.
p.KeyDelegator.SetDefaultMode(security.BasicManagerName) // Example: default to BasicManager
p.KeyDelegator.SetDefaultMode(security.BasicManagerName, "", nil) // Example: default to BasicManager
} else {
// Set up both the legacy CryptoProvider and the new SecurityProvider
kasCfg.UpgradeMapToKeyring(srp.OTDF.CryptoProvider)
Expand All @@ -100,14 +103,14 @@ func NewRegistration() *serviceregistry.Service[kasconnect.AccessServiceHandler]
inProcessService := initSecurityProviderAdapter(p.CryptoProvider, kasCfg, srp.Logger)

p.KeyDelegator = trust.NewDelegatingKeyService(inProcessService, srp.Logger, nil)
p.KeyDelegator.RegisterKeyManager(inProcessService.Name(), func(*trust.KeyManagerFactoryOptions) (trust.KeyManager, error) {
p.KeyDelegator.RegisterKeyManagerCtx(inProcessService.Name(), func(_ context.Context, _ *trust.KeyManagerFactoryOptions) (trust.KeyManager, error) {
return inProcessService, nil
})
// Set default for non-key-management mode
p.KeyDelegator.SetDefaultMode(inProcessService.Name())
kmgrNames = append(kmgrNames, inProcessService.Name())
p.KeyDelegator.SetDefaultMode(inProcessService.Name(), "", nil)
kmgrs = append(kmgrs, inProcessService.Name())
}
srp.Logger.Info("kas registered trust.KeyManagers", slog.Any("key_managers", kmgrNames))
srp.Logger.Info("kas registered trust.KeyManagers", slog.Any("key_managers", kmgrs))

p.SDK = srp.SDK
p.Logger = srp.Logger
Expand Down
2 changes: 1 addition & 1 deletion service/policy/db/actions.sql.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion service/policy/db/attribute_fqn.sql.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion service/policy/db/attribute_values.sql.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion service/policy/db/attributes.sql.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion service/policy/db/copyfrom.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion service/policy/db/db.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions service/policy/db/key_access_server_registry.go
Original file line number Diff line number Diff line change
Expand Up @@ -480,6 +480,7 @@ func (c PolicyDBClient) GetKey(ctx context.Context, identifier any) (*policy.Kas
if key.ProviderConfigID.Valid {
providerConfig = &policy.KeyProviderConfig{}
providerConfig.Id = UUIDToString(key.ProviderConfigID)
providerConfig.Manager = key.PcManager.String
providerConfig.Name = key.ProviderName.String
providerConfig.ConfigJson = key.PcConfig
providerConfig.Metadata = &common.Metadata{}
Expand Down
6 changes: 5 additions & 1 deletion service/policy/db/key_access_server_registry.sql.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion service/policy/db/key_management.sql.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion service/policy/db/models.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion service/policy/db/namespaces.sql.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion service/policy/db/obligations.sql.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions service/policy/db/queries/key_access_server_registry.sql
Original file line number Diff line number Diff line change
Expand Up @@ -188,6 +188,7 @@ SELECT
'updated_at', kask.updated_at
)
) AS metadata,
pc.manager AS pc_manager,
pc.provider_name,
pc.config AS pc_config,
JSON_STRIP_NULLS(JSON_BUILD_OBJECT('labels', pc.metadata -> 'labels', 'created_at', pc.created_at, 'updated_at', pc.updated_at)) AS pc_metadata,
Expand Down
2 changes: 1 addition & 1 deletion service/policy/db/registered_resources.sql.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion service/policy/db/resource_mapping.sql.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion service/policy/db/subject_mappings.sql.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 4 additions & 1 deletion service/policy/keymanagement/key_management.go
Original file line number Diff line number Diff line change
Expand Up @@ -69,8 +69,11 @@ func NewRegistration(ns string, dbRegister serviceregistry.DBRegister) *servicer

// Register key managers in well-known configuration
ksvc.keyManagerFactories = make([]registeredManagers, 0, len(srp.KeyManagerFactories))
if len(srp.KeyManagerFactories) > 0 {
srp.Logger.Error("keymanagement: ignoring legacy KeyManagerFactories; using KeyManagerCtxFactories instead")
}
managersMap := make(map[string]any)
for i, factory := range srp.KeyManagerFactories {
for i, factory := range srp.KeyManagerCtxFactories {
rm := registeredManagers{
Name: factory.Name,
Description: "Key manager: " + factory.Name,
Expand Down
Loading
Loading