@@ -2,18 +2,17 @@ package resources
2
2
3
3
import (
4
4
"fmt"
5
- "strings"
6
5
7
6
"github.com/aws/aws-sdk-go/aws"
8
7
"github.com/aws/aws-sdk-go/aws/session"
9
8
"github.com/aws/aws-sdk-go/service/kms"
10
9
)
11
10
12
11
type KMSKey struct {
13
- svc * kms.KMS
14
- id string
15
- state string
16
- alias string
12
+ svc * kms.KMS
13
+ id string
14
+ state string
15
+ manager * string
17
16
}
18
17
19
18
func init () {
@@ -23,18 +22,6 @@ func init() {
23
22
func ListKMSKeys (sess * session.Session ) ([]Resource , error ) {
24
23
svc := kms .New (sess )
25
24
26
- respAlias , err := svc .ListAliases (nil )
27
- if err != nil {
28
- return nil , err
29
- }
30
-
31
- aliasMap := map [string ]string {}
32
- for _ , alias := range respAlias .Aliases {
33
- if alias .TargetKeyId != nil {
34
- aliasMap [* alias .TargetKeyId ] = * alias .AliasName
35
- }
36
- }
37
-
38
25
resp , err := svc .ListKeys (nil )
39
26
if err != nil {
40
27
return nil , err
@@ -50,10 +37,10 @@ func ListKMSKeys(sess *session.Session) ([]Resource, error) {
50
37
}
51
38
52
39
resources = append (resources , & KMSKey {
53
- svc : svc ,
54
- id : * resp .KeyMetadata .KeyId ,
55
- state : * resp .KeyMetadata .KeyState ,
56
- alias : aliasMap [ * resp .KeyMetadata .KeyId ] ,
40
+ svc : svc ,
41
+ id : * resp .KeyMetadata .KeyId ,
42
+ state : * resp .KeyMetadata .KeyState ,
43
+ manager : resp .KeyMetadata .KeyManager ,
57
44
})
58
45
}
59
46
@@ -65,7 +52,7 @@ func (e *KMSKey) Filter() error {
65
52
return fmt .Errorf ("is already in PendingDeletion state" )
66
53
}
67
54
68
- if strings . HasPrefix ( e . alias , "alias/aws/" ) {
55
+ if e . manager != nil && * e . manager == kms . KeyManagerTypeAws {
69
56
return fmt .Errorf ("cannot delete AWS managed key" )
70
57
}
71
58
0 commit comments