aws_assume_role 0.0.3 → 0.1.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.
Files changed (75) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/.rubocop.yml +31 -11
  4. data/Gemfile +7 -13
  5. data/LICENSE.md +201 -19
  6. data/README.md +176 -145
  7. data/aws_assume_role.gemspec +35 -21
  8. data/bin/aws-assume-role +1 -83
  9. data/i18n/en.yml +106 -0
  10. data/lib/aws_assume_role.rb +2 -3
  11. data/lib/aws_assume_role/cli.rb +15 -0
  12. data/lib/aws_assume_role/cli/actions/abstract_action.rb +53 -0
  13. data/lib/aws_assume_role/cli/actions/configure_profile.rb +21 -0
  14. data/lib/aws_assume_role/cli/actions/configure_role_assumption.rb +19 -0
  15. data/lib/aws_assume_role/cli/actions/console.rb +68 -0
  16. data/lib/aws_assume_role/cli/actions/delete_profile.rb +20 -0
  17. data/lib/aws_assume_role/cli/actions/includes.rb +18 -0
  18. data/lib/aws_assume_role/cli/actions/list_profiles.rb +10 -0
  19. data/lib/aws_assume_role/cli/actions/migrate_profile.rb +18 -0
  20. data/lib/aws_assume_role/cli/actions/reset_environment.rb +48 -0
  21. data/lib/aws_assume_role/cli/actions/run.rb +34 -0
  22. data/lib/aws_assume_role/cli/actions/set_environment.rb +60 -0
  23. data/lib/aws_assume_role/cli/actions/test.rb +31 -0
  24. data/lib/aws_assume_role/cli/commands/configure.rb +29 -0
  25. data/lib/aws_assume_role/cli/commands/console.rb +17 -0
  26. data/lib/aws_assume_role/cli/commands/delete.rb +11 -0
  27. data/lib/aws_assume_role/cli/commands/environment.rb +32 -0
  28. data/lib/aws_assume_role/cli/commands/list.rb +10 -0
  29. data/lib/aws_assume_role/cli/commands/migrate.rb +11 -0
  30. data/lib/aws_assume_role/cli/commands/run.rb +17 -0
  31. data/lib/aws_assume_role/cli/commands/test.rb +18 -0
  32. data/lib/aws_assume_role/configuration.rb +19 -0
  33. data/lib/aws_assume_role/core_ext/aws-sdk/credential_provider_chain.rb +2 -0
  34. data/lib/aws_assume_role/core_ext/aws-sdk/includes.rb +7 -0
  35. data/lib/aws_assume_role/credentials/factories.rb +9 -0
  36. data/lib/aws_assume_role/credentials/factories/abstract_factory.rb +31 -0
  37. data/lib/aws_assume_role/credentials/factories/assume_role.rb +38 -0
  38. data/lib/aws_assume_role/credentials/factories/default_chain_provider.rb +101 -0
  39. data/lib/aws_assume_role/credentials/factories/environment.rb +24 -0
  40. data/lib/aws_assume_role/credentials/factories/includes.rb +17 -0
  41. data/lib/aws_assume_role/credentials/factories/instance_profile.rb +17 -0
  42. data/lib/aws_assume_role/credentials/factories/repository.rb +35 -0
  43. data/lib/aws_assume_role/credentials/factories/shared.rb +15 -0
  44. data/lib/aws_assume_role/credentials/factories/shared_keyring.rb +16 -0
  45. data/lib/aws_assume_role/credentials/factories/static.rb +16 -0
  46. data/lib/aws_assume_role/credentials/providers/assume_role_credentials.rb +58 -0
  47. data/lib/aws_assume_role/credentials/providers/includes.rb +9 -0
  48. data/lib/aws_assume_role/credentials/providers/mfa_session_credentials.rb +102 -0
  49. data/lib/aws_assume_role/credentials/providers/shared_keyring_credentials.rb +22 -0
  50. data/lib/aws_assume_role/includes.rb +30 -0
  51. data/lib/aws_assume_role/logging.rb +16 -28
  52. data/lib/aws_assume_role/profile_configuration.rb +71 -0
  53. data/lib/aws_assume_role/runner.rb +39 -0
  54. data/lib/aws_assume_role/store/includes.rb +16 -0
  55. data/lib/aws_assume_role/store/keyring.rb +59 -0
  56. data/lib/aws_assume_role/store/serialization.rb +18 -0
  57. data/lib/aws_assume_role/store/shared_config_with_keyring.rb +175 -0
  58. data/lib/aws_assume_role/types.rb +30 -0
  59. data/lib/aws_assume_role/ui.rb +55 -0
  60. data/lib/aws_assume_role/vendored/aws.rb +4 -0
  61. data/lib/aws_assume_role/vendored/aws/README.md +2 -0
  62. data/lib/aws_assume_role/vendored/aws/assume_role_credentials.rb +68 -0
  63. data/lib/aws_assume_role/vendored/aws/includes.rb +9 -0
  64. data/lib/aws_assume_role/vendored/aws/refreshing_credentials.rb +60 -0
  65. data/lib/aws_assume_role/vendored/aws/shared_config.rb +220 -0
  66. data/lib/aws_assume_role/version.rb +3 -0
  67. metadata +264 -20
  68. data/.rspec +0 -2
  69. data/Rakefile +0 -2
  70. data/bin/test.rb +0 -39
  71. data/lib/aws_assume_role/credentials.rb +0 -92
  72. data/lib/aws_assume_role/profile.rb +0 -203
  73. data/lib/aws_assume_role/profile/assume_role.rb +0 -127
  74. data/lib/aws_assume_role/profile/basic.rb +0 -152
  75. data/lib/aws_assume_role/profile/list.rb +0 -57
