rails_key_rotator 0.2.2 → 0.2.4

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4716f503c795d3a21fe6fb7eff53ec6ebb0d003e34bad0dc2a68d6e652dfc7c9
4
- data.tar.gz: 194d519cf4e0278adb5cb60c183980712d027fc8ae8f85a8d7b4fe88df78a1ed
3
+ metadata.gz: eaa46a03f93b85091d320d81de8241cfc1f8f9151c9f6ff13c232bf17bc146a9
4
+ data.tar.gz: 98dc1e4cde4cc1365ed765d8142540c751709dc2ed66a8cdb48cef90f768c38a
5
5
  SHA512:
6
- metadata.gz: '04485eed8bc71a9d664b0e4c8348cca4f4a8ba3c4d79fc29ac585f1c2fc2c7bc792bfc0b5e881643c0399dae0f7ea197a5d7f6b08ba00fa696b9d45e049659ca'
7
- data.tar.gz: 7bec424314fdc836d644547f08dd9299a6c34a615585168847f6c7e5b77fceafbe909d0fb7e581f827a2c0ea5bb7506e2ed780aa9628e75f349d0f85d63197b9
6
+ metadata.gz: da389d3403d24bb9159445693fa1690d875e5ddde24f4edbee80dd10a67787ec98c359434d642b0f5541581df63a986d29f2c6fe5273e5e07030396a35c843c4
7
+ data.tar.gz: 465b459024d8efa98b3347febf3961ee2f14883a1201082b899a66d2527202a75f87d3f717fd02cc5cd1c552bef2171498c2a9c375495a0020c4bc7dd8aad339
data/README.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # RailsKeyRotator
2
2
 
