kumogata-template 0.0.24 → 0.0.25

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: cbf61b8ef2bf5c32a549e814951df8e3b0d4cb07
4
- data.tar.gz: 6a90ad4bf7b62fe24b80e2fd2eb3ae7168a69d40
3
+ metadata.gz: e68d851f205814db46daa78d9f8de23d90daed76
4
+ data.tar.gz: 48272c915961e88257895459d16a76a7831f2403
5
5
  SHA512:
6
- metadata.gz: '0019ed1d64bad5e176a59482d69d4cba3f29e7ce5782e934aca546a92acdb55182e1521b3065cdcdfdcf56e06a4d7d4560d4e12a1fcbd3cc82a9756bb7571bff'
7
- data.tar.gz: 4612fc3e3861d342cb056bd1ada8db81817ed3a270ba6827bf87273e063d88e82066c11834f2576a92c28555ff3cac38e22bf17705662f040e512482a774e7ec
6
+ metadata.gz: 6596787ad06441fcec1780d68e3aa9dc50403e8c579f6485dd658fc258e65b62ea3ed7cf2c7155007e3a05288ec2d418b5afb1afb534d326084e1115c0ce6988
7
+ data.tar.gz: 50bb3f63b35bad4356cefac50b15873561ea7a668220345db3739df3064c146ced30929593bd0ddd7fe263febd2bd1f77f385b3f5676cadec5a9f68d9899808f
@@ -2,6 +2,7 @@
2
2
  # Helper - ECR
3
3
  #
4
4
  require 'kumogata/template/helper'
5
+ require 'kumogata/template/iam'
5
6
 
6
7
 
7
8
  def _ecr_policy(name, args)
@@ -16,6 +16,41 @@ def _iam_to_policy(value)
16
16
  end
17
17
  end
18
18
 
19
+ def _iam_to_policy_condition_operator(value)
20
+ case value
21
+ when "=", "eq"
22
+ value = "string equals"
23
+ when "!=", "ne"
24
+ value = "string not equals"
25
+ end
26
+
27
+ if value.include? " "
28
+ value.split(" ").map(&:capitalize).join("")
29
+ else
30
+ value
31
+ end
32
+ end
33
+
34
+ def _iam_to_policy_condition(args)
35
+ condition = {}
36
+ args.each_pair do |k, v|
37
+ key = _iam_to_policy_condition_operator(k.to_s)
38
+ value = {}
39
+ last_key = nil
40
+ v.each do |vv|
41
+ if value.key? last_key
42
+ value[last_key] = vv
43
+ else
44
+ value[vv] = nil
45
+ last_key = vv
46
+ end
47
+ end
48
+ condition[key] = value
49
+ end
50
+
51
+ condition
52
+ end
53
+
19
54
  def _iam_policies(name, args)
20
55
  array = []
21
56
  policies = args[name.to_sym] || []
@@ -37,22 +72,26 @@ def _iam_policy_document(name, args)
37
72
  action = v[:action] || [ "*" ]
38
73
  next if service.empty? or action.empty?
39
74
 
40
- actions = action.collect{|v| "#{service}:#{v}" }
75
+ actions = action.collect{|vv| "#{service}:#{vv}" }
41
76
  if v.key? :resource
42
77
  if v[:resource].is_a? String
43
78
  resource = _iam_arn(service, v[:resource])
44
79
  else
45
- resource = v[:resource].collect{|v| _iam_arn(service, v) }
80
+ resource = v[:resource].collect{|vv| _iam_arn(service, vv) }
46
81
  end
47
82
  else
48
83
  resource = [ "*" ]
49
84
  end
50
85
 
51
86
  array << _{
87
+ Sid v[:sid] if v.key :sid
52
88
  Effect v[:effect] || "Allow"
89
+ NotAction no_action v[:no_action] if v.key? :no_action
53
90
  Action actions
54
91
  Resource resource unless v.key? :no_resource
55
92
  Principal v[:principal] if v.key? :principal
93
+ NotPrincipal v[:not_principal] if v.key? :not_principal
94
+ Condition _iam_to_policy_condition(v[:condition]) if v.key? :condition
56
95
  }
57
96
  end
58
97
  array
@@ -1 +1 @@
1
- KUMOGATA_TEMPLATE_VERSION = '0.0.24'
1
+ KUMOGATA_TEMPLATE_VERSION = '0.0.25'
data/test/iam_test.rb CHANGED
@@ -2,6 +2,57 @@ require 'abstract_unit'
2
2
  require 'kumogata/template/iam'