@@ -0,0 +1,3 @@
1
+ module AwsAssumeRole
2
+ VERSION = "0.1.0".freeze
3
+ end
metadata CHANGED
@@ -1,49 +1,179 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aws_assume_role
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jon Topper
8
8
  - Jack Thomas
9
+ - Naadir Jeewa
9
10
  autorequire:
10
11
  bindir: bin
11
12
  cert_chain: []
12
- date: 2016-12-12 00:00:00.000000000 Z
13
+ date: 2017-02-16 00:00:00.000000000 Z
13
14
  dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: activesupport
17
+ requirement: !ruby/object:Gem::Requirement
18
+ requirements:
19
+ - - "~>"
20
+ - !ruby/object:Gem::Version
21
+ version: '4.0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ requirements:
26
+ - - "~>"
27
+ - !ruby/object:Gem::Version
28
+ version: '4.0'
14
29
  - !ruby/object:Gem::Dependency
15
30
  name: aws-sdk
16
31
  requirement: !ruby/object:Gem::Requirement
17
32
  requirements:
18
- - - ">="
33
+ - - "~>"
19
34
  - !ruby/object:Gem::Version
20
- version: '0'
35
+ version: '2.7'
21
36
  type: :runtime
22
37
  prerelease: false
23
38
  version_requirements: !ruby/object:Gem::Requirement
24
39
  requirements:
25
- - - ">="
40
+ - - "~>"
41
+ - !ruby/object:Gem::Version
42
+ version: '2.7'
43
+ - !ruby/object:Gem::Dependency
44
+ name: dry-configurable
45
+ requirement: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - "~>"
26
48
  - !ruby/object:Gem::Version
