settings_reader-vault_resolver 0.5.0 → 0.6.1
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/.github/workflows/main.yml +14 -19
- data/.rubocop.yml +1 -1
- data/.simplecov +0 -2
- data/.tool-versions +1 -0
- data/Gemfile +0 -1
- data/Gemfile.lock +25 -18
- data/lib/settings_reader/vault_resolver/configuration.rb +6 -1
- data/lib/settings_reader/vault_resolver/engines/abstract.rb +12 -2
- data/lib/settings_reader/vault_resolver/instance.rb +1 -2
- data/lib/settings_reader/vault_resolver/version.rb +1 -1
- metadata +6 -6
- data/codecov.yml +0 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1a4f83916758232ddc5e3b36f6cc9ea25b813cd5bc69fb0f4a71d5b651a07ddf
|
4
|
+
data.tar.gz: baa1b66b38f6d2b41bcf11fcf230613740a67a6cf78d68db531ff6a5960f8b0f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3d44012714aed2cb366128221b4764c5b260ff6dadb0548de267b30663864f0c2bc0e0d5e6848576b2791672001fdb81c88f18846dcd6cad1b498fe009ee6c53
|
7
|
+
data.tar.gz: 05ffe659944dbc215264ad3097f64a54a481f9943c9b7cee500281af806246727df9292cf29c6a10481f6049bbf0d174d0ab5165b19b946999eb044bbc0bd088
|
data/.github/workflows/main.yml
CHANGED
@@ -63,24 +63,22 @@ jobs:
|
|
63
63
|
|
64
64
|
- name: Start Dependencies
|
65
65
|
run: |
|
66
|
-
docker
|
66
|
+
docker compose up -d
|
67
67
|
echo "Waiting 15 seconds for initial configuraiton"
|
68
68
|
sleep 15
|
69
69
|
|
70
70
|
- name: Run specs
|
71
|
-
env:
|
72
|
-
COVERAGE: true
|
73
71
|
run: bundle exec rspec
|
74
72
|
|
75
|
-
- name: Upload coverage
|
76
|
-
env:
|
77
|
-
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
|
78
|
-
run: bash <(curl -s https://codecov.io/bash)
|
79
|
-
|
80
73
|
release:
|
81
74
|
runs-on: ubuntu-latest
|
82
75
|
needs: build
|
83
|
-
if: github.event_name == 'release' && github.event.action == 'published'
|
76
|
+
# if: github.event_name == 'release' && github.event.action == 'published'
|
77
|
+
|
78
|
+
permissions:
|
79
|
+
# contents: write
|
80
|
+
id-token: write
|
81
|
+
|
84
82
|
steps:
|
85
83
|
- name: Checkout
|
86
84
|
uses: actions/checkout@v3
|
@@ -90,19 +88,16 @@ jobs:
|
|
90
88
|
with:
|
91
89
|
ruby-version: 2.7
|
92
90
|
bundler-cache: true
|
93
|
-
- name: Set up credentials
|
94
|
-
run: |
|
95
|
-
mkdir -p $HOME/.gem
|
96
|
-
touch $HOME/.gem/credentials
|
97
|
-
chmod 0600 $HOME/.gem/credentials
|
98
|
-
printf -- "---\n:rubygems_api_key: ${{secrets.RUBYGEMS_AUTH_TOKEN}}\n" > $HOME/.gem/credentials
|
99
91
|
|
100
|
-
|
101
|
-
|
92
|
+
|
93
|
+
# - name: Get version
|
94
|
+
# run: echo "${GITHUB_REF/refs\/tags\//}" > release.tag
|
102
95
|
- name: Set version
|
103
|
-
run: sed -i "s/0.0.0
|
96
|
+
run: sed -i "s/0.0.0/0.6.1/g" $(find . -name "version.rb")
|
97
|
+
|
98
|
+
- uses: rubygems/configure-rubygems-credentials@v1.0.0
|
104
99
|
|
105
100
|
- name: Build gem
|
106
101
|
run: gem build *.gemspec
|
107
102
|
- name: Push gem
|
108
|
-
run: gem push *.gem
|
103
|
+
run: gem push *.gem
|
data/.rubocop.yml
CHANGED
data/.simplecov
CHANGED
data/.tool-versions
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
ruby 3.3.8
|
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -9,22 +9,25 @@ PATH
|
|
9
9
|
GEM
|
10
10
|
remote: https://rubygems.org/
|
11
11
|
specs:
|
12
|
-
ast (2.4.
|
12
|
+
ast (2.4.3)
|
13
13
|
aws-eventstream (1.2.0)
|
14
14
|
aws-sigv4 (1.4.0)
|
15
15
|
aws-eventstream (~> 1, >= 1.0.2)
|
16
|
-
codecov (0.6.0)
|
17
|
-
simplecov (>= 0.15, < 0.22)
|
18
16
|
concurrent-ruby (1.1.9)
|
19
17
|
diff-lcs (1.5.0)
|
20
18
|
docile (1.4.0)
|
21
|
-
|
22
|
-
|
19
|
+
json (2.13.2)
|
20
|
+
language_server-protocol (3.17.0.5)
|
21
|
+
lint_roller (1.1.0)
|
22
|
+
parallel (1.27.0)
|
23
|
+
parser (3.3.9.0)
|
23
24
|
ast (~> 2.4.1)
|
25
|
+
racc
|
26
|
+
prism (1.4.0)
|
27
|
+
racc (1.8.1)
|
24
28
|
rainbow (3.1.1)
|
25
29
|
rake (13.0.6)
|
26
|
-
regexp_parser (2.2
|
27
|
-
rexml (3.2.5)
|
30
|
+
regexp_parser (2.11.2)
|
28
31
|
rspec (3.10.0)
|
29
32
|
rspec-core (~> 3.10.0)
|
30
33
|
rspec-expectations (~> 3.10.0)
|
@@ -38,20 +41,23 @@ GEM
|
|
38
41
|
diff-lcs (>= 1.2.0, < 2.0)
|
39
42
|
rspec-support (~> 3.10.0)
|
40
43
|
rspec-support (3.10.3)
|
41
|
-
rubocop (1.
|
44
|
+
rubocop (1.80.2)
|
45
|
+
json (~> 2.3)
|
46
|
+
language_server-protocol (~> 3.17.0.2)
|
47
|
+
lint_roller (~> 1.1.0)
|
42
48
|
parallel (~> 1.10)
|
43
|
-
parser (>= 3.
|
49
|
+
parser (>= 3.3.0.2)
|
44
50
|
rainbow (>= 2.2.2, < 4.0)
|
45
|
-
regexp_parser (>=
|
46
|
-
|
47
|
-
rubocop-ast (>= 1.15.1, < 2.0)
|
51
|
+
regexp_parser (>= 2.9.3, < 3.0)
|
52
|
+
rubocop-ast (>= 1.46.0, < 2.0)
|
48
53
|
ruby-progressbar (~> 1.7)
|
49
|
-
unicode-display_width (>=
|
50
|
-
rubocop-ast (1.
|
51
|
-
parser (>= 3.
|
54
|
+
unicode-display_width (>= 2.4.0, < 4.0)
|
55
|
+
rubocop-ast (1.46.0)
|
56
|
+
parser (>= 3.3.7.2)
|
57
|
+
prism (~> 1.4)
|
52
58
|
rubocop-rspec (1.32.0)
|
53
59
|
rubocop (>= 0.60.0)
|
54
|
-
ruby-progressbar (1.
|
60
|
+
ruby-progressbar (1.13.0)
|
55
61
|
settings_reader (0.1.0)
|
56
62
|
simplecov (0.21.2)
|
57
63
|
docile (~> 1.1)
|
@@ -60,7 +66,9 @@ GEM
|
|
60
66
|
simplecov-html (0.12.3)
|
61
67
|
simplecov_json_formatter (0.1.4)
|
62
68
|
timecop (0.9.4)
|
63
|
-
unicode-display_width (2.
|
69
|
+
unicode-display_width (3.2.0)
|
70
|
+
unicode-emoji (~> 4.1)
|
71
|
+
unicode-emoji (4.1.0)
|
64
72
|
vault (0.16.0)
|
65
73
|
aws-sigv4
|
66
74
|
|
@@ -68,7 +76,6 @@ PLATFORMS
|
|
68
76
|
ruby
|
69
77
|
|
70
78
|
DEPENDENCIES
|
71
|
-
codecov
|
72
79
|
rake
|
73
80
|
rspec
|
74
81
|
rubocop
|
@@ -42,7 +42,11 @@ module SettingsReader
|
|
42
42
|
# Default: empty proc
|
43
43
|
attr_accessor :lease_not_found_handler
|
44
44
|
|
45
|
-
|
45
|
+
# Whether to raise error or return nil when secret or attribute is missing
|
46
|
+
# Default: false
|
47
|
+
attr_accessor :raise_error_on_missing_secret
|
48
|
+
|
49
|
+
def initialize # rubocop:disable Metrics/MethodLength
|
46
50
|
@logger = Logger.new($stdout, level: Logger::ERROR)
|
47
51
|
@retriable_errors = [OpenSSL::SSL::SSLError, Vault::HTTPConnectionError]
|
48
52
|
@retrieval_retries = 2
|
@@ -53,6 +57,7 @@ module SettingsReader
|
|
53
57
|
@lease_renew_success_listener = ->(_result) {}
|
54
58
|
@vault_initializer = -> {}
|
55
59
|
@lease_not_found_handler = ->(_entry) {}
|
60
|
+
@raise_error_on_missing_secret = false
|
56
61
|
end
|
57
62
|
|
58
63
|
def setup_lease_refresher(cache, previous_task = nil)
|
@@ -16,9 +16,11 @@ module SettingsReader
|
|
16
16
|
end
|
17
17
|
|
18
18
|
def get(address)
|
19
|
-
|
19
|
+
vault_secret = get_and_retry_auth(address)
|
20
|
+
entry = wrap_secret(address, vault_secret) if vault_secret
|
21
|
+
validate_secret!(entry, address) if config.raise_error_on_missing_secret
|
20
22
|
|
21
|
-
|
23
|
+
entry
|
22
24
|
rescue Vault::VaultError => e
|
23
25
|
raise SettingsReader::VaultResolver::Error, e.message
|
24
26
|
end
|
@@ -78,6 +80,14 @@ module SettingsReader
|
|
78
80
|
def auth_error?(error)
|
79
81
|
error.code == 403 || error.message =~ /token mac for token_version.*is incorrect/
|
80
82
|
end
|
83
|
+
|
84
|
+
def validate_secret!(entry, address)
|
85
|
+
secret_value = entry&.value_for(address.attribute)
|
86
|
+
return if secret_value && !secret_value.empty?
|
87
|
+
|
88
|
+
raise SettingsReader::VaultResolver::Error,
|
89
|
+
"Secret not found at #{address}. Secret data: #{entry&.secret&.to_h}"
|
90
|
+
end
|
81
91
|
end
|
82
92
|
end
|
83
93
|
end
|
@@ -7,7 +7,6 @@ module SettingsReader
|
|
7
7
|
include Logging
|
8
8
|
|
9
9
|
IDENTIFIER = 'vault://'.freeze
|
10
|
-
DATABASE_MOUNT = 'database'.freeze
|
11
10
|
|
12
11
|
attr_reader :config
|
13
12
|
|
@@ -22,7 +21,7 @@ module SettingsReader
|
|
22
21
|
value.start_with?(IDENTIFIER)
|
23
22
|
end
|
24
23
|
|
25
|
-
# Expect value in format `vault://mount/path/to/secret
|
24
|
+
# Expect value in format `vault://mount/path/to/secret#attribute_name`
|
26
25
|
def resolve(value, _path)
|
27
26
|
debug { "Resolving Vault secret at #{value}" }
|
28
27
|
address = SettingsReader::VaultResolver::Address.new(value)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: settings_reader-vault_resolver
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Volodymyr Mykhailyk
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2025-09-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: concurrent-ruby
|
@@ -68,6 +68,7 @@ files:
|
|
68
68
|
- ".rspec"
|
69
69
|
- ".rubocop.yml"
|
70
70
|
- ".simplecov"
|
71
|
+
- ".tool-versions"
|
71
72
|
- CHANGELOG.md
|
72
73
|
- CODE_OF_CONDUCT.md
|
73
74
|
- Gemfile
|
@@ -77,7 +78,6 @@ files:
|
|
77
78
|
- Rakefile
|
78
79
|
- bin/console
|
79
80
|
- bin/setup
|
80
|
-
- codecov.yml
|
81
81
|
- docker-compose.yml
|
82
82
|
- lib/settings_reader/vault_resolver.rb
|
83
83
|
- lib/settings_reader/vault_resolver/address.rb
|
@@ -104,7 +104,7 @@ metadata:
|
|
104
104
|
homepage_uri: https://github.com/matic-insurance/settings_reader-vault_resolver
|
105
105
|
source_code_uri: https://github.com/matic-insurance/settings_reader-vault_resolver
|
106
106
|
changelog_uri: https://github.com/matic-insurance/settings_reader-vault_resolver/blob/master/CHANGELOG.md
|
107
|
-
post_install_message:
|
107
|
+
post_install_message:
|
108
108
|
rdoc_options: []
|
109
109
|
require_paths:
|
110
110
|
- lib
|
@@ -120,7 +120,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
120
120
|
version: '0'
|
121
121
|
requirements: []
|
122
122
|
rubygems_version: 3.1.6
|
123
|
-
signing_key:
|
123
|
+
signing_key:
|
124
124
|
specification_version: 4
|
125
125
|
summary: Settings Reader plugin to resolve values using in Hashicorp Vault
|
126
126
|
test_files: []
|