awspec 0.52.4 → 0.54.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/doc/_resource_types/elasticsearch.md +48 -0
- data/doc/_resource_types/kms.md +70 -0
- data/doc/_resource_types/rds.md +1 -1
- data/doc/resource_types.md +138 -1
- data/lib/awspec/generator.rb +1 -0
- data/lib/awspec/generator/doc/type/elasticsearch.rb +17 -0
- data/lib/awspec/generator/doc/type/kms.rb +17 -0
- data/lib/awspec/generator/spec/elasticsearch.rb +38 -0
- data/lib/awspec/generator/spec/kms.rb +26 -0
- data/lib/awspec/helper/finder.rb +6 -0
- data/lib/awspec/helper/finder/elasticsearch.rb +19 -0
- data/lib/awspec/helper/finder/kms.rb +22 -0
- data/lib/awspec/helper/type.rb +2 -2
- data/lib/awspec/matcher.rb +3 -0
- data/lib/awspec/matcher/have_key_policy.rb +9 -0
- data/lib/awspec/stub/elasticsearch.rb +52 -0
- data/lib/awspec/stub/kms.rb +71 -0
- data/lib/awspec/type/elasticsearch.rb +21 -0
- data/lib/awspec/type/kms.rb +19 -0
- data/lib/awspec/version.rb +1 -1
- metadata +15 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2d2a41e2828f5a25b1300bcc300425153df818ef
|
4
|
+
data.tar.gz: d5228c0353fb70b41aa66ce0aa2a86a918ed008d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 47f40131bb7292c146ab29716f988b3961cfad51d94c5ec5a6e5d3b32c279f21e7c2248cae73c02cdf23bb8efc1bca9ec0250d1adcb2d6721bb9b9bd62c8ab2a
|
7
|
+
data.tar.gz: a48177d7fde1e573422f781edba9395a7ca0635f3af490142f689b7f1b783f230e9287b9a5d378c6b1cbad8fc44327d66e941b909358e8b8f68c2fc02ab9f956
|
@@ -0,0 +1,48 @@
|
|
1
|
+
### exist
|
2
|
+
|
3
|
+
```ruby
|
4
|
+
describe elasticsearch('my-elasticsearch') do
|
5
|
+
it { should exist }
|
6
|
+
end
|
7
|
+
```
|
8
|
+
|
9
|
+
### be_created
|
10
|
+
|
11
|
+
```ruby
|
12
|
+
describe elasticsearch('my-elasticsearch') do
|
13
|
+
it { should be_created }
|
14
|
+
end
|
15
|
+
```
|
16
|
+
|
17
|
+
### be_deleted
|
18
|
+
|
19
|
+
```ruby
|
20
|
+
describe elasticsearch('my-elasticsearch') do
|
21
|
+
it { should be_deleted }
|
22
|
+
end
|
23
|
+
```
|
24
|
+
|
25
|
+
### have_access_policies
|
26
|
+
|
27
|
+
```ruby
|
28
|
+
describe elasticsearch('my-elasticsearch') do
|
29
|
+
it do
|
30
|
+
should have_access_policies <<-policy
|
31
|
+
{
|
32
|
+
"version": "2012-10-17",
|
33
|
+
"statement": [
|
34
|
+
{
|
35
|
+
"effect": "allow",
|
36
|
+
"principal": "*",
|
37
|
+
"action": [
|
38
|
+
"es:*"
|
39
|
+
],
|
40
|
+
"resource": "arn:aws:es:ap-northeast-1:1234567890:domain/my-elasticsearch/*"
|
41
|
+
}
|
42
|
+
]
|
43
|
+
}
|
44
|
+
policy
|
45
|
+
end
|
46
|
+
end
|
47
|
+
```
|
48
|
+
|
@@ -0,0 +1,70 @@
|
|
1
|
+
### exist
|
2
|
+
|
3
|
+
```ruby
|
4
|
+
describe kms('my-kms-key') do
|
5
|
+
it { should exist }
|
6
|
+
end
|
7
|
+
```
|
8
|
+
|
9
|
+
### be_enabled
|
10
|
+
|
11
|
+
```ruby
|
12
|
+
describe kms('my-kms-key') do
|
13
|
+
it { should be_enabled }
|
14
|
+
end
|
15
|
+
```
|
16
|
+
|
17
|
+
### have_key_policy
|
18
|
+
|
19
|
+
```ruby
|
20
|
+
describe kms('my-kms-key') do
|
21
|
+
it { should exist }
|
22
|
+
it { should be_enabled }
|
23
|
+
it do
|
24
|
+
should have_key_policy('default').policy_document(<<-'DOC')
|
25
|
+
{
|
26
|
+
"Version" : "2012-10-17",
|
27
|
+
"Id" : "key-consolepolicy-2",
|
28
|
+
"Statement" : [ {
|
29
|
+
"Sid" : "Enable IAM User Permissions",
|
30
|
+
"Effect" : "Allow",
|
31
|
+
"Principal" : {
|
32
|
+
"AWS" : "arn:aws:iam::1234567890:root"
|
33
|
+
},
|
34
|
+
"Action" : "kms:*",
|
35
|
+
"Resource" : "*"
|
36
|
+
}, {
|
37
|
+
"Sid" : "Allow access for Key Administrators",
|
38
|
+
"Effect" : "Allow",
|
39
|
+
"Principal" : {
|
40
|
+
"AWS" : "arn:aws:iam::1234567890:user/test-user"
|
41
|
+
},
|
42
|
+
"Action" : [ "kms:Create*", "kms:Describe*", "kms:Enable*", "kms:List*", "kms:Put*", "kms:Update*", "kms:Revoke*", "kms:Disable*", "kms:Get*", "kms:Delete*", "kms:ScheduleKeyDeletion", "kms:CancelKeyDeletion" ],
|
43
|
+
"Resource" : "*"
|
44
|
+
}, {
|
45
|
+
"Sid" : "Allow use of the key",
|
46
|
+
"Effect" : "Allow",
|
47
|
+
"Principal" : {
|
48
|
+
"AWS" : [ "arn:aws:iam::1234567890:user/test-user", "arn:aws:iam::1234567890:role/test-role" ]
|
49
|
+
},
|
50
|
+
"Action" : [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ],
|
51
|
+
"Resource" : "*"
|
52
|
+
}, {
|
53
|
+
"Sid" : "Allow attachment of persistent resources",
|
54
|
+
"Effect" : "Allow",
|
55
|
+
"Principal" : {
|
56
|
+
"AWS" : [ "arn:aws:iam::1234567890:user/test-user", "arn:aws:iam::1234567890:role/test-role" ]
|
57
|
+
},
|
58
|
+
"Action" : [ "kms:CreateGrant", "kms:ListGrants", "kms:RevokeGrant" ],
|
59
|
+
"Resource" : "*",
|
60
|
+
"Condition" : {
|
61
|
+
"Bool" : {
|
62
|
+
"kms:GrantIsForAWSResource" : "true"
|
63
|
+
}
|
64
|
+
}
|
65
|
+
} ]
|
66
|
+
}
|
67
|
+
DOC
|
68
|
+
end
|
69
|
+
end
|
70
|
+
```
|
data/doc/_resource_types/rds.md
CHANGED
data/doc/resource_types.md
CHANGED
@@ -10,11 +10,13 @@
|
|
10
10
|
| [ec2](#ec2)
|
11
11
|
| [elasticache](#elasticache)
|
12
12
|
| [elasticache_cache_parameter_group](#elasticache_cache_parameter_group)
|
13
|
+
| [elasticsearch](#elasticsearch)
|
13
14
|
| [elb](#elb)
|
14
15
|
| [iam_group](#iam_group)
|
15
16
|
| [iam_policy](#iam_policy)
|
16
17
|
| [iam_role](#iam_role)
|
17
18
|
| [iam_user](#iam_user)
|
19
|
+
| [kms](#kms)
|
18
20
|
| [lambda](#lambda)
|
19
21
|
| [launch_configuration](#launch_configuration)
|
20
22
|
| [nat_gateway](#nat_gateway)
|
@@ -520,6 +522,63 @@ end
|
|
520
522
|
```
|
521
523
|
|
522
524
|
|
525
|
+
## <a name="elasticsearch">elasticsearch</a>
|
526
|
+
|
527
|
+
Elasticsearch resource type.
|
528
|
+
|
529
|
+
### exist
|
530
|
+
|
531
|
+
```ruby
|
532
|
+
describe elasticsearch('my-elasticsearch') do
|
533
|
+
it { should exist }
|
534
|
+
end
|
535
|
+
```
|
536
|
+
|
537
|
+
|
538
|
+
### be_created
|
539
|
+
|
540
|
+
```ruby
|
541
|
+
describe elasticsearch('my-elasticsearch') do
|
542
|
+
it { should be_created }
|
543
|
+
end
|
544
|
+
```
|
545
|
+
|
546
|
+
|
547
|
+
### be_deleted
|
548
|
+
|
549
|
+
```ruby
|
550
|
+
describe elasticsearch('my-elasticsearch') do
|
551
|
+
it { should be_deleted }
|
552
|
+
end
|
553
|
+
```
|
554
|
+
|
555
|
+
|
556
|
+
### have_access_policies
|
557
|
+
|
558
|
+
```ruby
|
559
|
+
describe elasticsearch('my-elasticsearch') do
|
560
|
+
it do
|
561
|
+
should have_access_policies <<-policy
|
562
|
+
{
|
563
|
+
"version": "2012-10-17",
|
564
|
+
"statement": [
|
565
|
+
{
|
566
|
+
"effect": "allow",
|
567
|
+
"principal": "*",
|
568
|
+
"action": [
|
569
|
+
"es:*"
|
570
|
+
],
|
571
|
+
"resource": "arn:aws:es:ap-northeast-1:1234567890:domain/my-elasticsearch/*"
|
572
|
+
}
|
573
|
+
]
|
574
|
+
}
|
575
|
+
policy
|
576
|
+
end
|
577
|
+
end
|
578
|
+
```
|
579
|
+
|
580
|
+
|
581
|
+
### its(:domain_id), its(:domain_name), its(:arn), its(:created), its(:deleted), its(:endpoint), its(:processing), its(:elasticsearch_version), its(:access_policies), its(:snapshot_options), its(:advanced_options)
|
523
582
|
## <a name="elb">elb</a>
|
524
583
|
|
525
584
|
ELB resource type.
|
@@ -860,6 +919,84 @@ describe iam_user('my-iam-user') do
|
|
860
919
|
end
|
861
920
|
```
|
862
921
|
|
922
|
+
## <a name="kms">kms</a>
|
923
|
+
|
924
|
+
Kms resource type.
|
925
|
+
|
926
|
+
### exist
|
927
|
+
|
928
|
+
```ruby
|
929
|
+
describe kms('my-kms-key') do
|
930
|
+
it { should exist }
|
931
|
+
end
|
932
|
+
```
|
933
|
+
|
934
|
+
|
935
|
+
### be_enabled
|
936
|
+
|
937
|
+
```ruby
|
938
|
+
describe kms('my-kms-key') do
|
939
|
+
it { should be_enabled }
|
940
|
+
end
|
941
|
+
```
|
942
|
+
|
943
|
+
|
944
|
+
### have_key_policy
|
945
|
+
|
946
|
+
```ruby
|
947
|
+
describe kms('my-kms-key') do
|
948
|
+
it { should exist }
|
949
|
+
it { should be_enabled }
|
950
|
+
it do
|
951
|
+
should have_key_policy('default').policy_document(<<-'DOC')
|
952
|
+
{
|
953
|
+
"Version" : "2012-10-17",
|
954
|
+
"Id" : "key-consolepolicy-2",
|
955
|
+
"Statement" : [ {
|
956
|
+
"Sid" : "Enable IAM User Permissions",
|
957
|
+
"Effect" : "Allow",
|
958
|
+
"Principal" : {
|
959
|
+
"AWS" : "arn:aws:iam::1234567890:root"
|
960
|
+
},
|
961
|
+
"Action" : "kms:*",
|
962
|
+
"Resource" : "*"
|
963
|
+
}, {
|
964
|
+
"Sid" : "Allow access for Key Administrators",
|
965
|
+
"Effect" : "Allow",
|
966
|
+
"Principal" : {
|
967
|
+
"AWS" : "arn:aws:iam::1234567890:user/test-user"
|
968
|
+
},
|
969
|
+
"Action" : [ "kms:Create*", "kms:Describe*", "kms:Enable*", "kms:List*", "kms:Put*", "kms:Update*", "kms:Revoke*", "kms:Disable*", "kms:Get*", "kms:Delete*", "kms:ScheduleKeyDeletion", "kms:CancelKeyDeletion" ],
|
970
|
+
"Resource" : "*"
|
971
|
+
}, {
|
972
|
+
"Sid" : "Allow use of the key",
|
973
|
+
"Effect" : "Allow",
|
974
|
+
"Principal" : {
|
975
|
+
"AWS" : [ "arn:aws:iam::1234567890:user/test-user", "arn:aws:iam::1234567890:role/test-role" ]
|
976
|
+
},
|
977
|
+
"Action" : [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ],
|
978
|
+
"Resource" : "*"
|
979
|
+
}, {
|
980
|
+
"Sid" : "Allow attachment of persistent resources",
|
981
|
+
"Effect" : "Allow",
|
982
|
+
"Principal" : {
|
983
|
+
"AWS" : [ "arn:aws:iam::1234567890:user/test-user", "arn:aws:iam::1234567890:role/test-role" ]
|
984
|
+
},
|
985
|
+
"Action" : [ "kms:CreateGrant", "kms:ListGrants", "kms:RevokeGrant" ],
|
986
|
+
"Resource" : "*",
|
987
|
+
"Condition" : {
|
988
|
+
"Bool" : {
|
989
|
+
"kms:GrantIsForAWSResource" : "true"
|
990
|
+
}
|
991
|
+
}
|
992
|
+
} ]
|
993
|
+
}
|
994
|
+
DOC
|
995
|
+
end
|
996
|
+
end
|
997
|
+
```
|
998
|
+
|
999
|
+
### its(:aws_account_id), its(:key_id), its(:arn), its(:creation_date), its(:enabled), its(:description), its(:key_usage), its(:key_state), its(:deletion_date), its(:valid_to), its(:origin), its(:expiration_model)
|
863
1000
|
## <a name="lambda">lambda</a>
|
864
1001
|
|
865
1002
|
Lambda resource type.
|
@@ -1108,7 +1245,7 @@ end
|
|
1108
1245
|
|
1109
1246
|
```ruby
|
1110
1247
|
describe rds('my-rds') do
|
1111
|
-
it { should
|
1248
|
+
it { should have_db_parameter_group('my-db-parameter-group') }
|
1112
1249
|
end
|
1113
1250
|
```
|
1114
1251
|
|
data/lib/awspec/generator.rb
CHANGED
@@ -6,6 +6,7 @@ require 'awspec/generator/spec/security_group'
|
|
6
6
|
require 'awspec/generator/spec/route53_hosted_zone'
|
7
7
|
require 'awspec/generator/spec/elb'
|
8
8
|
require 'awspec/generator/spec/iam_policy'
|
9
|
+
require 'awspec/generator/spec/kms'
|
9
10
|
require 'awspec/generator/spec/cloudwatch_alarm'
|
10
11
|
require 'awspec/generator/spec/cloudwatch_event'
|
11
12
|
require 'awspec/generator/spec/network_acl'
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Awspec::Generator
|
2
|
+
module Doc
|
3
|
+
module Type
|
4
|
+
class Elasticsearch < Base
|
5
|
+
def initialize
|
6
|
+
super
|
7
|
+
@type_name = 'Elasticsearch'
|
8
|
+
@type = Awspec::Type::Elasticsearch.new('my-elasticsearch')
|
9
|
+
@ret = @type.resource_via_client
|
10
|
+
@matchers = []
|
11
|
+
@ignore_matchers = []
|
12
|
+
@describes = []
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Awspec::Generator
|
2
|
+
module Doc
|
3
|
+
module Type
|
4
|
+
class Kms < Base
|
5
|
+
def initialize
|
6
|
+
super
|
7
|
+
@type_name = 'Kms'
|
8
|
+
@type = Awspec::Type::Kms.new('my-kms-key')
|
9
|
+
@ret = @type.resource_via_client
|
10
|
+
@matchers = []
|
11
|
+
@ignore_matchers = []
|
12
|
+
@describes = []
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
module Awspec::Generator
|
2
|
+
module Spec
|
3
|
+
class ElasticSearch
|
4
|
+
include Awspec::Helper::Finder
|
5
|
+
def generate_all
|
6
|
+
domains = select_all_elasticsearch_domains
|
7
|
+
raise 'Not Found alarm' if events.empty?
|
8
|
+
ERB.new(domain_spec_template, nil, '-').result(binding).chomp
|
9
|
+
end
|
10
|
+
|
11
|
+
def domain_spec_template
|
12
|
+
template = <<-'EOF'
|
13
|
+
<% domain.each do |domain| %>
|
14
|
+
describe elasticsearch('<%= domain.domain_name %>') do
|
15
|
+
it { should exist }
|
16
|
+
<% if domain.ebs_options.created %>
|
17
|
+
it { should be_created }
|
18
|
+
<% end %>
|
19
|
+
<% if domain.ebs_options.deleted %>
|
20
|
+
it { should be_deleted }
|
21
|
+
<% end %>
|
22
|
+
its(:elasticsearch_version) { should eq <%= domain.elasticsearch_version %> }
|
23
|
+
its('elasticsearch_cluster_config.instance_type') { should eq <%= domain.elasticsearch_cluster_config.instance_type %> }
|
24
|
+
its('ebs_options.ebs_enabled') { should eq <%= domain.ebs_options.ebs_enabled %> }
|
25
|
+
<% if domain.ebs_options.ebs_enabled %>
|
26
|
+
its('ebs_options.volume_type') { should eq <%= domain.ebs_options.ebs_volume_type %> }
|
27
|
+
its('ebs_options.volume_size') { should eq <%= domain.ebs_options.ebs_volume_size %> }
|
28
|
+
<% end %>
|
29
|
+
it do
|
30
|
+
should have_access_policies <<-policy
|
31
|
+
<%= JSON.pretty_generate(JSON.load(domain.access_policies)) %>
|
32
|
+
policy
|
33
|
+
EOF
|
34
|
+
template
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module Awspec::Generator
|
2
|
+
module Spec
|
3
|
+
class Kms
|
4
|
+
include Awspec::Helper::Finder
|
5
|
+
def generate_all
|
6
|
+
aliases = select_all_kms_aliases
|
7
|
+
raise 'Not Found alias' if aliases.empty?
|
8
|
+
ERB.new(keys_spec_template, nil, '-').result(binding).chomp
|
9
|
+
end
|
10
|
+
|
11
|
+
def keys_spec_template
|
12
|
+
template = <<-'EOF'
|
13
|
+
<% aliases.each do |kms_alias| %>
|
14
|
+
describe kms('<%= kms_alias.alias_name.split('/').last %>') do
|
15
|
+
it { should exist }
|
16
|
+
<% if find_kms_key(kms_alias.target_key_id).enabled -%>
|
17
|
+
it { should be_enable }
|
18
|
+
<% end -%>
|
19
|
+
end
|
20
|
+
<% end %>
|
21
|
+
EOF
|
22
|
+
template
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
data/lib/awspec/helper/finder.rb
CHANGED
@@ -11,7 +11,9 @@ require 'awspec/helper/finder/ebs'
|
|
11
11
|
require 'awspec/helper/finder/elb'
|
12
12
|
require 'awspec/helper/finder/lambda'
|
13
13
|
require 'awspec/helper/finder/iam'
|
14
|
+
require 'awspec/helper/finder/kms'
|
14
15
|
require 'awspec/helper/finder/elasticache'
|
16
|
+
require 'awspec/helper/finder/elasticsearch'
|
15
17
|
require 'awspec/helper/finder/cloudwatch'
|
16
18
|
require 'awspec/helper/finder/cloudwatch_event'
|
17
19
|
require 'awspec/helper/finder/ses'
|
@@ -35,7 +37,9 @@ module Awspec::Helper
|
|
35
37
|
include Awspec::Helper::Finder::Elb
|
36
38
|
include Awspec::Helper::Finder::Lambda
|
37
39
|
include Awspec::Helper::Finder::Iam
|
40
|
+
include Awspec::Helper::Finder::Kms
|
38
41
|
include Awspec::Helper::Finder::Elasticache
|
42
|
+
include Awspec::Helper::Finder::Elasticsearch
|
39
43
|
include Awspec::Helper::Finder::Cloudwatch
|
40
44
|
include Awspec::Helper::Finder::CloudwatchEvent
|
41
45
|
include Awspec::Helper::Finder::Ses
|
@@ -54,6 +58,7 @@ module Awspec::Helper
|
|
54
58
|
elb_client: Aws::ElasticLoadBalancing::Client,
|
55
59
|
lambda_client: Aws::Lambda::Client,
|
56
60
|
iam_client: Aws::IAM::Client,
|
61
|
+
kms_client: Aws::KMS::Client,
|
57
62
|
elasticache_client: Aws::ElastiCache::Client,
|
58
63
|
cloudwatch_client: Aws::CloudWatch::Client,
|
59
64
|
cloudwatch_event_client: Aws::CloudWatchEvents::Client,
|
@@ -61,6 +66,7 @@ module Awspec::Helper
|
|
61
66
|
directconnect_client: Aws::DirectConnect::Client,
|
62
67
|
cloudfront_client: Aws::CloudFront::Client,
|
63
68
|
elastictranscoder_client: Aws::ElasticTranscoder::Client,
|
69
|
+
elasticsearch_client: Aws::ElasticsearchService::Client,
|
64
70
|
cloudtrail_client: Aws::CloudTrail::Client
|
65
71
|
}
|
66
72
|
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module Awspec::Helper
|
2
|
+
module Finder
|
3
|
+
module Elasticsearch
|
4
|
+
def find_elasticsearch_domain(id)
|
5
|
+
res = elasticsearch_client.describe_elasticsearch_domain(domain_name: id)
|
6
|
+
res.domain_status
|
7
|
+
rescue
|
8
|
+
nil
|
9
|
+
end
|
10
|
+
|
11
|
+
def select_all_elasticsearch_domains
|
12
|
+
domain_names = elastisearch_client.list_domain_names
|
13
|
+
domain_names.map do |domain_name|
|
14
|
+
elasticsearch_client.describe_elasticsearch_domain(domain_name)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module Awspec::Helper
|
2
|
+
module Finder
|
3
|
+
module Kms
|
4
|
+
def find_kms_key(key_id)
|
5
|
+
kms_client.describe_key(key_id: key_id).key_metadata
|
6
|
+
rescue
|
7
|
+
nil
|
8
|
+
end
|
9
|
+
|
10
|
+
def find_kms_key_by_alias(key_alias_name)
|
11
|
+
key = kms_client.list_aliases.aliases.find do |key_alias|
|
12
|
+
key_alias.alias_name == "alias/#{key_alias_name}"
|
13
|
+
end
|
14
|
+
find_kms_key(key.target_key_id)
|
15
|
+
end
|
16
|
+
|
17
|
+
def select_all_kms_aliases
|
18
|
+
kms_client.list_aliases.aliases
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
data/lib/awspec/helper/type.rb
CHANGED
@@ -5,8 +5,8 @@ module Awspec
|
|
5
5
|
|
6
6
|
TYPES = %w(
|
7
7
|
ami autoscaling_group cloudtrail cloudwatch_alarm cloudwatch_event directconnect_virtual_interface
|
8
|
-
ebs ec2 elasticache elasticache_cache_parameter_group elb iam_group
|
9
|
-
iam_policy iam_role iam_user lambda launch_configuration nat_gateway
|
8
|
+
ebs ec2 elasticache elasticache_cache_parameter_group elasticsearch elb iam_group
|
9
|
+
iam_policy iam_role iam_user kms lambda launch_configuration nat_gateway
|
10
10
|
network_acl network_interface rds rds_db_cluster_parameter_group rds_db_parameter_group route53_hosted_zone
|
11
11
|
route_table s3_bucket security_group ses_identity subnet vpc cloudfront_distribution
|
12
12
|
elastictranscoder_pipeline
|
data/lib/awspec/matcher.rb
CHANGED
@@ -0,0 +1,52 @@
|
|
1
|
+
|
2
|
+
Aws.config[:elasticsearchservice] = {
|
3
|
+
stub_responses: {
|
4
|
+
list_domain_names: {
|
5
|
+
domain_names: [
|
6
|
+
{
|
7
|
+
domain_name: 'my-elasticsearch'
|
8
|
+
}
|
9
|
+
]
|
10
|
+
},
|
11
|
+
describe_elasticsearch_domain: {
|
12
|
+
domain_status: {
|
13
|
+
domain_id: '123456789012/streaming-logs',
|
14
|
+
domain_name: 'my-elasticsearch',
|
15
|
+
arn: 'arn:aws:es:us-east-1:123456789012:domain/streaming-logs',
|
16
|
+
created: true,
|
17
|
+
deleted: false,
|
18
|
+
endpoint: 'search-streaming-logs-okga24ftzsbz2a2hzhsqw73jpy.us-east-1.es.a9.com',
|
19
|
+
processing: false,
|
20
|
+
elasticsearch_version: '2.3',
|
21
|
+
elasticsearch_cluster_config: {
|
22
|
+
instance_type: 't2.micro.elasticsearch',
|
23
|
+
instance_count: 3,
|
24
|
+
dedicated_master_enabled: true,
|
25
|
+
zone_awareness_enabled: false,
|
26
|
+
dedicated_master_type: 'm3.medium.elasticsearch',
|
27
|
+
dedicated_master_count: 3
|
28
|
+
},
|
29
|
+
ebs_options: {
|
30
|
+
ebs_enabled: true,
|
31
|
+
volume_size: 10,
|
32
|
+
volume_type: 'gp2'
|
33
|
+
},
|
34
|
+
access_policies: <<-EOS.gsub(/\n/, '').gsub(/ /, '')
|
35
|
+
{
|
36
|
+
"version": "2012-10-17",
|
37
|
+
"statement": [
|
38
|
+
{
|
39
|
+
"effect": "allow",
|
40
|
+
"principal": "*",
|
41
|
+
"action": [
|
42
|
+
"es:*"
|
43
|
+
],
|
44
|
+
"resource": "arn:aws:es:ap-northeast-1:1234567890:domain/my-elasticsearch/*"
|
45
|
+
}
|
46
|
+
]
|
47
|
+
}
|
48
|
+
EOS
|
49
|
+
}
|
50
|
+
}
|
51
|
+
}
|
52
|
+
}
|
@@ -0,0 +1,71 @@
|
|
1
|
+
Aws.config[:kms] = {
|
2
|
+
stub_responses: {
|
3
|
+
list_aliases: {
|
4
|
+
aliases: [
|
5
|
+
{
|
6
|
+
alias_arn: 'arn:aws:kms:us-east-1:1234567890:alias/my-kms-key',
|
7
|
+
alias_name: 'alias/my-kms-key',
|
8
|
+
target_key_id: 'b9989d41-eeaa-401f-8616-00546948aa92'
|
9
|
+
}
|
10
|
+
]
|
11
|
+
},
|
12
|
+
describe_key: {
|
13
|
+
key_metadata: {
|
14
|
+
key_id: 'b9989d41-eeaa-401f-8616-00546948aa92',
|
15
|
+
description: '',
|
16
|
+
enabled: true,
|
17
|
+
key_usage: 'ENCRYPT_DECRYPT',
|
18
|
+
key_state: 'Enabled',
|
19
|
+
creation_date: Time.new(2015, 1, 2, 10, 10, 00, '+00:00'),
|
20
|
+
arn: 'arn:aws:kms:us-east-1:1234567890:key/b9989d41-eeaa-401f-8616-00546948aa92',
|
21
|
+
aws_account_id: '1234567890'
|
22
|
+
}
|
23
|
+
},
|
24
|
+
get_key_policy: {
|
25
|
+
policy: <<-DOC
|
26
|
+
{
|
27
|
+
"Version" : "2012-10-17",
|
28
|
+
"Id" : "key-consolepolicy-2",
|
29
|
+
"Statement" : [ {
|
30
|
+
"Sid" : "Enable IAM User Permissions",
|
31
|
+
"Effect" : "Allow",
|
32
|
+
"Principal" : {
|
33
|
+
"AWS" : "arn:aws:iam::1234567890:root"
|
34
|
+
},
|
35
|
+
"Action" : "kms:*",
|
36
|
+
"Resource" : "*"
|
37
|
+
}, {
|
38
|
+
"Sid" : "Allow access for Key Administrators",
|
39
|
+
"Effect" : "Allow",
|
40
|
+
"Principal" : {
|
41
|
+
"AWS" : "arn:aws:iam::1234567890:user/test-user"
|
42
|
+
},
|
43
|
+
"Action" : [ "kms:Create*", "kms:Describe*", "kms:Enable*", "kms:List*", "kms:Put*", "kms:Update*", "kms:Revoke*", "kms:Disable*", "kms:Get*", "kms:Delete*", "kms:ScheduleKeyDeletion", "kms:CancelKeyDeletion" ],
|
44
|
+
"Resource" : "*"
|
45
|
+
}, {
|
46
|
+
"Sid" : "Allow use of the key",
|
47
|
+
"Effect" : "Allow",
|
48
|
+
"Principal" : {
|
49
|
+
"AWS" : [ "arn:aws:iam::1234567890:user/test-user", "arn:aws:iam::1234567890:role/test-role" ]
|
50
|
+
},
|
51
|
+
"Action" : [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ],
|
52
|
+
"Resource" : "*"
|
53
|
+
}, {
|
54
|
+
"Sid" : "Allow attachment of persistent resources",
|
55
|
+
"Effect" : "Allow",
|
56
|
+
"Principal" : {
|
57
|
+
"AWS" : [ "arn:aws:iam::1234567890:user/test-user", "arn:aws:iam::1234567890:role/test-role" ]
|
58
|
+
},
|
59
|
+
"Action" : [ "kms:CreateGrant", "kms:ListGrants", "kms:RevokeGrant" ],
|
60
|
+
"Resource" : "*",
|
61
|
+
"Condition" : {
|
62
|
+
"Bool" : {
|
63
|
+
"kms:GrantIsForAWSResource" : "true"
|
64
|
+
}
|
65
|
+
}
|
66
|
+
} ]
|
67
|
+
}
|
68
|
+
DOC
|
69
|
+
}
|
70
|
+
}
|
71
|
+
}
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module Awspec::Type
|
2
|
+
class Elasticsearch < Base
|
3
|
+
def initialize(id)
|
4
|
+
super
|
5
|
+
@resource_via_client = find_elasticsearch_domain(id)
|
6
|
+
@id = @resource_via_client.arn if @resource_via_client
|
7
|
+
end
|
8
|
+
|
9
|
+
def has_access_policies?(policy)
|
10
|
+
@resource_via_client.access_policies == policy.gsub(/\n/, '').gsub(/ /, '')
|
11
|
+
end
|
12
|
+
|
13
|
+
def created?
|
14
|
+
@resource_via_client.created
|
15
|
+
end
|
16
|
+
|
17
|
+
def deleted?
|
18
|
+
@resource_via_client.deleted
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module Awspec::Type
|
2
|
+
class Kms < Base
|
3
|
+
def initialize(id)
|
4
|
+
super
|
5
|
+
@resource_via_client = find_kms_key_by_alias(id)
|
6
|
+
@id = @resource_via_client.arn if @resource_via_client
|
7
|
+
end
|
8
|
+
|
9
|
+
def enabled?
|
10
|
+
@resource_via_client.enabled
|
11
|
+
end
|
12
|
+
|
13
|
+
def has_key_policy?(policy_name, document = nil)
|
14
|
+
res = kms_client.get_key_policy(key_id: @id, policy_name: policy_name)
|
15
|
+
return JSON.parse(URI.decode(res.policy)) == JSON.parse(document) if document
|
16
|
+
res
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
data/lib/awspec/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: awspec
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.54.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- k1LoW
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-09-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|
@@ -216,12 +216,14 @@ files:
|
|
216
216
|
- doc/_resource_types/ec2.md
|
217
217
|
- doc/_resource_types/elasticache.md
|
218
218
|
- doc/_resource_types/elasticache_cache_parameter_group.md
|
219
|
+
- doc/_resource_types/elasticsearch.md
|
219
220
|
- doc/_resource_types/elastictranscoder_pipeline.md
|
220
221
|
- doc/_resource_types/elb.md
|
221
222
|
- doc/_resource_types/iam_group.md
|
222
223
|
- doc/_resource_types/iam_policy.md
|
223
224
|
- doc/_resource_types/iam_role.md
|
224
225
|
- doc/_resource_types/iam_user.md
|
226
|
+
- doc/_resource_types/kms.md
|
225
227
|
- doc/_resource_types/lambda.md
|
226
228
|
- doc/_resource_types/launch_configuration.md
|
227
229
|
- doc/_resource_types/nat_gateway.md
|
@@ -261,12 +263,14 @@ files:
|
|
261
263
|
- lib/awspec/generator/doc/type/ec2.rb
|
262
264
|
- lib/awspec/generator/doc/type/elasticache.rb
|
263
265
|
- lib/awspec/generator/doc/type/elasticache_cache_parameter_group.rb
|
266
|
+
- lib/awspec/generator/doc/type/elasticsearch.rb
|
264
267
|
- lib/awspec/generator/doc/type/elastictranscoder_pipeline.rb
|
265
268
|
- lib/awspec/generator/doc/type/elb.rb
|
266
269
|
- lib/awspec/generator/doc/type/iam_group.rb
|
267
270
|
- lib/awspec/generator/doc/type/iam_policy.rb
|
268
271
|
- lib/awspec/generator/doc/type/iam_role.rb
|
269
272
|
- lib/awspec/generator/doc/type/iam_user.rb
|
273
|
+
- lib/awspec/generator/doc/type/kms.rb
|
270
274
|
- lib/awspec/generator/doc/type/lambda.rb
|
271
275
|
- lib/awspec/generator/doc/type/launch_configuration.rb
|
272
276
|
- lib/awspec/generator/doc/type/nat_gateway.rb
|
@@ -287,11 +291,13 @@ files:
|
|
287
291
|
- lib/awspec/generator/spec/directconnect.rb
|
288
292
|
- lib/awspec/generator/spec/ebs.rb
|
289
293
|
- lib/awspec/generator/spec/ec2.rb
|
294
|
+
- lib/awspec/generator/spec/elasticsearch.rb
|
290
295
|
- lib/awspec/generator/spec/elb.rb
|
291
296
|
- lib/awspec/generator/spec/iam_group.rb
|
292
297
|
- lib/awspec/generator/spec/iam_policy.rb
|
293
298
|
- lib/awspec/generator/spec/iam_role.rb
|
294
299
|
- lib/awspec/generator/spec/iam_user.rb
|
300
|
+
- lib/awspec/generator/spec/kms.rb
|
295
301
|
- lib/awspec/generator/spec/lambda.rb
|
296
302
|
- lib/awspec/generator/spec/nat_gateway.rb
|
297
303
|
- lib/awspec/generator/spec/network_acl.rb
|
@@ -317,9 +323,11 @@ files:
|
|
317
323
|
- lib/awspec/helper/finder/ebs.rb
|
318
324
|
- lib/awspec/helper/finder/ec2.rb
|
319
325
|
- lib/awspec/helper/finder/elasticache.rb
|
326
|
+
- lib/awspec/helper/finder/elasticsearch.rb
|
320
327
|
- lib/awspec/helper/finder/elastictranscoder.rb
|
321
328
|
- lib/awspec/helper/finder/elb.rb
|
322
329
|
- lib/awspec/helper/finder/iam.rb
|
330
|
+
- lib/awspec/helper/finder/kms.rb
|
323
331
|
- lib/awspec/helper/finder/lambda.rb
|
324
332
|
- lib/awspec/helper/finder/rds.rb
|
325
333
|
- lib/awspec/helper/finder/route53.rb
|
@@ -344,6 +352,7 @@ files:
|
|
344
352
|
- lib/awspec/matcher/belong_to_subnet.rb
|
345
353
|
- lib/awspec/matcher/belong_to_vpc.rb
|
346
354
|
- lib/awspec/matcher/have_inline_policy.rb
|
355
|
+
- lib/awspec/matcher/have_key_policy.rb
|
347
356
|
- lib/awspec/matcher/have_origin.rb
|
348
357
|
- lib/awspec/matcher/have_private_ip_address.rb
|
349
358
|
- lib/awspec/matcher/have_record_set.rb
|
@@ -364,12 +373,14 @@ files:
|
|
364
373
|
- lib/awspec/stub/ec2.rb
|
365
374
|
- lib/awspec/stub/elasticache.rb
|
366
375
|
- lib/awspec/stub/elasticache_cache_parameter_group.rb
|
376
|
+
- lib/awspec/stub/elasticsearch.rb
|
367
377
|
- lib/awspec/stub/elastictranscoder_pipeline.rb
|
368
378
|
- lib/awspec/stub/elb.rb
|
369
379
|
- lib/awspec/stub/iam_group.rb
|
370
380
|
- lib/awspec/stub/iam_policy.rb
|
371
381
|
- lib/awspec/stub/iam_role.rb
|
372
382
|
- lib/awspec/stub/iam_user.rb
|
383
|
+
- lib/awspec/stub/kms.rb
|
373
384
|
- lib/awspec/stub/lambda.rb
|
374
385
|
- lib/awspec/stub/launch_configuration.rb
|
375
386
|
- lib/awspec/stub/nat_gateway.rb
|
@@ -398,12 +409,14 @@ files:
|
|
398
409
|
- lib/awspec/type/ec2.rb
|
399
410
|
- lib/awspec/type/elasticache.rb
|
400
411
|
- lib/awspec/type/elasticache_cache_parameter_group.rb
|
412
|
+
- lib/awspec/type/elasticsearch.rb
|
401
413
|
- lib/awspec/type/elastictranscoder_pipeline.rb
|
402
414
|
- lib/awspec/type/elb.rb
|
403
415
|
- lib/awspec/type/iam_group.rb
|
404
416
|
- lib/awspec/type/iam_policy.rb
|
405
417
|
- lib/awspec/type/iam_role.rb
|
406
418
|
- lib/awspec/type/iam_user.rb
|
419
|
+
- lib/awspec/type/kms.rb
|
407
420
|
- lib/awspec/type/lambda.rb
|
408
421
|
- lib/awspec/type/launch_configuration.rb
|
409
422
|
- lib/awspec/type/nat_gateway.rb
|