27
- version: '0'
49
+ version: '0.5'
50
+ type: :runtime
51
+ prerelease: false
52
+ version_requirements: !ruby/object:Gem::Requirement
53
+ requirements:
54
+ - - "~>"
55
+ - !ruby/object:Gem::Version
56
+ version: '0.5'
57
+ - !ruby/object:Gem::Dependency
58
+ name: dry-initializer
59
+ requirement: !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - "~>"
62
+ - !ruby/object:Gem::Version
63
+ version: '1.1'
64
+ type: :runtime
65
+ prerelease: false
66
+ version_requirements: !ruby/object:Gem::Requirement
67
+ requirements:
68
+ - - "~>"
69
+ - !ruby/object:Gem::Version
70
+ version: '1.1'
71
+ - !ruby/object:Gem::Dependency
72
+ name: dry-types
73
+ requirement: !ruby/object:Gem::Requirement
74
+ requirements:
75
+ - - "~>"
76
+ - !ruby/object:Gem::Version
77
+ version: '0.9'
78
+ type: :runtime
79
+ prerelease: false
80
+ version_requirements: !ruby/object:Gem::Requirement
81
+ requirements:
82
+ - - "~>"
83
+ - !ruby/object:Gem::Version
84
+ version: '0.9'
85
+ - !ruby/object:Gem::Dependency
86
+ name: dry-validation
87
+ requirement: !ruby/object:Gem::Requirement
88
+ requirements:
89
+ - - "~>"
90
+ - !ruby/object:Gem::Version
91
+ version: '0.10'
92
+ type: :runtime
93
+ prerelease: false
94
+ version_requirements: !ruby/object:Gem::Requirement
95
+ requirements:
96
+ - - "~>"
97
+ - !ruby/object:Gem::Version
98
+ version: '0.10'
99
+ - !ruby/object:Gem::Dependency
100
+ name: gli
101
+ requirement: !ruby/object:Gem::Requirement
102
+ requirements:
103
+ - - "~>"
104
+ - !ruby/object:Gem::Version
105
+ version: '2.15'
106
+ type: :runtime
107
+ prerelease: false
108
+ version_requirements: !ruby/object:Gem::Requirement
109
+ requirements:
110
+ - - "~>"
111
+ - !ruby/object:Gem::Version
112
+ version: '2.15'
113
+ - !ruby/object:Gem::Dependency
114
+ name: highline
115
+ requirement: !ruby/object:Gem::Requirement
116
+ requirements:
117
+ - - "~>"
118
+ - !ruby/object:Gem::Version
119
+ version: '1.7'
120
+ type: :runtime
121
+ prerelease: false
122
+ version_requirements: !ruby/object:Gem::Requirement
123
+ requirements:
124
+ - - "~>"
125
+ - !ruby/object:Gem::Version
126
+ version: '1.7'
127
+ - !ruby/object:Gem::Dependency
128
+ name: i18n
129
+ requirement: !ruby/object:Gem::Requirement
130
+ requirements:
131
+ - - "~>"
132
+ - !ruby/object:Gem::Version
133
+ version: '0.7'
134
+ type: :runtime
135
+ prerelease: false
136
+ version_requirements: !ruby/object:Gem::Requirement
137
+ requirements:
138
+ - - "~>"
139
+ - !ruby/object:Gem::Version
140
+ version: '0.7'
28
141
  - !ruby/object:Gem::Dependency
29
142
  name: inifile
30
143
  requirement: !ruby/object:Gem::Requirement
31
144
  requirements:
32
- - - ">="
145
+ - - "~>"
33
146
  - !ruby/object:Gem::Version
34
- version: '0'
147
+ version: '3.0'
35
148
  type: :runtime
36
149
  prerelease: false
37
150
  version_requirements: !ruby/object:Gem::Requirement
38
151
  requirements:
39
- - - ">="
152
+ - - "~>"
40
153
  - !ruby/object:Gem::Version
41
- version: '0'
154
+ version: '3.0'
155
+ - !ruby/object:Gem::Dependency
156
+ name: launchy
157
+ requirement: !ruby/object:Gem::Requirement
158
+ requirements:
159
+ - - "~>"
160
+ - !ruby/object:Gem::Version
161
+ version: '2.4'
162
+ type: :runtime
163
+ prerelease: false
164
+ version_requirements: !ruby/object:Gem::Requirement
165
+ requirements:
166
+ - - "~>"
167
+ - !ruby/object:Gem::Version
168
+ version: '2.4'
42
169
  - !ruby/object:Gem::Dependency
43
170
  name: keyring
44
171
  requirement: !ruby/object:Gem::Requirement
45
172
  requirements:
46
173
  - - "~>"
174
+ - !ruby/object:Gem::Version
175
+ version: '0.4'
176
+ - - ">="
47
177
  - !ruby/object:Gem::Version
48
178
  version: 0.4.1
49
179
  type: :runtime
