backport of commit d0501db90f2b36eb535b2526ed04a364f9f06340 (#23745)
Co-authored-by: Steven Clark <steven.clark@hashicorp.com>
This commit is contained in:
parent
cc0963f22a
commit
bd3434837c
|
@ -273,6 +273,11 @@ func (b *backend) rotateIfRequired(ctx context.Context, req *logical.Request, ke
|
|||
return nil
|
||||
}
|
||||
|
||||
// We can't auto-rotate managed keys
|
||||
if p.Type == keysutil.KeyType_MANAGED_KEY {
|
||||
return nil
|
||||
}
|
||||
|
||||
// Retrieve the latest version of the policy and determine if it is time to rotate.
|
||||
latestKey := p.Keys[strconv.Itoa(p.LatestVersion)]
|
||||
if time.Now().After(latestKey.CreationTime.Add(p.AutoRotatePeriod)) {
|
||||
|
|
|
@ -7,6 +7,7 @@ import (
|
|||
"context"
|
||||
"crypto/rand"
|
||||
"encoding/base64"
|
||||
"errors"
|
||||
"fmt"
|
||||
|
||||
"github.com/hashicorp/vault/helper/constants"
|
||||
|
@ -141,7 +142,23 @@ func (b *backend) pathDatakeyWrite(ctx context.Context, req *logical.Request, d
|
|||
return nil, err
|
||||
}
|
||||
|
||||
ciphertext, err := p.Encrypt(ver, context, nonce, base64.StdEncoding.EncodeToString(newKey))
|
||||
var managedKeyFactory ManagedKeyFactory
|
||||
if p.Type == keysutil.KeyType_MANAGED_KEY {
|
||||
managedKeySystemView, ok := b.System().(logical.ManagedKeySystemView)
|
||||
if !ok {
|
||||
return nil, errors.New("unsupported system view")
|
||||
}
|
||||
|
||||
managedKeyFactory = ManagedKeyFactory{
|
||||
managedKeyParams: keysutil.ManagedKeyParameters{
|
||||
ManagedKeySystemView: managedKeySystemView,
|
||||
BackendUUID: b.backendUUID,
|
||||
Context: ctx,
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
ciphertext, err := p.EncryptWithFactory(ver, context, nonce, base64.StdEncoding.EncodeToString(newKey), nil, managedKeyFactory)
|
||||
if err != nil {
|
||||
switch err.(type) {
|
||||
case errutil.UserError:
|
||||
|
|
|
@ -218,6 +218,10 @@ func (b *backend) pathKeysConfigWrite(ctx context.Context, req *logical.Request,
|
|||
p.AutoRotatePeriod = autoRotatePeriod
|
||||
persistNeeded = true
|
||||
}
|
||||
|
||||
if p.Type == keysutil.KeyType_MANAGED_KEY && autoRotatePeriod != 0 {
|
||||
return logical.ErrorResponse("Auto rotation can not be set for managed keys"), nil
|
||||
}
|
||||
}
|
||||
|
||||
if !persistNeeded {
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
```release-note:bug
|
||||
secrets/transit: Do not allow auto rotation on managed_key key types
|
||||
```
|
Loading…
Reference in New Issue