conjur-api 5.2.0 → 5.3.3

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 (53) hide show
  1. checksums.yaml +4 -4
  2. data/.codeclimate.yml +10 -0
  3. data/.github/CODEOWNERS +10 -0
  4. data/.github/ISSUE_TEMPLATE/bug.md +42 -0
  5. data/.github/ISSUE_TEMPLATE/feature_request.md +27 -0
  6. data/.github/PULL_REQUEST_TEMPLATE.md +21 -0
  7. data/.gitignore +1 -0
  8. data/.gitleaks.toml +219 -0
  9. data/.overcommit.yml +16 -0
  10. data/.rubocop.yml +3 -0
  11. data/.rubocop_settings.yml +86 -0
  12. data/.rubocop_todo.yml +709 -0
  13. data/CHANGELOG.md +348 -173
  14. data/CONTRIBUTING.md +141 -0
  15. data/Gemfile +1 -1
  16. data/Jenkinsfile +27 -29
  17. data/LICENSE +202 -0
  18. data/README.md +19 -126
  19. data/SECURITY.md +42 -0
  20. data/bin/parse-changelog.sh +12 -0
  21. data/ci/codeclimate.dockerfile +6 -0
  22. data/conjur-api.gemspec +4 -1
  23. data/docker-compose.yml +2 -0
  24. data/features/authenticators.feature +33 -0
  25. data/features/support/env.rb +2 -0
  26. data/features/update_password.feature +2 -2
  27. data/features_v4/support/env.rb +2 -0
  28. data/lib/conjur-api/version.rb +1 -1
  29. data/lib/conjur/acts_as_role.rb +15 -19
  30. data/lib/conjur/api.rb +2 -0
  31. data/lib/conjur/api/authenticators.rb +35 -0
  32. data/lib/conjur/api/host_factories.rb +20 -19
  33. data/lib/conjur/{cast.rb → api/ldap_sync.rb} +14 -17
  34. data/lib/conjur/api/resources.rb +15 -19
  35. data/lib/conjur/api/router/v5.rb +39 -7
  36. data/lib/conjur/base_object.rb +18 -20
  37. data/lib/conjur/build_object.rb +19 -21
  38. data/lib/conjur/cert_utils.rb +16 -0
  39. data/lib/conjur/configuration.rb +2 -8
  40. data/lib/conjur/has_attributes.rb +6 -3
  41. data/lib/conjur/id.rb +22 -19
  42. data/lib/conjur/role_grant.rb +13 -18
  43. data/spec/api/host_factories_spec.rb +34 -0
  44. data/spec/base_object_spec.rb +14 -0
  45. data/spec/cert_utils_spec.rb +92 -0
  46. data/spec/id_spec.rb +29 -0
  47. data/spec/ldap_sync_spec.rb +21 -0
  48. data/spec/spec_helper.rb +3 -0
  49. data/spec/uri_escape_spec.rb +14 -2
  50. data/test.sh +23 -1
  51. metadata +34 -12
  52. data/LICENSE.md +0 -195
  53. data/spec/cast_spec.rb +0 -21
