mirror of
https://github.com/getsops/sops.git
synced 2026-02-05 12:45:21 +01:00
AWS Profiles
This commit is contained in:
@@ -42,6 +42,7 @@ type MasterKey struct {
|
||||
EncryptedKey string
|
||||
CreationDate time.Time
|
||||
EncryptionContext map[string]*string
|
||||
AwsProfile string
|
||||
}
|
||||
|
||||
// EncryptedDataKey returns the encrypted data key this master key holds
|
||||
@@ -131,7 +132,7 @@ func NewMasterKey(arn string, role string, context map[string]*string) *MasterKe
|
||||
}
|
||||
|
||||
// NewMasterKeyFromArn takes an ARN string and returns a new MasterKey for that ARN
|
||||
func NewMasterKeyFromArn(arn string, context map[string]*string) *MasterKey {
|
||||
func NewMasterKeyFromArn(arn string, context map[string]*string, awsProfile string) *MasterKey {
|
||||
k := &MasterKey{}
|
||||
arn = strings.Replace(arn, " ", "", -1)
|
||||
roleIndex := strings.Index(arn, "+arn:aws:iam::")
|
||||
@@ -143,17 +144,18 @@ func NewMasterKeyFromArn(arn string, context map[string]*string) *MasterKey {
|
||||
}
|
||||
k.EncryptionContext = context
|
||||
k.CreationDate = time.Now().UTC()
|
||||
k.AwsProfile = awsProfile
|
||||
return k
|
||||
}
|
||||
|
||||
// MasterKeysFromArnString takes a comma separated list of AWS KMS ARNs and returns a slice of new MasterKeys for those ARNs
|
||||
func MasterKeysFromArnString(arn string, context map[string]*string) []*MasterKey {
|
||||
func MasterKeysFromArnString(arn string, context map[string]*string, awsProfile string) []*MasterKey {
|
||||
var keys []*MasterKey
|
||||
if arn == "" {
|
||||
return keys
|
||||
}
|
||||
for _, s := range strings.Split(arn, ",") {
|
||||
keys = append(keys, NewMasterKeyFromArn(s, context))
|
||||
keys = append(keys, NewMasterKeyFromArn(s, context, awsProfile))
|
||||
}
|
||||
return keys
|
||||
}
|
||||
@@ -185,7 +187,7 @@ func (key MasterKey) createSession() (*session.Session, error) {
|
||||
if matches == nil {
|
||||
return nil, fmt.Errorf("No valid ARN found in %q", key.Arn)
|
||||
}
|
||||
config := aws.Config{Region: aws.String(matches[1])}
|
||||
config := aws.Config{Region: aws.String(matches[1]), Credentials: credentials.NewSharedCredentials("", key.AwsProfile)}
|
||||
opts := session.Options{
|
||||
Config: config,
|
||||
AssumeRoleTokenProvider: stscreds.StdinTokenProvider,
|
||||
|
||||
@@ -48,7 +48,7 @@ func TestKMS(t *testing.T) {
|
||||
|
||||
func TestKMSKeySourceFromString(t *testing.T) {
|
||||
s := "arn:aws:kms:us-east-1:656532927350:key/920aff2e-c5f1-4040-943a-047fa387b27e+arn:aws:iam::927034868273:role/sops-dev, arn:aws:kms:ap-southeast-1:656532927350:key/9006a8aa-0fa6-4c14-930e-a2dfb916de1d"
|
||||
ks := MasterKeysFromArnString(s, nil)
|
||||
ks := MasterKeysFromArnString(s, nil, "foo")
|
||||
k1 := ks[0]
|
||||
k2 := ks[1]
|
||||
expectedArn1 := "arn:aws:kms:us-east-1:656532927350:key/920aff2e-c5f1-4040-943a-047fa387b27e"
|
||||
|
||||
Reference in New Issue
Block a user