@@ -51,38 +181,152 @@ dependencies:
51
181
  version_requirements: !ruby/object:Gem::Requirement
52
182
  requirements:
53
183
  - - "~>"
184
+ - !ruby/object:Gem::Version
185
+ version: '0.4'
186
+ - - ">="
54
187
  - !ruby/object:Gem::Version
55
188
  version: 0.4.1
189
+ - !ruby/object:Gem::Dependency
190
+ name: pastel
191
+ requirement: !ruby/object:Gem::Requirement
192
+ requirements:
193
+ - - "~>"
194
+ - !ruby/object:Gem::Version
195
+ version: '0.7'
196
+ type: :runtime
197
+ prerelease: false
198
+ version_requirements: !ruby/object:Gem::Requirement
199
+ requirements:
200
+ - - "~>"
201
+ - !ruby/object:Gem::Version
202
+ version: '0.7'
203
+ - !ruby/object:Gem::Dependency
204
+ name: rubocop
205
+ requirement: !ruby/object:Gem::Requirement
206
+ requirements:
207
+ - - "~>"
208
+ - !ruby/object:Gem::Version
209
+ version: '0.46'
210
+ type: :development
211
+ prerelease: false
212
+ version_requirements: !ruby/object:Gem::Requirement
213
+ requirements:
214
+ - - "~>"
215
+ - !ruby/object:Gem::Version
216
+ version: '0.46'
217
+ - !ruby/object:Gem::Dependency
218
+ name: yard
219
+ requirement: !ruby/object:Gem::Requirement
220
+ requirements:
221
+ - - "~>"
222
+ - !ruby/object:Gem::Version
223
+ version: '0.9'
224
+ type: :development
225
+ prerelease: false
226
+ version_requirements: !ruby/object:Gem::Requirement
227
+ requirements:
228
+ - - "~>"
229
+ - !ruby/object:Gem::Version
230
+ version: '0.9'
231
+ - !ruby/object:Gem::Dependency
232
+ name: gir_ffi-gnome_keyring
233
+ requirement: !ruby/object:Gem::Requirement
234
+ requirements:
235
+ - - "~>"
236
+ - !ruby/object:Gem::Version
237
+ version: '0.0'
238
+ - - ">="
239
+ - !ruby/object:Gem::Version
240
+ version: 0.0.3
241
+ type: :runtime
242
+ prerelease: false
243
+ version_requirements: !ruby/object:Gem::Requirement
244
+ requirements:
245
+ - - "~>"
246
+ - !ruby/object:Gem::Version
247
+ version: '0.0'
248
+ - - ">="
249
+ - !ruby/object:Gem::Version
250
+ version: 0.0.3
56
251
  description: Used to fetch multiple AWS Role Credential Keys using different Session
57
252
  Keys and store them securely using Gnome Keyring or OSX keychain
58
253
  email:
59
254
  - jon@scalefactory.com
60
255
  - jack@scalefactory.com
256
+ - naadir@scalefactory.com
61
257
  executables:
62
258
  - aws-assume-role
63
259
  extensions: []
64
260
  extra_rdoc_files: []
65
261
  files:
66
262
  - ".gitignore"
67
- - ".rspec"
68
263
  - ".rubocop.yml"
69
264
  - Gemfile
70
265
  - LICENSE.md
71
266
  - README.md
72
- - Rakefile
73
267
  - aws_assume_role.gemspec
74
268
  - bin/aws-assume-role
75
- - bin/test.rb
269
+ - i18n/en.yml
76
270
  - lib/aws_assume_role.rb