@@ -0,0 +1,42 @@
1
+ # Security Policies and Procedures
2
+
3
+ This document outlines security procedures and general policies for the CyberArk Conjur
4
+ suite of tools and products.
5
+
6
+ * [Reporting a Bug](#reporting-a-bug)
7
+ * [Disclosure Policy](#disclosure-policy)
8
+ * [Comments on this Policy](#comments-on-this-policy)
9
+
10
+ ## Reporting a Bug
11
+
12
+ The CyberArk Conjur team and community take all security bugs in the Conjur suite seriously.
13
+ Thank you for improving the security of the Conjur suite. We appreciate your efforts and
14
+ responsible disclosure and will make every effort to acknowledge your
15
+ contributions.
16
+
17
+ Report security bugs by emailing the lead maintainers at security@conjur.org.
18
+
19
+ The maintainers will acknowledge your email within 2 business days. Subsequently, we will
20
+ send a more detailed response within 2 business days of our acknowledgement indicating
21
+ the next steps in handling your report. After the initial reply to your report, the security
22
+ team will endeavor to keep you informed of the progress towards a fix and full
23
+ announcement, and may ask for additional information or guidance.
24
+
25
+ Report security bugs in third-party modules to the person or team maintaining
26
+ the module.
27
+
28
+ ## Disclosure Policy
29
+
30
+ When the security team receives a security bug report, they will assign it to a
31
+ primary handler. This person will coordinate the fix and release process,
32
+ involving the following steps:
33
+
34
+ * Confirm the problem and determine the affected versions.
35
+ * Audit code to find any potential similar problems.
36
+ * Prepare fixes for all releases still under maintenance. These fixes will be
37
+ released as fast as possible.
38
+
39
+ ## Comments on this Policy
40
+
41
+ If you have suggestions on how this process could be improved please submit a
42
+ pull request.
@@ -0,0 +1,12 @@
1
+ #!/bin/bash -ex
2
+
3
+ cd "$(dirname "$0")"
4
+
5
+ docker run --rm \
6
+ -v "$PWD/..:/work" \
7
+ -w "/work" \
8
+ ruby:2.5 bash -ec "
9
+ gem install -N parse_a_changelog
10
+ parse ./CHANGELOG.md
11
+ "
12
+
@@ -0,0 +1,6 @@
1
+ FROM alpine:3.11
2
+ RUN wget https://codeclimate.com/downloads/test-reporter/test-reporter-0.6.3-linux-amd64 -O /opt/cc-test-reporter
3
+ RUN chmod +x /opt/cc-test-reporter
4
+ RUN apk update && apk upgrade && apk add --no-cache git
5
+
6
+ ENTRYPOINT ["/opt/cc-test-reporter"]
@@ -18,10 +18,13 @@ Gem::Specification.new do |gem|
18
18
 
19
19
  gem.required_ruby_version = '>= 1.9'
20
20
 
21
+ # Filter out development only executables
22
+ gem.executables -= %w{parse-changelog.sh}
23
+
21
24
  gem.add_dependency 'rest-client'
22
25
  gem.add_dependency 'activesupport'
23
26
 
24
- gem.add_development_dependency 'rake', '~> 10.0'
27
+ gem.add_development_dependency 'rake', '>= 12.3.3'
25
28
  gem.add_development_dependency 'rspec', '~> 3'
26
29
  gem.add_development_dependency 'rspec-expectations', '~> 3.4'
27
30
  gem.add_development_dependency 'json_spec'
@@ -27,6 +27,7 @@ services:
27
27
  volumes:
28
28
  - ./spec/reports:/src/conjur-api/spec/reports
29
29
  - ./features/reports:/src/conjur-api/features/reports
30
+ - ./coverage:/src/conjur-api/coverage
30
31
  - authn_local_5:/run/authn-local-5
31
32
  environment:
32
33
  CONJUR_APPLIANCE_URL: http://conjur_5
@@ -38,6 +39,7 @@ services:
38
39
  volumes:
39
40
  - ./features_v4/reports:/src/conjur-api/features_v4/reports
40
41
  - ./tmp/conjur.pem:/src/conjur-api/tmp/conjur.pem
42
+ - ./coverage_v4:/src/conjur-api/coverage
41
43
  - authn_local_4:/run/authn-local-4
42
44
  environment:
43
45
  CONJUR_APPLIANCE_URL: https://conjur_4/api
@@ -0,0 +1,33 @@
1
+ Feature: List and manage authenticators
2
+
3
+ Background:
4
+ Given I run the code:
5
+ """
6
+ $conjur.load_policy 'root', <<-POLICY
7
+ - !webservice conjur/authn-k8s/my-auth
8
+ POLICY
9
+ """
10
+
11
+ Scenario: Authenticator list includes the authenticator status
12
+ When I run the code:
13
+ """
14
+ $conjur.authenticator_list
15
+ """
16
+ Then the JSON should have "installed"
17
+ And the JSON should have "configured"
18
+ And the JSON should have "enabled"
19
+ And the JSON at "enabled" should be ["authn"]
20
+
21
+ Scenario: Enable and disable authenticator
22
+ When I run the code:
23
+ """
24
+ $conjur.authenticator_enable("authn-k8s", "my-auth")
25
+ $conjur.authenticator_list
26
+ """
27
+ Then the JSON at "enabled" should be ["authn", "authn-k8s/my-auth"]
28
+ When I run the code:
29
+ """
30
+ $conjur.authenticator_disable("authn-k8s", "my-auth")
31
+ $conjur.authenticator_list
32
+ """
33
+ Then the JSON at "enabled" should be ["authn"]
@@ -1,5 +1,7 @@
1
1
  require 'simplecov'
2
+ require 'simplecov-cobertura'
2
3
 
4
+ SimpleCov.formatter = SimpleCov::Formatter::CoberturaFormatter
3
5
  SimpleCov.start
4
6
 
5
7
  require 'json_spec/cucumber'
@@ -5,8 +5,8 @@ Feature: Change a user's password.
5
5
  Scenario: A user can set/change her password using the current API key.
6
6
  When I run the code:
7
7
  """
8
- Conjur::API.update_password @user_id, @user_api_key, 'secret'
9
- @new_api_key = Conjur::API.login @user_id, 'secret'
8
+ Conjur::API.update_password @user_id, @user_api_key, 'SEcret12!!!!'
9
+ @new_api_key = Conjur::API.login @user_id, 'SEcret12!!!!'
10
10
  """
11
11
  Then I can run the code:
12
12
  """
@@ -1,5 +1,7 @@
1
1
  require 'simplecov'
2
+ require 'simplecov-cobertura'
2
3
 
4
+ SimpleCov.formatter = SimpleCov::Formatter::CoberturaFormatter
3
5
  SimpleCov.start
4
6
 
5
7
  require 'json_spec/cucumber'
@@ -19,6 +19,6 @@
19
19
 
20
20
  module Conjur
21
21
  class API
22
- VERSION = "5.2.0"
22
+ VERSION = "5.3.3"
23
23
  end
24
24
  end
@@ -1,23 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Copyright 2013-2018 CyberArk Ltd.
1
4
  #
2
- # Copyright 2013-2017 Conjur Inc
3
- #
4
- # Permission is hereby granted, free of charge, to any person obtaining a copy of
5
- # this software and associated documentation files (the "Software"), to deal in
6
- # the Software without restriction, including without limitation the rights to
7
- # use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
8
- # the Software, and to permit persons to whom the Software is furnished to do so,
9
- # subject to the following conditions:
10
- #
11
- # The above copyright notice and this permission notice shall be included in all
12
- # copies or substantial portions of the Software.
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
13
8
  #
14
- # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
- # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
16
- # FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
17
- # COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
18
- # IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
19
- # CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
9
+ # http://www.apache.org/licenses/LICENSE-2.0
20
10
  #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+
21
17
  module Conjur
22
18
 
23
19
  # This module provides methods for things that have an associated {Conjur::Role}.
@@ -100,7 +96,7 @@ module Conjur
100
96
  end
101
97
  if filter = options.delete(:filter)
102
98
  filter = [filter] unless filter.is_a?(Array)
103
- options["filter"] = filter.map{ |obj| cast_to_id(obj) }
99
+ options["filter"] = filter.map(&Id.method(:new))
104
100
  end
105
101
 
106
102
  result = JSON.parse(rbac_role_resource[options_querystring options].get)
@@ -143,4 +139,4 @@ module Conjur
143
139
  url_for(:roles_role, credentials, id)
144
140
  end
145
141
  end
146
- end
142
+ end
@@ -34,6 +34,7 @@ require 'conjur/acts_as_rolsource'
34
34
  require 'conjur/acts_as_user'
35
35
  require 'conjur/log_source'
36
36
  require 'conjur/has_attributes'
37
+ require 'conjur/api/authenticators'
37
38
  require 'conjur/api/authn'
38
39
  require 'conjur/api/roles'
39
40
  require 'conjur/api/resources'
@@ -41,6 +42,7 @@ require 'conjur/api/pubkeys'
41
42
  require 'conjur/api/variables'
42
43
  require 'conjur/api/policies'
43
44
  require 'conjur/api/host_factories'
45
+ require 'conjur/api/ldap_sync'
44
46
  require 'conjur/host'
45
47
  require 'conjur/group'
46
48
  require 'conjur/variable'
@@ -0,0 +1,35 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'conjur/webservice'
4
+
5
+ module Conjur
6
+ # API contains each of the methods for access the Conjur API endpoints
7
+ #-- :reek:DataClump for authenticator identifier fields (name, id, account)
8
+ class API
9
+ # @!group Authenticators
10
+
11
+ # List all configured authenticators
12
+ def authenticator_list
13
+ JSON.parse(url_for(:authenticators).get)
14
+ end
15
+
16
+ # Enables an authenticator in Conjur. The authenticator must be defined and
17
+ # loaded in Conjur policy prior to enabling it.
18
+ #
19
+ # @param [String] authenticator the authenticator type to enable (e.g. authn-k8s)
20
+ # @param [String] id the service ID of the authenticator to enable
21
+ def authenticator_enable authenticator, id, account: Conjur.configuration.account
22
+ url_for(:authenticator, account, authenticator, id, credentials).patch(enabled: true)
23
+ end
24
+
25
+ # Disables an authenticator in Conjur.
26
+ #
27
+ # @param [String] authenticator the authenticator type to disable (e.g. authn-k8s)
28
+ # @param [String] id the service ID of the authenticator to disable
29
+ def authenticator_disable authenticator, id, account: Conjur.configuration.account
30
+ url_for(:authenticator, account, authenticator, id, credentials).patch(enabled: false)
31
+ end
32
+
33
+ # @!endgroup
34
+ end
35
+ end
@@ -1,23 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Copyright 2013-2018 CyberArk Ltd.
1
4
  #
2
- # Copyright 2013-2017 Conjur Inc
3
- #
4
- # Permission is hereby granted, free of charge, to any person obtaining a copy of
5
- # this software and associated documentation files (the "Software"), to deal in
6
- # the Software without restriction, including without limitation the rights to
7
- # use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
8
- # the Software, and to permit persons to whom the Software is furnished to do so,
9
- # subject to the following conditions:
10
- #
11
- # The above copyright notice and this permission notice shall be included in all
12
- # copies or substantial portions of the Software.
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
13
8
  #
14
- # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
- # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
16
- # FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
17
- # COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
18
- # IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
19
- # CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
9
+ # http://www.apache.org/licenses/LICENSE-2.0
20
10
  #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+
21
17
  require 'conjur/host_factory'
22
18
 
23
19
  module Conjur
@@ -40,9 +36,14 @@ module Conjur
40
36
  # @return [Host]
41
37
  def host_factory_create_host token, id, options = {}
42
38
  token = token.token if token.is_a?(HostFactoryToken)
43
- response = url_for(:host_factory_create_host, token).post(options.merge(id: id)).body
39
+ response = url_for(:host_factory_create_host, token)
40
+ .post(options.merge(id: id)).body
41
+
44
42
  attributes = JSON.parse(response)
45
- Host.new(attributes['id'], {}).tap do |host|
43
+ # in v4 'id' is just the identifier
44
+ host_id = attributes['roleid'] || attributes['id']
45
+
46
+ Host.new(host_id, {}).tap do |host|
46
47
  host.attributes = attributes
47
48
  end
48
49
  end
@@ -1,5 +1,5 @@
1
1
  #
2
- # Copyright 2013-2017 Conjur Inc
2
+ # Copyright 2013-2018 Conjur Inc
3
3
  #
4
4
  # Permission is hereby granted, free of charge, to any person obtaining a copy of
5
5
  # this software and associated documentation files (the "Software"), to deal in
@@ -20,22 +20,19 @@
20
20
  #
21
21
 
22
22
  module Conjur
23
- module Cast
24
- protected
25
-
26
- # Convert a value to a role or resource identifier.
23
+ class API
24
+
25
+ # Retrieve the policy for the given LDAP sync
26
+ # configuration. Configurations created through the Conjur UI are
27
+ # named +default+, so the default value of +config_name+ can be
28
+ # used.
29
+ #
30
+ # For details on the use of LDAP sync, see
31
+ # https://developer.conjur.net/reference/services/ldap_sync/ .
27
32
  #
28
- # @param obj the value to cast
29
- def cast_to_id obj
30
- result =if obj.is_a?(String) || obj.is_a?(Id)
31
- obj
32
- elsif obj.is_a?(Array)
33
- obj.join(':')
34
- else
35
- raise "I don't know how to cast a #{obj.class} to an id"
36
- end
37
- result = Id.new(result) unless result.is_a?(Id)
38
- result
33
+ # @param [String] config_name the name of the LDAP sync configuration.
34
+ def ldap_sync_policy config_name: 'default'
35
+ JSON.parse(url_for(:ldap_sync_policy, credentials, config_name).get)
39
36
  end
40
37
  end
41
- end
38
+ end
@@ -1,23 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Copyright 2013-2018 CyberArk Ltd.
1
4
  #
2
- # Copyright 2013-2017 Conjur Inc
3
- #
4
- # Permission is hereby granted, free of charge, to any person obtaining a copy of
5
- # this software and associated documentation files (the "Software"), to deal in
6
- # the Software without restriction, including without limitation the rights to
7
- # use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
8
- # the Software, and to permit persons to whom the Software is furnished to do so,
9
- # subject to the following conditions:
10
- #
11
- # The above copyright notice and this permission notice shall be included in all
12
- # copies or substantial portions of the Software.
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
13
8
  #
14
- # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
- # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
16
- # FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
17
- # COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
18
- # IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
19
- # CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
9
+ # http://www.apache.org/licenses/LICENSE-2.0
20
10
  #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+
21
17
  require 'conjur/resource'
22
18
 
23
19
  module Conjur
@@ -27,8 +23,8 @@ module Conjur
27
23
 
28
24
  #@!group Resources
29
25
 
30
- # Find a resource by it's id. The id given to this method must be qualified by a kind, but the account is
31
- # optional.
26
+ # Find a resource by its id.
27
+ # @note The id given to this method must be fully qualified.
32
28
  #
33
29
  # ### Permissions
34
30
  #
@@ -1,10 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Copyright 2017-2018 CyberArk Ltd.
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+
17
+ # rubocop:disable Metrics/ModuleLength
1
18
  module Conjur
2
19
  class API
3
20
  module Router
21
+ # V5 translates method arguments to rest-ful API request parameters.
22
+ # because of this, most of the methods suffer from :reek:LongParameterList:
23
+ # and :reek:UtilityFunction:
4
24
  module V5
5
25
  extend Conjur::Escape::ClassMethods
6
26
  extend Conjur::QueryString
7
- extend Conjur::Cast
8
27
  extend self
9
28
 
10
29
  def authn_login account, username, password
@@ -15,6 +34,14 @@ module Conjur
15
34
  RestClient::Resource.new(Conjur.configuration.authn_url)[fully_escape account][fully_escape username]['authenticate']
16
35
  end
17
36
 
37
+ def authenticator account, authenticator, service_id, credentials
38
+ RestClient::Resource.new(Conjur.configuration.core_url, credentials)[fully_escape authenticator][fully_escape service_id][fully_escape account]
39
+ end
40
+
41
+ def authenticators
42
+ RestClient::Resource.new(Conjur.configuration.core_url)['authenticators']
43
+ end
44
+
18
45
  # For v5, the authn-local message is a JSON string with account, sub, and optional fields.
19
46
  def authn_authenticate_local username, account, expiration, cidr, &block
20
47
  { account: account, sub: username }.tap do |params|
@@ -28,7 +55,7 @@ module Conjur
28
55
  end
29
56
 
30
57
  def authn_rotate_api_key credentials, account, id
31
- RestClient::Resource.new(Conjur.configuration.core_url, credentials)['authn'][path_escape account]["api_key?role=#{id}"]
58
+ RestClient::Resource.new(Conjur.configuration.core_url, credentials)['authn'][fully_escape account]["api_key?role=#{id}"]
32
59
  end
33
60
 
34
61
  def authn_rotate_own_api_key account, username, password
@@ -51,18 +78,18 @@ module Conjur
51
78
  end
52
79
 
53
80
  def policies_load_policy credentials, account, id
54
- RestClient::Resource.new(Conjur.configuration.core_url, credentials)['policies'][path_escape account]['policy'][path_escape id]
81
+ RestClient::Resource.new(Conjur.configuration.core_url, credentials)['policies'][fully_escape account]['policy'][fully_escape id]
55
82
  end
56
83
 
57
84
  def public_keys_for_user account, username
58
- RestClient::Resource.new(Conjur.configuration.core_url)['public_keys'][fully_escape account]['user'][path_escape username]
85
+ RestClient::Resource.new(Conjur.configuration.core_url)['public_keys'][fully_escape account]['user'][fully_escape username]
59
86
  end
60
87
 
61
88
  def resources credentials, account, kind, options
62
89
  credentials ||= {}
63
90
 
64
- path = "/resources/#{path_escape account}"
65
- path += "/#{path_escape kind}" if kind
91
+ path = "/resources/#{fully_escape account}"
92
+ path += "/#{fully_escape kind}" if kind
66
93
 
67
94
  RestClient::Resource.new(Conjur.configuration.core_url, credentials)[path][options_querystring options]
68
95
  end
@@ -82,7 +109,7 @@ module Conjur
82
109
  options = {}
83
110
  options[:check] = true
84
111
  options[:privilege] = privilege
85
- options[:role] = path_escape(cast_to_id(role)) if role
112
+ options[:role] = query_escape(Id.new(role)) if role
86
113
  resources_resource(credentials, id)[options_querystring options].get
87
114
  end
88
115
 
@@ -139,6 +166,10 @@ module Conjur
139
166
  end
140
167
  end
141
168
 
169
+ def ldap_sync_policy(credentials, config_name)
170
+ RestClient::Resource.new(Conjur.configuration.core_url, credentials)['ldap-sync']["policy?config_name=#{fully_escape(config_name)}"]
171
+ end
172
+
142
173
  private
143
174
 
144
175
  def resource_annotations resource
@@ -148,3 +179,4 @@ module Conjur
148
179
  end
149
180
  end
150
181
  end
182
+ # rubocop:enable Metrics/ModuleLength