miam 0.2.4.beta6 → 0.2.4.beta7

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: e1c150b030553f7b4eefb432270b89335915eec8
4
- data.tar.gz: 39f678345ea0954fa1cc1aa1b31a0d216a077daa
3
+ metadata.gz: a48f60383843d58e523391cf18996058900b0205
4
+ data.tar.gz: f05847ff927569a484ed599b9991074a064c8c23
5
5
  SHA512:
6
- metadata.gz: f9afc6853fada3dd41deff6cbc304a339c56cc6e7b92b940ef69cac3e1a32b79910d9897a8b33c51d29f7c2674cb0809bc94808872ff3696aff70d518c4a207d
7
- data.tar.gz: 2545494db13024cc827de64cc57a9f0addf14f8113567f967917ae0197a979e6067573b51614027c2ed269e960b43223829715fecee64cc98a20dcd39e5a17f3
6
+ metadata.gz: 9f4e17cf7fef45786c8a17bde2baa1d4617222ccaf426d804972d7c101ce671fbccfd99adb2234c6063dd0615a22f5eadff668aab045ea4bcd2499483273fdfb
7
+ data.tar.gz: e2fbcbb019ac76e637960bb758bc33600683e78810d066ef9f5f11369e0721185343ac2a0b44b5a37e67ed6ac9d8ed8aff89cc1bf523dd07187adf45714f2f75
data/README.md CHANGED
@@ -22,6 +22,9 @@ It defines the state of IAM using DSL, and updates IAM according to DSL.
22
22
  * Sort policy array
23
23
  * `>= 0.2.3`
24
24
  * Support Custom Managed Policy
25
+ * `>= 0.2.4`
26
+ * Fix for Password Policy ([RP#22](https://github.com/winebarrel/miam/pull/22))
27
+ * Fix `--target` option for Policies ([RP#21](https://github.com/winebarrel/miam/pull/21))
25
28
 
26
29
  ## Installation
27
30
 
data/lib/miam/client.rb CHANGED
@@ -129,7 +129,7 @@ class Miam::Client
129
129
  end
130
130
 
131
131
  if expected_login_profile and not actual_login_profile
132
- expected_login_profile[:password] ||= @password_manager.identify(user_name, :login_profile)
132
+ expected_login_profile[:password] ||= @password_manager.identify(user_name, :login_profile, @driver.password_policy)
133
133
  @driver.create_login_profile(user_name, expected_login_profile)
134
134
  updated = true
135
135
  elsif not expected_login_profile and actual_login_profile
@@ -445,6 +445,7 @@ class Miam::Client
445
445
  updated = false
446
446
 
447
447
  expected.each do |policy_name, expected_attrs|
448
+ next unless target_matched?(policy_name)
448
449
  actual_attrs = actual.delete(policy_name)
449
450
 
450
451
  if actual_attrs
@@ -479,6 +480,7 @@ class Miam::Client
479
480
  updated = false
480
481
 
481
482
  actual.each do |policy_name, actual_attrs|
483
+ next unless target_matched?(policy_name)
482
484
  @driver.delete_managed_policy(policy_name, actual_attrs[:path])
483
485
  updated = true
484
486
  end
data/lib/miam/driver.rb CHANGED
@@ -438,6 +438,14 @@ class Miam::Driver
438
438
  end
439
439
  end
440
440
 
441
+ def password_policy
442
+ return @password_policy if instance_variable_defined?(:@password_policy)
443
+
444
+ @password_policy = @iam.get_account_password_policy.password_policy
445
+ rescue Aws::IAM::Errors::NoSuchEntity
446
+ @password_policy = nil
447
+ end
448
+
441
449
  private
442
450
 
443
451
  def encode_document(policy_document)
@@ -1,13 +1,19 @@
1
1
  class Miam::PasswordManager
2
2
  include Miam::Logger::Helper
3
3
 
4
+ LOWERCASES = ('a'..'z').to_a
5
+ UPPERCASES = ('A'..'Z').to_a
6
+ NUMBERS = ('0'..'9').to_a
7
+ SYMBOLS = "!@\#$%^&*()_+-=[]{}|'".split(//)
8
+
4
9
  def initialize(output, options = {})
5
10
  @output = output
6
11
  @options = options
7
12
  end
8
13
 
9
- def identify(user, type)
10
- password = mkpasswd
14
+ def identify(user, type, policy)
15
+ password = mkpasswd(policy)
16
+ log(:info, "mkpasswd: #{password}")
11
17
  puts_password(user, type, password)
12
18
  password
13
19
  end
@@ -22,8 +28,21 @@ class Miam::PasswordManager
22
28
 
23
29
  private
24
30
 
25
- def mkpasswd(len = 8)
26
- [*1..9, *'A'..'Z', *'a'..'z'].shuffle.slice(0, len).join
31
+ def mkpasswd(policy)
32
+ chars = []
33
+ len = 8
34
+
35
+ if policy
36
+ len = policy.minimum_password_length if policy.minimum_password_length > len
37
+ chars << LOWERCASES.shuffle.first if policy.require_lowercase_characters
38
+ chars << UPPERCASES.shuffle.first if policy.require_uppercase_characters
39
+ chars << NUMBERS.shuffle.first if policy.require_numbers
40
+ chars << SYMBOLS.shuffle.first if policy.require_symbols
41
+
42
+ len -= chars.length
43
+ end
44
+
45
+ (chars + [*1..9, *'A'..'Z', *'a'..'z'].shuffle.slice(0, len)).shuffle.join
27
46
  end
28
47
 
29
48
  def open_output
data/lib/miam/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Miam
2
- VERSION = '0.2.4.beta6'
2
+ VERSION = '0.2.4.beta7'
3
3
  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.beta6
4
+ version: 0.2.4.beta7
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-09-28 00:00:00.000000000 Z
11
+ date: 2016-11-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aws-sdk-core