77
- - lib/aws_assume_role/credentials.rb
271
+ - lib/aws_assume_role/cli.rb
272
+ - lib/aws_assume_role/cli/actions/abstract_action.rb
273
+ - lib/aws_assume_role/cli/actions/configure_profile.rb
274
+ - lib/aws_assume_role/cli/actions/configure_role_assumption.rb
275
+ - lib/aws_assume_role/cli/actions/console.rb
276
+ - lib/aws_assume_role/cli/actions/delete_profile.rb
277
+ - lib/aws_assume_role/cli/actions/includes.rb
278
+ - lib/aws_assume_role/cli/actions/list_profiles.rb
279
+ - lib/aws_assume_role/cli/actions/migrate_profile.rb
280
+ - lib/aws_assume_role/cli/actions/reset_environment.rb
281
+ - lib/aws_assume_role/cli/actions/run.rb
282
+ - lib/aws_assume_role/cli/actions/set_environment.rb
283
+ - lib/aws_assume_role/cli/actions/test.rb
284
+ - lib/aws_assume_role/cli/commands/configure.rb
285
+ - lib/aws_assume_role/cli/commands/console.rb
286
+ - lib/aws_assume_role/cli/commands/delete.rb
287
+ - lib/aws_assume_role/cli/commands/environment.rb
288
+ - lib/aws_assume_role/cli/commands/list.rb
289
+ - lib/aws_assume_role/cli/commands/migrate.rb
290
+ - lib/aws_assume_role/cli/commands/run.rb
291
+ - lib/aws_assume_role/cli/commands/test.rb
292
+ - lib/aws_assume_role/configuration.rb
293
+ - lib/aws_assume_role/core_ext/aws-sdk/credential_provider_chain.rb
294
+ - lib/aws_assume_role/core_ext/aws-sdk/includes.rb
295
+ - lib/aws_assume_role/credentials/factories.rb
296
+ - lib/aws_assume_role/credentials/factories/abstract_factory.rb
297
+ - lib/aws_assume_role/credentials/factories/assume_role.rb
298
+ - lib/aws_assume_role/credentials/factories/default_chain_provider.rb
299
+ - lib/aws_assume_role/credentials/factories/environment.rb
300
+ - lib/aws_assume_role/credentials/factories/includes.rb
301
+ - lib/aws_assume_role/credentials/factories/instance_profile.rb
302
+ - lib/aws_assume_role/credentials/factories/repository.rb
303
+ - lib/aws_assume_role/credentials/factories/shared.rb
304
+ - lib/aws_assume_role/credentials/factories/shared_keyring.rb
305
+ - lib/aws_assume_role/credentials/factories/static.rb
306
+ - lib/aws_assume_role/credentials/providers/assume_role_credentials.rb
307
+ - lib/aws_assume_role/credentials/providers/includes.rb
308
+ - lib/aws_assume_role/credentials/providers/mfa_session_credentials.rb
309
+ - lib/aws_assume_role/credentials/providers/shared_keyring_credentials.rb
310
+ - lib/aws_assume_role/includes.rb
78
311
  - lib/aws_assume_role/logging.rb
79
- - lib/aws_assume_role/profile.rb
80
- - lib/aws_assume_role/profile/assume_role.rb
81
- - lib/aws_assume_role/profile/basic.rb
82
- - lib/aws_assume_role/profile/list.rb
83
- homepage: https://github.com/scalefactory/aws_assume_role
312
+ - lib/aws_assume_role/profile_configuration.rb
313
+ - lib/aws_assume_role/runner.rb
314
+ - lib/aws_assume_role/store/includes.rb
315
+ - lib/aws_assume_role/store/keyring.rb
316
+ - lib/aws_assume_role/store/serialization.rb
317
+ - lib/aws_assume_role/store/shared_config_with_keyring.rb
318
+ - lib/aws_assume_role/types.rb
319
+ - lib/aws_assume_role/ui.rb
320
+ - lib/aws_assume_role/vendored/aws.rb
321
+ - lib/aws_assume_role/vendored/aws/README.md
322
+ - lib/aws_assume_role/vendored/aws/assume_role_credentials.rb
323
+ - lib/aws_assume_role/vendored/aws/includes.rb
324
+ - lib/aws_assume_role/vendored/aws/refreshing_credentials.rb
325
+ - lib/aws_assume_role/vendored/aws/shared_config.rb
326
+ - lib/aws_assume_role/version.rb
327
+ homepage: https://github.com/scalefactory/aws-assume-role
84
328
  licenses:
85
- - MIT
329
+ - Apache-2.0
86
330
  metadata: {}
87
331
  post_install_message:
88
332
  rdoc_options: []
