miam 0.2.3 → 0.2.4.beta6
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/lib/miam/client.rb +4 -4
- data/lib/miam/driver.rb +21 -12
- data/lib/miam/exporter.rb +10 -3
- data/lib/miam/version.rb +1 -1
- data/miam.gemspec +1 -2
- metadata +19 -5
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: e1c150b030553f7b4eefb432270b89335915eec8
|
|
4
|
+
data.tar.gz: 39f678345ea0954fa1cc1aa1b31a0d216a077daa
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: f9afc6853fada3dd41deff6cbc304a339c56cc6e7b92b940ef69cac3e1a32b79910d9897a8b33c51d29f7c2674cb0809bc94808872ff3696aff70d518c4a207d
|
|
7
|
+
data.tar.gz: 2545494db13024cc827de64cc57a9f0addf14f8113567f967917ae0197a979e6067573b51614027c2ed269e960b43223829715fecee64cc98a20dcd39e5a17f3
|
data/lib/miam/client.rb
CHANGED
|
@@ -452,7 +452,7 @@ class Miam::Client
|
|
|
452
452
|
log(:warn, "ManagedPolicy `#{policy_name}`: 'path' cannot be updated", :color => :yellow)
|
|
453
453
|
end
|
|
454
454
|
|
|
455
|
-
updated = walk_managed_policy(policy_name, expected_attrs[:document], actual_attrs[:document]) || updated
|
|
455
|
+
updated = walk_managed_policy(policy_name, actual_attrs[:path], expected_attrs[:document], actual_attrs[:document]) || updated
|
|
456
456
|
else
|
|
457
457
|
@driver.create_managed_policy(policy_name, expected_attrs)
|
|
458
458
|
updated = true
|
|
@@ -462,13 +462,13 @@ class Miam::Client
|
|
|
462
462
|
updated
|
|
463
463
|
end
|
|
464
464
|
|
|
465
|
-
def walk_managed_policy(policy_name, expected_document, actual_document)
|
|
465
|
+
def walk_managed_policy(policy_name, policy_path, expected_document, actual_document)
|
|
466
466
|
updated = false
|
|
467
467
|
expected_document.sort_array!
|
|
468
468
|
actual_document.sort_array!
|
|
469
469
|
|
|
470
470
|
if expected_document != actual_document
|
|
471
|
-
@driver.update_managed_policy(policy_name, expected_document, actual_document)
|
|
471
|
+
@driver.update_managed_policy(policy_name, policy_path, expected_document, actual_document)
|
|
472
472
|
updated = true
|
|
473
473
|
end
|
|
474
474
|
|
|
@@ -479,7 +479,7 @@ class Miam::Client
|
|
|
479
479
|
updated = false
|
|
480
480
|
|
|
481
481
|
actual.each do |policy_name, actual_attrs|
|
|
482
|
-
@driver.delete_managed_policy(policy_name)
|
|
482
|
+
@driver.delete_managed_policy(policy_name, actual_attrs[:path])
|
|
483
483
|
updated = true
|
|
484
484
|
end
|
|
485
485
|
|
data/lib/miam/driver.rb
CHANGED
|
@@ -67,6 +67,14 @@ class Miam::Driver
|
|
|
67
67
|
@iam.delete_signing_certificate(:user_name => user_name, :certificate_id => certificate_id)
|
|
68
68
|
end
|
|
69
69
|
|
|
70
|
+
mfa_devices = @iam.list_mfa_devices(:user_name => user_name).map {|resp|
|
|
71
|
+
resp.mfa_devices
|
|
72
|
+
}.flatten
|
|
73
|
+
|
|
74
|
+
mfa_devices.each do |md|
|
|
75
|
+
@iam.deactivate_mfa_device(:user_name => user_name, :serial_number => md.serial_number)
|
|
76
|
+
end
|
|
77
|
+
|
|
70
78
|
@iam.delete_user(:user_name => user_name)
|
|
71
79
|
end
|
|
72
80
|
end
|
|
@@ -377,12 +385,12 @@ class Miam::Driver
|
|
|
377
385
|
end
|
|
378
386
|
end
|
|
379
387
|
|
|
380
|
-
def delete_managed_policy(policy_name)
|
|
388
|
+
def delete_managed_policy(policy_name, policy_path)
|
|
381
389
|
log(:info, "Delete ManagedPolicy `#{policy_name}`", :color => :red)
|
|
382
390
|
|
|
383
391
|
unless_dry_run do
|
|
384
392
|
policy_versions = @iam.list_policy_versions(
|
|
385
|
-
:policy_arn => policy_arn(policy_name),
|
|
393
|
+
:policy_arn => policy_arn(policy_name, policy_path),
|
|
386
394
|
:max_items => MAX_POLICY_VERSIONS
|
|
387
395
|
)
|
|
388
396
|
|
|
@@ -390,24 +398,24 @@ class Miam::Driver
|
|
|
390
398
|
pv.is_default_version
|
|
391
399
|
}.each {|pv|
|
|
392
400
|
@iam.delete_policy_version(
|
|
393
|
-
:policy_arn => policy_arn(policy_name),
|
|
401
|
+
:policy_arn => policy_arn(policy_name, policy_path),
|
|
394
402
|
:version_id => pv.version_id
|
|
395
403
|
)
|
|
396
404
|
}
|
|
397
405
|
|
|
398
406
|
@iam.delete_policy(
|
|
399
|
-
:policy_arn => policy_arn(policy_name)
|
|
407
|
+
:policy_arn => policy_arn(policy_name, policy_path)
|
|
400
408
|
)
|
|
401
409
|
end
|
|
402
410
|
end
|
|
403
411
|
|
|
404
|
-
def update_managed_policy(policy_name, policy_document, old_policy_document)
|
|
412
|
+
def update_managed_policy(policy_name, policy_path, policy_document, old_policy_document)
|
|
405
413
|
log(:info, "Update ManagedPolicy `#{policy_name}`", :color => :green)
|
|
406
414
|
log(:info, Miam::Utils.diff(old_policy_document, policy_document, :color => @options[:color]), :color => false)
|
|
407
415
|
|
|
408
416
|
unless_dry_run do
|
|
409
417
|
policy_versions = @iam.list_policy_versions(
|
|
410
|
-
:policy_arn => policy_arn(policy_name),
|
|
418
|
+
:policy_arn => policy_arn(policy_name, policy_path),
|
|
411
419
|
:max_items => MAX_POLICY_VERSIONS
|
|
412
420
|
)
|
|
413
421
|
|
|
@@ -417,13 +425,13 @@ class Miam::Driver
|
|
|
417
425
|
}.sort_by {|pv| pv.version_id[1..-1].to_i }.first
|
|
418
426
|
|
|
419
427
|
@iam.delete_policy_version(
|
|
420
|
-
:policy_arn => policy_arn(policy_name),
|
|
428
|
+
:policy_arn => policy_arn(policy_name, policy_path),
|
|
421
429
|
:version_id => delete_policy_version.version_id
|
|
422
430
|
)
|
|
423
431
|
end
|
|
424
432
|
|
|
425
433
|
@iam.create_policy_version(
|
|
426
|
-
:policy_arn => policy_arn(policy_name),
|
|
434
|
+
:policy_arn => policy_arn(policy_name, policy_path),
|
|
427
435
|
:policy_document => encode_document(policy_document),
|
|
428
436
|
set_as_default: true
|
|
429
437
|
)
|
|
@@ -455,11 +463,12 @@ class Miam::Driver
|
|
|
455
463
|
yield unless @options[:dry_run]
|
|
456
464
|
end
|
|
457
465
|
|
|
458
|
-
def
|
|
459
|
-
|
|
466
|
+
def account_id
|
|
467
|
+
# https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html
|
|
468
|
+
@account_id ||= @iam.get_user.user.arn.split(':').fetch(4)
|
|
460
469
|
end
|
|
461
470
|
|
|
462
|
-
def policy_arn(policy_name)
|
|
463
|
-
"arn:aws:iam::#{
|
|
471
|
+
def policy_arn(policy_name, policy_path)
|
|
472
|
+
File.join("arn:aws:iam::#{account_id}:policy", policy_path, policy_name)
|
|
464
473
|
end
|
|
465
474
|
end
|
data/lib/miam/exporter.rb
CHANGED
|
@@ -255,12 +255,19 @@ class Miam::Exporter
|
|
|
255
255
|
:policies,
|
|
256
256
|
]
|
|
257
257
|
|
|
258
|
-
|
|
258
|
+
key_by_filter = {
|
|
259
|
+
'User' => :user_detail_list,
|
|
260
|
+
'Role' => :role_detail_list,
|
|
261
|
+
'Group' => :group_detail_list,
|
|
262
|
+
'LocalManagedPolicy' => :policies
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
key_by_filter.values.each do |key|
|
|
259
266
|
account_authorization_details[key] = []
|
|
260
267
|
end
|
|
261
268
|
|
|
262
|
-
|
|
263
|
-
|
|
269
|
+
Parallel.each(key_by_filter, :in_threads => @concurrency) do |filter, key|
|
|
270
|
+
@iam.get_account_authorization_details(:filter => [filter]).each do |resp|
|
|
264
271
|
account_authorization_details[key].concat(resp[key])
|
|
265
272
|
|
|
266
273
|
unless @options[:no_progress]
|
data/lib/miam/version.rb
CHANGED
data/miam.gemspec
CHANGED
|
@@ -8,8 +8,6 @@ Gem::Specification.new do |spec|
|
|
|
8
8
|
spec.version = Miam::VERSION
|
|
9
9
|
spec.authors = ['Genki Sugawara']
|
|
10
10
|
spec.email = ['sgwr_dts@yahoo.co.jp']
|
|
11
|
-
spec.summary = %q{TODO: Write a short summary. Required.}
|
|
12
|
-
spec.description = %q{TODO: Write a longer description. Optional.}
|
|
13
11
|
spec.summary = %q{Miam is a tool to manage IAM.}
|
|
14
12
|
spec.description = %q{Miam is a tool to manage IAM. It defines the state of IAM using DSL, and updates IAM according to DSL.}
|
|
15
13
|
spec.homepage = 'http://miam.codenize.tools/'
|
|
@@ -31,4 +29,5 @@ Gem::Specification.new do |spec|
|
|
|
31
29
|
spec.add_development_dependency 'rspec', '>= 3.0.0'
|
|
32
30
|
spec.add_development_dependency 'rspec-instafail'
|
|
33
31
|
spec.add_development_dependency 'coveralls'
|
|
32
|
+
spec.add_development_dependency 'nokogiri'
|
|
34
33
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: miam
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.2.
|
|
4
|
+
version: 0.2.4.beta6
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Genki Sugawara
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2016-
|
|
11
|
+
date: 2016-09-28 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: aws-sdk-core
|
|
@@ -164,6 +164,20 @@ dependencies:
|
|
|
164
164
|
- - ">="
|
|
165
165
|
- !ruby/object:Gem::Version
|
|
166
166
|
version: '0'
|
|
167
|
+
- !ruby/object:Gem::Dependency
|
|
168
|
+
name: nokogiri
|
|
169
|
+
requirement: !ruby/object:Gem::Requirement
|
|
170
|
+
requirements:
|
|
171
|
+
- - ">="
|
|
172
|
+
- !ruby/object:Gem::Version
|
|
173
|
+
version: '0'
|
|
174
|
+
type: :development
|
|
175
|
+
prerelease: false
|
|
176
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
177
|
+
requirements:
|
|
178
|
+
- - ">="
|
|
179
|
+
- !ruby/object:Gem::Version
|
|
180
|
+
version: '0'
|
|
167
181
|
description: Miam is a tool to manage IAM. It defines the state of IAM using DSL,
|
|
168
182
|
and updates IAM according to DSL.
|
|
169
183
|
email:
|
|
@@ -224,12 +238,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
224
238
|
version: '0'
|
|
225
239
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
226
240
|
requirements:
|
|
227
|
-
- - "
|
|
241
|
+
- - ">"
|
|
228
242
|
- !ruby/object:Gem::Version
|
|
229
|
-
version:
|
|
243
|
+
version: 1.3.1
|
|
230
244
|
requirements: []
|
|
231
245
|
rubyforge_project:
|
|
232
|
-
rubygems_version: 2.
|
|
246
|
+
rubygems_version: 2.5.1
|
|
233
247
|
signing_key:
|
|
234
248
|
specification_version: 4
|
|
235
249
|
summary: Miam is a tool to manage IAM.
|