3
3
 
4
4
  class IamTest < Minitest::Test
5
+ def test_iam_to_policy_condition
6
+ template = <<-EOS
7
+ condition = { "=": [ "s3:x-amz-acl", "bucket-owner-full-control" ] }
8
+ Test _iam_to_policy_condition(condition)
9
+ EOS
10
+ act_template = run_client_as_json(template)
11
+ exp_template = <<-EOS
12
+ {
13
+ "Test": {
14
+ "StringEquals": {
15
+ "s3:x-amz-acl": "bucket-owner-full-control"
16
+ }
17
+ }
18
+ }
19
+ EOS
20
+ assert_equal exp_template.chomp, act_template
21
+
22
+ template = <<-EOS
23
+ condition = {
24
+ "=": [ "aws:UserAgent", "Example Corp Java Client" ],
25
+ "date greater than": [ "aws:CurrentTime", "2013-08-16T12:00:00Z" ],
26
+ "numeric less than equals": [ "s3:max-keys", "10" ],
27
+ "ip address": [ "aws:SourceIp", ["192.0.2.0/24", "203.0.113.0/24"] ],
28
+ }
29
+ Test _iam_to_policy_condition(condition)
30
+ EOS
31
+ act_template = run_client_as_json(template)
32
+ exp_template = <<-EOS
33
+ {
34
+ "Test": {
35
+ "StringEquals": {
36
+ "aws:UserAgent": "Example Corp Java Client"
37
+ },
38
+ "DateGreaterThan": {
39
+ "aws:CurrentTime": "2013-08-16T12:00:00Z"
40
+ },
41
+ "NumericLessThanEquals": {
42
+ "s3:max-keys": "10"
43
+ },
44
+ "IpAddress": {
45
+ "aws:SourceIp": [
46
+ "192.0.2.0/24",
47
+ "203.0.113.0/24"
48
+ ]
49
+ }
50
+ }
51
+ }
52
+ EOS
53
+ assert_equal exp_template.chomp, act_template
54
+ end
55
+
5
56
  def test_iam_policies
6
57
  template = <<-EOS
7
58
  Policies _iam_policies "test", test: [ { document: [ { service: "s3" } ] } ]
@@ -51,6 +102,55 @@ PolicyDocument _iam_policy_document "test", test: [ { service: "s3" } ]
51
102
  }
52
103
  EOS
53
104
  assert_equal exp_template.chomp, act_template
105
+
106
+ template = <<-EOS
107
+ PolicyDocument _iam_policy_document "test", test: [ { service: "s3", sid: "test" } ]
108
+ EOS
109
+ act_template = run_client_as_json(template)
110
+ exp_template = <<-EOS
111
+ {
112
+ "PolicyDocument": [
113
+ {
114
+ "Effect": "Allow",
115
+ "Action": [
116
+ "s3:*"
117
+ ],
118
+ "Resource": [
119
+ "*"
120
+ ]
121
+ }
122
+ ]
123
+ }
124
+ EOS
125
+ assert_equal exp_template.chomp, act_template
126
+
127
+ template = <<-EOS
128
+ condition = { "=": [ "s3:x-amz-acl", "bucket-owner-full-control" ] }
129
+ PolicyDocument _iam_policy_document "test", test: [ { service: "s3", sid: "test", condition: condition } ]
130
+ EOS
131
+ act_template = run_client_as_json(template)
132
+ exp_template = <<-EOS
133
+ {
134
+ "PolicyDocument": [
135
+ {
136
+ "Effect": "Allow",
137
+ "Action": [
138
+ "s3:*"
139
+ ],
140
+ "Resource": [
141
+ "*"
142
+ ],
143
+ "Condition": {
144
+ "StringEquals": {
145
+ "s3:x-amz-acl": "bucket-owner-full-control"
146
+ }
147
+ }
148
+ }
149
+ ]
150
+ }
151
+ EOS
152
+ assert_equal exp_template.chomp, act_template
153
+
54
154
  end
55
155
 
56
156
  def test_iam_assume_role_policy_document
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kumogata-template
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.24
4
+ version: 0.0.25
5
5
  platform: ruby
6
6
  authors:
7
7
  - Naoya Nakazawa
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-05-06 00:00:00.000000000 Z
11
+ date: 2017-05-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aws-sdk