data/.rspec DELETED
@@ -1,2 +0,0 @@
1
- --color
2
- --require spec_helper
data/Rakefile DELETED
@@ -1,2 +0,0 @@
1
- require 'bundler/gem_tasks'
2
- task default: :spec
data/bin/test.rb DELETED
@@ -1,39 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- $LOAD_PATH.unshift File.expand_path('../lib/', __FILE__)
4
-
5
- require 'aws_assume_role'
6
-
7
- test_profiles_yaml = <<EOF
8
- ---
9
- default:
10
- set_environment: false
11
- # credentials come from .aws/credentials or environment
12
-
13
- mgmt:
14
- set_environment: true
15
- type: assume_role
16
- role_arn: arn:aws:iam::339253004131:role/TerraformUser
17
-
18
- test:
19
- set_environment: true
20
- type: assume_role
21
- role_arn: arn:aws:iam::542043528869:role/TerraformUser
22
-
23
- tf_test:
24
- type: list
25
- list:
26
- - name: test
27
- env_prefix: TEST_
28
- - name: mgmt
29
- env_prefix: MGMT_
30
-
31
- EOF
32
-
33
- AWSAssumeRole::Profile.logger.level = Logger::DEBUG
34
- AWSAssumeRole::Profile.parse_config(test_profiles_yaml)
35
-
36
- p = AWSAssumeRole::Profile.get_by_name('tf_test')
37
- p.use
38
-
39
- system('env | grep "AWS" | sort')
@@ -1,92 +0,0 @@
1
- # AWSAssumeRole
2
- module AWSAssumeRole
3
-
4
- require 'keyring'
5
- require 'json'
6
- require 'time'
7
-
8
- # Represents credentials, used for serialising into keychain
9
- class Credentials
10
-
11
- include Logging
12
-
13
- def self.load_from_keyring(key)
14
-
15
- logger.debug("Keyring: load '#{key}'")
16
-
17
- keyring = Keyring.new
18
- json_session = keyring.get_password('AWSAssumeRole', key)
19
-
20
- unless json_session
21
- logger.info('No JSON session data in keyring')
22
- return nil
23
- end
24
-
25
- hash = JSON.parse(json_session, symbolize_names: true)
26
-
27
- unless hash
28
- logger.info('Couldn\'t parse keyring data as JSON')
29
- return nil
30
- end
31
-
32
- hash[:expiration] = Time.parse(hash[:expiration]) unless hash[:expiration].nil?
33
-
34
- logger.debug("Loaded #{hash}")
35
- AWSAssumeRole::Credentials.new(hash)
36
-
37
- end
38
-
39
- def self.create_from_sdk(object)
40
-
41
- raise TypeError unless object.is_a?(Aws::STS::Types::Credentials)
42
- AWSAssumeRole::Credentials.new(object.to_h)
43
-
44
- end
45
-
46
- @credentials = nil
47
-
48
- def initialize(hash)
49
- @credentials = hash
50
- end
51
-
52
- def secret_access_key
53
- @credentials[:secret_access_key]
54
- end
55
-
56
- def access_key_id
57
- @credentials[:access_key_id]
58
- end
59
-
60
- def session_token
61
- @credentials[:session_token]
62
- end
63
-
64
- def expiration
65
- @credentials[:expiration]
66
- end
67
-
68
- def region
69
- @credentials[:region]
70
- end
71
-
72
- def store_in_keyring(key)
73
- keyring = Keyring.new
74
- logger.debug("Keyring: store '#{key}' with #{@credentials.to_json}")
75
- keyring.set_password('AWSAssumeRole', key, @credentials.to_json)
76
- end
77
-
78
- def delete_from_keyring(key)
79
- keyring = Keyring.new
80
- logger.debug("Keyring: delete '#{key}'")
81
- keyring.delete_password('AWSAssumeRole', key)
82
- end
83
-
84
- def expired?
85
- logger.debug("Checking expiry: #{@credentials[:expiration]} "\
86
- '<= Time.now')
87
- @credentials[:expiration] <= Time.now
88
- end
89
-
90
- end
91
-
92
- end