diff --git a/aws/aws_kms/aws_kms.go b/aws/aws_kms/aws_kms.go index 1ef5621e..dd38ff4e 100644 --- a/aws/aws_kms/aws_kms.go +++ b/aws/aws_kms/aws_kms.go @@ -1,15 +1,16 @@ package aws_kms import ( + "context" "encoding/base64" "fmt" - "github.com/libopenstorage/secrets/aws/utils" "os" - "github.com/aws/aws-sdk-go/aws" - "github.com/aws/aws-sdk-go/aws/credentials" - "github.com/aws/aws-sdk-go/aws/session" - "github.com/aws/aws-sdk-go/service/kms" + "github.com/libopenstorage/secrets/aws/utils" + + "github.com/aws/aws-sdk-go-v2/aws" + "github.com/aws/aws-sdk-go-v2/service/kms" + "github.com/aws/aws-sdk-go-v2/service/kms/types" "github.com/libopenstorage/secrets" sc "github.com/libopenstorage/secrets/aws/credentials" "github.com/libopenstorage/secrets/pkg/store" @@ -28,9 +29,8 @@ const ( ) type awsKmsSecrets struct { - client *kms.KMS - creds *credentials.Credentials - sess *session.Session + client *kms.Client + creds *aws.Credentials cmk string asc sc.AWSCredentials ps store.PersistenceStore @@ -84,15 +84,16 @@ func New( if err != nil { return nil, fmt.Errorf("Failed to get credentials: %v", err) } - config := &aws.Config{ - Credentials: creds, - Region: ®ion, + credProv, err := asc.GetCredentialsProvider() + config := aws.Config{ + Credentials: credProv, + Region: region, } - sess := session.New(config) - kmsClient := kms.New(sess) + + kmsClient := kms.NewFromConfig(config) + return &awsKmsSecrets{ client: kmsClient, - sess: sess, creds: creds, cmk: cmk, asc: asc, @@ -139,10 +140,10 @@ func (a *awsKmsSecrets) GetSecret( decodedCipherBlob = cipherBlob } input := &kms.DecryptInput{ - EncryptionContext: getAWSKeyContext(keyContext), + EncryptionContext: keyContext, CiphertextBlob: decodedCipherBlob, } - output, err := a.client.Decrypt(input) + output, err := a.client.Decrypt(context.TODO(), input) if err != nil { return nil, secrets.NoVersion, err } @@ -203,11 +204,11 @@ func (a *awsKmsSecrets) PutSecret( keySpec := "AES_256" input := &kms.GenerateDataKeyInput{ KeyId: &a.cmk, - EncryptionContext: getAWSKeyContext(keyContext), - KeySpec: &keySpec, + EncryptionContext: keyContext, + KeySpec: types.DataKeySpec(keySpec), } - output, err := a.client.GenerateDataKey(input) + output, err := a.client.GenerateDataKey(context.TODO(), input) if err != nil { return secrets.NoVersion, err } diff --git a/aws/aws_kms/aws_kms_integration_test.go b/aws/aws_kms/aws_kms_integration_test.go index 92a408e0..82ce4c76 100644 --- a/aws/aws_kms/aws_kms_integration_test.go +++ b/aws/aws_kms/aws_kms_integration_test.go @@ -6,6 +6,7 @@ package aws_kms import ( "os" "testing" + "time" "github.com/libopenstorage/secrets" "github.com/libopenstorage/secrets/aws/utils" @@ -164,6 +165,9 @@ func (a *awsSecretTest) TestDeleteSecret(t *testing.T) error { err := a.s.DeleteSecret(secretIdWithData, nil) assert.NoError(t, err, "Expected DeleteSecret to succeed") + // Add a delay to allow time for deletion to propagate + time.Sleep(time.Second * 90) + // Get of a deleted key should fail _, _, err = a.s.GetSecret(secretIdWithData, nil) assert.EqualError(t, secrets.ErrInvalidSecretId, err.Error(), "Unexpected error on GetSecret after delete") diff --git a/aws/aws_secrets_manager/aws_scm.go b/aws/aws_secrets_manager/aws_scm.go index 9be07d18..f2c6f80c 100644 --- a/aws/aws_secrets_manager/aws_scm.go +++ b/aws/aws_secrets_manager/aws_scm.go @@ -8,10 +8,9 @@ import ( "strconv" "strings" - "github.com/aws/aws-sdk-go/aws" - "github.com/aws/aws-sdk-go/aws/awserr" - "github.com/aws/aws-sdk-go/aws/session" - "github.com/aws/aws-sdk-go/service/secretsmanager" + "github.com/aws/aws-sdk-go-v2/aws" + "github.com/aws/aws-sdk-go-v2/service/secretsmanager" + "github.com/aws/aws-sdk-go-v2/service/secretsmanager/types" "github.com/libopenstorage/secrets" sc "github.com/libopenstorage/secrets/aws/credentials" "github.com/libopenstorage/secrets/aws/utils" @@ -26,7 +25,7 @@ const ( // AWSSecretsMgr is backend for secrets.SecretStore. type AWSSecretsMgr struct { - scm *secretsmanager.SecretsManager + scm *secretsmanager.Client } // New creates new instance of AWSSecretsMgr with provided configuration. @@ -39,7 +38,7 @@ func New( awsConfig, ok := secretConfig[utils.AwsConfigKey] if ok { - awsConfig, ok := awsConfig.(*aws.Config) + awsConfig, ok := awsConfig.(aws.Config) if !ok { return nil, utils.ErrAWSConfigWrongType } @@ -64,25 +63,22 @@ func New( if err != nil { return nil, fmt.Errorf("failed to create aws credentials instance: %v", err) } - creds, err := asc.Get() + _, err = asc.Get() if err != nil { return nil, fmt.Errorf("failed to get credentials: %v", err) } - config := &aws.Config{ - Credentials: creds, - Region: ®ion, + credProv, err := asc.GetCredentialsProvider() + config := aws.Config{ + Credentials: credProv, + Region: region, } return NewFromAWSConfig(config) } // NewFromAWSConfig creates new instance of AWSSecretsMgr with provided AWS configuration (aws.Config). -func NewFromAWSConfig(config *aws.Config) (*AWSSecretsMgr, error) { - sess, err := session.NewSession(config) - if err != nil { - return nil, fmt.Errorf("failed to create a session: %v", err) - } - scm := secretsmanager.New(sess) +func NewFromAWSConfig(config aws.Config) (*AWSSecretsMgr, error) { + scm := secretsmanager.NewFromConfig(config) return &AWSSecretsMgr{ scm: scm, }, nil @@ -175,17 +171,15 @@ func (a *AWSSecretsMgr) Rencrypt( } func (a *AWSSecretsMgr) get(secretID string) (map[string]interface{}, secrets.Version, error) { - secretValueOutput, err := a.scm.GetSecretValue(&secretsmanager.GetSecretValueInput{ + secretValueOutput, err := a.scm.GetSecretValue(context.TODO(), &secretsmanager.GetSecretValueInput{ SecretId: aws.String(secretID), }) if err != nil { - if aerr, ok := err.(awserr.Error); ok { - if aerr.Code() == secretsmanager.ErrCodeResourceNotFoundException { - return nil, secrets.NoVersion, secrets.ErrInvalidSecretId - } else if aerr.Code() == secretsmanager.ErrCodeInvalidRequestException && - strings.Contains(aerr.Error(), "marked for deletion") { - return nil, secrets.NoVersion, secrets.ErrInvalidSecretId - } + if _, ok := err.(*types.ResourceNotFoundException); ok { + return nil, secrets.NoVersion, secrets.ErrInvalidSecretId + } else if aerr, ok := err.(*types.InvalidRequestException); ok && + strings.Contains(aerr.Error(), "marked for deletion") { + return nil, secrets.NoVersion, secrets.ErrInvalidSecretId } return nil, secrets.NoVersion, &secrets.ErrProviderInternal{Reason: err.Error(), Provider: Name} } @@ -214,12 +208,12 @@ func (a *AWSSecretsMgr) put( return secrets.NoVersion, fmt.Errorf("failed to marshal secret data: %v", err) } // Check if there already exists a key. - _, err = a.scm.GetSecretValue(&secretsmanager.GetSecretValueInput{ + _, err = a.scm.GetSecretValue(context.TODO(), &secretsmanager.GetSecretValueInput{ SecretId: aws.String(secretID), }) if err == nil { // Update the existing secret - secretValueOutput, putErr := a.scm.PutSecretValue(&secretsmanager.PutSecretValueInput{ + secretValueOutput, putErr := a.scm.PutSecretValue(context.TODO(), &secretsmanager.PutSecretValueInput{ SecretId: aws.String(secretID), SecretString: aws.String(string(secretBytes)), }) @@ -231,21 +225,19 @@ func (a *AWSSecretsMgr) put( } return secrets.Version(*secretValueOutput.VersionId), nil } else { - if aerr, ok := err.(awserr.Error); ok { - if aerr.Code() == secretsmanager.ErrCodeResourceNotFoundException { - // Create a new secret - secretValueOutput, createErr := a.scm.CreateSecret(&secretsmanager.CreateSecretInput{ - SecretString: aws.String(string(secretBytes)), - Name: aws.String(secretID), - }) - if createErr != nil { - return secrets.NoVersion, &secrets.ErrProviderInternal{Reason: createErr.Error(), Provider: Name} - } - if secretValueOutput.VersionId == nil { - return secrets.NoVersion, &secrets.ErrProviderInternal{Reason: "invalid version returned by aws", Provider: Name} - } - return secrets.Version(*secretValueOutput.VersionId), nil - } // return the aws error + if _, ok := err.(*types.ResourceNotFoundException); ok { + // Create a new secret + secretValueOutput, createErr := a.scm.CreateSecret(context.TODO(), &secretsmanager.CreateSecretInput{ + SecretString: aws.String(string(secretBytes)), + Name: aws.String(secretID), + }) + if createErr != nil { + return secrets.NoVersion, &secrets.ErrProviderInternal{Reason: createErr.Error(), Provider: Name} + } + if secretValueOutput.VersionId == nil { + return secrets.NoVersion, &secrets.ErrProviderInternal{Reason: "invalid version returned by aws", Provider: Name} + } + return secrets.Version(*secretValueOutput.VersionId), nil } // return the non-aws error } // Gets, Puts & Creates have failed @@ -278,7 +270,7 @@ func (a *AWSSecretsMgr) delete( } } - _, err := a.scm.DeleteSecret(deleteSecretInput) + _, err := a.scm.DeleteSecret(context.TODO(), deleteSecretInput) if err != nil { return &secrets.ErrProviderInternal{Reason: err.Error(), Provider: Name} } diff --git a/aws/aws_secrets_manager/aws_scm_integration_test.go b/aws/aws_secrets_manager/aws_scm_integration_test.go index 8f3ba526..89cb873e 100644 --- a/aws/aws_secrets_manager/aws_scm_integration_test.go +++ b/aws/aws_secrets_manager/aws_scm_integration_test.go @@ -6,6 +6,7 @@ package aws_secrets_manager import ( "os" "testing" + "time" "github.com/libopenstorage/secrets" "github.com/libopenstorage/secrets/aws/utils" @@ -110,6 +111,9 @@ func (a *awsSecretTest) TestDeleteSecret(t *testing.T) error { err := a.s.DeleteSecret(a.secretIdWithData, nil) assert.NoError(t, err, "Expected DeleteSecret to succeed") + // Add a delay to allow time for deletion to propagate + time.Sleep(time.Second * 200) + // Get of a deleted key should fail _, version, err := a.s.GetSecret(a.secretIdWithData, nil) assert.EqualError(t, secrets.ErrInvalidSecretId, err.Error(), "Unexpected error on GetSecret after delete") @@ -119,6 +123,9 @@ func (a *awsSecretTest) TestDeleteSecret(t *testing.T) error { err = a.s.DeleteSecret(a.secretIdWithoutData, nil) assert.NoError(t, err, "Expected DeleteSecret to succeed") + // Add a delay to allow time for deletion to propagate + time.Sleep(time.Second * 200) + // GetSecret using a secretId without data _, version, err = a.s.GetSecret(a.secretIdWithoutData, nil) assert.EqualError(t, secrets.ErrInvalidSecretId, err.Error(), "Unexpected error on GetSecret after delete") diff --git a/aws/credentials/credentials.go b/aws/credentials/credentials.go index 30d6762f..ddb6719d 100644 --- a/aws/credentials/credentials.go +++ b/aws/credentials/credentials.go @@ -1,69 +1,75 @@ package credentials import ( - "fmt" - "net/http" + "context" "time" - "github.com/aws/aws-sdk-go/aws" - "github.com/aws/aws-sdk-go/aws/credentials" - "github.com/aws/aws-sdk-go/aws/credentials/ec2rolecreds" - "github.com/aws/aws-sdk-go/aws/ec2metadata" - "github.com/aws/aws-sdk-go/aws/session" + "github.com/aws/aws-sdk-go-v2/aws" + "github.com/aws/aws-sdk-go-v2/aws/transport/http" + "github.com/aws/aws-sdk-go-v2/config" + "github.com/aws/aws-sdk-go-v2/credentials" + "github.com/aws/aws-sdk-go-v2/credentials/ec2rolecreds" + "github.com/aws/aws-sdk-go-v2/feature/ec2/imds" ) type AWSCredentials interface { - Get() (*credentials.Credentials, error) + Get() (*aws.Credentials, error) + GetCredentialsProvider() (aws.CredentialsProvider, error) } type awsCred struct { - creds *credentials.Credentials + creds *aws.Credentials + credsprovider aws.CredentialsProvider } func NewAWSCredentials(id, secret, token string, runningOnEc2 bool) (AWSCredentials, error) { - var creds *credentials.Credentials - sess, err := session.NewSession() - if err != nil { - return nil, fmt.Errorf("error creating new aws credentials: %w", err) - } + var creds aws.Credentials + var credsprovider aws.CredentialsProvider + var ctx context.Context if id != "" && secret != "" { - creds = credentials.NewStaticCredentials(id, secret, token) - if _, err := creds.Get(); err != nil { + cfg, err := config.LoadDefaultConfig(ctx, config.WithCredentialsProvider(credentials.NewStaticCredentialsProvider(id, secret, token))) + if err != nil { return nil, err } - } else if sess.Config.Credentials != nil { - // sess config loads credential automatically from environment variable - // this is used to prioritize loading aws web identity token whenever it's specified. - creds = sess.Config.Credentials - } else { - providers := []credentials.Provider{ - &credentials.EnvProvider{}, + + creds, err = cfg.Credentials.Retrieve(context.Background()) + if err != nil { + return nil, err } - if runningOnEc2 { - client := http.Client{Timeout: time.Second * 10} - ec2RoleProvider := &ec2rolecreds.EC2RoleProvider{ - Client: ec2metadata.New(sess, &aws.Config{ - HTTPClient: &client, - }), - } - providers = append(providers, ec2RoleProvider) + + } else if runningOnEc2 { + + ec2Provider := ec2rolecreds.New(func(o *ec2rolecreds.Options) { + o.Client = imds.New(imds.Options{ + HTTPClient: http.NewBuildableClient().WithTimeout(10 * time.Second), + }) + }) + + cfg, err := config.LoadDefaultConfig(context.TODO(), + config.WithCredentialsProvider(ec2Provider), + ) + if err != nil { + return nil, err } - providers = append(providers, &credentials.SharedCredentialsProvider{}) - creds = credentials.NewChainCredentials(providers) - if _, err := creds.Get(); err != nil { + + creds, err = cfg.Credentials.Retrieve(context.Background()) + if err != nil { return nil, err } } - return &awsCred{creds}, nil + return &awsCred{&creds, credsprovider}, nil } -func (a *awsCred) Get() (*credentials.Credentials, error) { - if a.creds.IsExpired() { +func (a *awsCred) Get() (*aws.Credentials, error) { + if a.creds.Expired() { // Refresh the credentials - _, err := a.creds.Get() - if err != nil { + if _, err := a.credsprovider.Retrieve(context.TODO()); err != nil { return nil, err } } return a.creds, nil } + +func (a *awsCred) GetCredentialsProvider() (aws.CredentialsProvider, error) { + return a.credsprovider, nil +} diff --git a/go.mod b/go.mod index 76c64bd4..e6bac0a2 100644 --- a/go.mod +++ b/go.mod @@ -8,7 +8,7 @@ require ( github.com/Azure/go-autorest/autorest/adal v0.9.20 github.com/Azure/go-autorest/autorest/to v0.4.0 github.com/IBM/keyprotect-go-client v0.5.1 - github.com/aws/aws-sdk-go v1.44.164 + github.com/aws/aws-sdk-go v1.44.164 // indirect github.com/golang/mock v1.6.0 github.com/hashicorp/go-hclog v1.3.1 github.com/hashicorp/vault v1.12.2 @@ -25,6 +25,13 @@ require ( ) require ( + github.com/aws/aws-sdk-go-v2 v1.18.1 + github.com/aws/aws-sdk-go-v2/config v1.6.0 + github.com/aws/aws-sdk-go-v2/credentials v1.13.26 + github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.13.4 + github.com/aws/aws-sdk-go-v2/service/kms v1.22.2 + github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.19.10 + github.com/aws/smithy-go v1.13.5 github.com/emicklei/go-restful/v3 v3.9.0 // indirect github.com/fsnotify/fsnotify v1.6.0 // indirect github.com/go-openapi/jsonreference v0.20.0 // indirect diff --git a/go.sum b/go.sum index ca0cb79f..c931d7d0 100644 --- a/go.sum +++ b/go.sum @@ -261,32 +261,49 @@ github.com/aws/aws-sdk-go v1.43.8/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4o github.com/aws/aws-sdk-go v1.44.95/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= github.com/aws/aws-sdk-go v1.44.164 h1:qDj0RutF2Ut0HZYyUJxFdReLxpYrjupsu2JmDIgCvX8= github.com/aws/aws-sdk-go v1.44.164/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= -github.com/aws/aws-sdk-go-v2 v1.8.0 h1:HcN6yDnHV9S7D69E7To0aUppJhiJNEzQSNcUxc7r3qo= github.com/aws/aws-sdk-go-v2 v1.8.0/go.mod h1:xEFuWz+3TYdlPRuo+CqATbeDWIWyaT5uAPwPaWtgse0= +github.com/aws/aws-sdk-go-v2 v1.18.1 h1:+tefE750oAb7ZQGzla6bLkOwfcQCEtC5y2RqoqCeqKo= +github.com/aws/aws-sdk-go-v2 v1.18.1/go.mod h1:uzbQtefpm44goOPmdKyAlXSNcwlRgF3ePWVW6EtJvvw= github.com/aws/aws-sdk-go-v2/config v1.6.0 h1:rtoCnNObhVm7me+v9sA2aY+NtHNZjjWWC3ifXVci+wE= github.com/aws/aws-sdk-go-v2/config v1.6.0/go.mod h1:TNtBVmka80lRPk5+S9ZqVfFszOQAGJJ9KbT3EM3CHNU= -github.com/aws/aws-sdk-go-v2/credentials v1.3.2 h1:Uud/fZzm0lqqhE8kvXYJFAJ3PGnagKoUcvHq1hXfBZw= github.com/aws/aws-sdk-go-v2/credentials v1.3.2/go.mod h1:PACKuTJdt6AlXvEq8rFI4eDmoqDFC5DpVKQbWysaDgM= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.4.0 h1:SGqDJun6tydgsSIFxv9+EYBJVqVUwg2QMJp6PbNq8C8= +github.com/aws/aws-sdk-go-v2/credentials v1.13.26 h1:qmU+yhKmOCyujmuPY7tf5MxR/RKyZrOPO3V4DobiTUk= +github.com/aws/aws-sdk-go-v2/credentials v1.13.26/go.mod h1:GoXt2YC8jHUBbA4jr+W3JiemnIbkXOfxSXcisUsZ3os= github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.4.0/go.mod h1:Mj/U8OpDbcVcoctrYwA2bak8k/HFPdcLzI/vaiXMwuM= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.13.4 h1:LxK/bitrAr4lnh9LnIS6i7zWbCOdMsfzKFBI6LUCS0I= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.13.4/go.mod h1:E1hLXN/BL2e6YizK1zFlYd8vsfi2GTjbjBazinMmeaM= github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.4.0 h1:Iqp2aHeRF3kaaNuDS82bHBzER285NM6lLPAgsxHCR2A= github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.4.0/go.mod h1:eHwXu2+uE/T6gpnYWwBwqoeqRf9IXyCcolyOWDRAErQ= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.34 h1:A5UqQEmPaCFpedKouS4v+dHCTUo2sKqhoKO9U5kxyWo= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.34/go.mod h1:wZpTEecJe0Btj3IYnDx/VlUzor9wm3fJHyvLpQF0VwY= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.28 h1:srIVS45eQuewqz6fKKu6ZGXaq6FuFg5NzgQBAM6g8Y4= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.28/go.mod h1:7VRpKQQedkfIEXb4k52I7swUnZP0wohVajJMRn3vsUw= github.com/aws/aws-sdk-go-v2/internal/ini v1.2.0 h1:xu45foJnwMwBqSkIMKyJP9kbyHi5hdhZ/WiJ7D2sHZ0= github.com/aws/aws-sdk-go-v2/internal/ini v1.2.0/go.mod h1:Q5jATQc+f1MfZp3PDMhn6ry18hGvE0i8yvbXoKbnZaE= github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.2.2 h1:YcGVEqLQGHDa81776C3daai6ZkkRGf/8RAQ07hV0QcU= github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.2.2/go.mod h1:EASdTcM1lGhUe1/p4gkojHwlGJkeoRjjr1sRCzup3Is= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.2.2 h1:Xv1rGYgsRRn0xw9JFNnfpBMZam54PrWpC4rJOJ9koA8= github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.2.2/go.mod h1:NXmNI41bdEsJMrD0v9rUvbGCB5GwdBEpKvUvIY3vTFg= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.28 h1:bkRyG4a929RCnpVSTvLM2j/T4ls015ZhhYApbmYs15s= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.28/go.mod h1:jj7znCIg05jXlaGBlFMGP8+7UN3VtCkRBG2spnmRQkU= github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.5.2 h1:ewIpdVz12MDinJJB/nu1uUiFIWFnvtd3iV7cEW7lR+M= github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.5.2/go.mod h1:QuL2Ym8BkrLmN4lUofXYq6000/i5jPjosCNK//t6gak= +github.com/aws/aws-sdk-go-v2/service/kms v1.22.2 h1:jwmtdM1/l1DRNy5jQrrYpsQm8zwetkgeqhAqefDr1yI= +github.com/aws/aws-sdk-go-v2/service/kms v1.22.2/go.mod h1:aNfh11Smy55o65PB3MyKbkM8BFyFUcZmj1k+4g8eNfg= github.com/aws/aws-sdk-go-v2/service/s3 v1.12.0 h1:cxZbzTYXgiQrZ6u2/RJZAkkgZssqYOdydvJPBgIHlsM= github.com/aws/aws-sdk-go-v2/service/s3 v1.12.0/go.mod h1:6J++A5xpo7QDsIeSqPK4UHqMSyPOCopa+zKtqAMhqVQ= -github.com/aws/aws-sdk-go-v2/service/sso v1.3.2 h1:b+U3WrF9ON3f32FH19geqmiod4uKcMv/q+wosQjjyyM= +github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.19.10 h1:eW8zPSh7ZLzb7029xCsIEFbnxLvNHPTt7aWwdKjNJc8= +github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.19.10/go.mod h1:ezn6mzIRqTPdAbDpm03dx4y9g6rvGRb2q33wS76dCxw= github.com/aws/aws-sdk-go-v2/service/sso v1.3.2/go.mod h1:J21I6kF+d/6XHVk7kp/cx9YVD2TMD2TbLwtRGVcinXo= -github.com/aws/aws-sdk-go-v2/service/sts v1.6.1 h1:1Pls85C5CFjhE3aH+h85/hyAk89kQNlAWlEQtIkaFyc= +github.com/aws/aws-sdk-go-v2/service/sso v1.12.12 h1:nneMBM2p79PGWBQovYO/6Xnc2ryRMw3InnDJq1FHkSY= +github.com/aws/aws-sdk-go-v2/service/sso v1.12.12/go.mod h1:HuCOxYsF21eKrerARYO6HapNeh9GBNq7fius2AcwodY= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.14.12 h1:2qTR7IFk7/0IN/adSFhYu9Xthr0zVFTgBrmPldILn80= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.14.12/go.mod h1:E4VrHCPzmVB/KFXtqBGKb3c8zpbNBgKe3fisDNLAW5w= github.com/aws/aws-sdk-go-v2/service/sts v1.6.1/go.mod h1:hLZ/AnkIKHLuPGjEiyghNEdvJ2PP0MgOxcmv9EBJ4xs= -github.com/aws/smithy-go v1.7.0 h1:+cLHMRrDZvQ4wk+KuQ9yH6eEg6KZEJ9RI2IkDqnygCg= +github.com/aws/aws-sdk-go-v2/service/sts v1.19.2 h1:XFJ2Z6sNUUcAz9poj+245DMkrHE4h2j5I9/xD50RHfE= +github.com/aws/aws-sdk-go-v2/service/sts v1.19.2/go.mod h1:dp0yLPsLBOi++WTxzCjA/oZqi6NPIhoR+uF7GeMU9eg= github.com/aws/smithy-go v1.7.0/go.mod h1:SObp3lf9smib00L/v3U2eAKG8FyQ7iLrJnQiAmR5n+E= +github.com/aws/smithy-go v1.13.5 h1:hgz0X/DX0dGqTYpGALqXJoRKRj5oQ7150i5FdTePzO8= +github.com/aws/smithy-go v1.13.5/go.mod h1:Tg+OJXh4MB2R/uN61Ko2f6hTZwB/ZYGOtib8J3gBHzA= github.com/axiomhq/hyperloglog v0.0.0-20220105174342-98591331716a h1:eqjiAL3qooftPm8b9C1GsSSRcmlw7iOva8vdBTmV2PY= github.com/axiomhq/hyperloglog v0.0.0-20220105174342-98591331716a/go.mod h1:2stgcRjl6QmW+gU2h5E7BQXg4HU0gzxKWDuT5HviN9s= github.com/baiyubin/aliyun-sts-go-sdk v0.0.0-20180326062324-cfa1a18b161f/go.mod h1:AuiFmCCPBSrqvVMvuqFuk0qogytodnVFVSN5CeJB8Gc=