3
+ [![Gem Version](https://badge.fury.io/rb/rails_key_rotator.svg)](https://badge.fury.io/rb/rails_key_rotator)
4
+
5
+ > **Warning**
6
+ > **THIS IS BETA SOFTWARE**
7
+ >
8
+ > Major version zero (0.y.z) is for initial development. Anything MAY change at any time. The public API SHOULD NOT be considered stable.
9
+ > See: <https://semver.org/#spec-item-4>
10
+
3
11
  ## Installation
4
12
 
5
13
  Install the gem and add to the application's Gemfile by executing:
@@ -15,14 +23,15 @@ If bundler is not being used to manage dependencies, install the gem by executin
15
23
  > **Warning**
16
24
  > **DON'T FORGET TO HANDOUT THE NEW KEY TO YOUR COLLEAGUES!**
17
25
 
18
- 1. Run the rake taks
26
+ 1. Run the rake taks
19
27
 
20
28
  $ RAILS_ENV=production bundle exec rake key_rotator:rotate
21
29
 
22
30
  Starting process:
23
31
  -> Copy config/credentials/production.key -> config/credentials/production.key.bak-2023-10-15-084335
24
32
  -> Copy config/credentials/production.yml.enc -> config/credentials/production.yml.enc.bak-2023-10-15-084335
25
- -> Writing 774ef137809953c633f03233d3ec5d35 to config/credentials/production.key
33
+ -> Writing the key "774ef137809953c633f03233d3ec5d35" to config/credentials/production.key
34
+ -> Writing the re-encrypted credentials to config/credentials/production.yml.enc
26
35
 
27
36
  Finished! The next steps are:
28
37
 
@@ -33,12 +42,11 @@ If bundler is not being used to manage dependencies, install the gem by executin
33
42
 
34
43
  This will backup current key / credentials, create a new key and saves encrypts the credentails w/ this new key for the current `RAILS_ENV`
35
44
 
45
+ 2. Deploying this variable as an env `RAILS_MASTER_KEY_NEW`
36
46
 
37
- 2. Deploying this variable as an env `RAILS_MASTER_KEY_NEW`
47
+ 3. Commit and deploy new encrypted file.
38
48
 
39
- 3. Commit and deploy new encrypted file.
40
-
41
- 4. After a while when everything is back in sync replace `RAILS_MASTER_KEY` w/ the new key and delete `RAILS_MASTER_KEY_NEW`
49
+ 4. After a while when everything is back in sync replace `RAILS_MASTER_KEY` w/ the new key and delete `RAILS_MASTER_KEY_NEW`
42
50
 
43
51
  ## Process
44
52
 
@@ -50,14 +58,12 @@ When we've defined `RAILS_MASTER_KEY_NEW` it means we are rotating the encryptio
50
58
 
51
59
  3. If not, we will fallback to the old key, thus leave `RAILS_MASTER_KEY` alone
52
60
 
53
- See: https://www.reddit.com/r/rails/comments/x4sujc/deploying_a_rotated_credentials_key_without/
54
-
55
-
56
61
  ## Development
57
62
 
58
63
  This project uses docker and [dip](https://github.com/bibendi/dip), a.k.a. the _Docker Interaction Program._
59
64
 
60
65
  To use it:
66
+
61
67
  ```shell
62
68
  gem install dip
63
69
  dip provision
@@ -77,3 +83,8 @@ The gem is available as open source under the terms of the [MIT License](https:/
77
83
  ## Code of Conduct
78
84
 
79
85
  Everyone interacting in the RailsKeyRotator project's codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/LeipeLeon/rails_key_rotator/blob/master/CODE_OF_CONDUCT.md).
86
+
87
+ ## Thanks to:
88
+
89
+ - The fine folks of [kerkdienstgemist.nl](https://github.com/kdgm) allowed me to extract the basics from their sourcecode.
90
+ - The [original inspirator](https://www.reddit.com/user/abuisman/) after some googling: <https://www.reddit.com/r/rails/comments/x4sujc/deploying_a_rotated_credentials_key_without/>
@@ -4,8 +4,8 @@ require "rails"
4
4
 
5
5
  module RailsKeyRotator
6
6
  class Railtie < Rails::Railtie
7
- config.before_initialize do
8
- KeyRotator.rotated?
7
+ config.before_configuration do
8
+ RailsKeyRotator.rotated?
9
9
  end
10
10
  rake_tasks do
11
11
  load "tasks/key_rotator.rake"
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module RailsKeyRotator
4
- VERSION = "0.2.2"
4
+ VERSION = "0.2.4"
5
5
  end
@@ -27,8 +27,8 @@ module RailsKeyRotator
27
27
  def rotate
28
28
  puts "Starting process:"
29
29
  decrypted = read(credentials_path) # Decrypt current credentials
30
- backup_file(key_path) # Backup key
31
30
  backup_file(credentials_path) # Backup credentials
31
+ backup_file(key_path) # Backup key
32
32
  write_key # Save new key
33
33
  write_credentials(decrypted) # Save new credentials
34
34
  puts <<~PROCEDURE
@@ -89,6 +89,7 @@ module RailsKeyRotator
89
89
  end
90
90
 
91
91
  def backup_file(original)
92
+ raise "File does not exist: #{original}" unless File.exist?(original)
92
93
  say "Copy #{original} -> #{original}.bak-#{date}"
93
94
  FileUtils.mv(original, "#{original}.bak-#{date}")
94
95
  end
@@ -97,12 +98,13 @@ module RailsKeyRotator
97
98
  ActiveSupport::EncryptedConfiguration.new(
98
99
  config_path: credentials_path,
99
100
  key_path: key_path,
100
- env_key: "",
101
+ env_key: "RAILS_MASTER_KEY",
101
102
  raise_if_missing_key: true
102
103
  ).read
103
104
  end
104
105
 
105
106
  def write_credentials(contents) # the new configuration
107
+ say "Writing the re-encrypted credentials to #{credentials_path}"
106
108
  ActiveSupport::EncryptedConfiguration.new(
107
109
  config_path: credentials_path,
108
110
  key_path: key_path,
@@ -112,7 +114,7 @@ module RailsKeyRotator
112
114
  end
113
115
 
114
116
  def write_key
115
- say "Writing #{new_key} to #{key_path}"
117
+ say %(Writing the key "#{new_key}" to #{key_path})
116
118
  File.write(key_path, new_key)
117
119
  end
118
120
  end
@@ -1,5 +1,3 @@
1
- # frozen_string_literal: true
2
-
3
1
  require_relative "lib/rails_key_rotator/version"
4
2
 
5
3
  Gem::Specification.new do |spec|
@@ -10,7 +8,7 @@ Gem::Specification.new do |spec|
10
8
 
11
9
  spec.summary = "Rotate your RAILS_MASTER_KEY with ease"
12
10
  # spec.description = "TODO: Write a longer description or delete this line."
13
- spec.homepage = "https://www.wendbaar.nl"
11
+ spec.homepage = "https://github.com/LeipeLeon/rails_key_rotator"
14
12
  spec.license = "MIT"
15
13
  spec.required_ruby_version = ">= 2.6.0"
16
14
 
@@ -18,8 +16,8 @@ Gem::Specification.new do |spec|
18
16
 
19
17
  spec.metadata["rubygems_mfa_required"] = "true"
20
18
  spec.metadata["homepage_uri"] = spec.homepage
21
- spec.metadata["source_code_uri"] = "https://github.com/LeipeLeon/rails_key_rotator"
22
- spec.metadata["changelog_uri"] = "https://github.com/LeipeLeon/rails_key_rotator/CHANGELOG.md"
19
+ spec.metadata["source_code_uri"] = spec.homepage
20
+ spec.metadata["changelog_uri"] = "#{spec.homepage}/blob/main/CHANGELOG.md"
23
21
 
24
22
  # Specify which files should be added to the gem when it is released.
25
23
  # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rails_key_rotator
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.2.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Leon Berenschot
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-10-16 00:00:00.000000000 Z
11
+ date: 2023-10-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -61,14 +61,14 @@ files:
61
61
  - lib/tasks/key_rotator.rake
62
62
  - rails_key_rotator.gemspec
63
63
  - sig/rails_key_rotator.rbs
64
- homepage: https://www.wendbaar.nl
64
+ homepage: https://github.com/LeipeLeon/rails_key_rotator
65
65
  licenses:
66
66
  - MIT
67
67
  metadata:
68
68
  rubygems_mfa_required: 'true'
69
- homepage_uri: https://www.wendbaar.nl
69
+ homepage_uri: https://github.com/LeipeLeon/rails_key_rotator
70
70
  source_code_uri: https://github.com/LeipeLeon/rails_key_rotator
71
- changelog_uri: https://github.com/LeipeLeon/rails_key_rotator/CHANGELOG.md
71
+ changelog_uri: https://github.com/LeipeLeon/rails_key_rotator/blob/main/CHANGELOG.md
72
72
  post_install_message:
73
73
  rdoc_options: []
74
74
  require_paths: