oso-cloud 1.4.0.dev.1 → 1.4.0.dev.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.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -27
- data/lib/oso/api.rb +6 -64
- data/lib/oso/oso.rb +3 -38
- data/lib/oso/version.rb +1 -1
- data/oso-cloud.gemspec +0 -4
- metadata +2 -44
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 19949c28883d1f93bb356398c58d7bf7eff4846c518f4555fe7aa9ac58d5bda6
|
4
|
+
data.tar.gz: 7191bcd23b76ee1bf649de8121275f8bb893c34272fe78fa732a10e97bbaba39
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 521880120751ab6bc7f22403b5b182b5e43d1c00ccfca4f53aba279b471ebe858ac0cc36d4ac95a7c3ffb2a8e6405764ae60989e617c56377028dd45a3349fb9
|
7
|
+
data.tar.gz: 07e1aafd27d027a5f3d20ed095df62b5cd8f27fa39b50d6d340a87f6bab305e6138ac0d11bc48e41963ef6b4ec592119769a04d08877f7d7fa20f61ab14c358d
|
data/Gemfile.lock
CHANGED
@@ -1,22 +1,15 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
oso-cloud (1.4.0.dev.
|
4
|
+
oso-cloud (1.4.0.dev.2)
|
5
5
|
faraday (~> 2.5.2)
|
6
6
|
faraday-net_http_persistent (~> 2.0)
|
7
7
|
faraday-retry (~> 2.0.0)
|
8
|
-
faraday-typhoeus (~> 1.0.0)
|
9
8
|
|
10
9
|
GEM
|
11
10
|
remote: https://rubygems.org/
|
12
11
|
specs:
|
13
|
-
binding_of_caller (1.0.0)
|
14
|
-
debug_inspector (>= 0.0.1)
|
15
|
-
coderay (1.1.3)
|
16
12
|
connection_pool (2.4.1)
|
17
|
-
debug_inspector (1.1.0)
|
18
|
-
ethon (0.16.0)
|
19
|
-
ffi (>= 1.15.0)
|
20
13
|
faraday (2.5.2)
|
21
14
|
faraday-net_http (>= 2.0, < 3.1)
|
22
15
|
ruby2_keywords (>= 0.0.4)
|
@@ -26,28 +19,11 @@ GEM
|
|
26
19
|
net-http-persistent (~> 4.0)
|
27
20
|
faraday-retry (2.0.0)
|
28
21
|
faraday (~> 2.0)
|
29
|
-
faraday-typhoeus (1.0.0)
|
30
|
-
faraday (~> 2.0)
|
31
|
-
typhoeus (~> 1.4)
|
32
|
-
ffi (1.16.3)
|
33
|
-
interception (0.5)
|
34
|
-
method_source (1.0.0)
|
35
22
|
minitest (5.18.0)
|
36
23
|
net-http-persistent (4.0.2)
|
37
24
|
connection_pool (~> 2.2)
|
38
|
-
pry (0.14.2)
|
39
|
-
coderay (~> 1.1)
|
40
|
-
method_source (~> 1.0)
|
41
|
-
pry-rescue (1.5.2)
|
42
|
-
interception (>= 0.5)
|
43
|
-
pry (>= 0.12.0)
|
44
|
-
pry-stack_explorer (0.6.1)
|
45
|
-
binding_of_caller (~> 1.0)
|
46
|
-
pry (~> 0.13)
|
47
25
|
rake (12.3.3)
|
48
26
|
ruby2_keywords (0.0.5)
|
49
|
-
typhoeus (1.4.0)
|
50
|
-
ethon (>= 0.9.0)
|
51
27
|
|
52
28
|
PLATFORMS
|
53
29
|
ruby
|
@@ -55,8 +31,6 @@ PLATFORMS
|
|
55
31
|
DEPENDENCIES
|
56
32
|
minitest (~> 5.15)
|
57
33
|
oso-cloud!
|
58
|
-
pry-rescue
|
59
|
-
pry-stack_explorer
|
60
34
|
rake (~> 12.0)
|
61
35
|
|
62
36
|
BUNDLED WITH
|
data/lib/oso/api.rb
CHANGED
@@ -2,7 +2,6 @@ require 'json'
|
|
2
2
|
require 'uri'
|
3
3
|
require 'faraday'
|
4
4
|
require 'faraday/retry'
|
5
|
-
require 'faraday/typhoeus'
|
6
5
|
require 'faraday/net_http_persistent'
|
7
6
|
|
8
7
|
require 'oso/helpers'
|
@@ -203,21 +202,11 @@ module OsoCloud
|
|
203
202
|
end
|
204
203
|
end
|
205
204
|
|
206
|
-
class OsoAdapter < Faraday::Adapter::Typhoeus
|
207
|
-
@@max_concurrency = 20
|
208
|
-
|
209
|
-
def self.setup_parallel_manager(options = {})
|
210
|
-
options[:max_concurrency] = @@max_concurrency
|
211
|
-
::Typhoeus::Hydra.new(options)
|
212
|
-
end
|
213
|
-
end
|
214
|
-
|
215
|
-
Faraday::Adapter.register_middleware(oso_http: OsoAdapter)
|
216
|
-
|
217
205
|
# @!visibility private
|
218
206
|
class Api
|
219
|
-
def
|
220
|
-
|
207
|
+
def initialize(url: 'https://api.osohq.com', api_key: nil, options: nil)
|
208
|
+
@url = url
|
209
|
+
@connection = Faraday.new(url: url) do |faraday|
|
221
210
|
faraday.request :json
|
222
211
|
|
223
212
|
# responses are processed in reverse order; this stack implies the
|
@@ -225,7 +214,6 @@ module OsoCloud
|
|
225
214
|
# parser is only applied if there are no errors
|
226
215
|
faraday.response :json, parser_options: { symbolize_names: true }
|
227
216
|
faraday.response :raise_error
|
228
|
-
# faraday.response :logger
|
229
217
|
faraday.request :retry, {
|
230
218
|
max: (options && options[:max_retries]) || 10,
|
231
219
|
interval: 0.01,
|
@@ -243,7 +231,7 @@ module OsoCloud
|
|
243
231
|
/api/actions
|
244
232
|
/api/query
|
245
233
|
].include? env.url.path
|
246
|
-
}
|
234
|
+
}
|
247
235
|
}
|
248
236
|
|
249
237
|
if options && options[:test_adapter]
|
@@ -258,21 +246,10 @@ module OsoCloud
|
|
258
246
|
options[:test_adapter][:func].call
|
259
247
|
end
|
260
248
|
end
|
261
|
-
elsif options && options[:parallel_adapter]
|
262
|
-
if options[:max_concurrency]
|
263
|
-
OsoAdapter.class_variable_set(:@@max_concurrency, options[:max_concurrency])
|
264
|
-
end
|
265
|
-
faraday.adapter :oso_http, forbid_reuse: false, maxredirs: 1, connecttimeout: 30
|
266
249
|
else
|
267
|
-
faraday.adapter :net_http_persistent, pool_size: 10
|
250
|
+
faraday.adapter :net_http_persistent, pool_size: 10
|
268
251
|
end
|
269
252
|
end
|
270
|
-
end
|
271
|
-
|
272
|
-
def initialize(url: 'https://api.osohq.com', api_key: nil, options: {})
|
273
|
-
@url = url
|
274
|
-
@connection = get_connection(options: options)
|
275
|
-
@parallel_connection = get_connection(options: { parallel_adapter: true, max_concurrency: options[:max_concurrency] })
|
276
253
|
|
277
254
|
if options && options[:fallback_url]
|
278
255
|
@fallback_connection = Faraday.new(url: options[:fallback_url]) do |faraday|
|
@@ -361,12 +338,6 @@ module OsoCloud
|
|
361
338
|
ActionsResult.new(**result)
|
362
339
|
end
|
363
340
|
|
364
|
-
def post_actions_batch(batch_data)
|
365
|
-
url = '/actions'
|
366
|
-
results = POST_BATCH(url, nil, batch_data, false)
|
367
|
-
results.map { |result| ActionsResult.new(**result.body) }
|
368
|
-
end
|
369
|
-
|
370
341
|
def post_bulk_actions(data)
|
371
342
|
url = '/bulk_actions'
|
372
343
|
results = POST(url, nil, data, false)
|
@@ -442,36 +413,6 @@ module OsoCloud
|
|
442
413
|
handle_faraday_error e
|
443
414
|
end
|
444
415
|
|
445
|
-
def POST_BATCH(path, params, body_array, isMutation)
|
446
|
-
connection = @parallel_connection
|
447
|
-
responses = []
|
448
|
-
connection.in_parallel do
|
449
|
-
responses = body_array.map do |body|
|
450
|
-
connection.post("api#{path}") do |req|
|
451
|
-
req.params = params unless params.nil?
|
452
|
-
req.body = OsoCloud::Helpers.to_hash(body) unless body.nil?
|
453
|
-
req.headers = headers
|
454
|
-
end
|
455
|
-
end
|
456
|
-
end
|
457
|
-
|
458
|
-
connection_failed = responses.find { |r| r.env.custom_members[:typhoeus_connection_failed] }
|
459
|
-
if connection_failed
|
460
|
-
raise Faraday::ConnectionFailed, connection_failed.env.custom_members[:typhoeus_return_message]
|
461
|
-
end
|
462
|
-
|
463
|
-
timed_out = responses.find { |r| r.env.custom_members[:typhoeus_timed_out] }
|
464
|
-
if timed_out
|
465
|
-
raise Faraday::TimeoutError, timed_out.env.custom_members[:typhoeus_return_message]
|
466
|
-
end
|
467
|
-
if isMutation
|
468
|
-
@last_offset = responses[-1].headers[:OsoOffset]
|
469
|
-
end
|
470
|
-
responses
|
471
|
-
rescue Faraday::Error => e
|
472
|
-
handle_faraday_error e
|
473
|
-
end
|
474
|
-
|
475
416
|
def POST(path, params, body, isMutation)
|
476
417
|
begin
|
477
418
|
response = @connection.post("api#{path}") do |req|
|
@@ -511,6 +452,7 @@ module OsoCloud
|
|
511
452
|
|
512
453
|
def handle_faraday_error(error)
|
513
454
|
resp = error.response
|
455
|
+
puts resp[:body]
|
514
456
|
err = if resp.respond_to? :body
|
515
457
|
resp.body[:message]
|
516
458
|
else
|
data/lib/oso/oso.rb
CHANGED
@@ -28,12 +28,11 @@ module OsoCloud
|
|
28
28
|
# Any other elements in the array, which together represent the fact's arguments,
|
29
29
|
# can be "OsoCloud::Value" objects or strings.
|
30
30
|
class Oso
|
31
|
-
def initialize(url: 'https://cloud.osohq.com', api_key: nil,
|
32
|
-
options
|
33
|
-
options[:fallback_url] = fallback_url unless fallback_url.nil?
|
34
|
-
@api = OsoCloud::Core::Api.new(url: url, api_key: api_key, options: options)
|
31
|
+
def initialize(url: 'https://cloud.osohq.com', api_key: nil, fallback_url: nil)
|
32
|
+
@api = OsoCloud::Core::Api.new(url: url, api_key: api_key, options: { :fallback_url => fallback_url })
|
35
33
|
end
|
36
34
|
|
35
|
+
##
|
37
36
|
# Update the active policy
|
38
37
|
#
|
39
38
|
# Updates the active policy in Oso Cloud, The string passed into
|
@@ -271,39 +270,6 @@ module OsoCloud
|
|
271
270
|
context_facts: OsoCloud::Helpers.params_to_facts(context_facts)))
|
272
271
|
OsoCloud::Helpers.facts_to_params(result.results)
|
273
272
|
end
|
274
|
-
|
275
|
-
##
|
276
|
-
# List authorized actions for a batch of queries
|
277
|
-
#
|
278
|
-
# Fetches a list of actions which an actor can perform on a particular resource.
|
279
|
-
#
|
280
|
-
# @param actor [OsoCloud::Value]
|
281
|
-
# @param queries [Array<OsoCloud::Value>] | Array<[OsoCloud::Value, Array<fact>]>
|
282
|
-
# @return [Array<Array<String>>]
|
283
|
-
# @see Oso for more information about facts
|
284
|
-
def actions_batch(actor, queries:)
|
285
|
-
actor_typed_id = actor.to_api_value
|
286
|
-
data = queries.map do |q|
|
287
|
-
context_facts = []
|
288
|
-
resource = nil
|
289
|
-
if (q.is_a?(Array))
|
290
|
-
resource = q[0]
|
291
|
-
context_facts = q[1]
|
292
|
-
else
|
293
|
-
resource = q
|
294
|
-
end
|
295
|
-
resource_typed_id = resource.to_api_value
|
296
|
-
OsoCloud::Core::ActionsQuery.new(
|
297
|
-
actor_type: actor_typed_id.type,
|
298
|
-
actor_id: actor_typed_id.id,
|
299
|
-
resource_type: resource_typed_id.type,
|
300
|
-
resource_id: resource_typed_id.id,
|
301
|
-
context_facts: OsoCloud::Helpers.params_to_facts(context_facts)
|
302
|
-
)
|
303
|
-
end
|
304
|
-
@api.post_actions_batch(data).map { |result| result.results}
|
305
|
-
end
|
306
|
-
|
307
273
|
##
|
308
274
|
# List authorized actions for a batch of queries
|
309
275
|
#
|
@@ -336,5 +302,4 @@ module OsoCloud
|
|
336
302
|
@api.post_bulk_actions(data).map { |result| result.results}
|
337
303
|
end
|
338
304
|
end
|
339
|
-
|
340
305
|
end
|
data/lib/oso/version.rb
CHANGED
data/oso-cloud.gemspec
CHANGED
@@ -23,9 +23,5 @@ Gem::Specification.new do |spec|
|
|
23
23
|
spec.add_dependency 'faraday', '~> 2.5.2'
|
24
24
|
spec.add_dependency 'faraday-retry', '~> 2.0.0'
|
25
25
|
spec.add_dependency 'faraday-net_http_persistent', '~> 2.0'
|
26
|
-
spec.add_dependency 'faraday-typhoeus', '~> 1.0.0'
|
27
|
-
#
|
28
26
|
spec.add_development_dependency 'minitest', '~> 5.15'
|
29
|
-
spec.add_development_dependency 'pry-rescue'
|
30
|
-
spec.add_development_dependency 'pry-stack_explorer'
|
31
27
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: oso-cloud
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.4.0.dev.
|
4
|
+
version: 1.4.0.dev.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Oso Security, Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-10-
|
11
|
+
date: 2023-10-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|
@@ -52,20 +52,6 @@ dependencies:
|
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '2.0'
|
55
|
-
- !ruby/object:Gem::Dependency
|
56
|
-
name: faraday-typhoeus
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
58
|
-
requirements:
|
59
|
-
- - "~>"
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: 1.0.0
|
62
|
-
type: :runtime
|
63
|
-
prerelease: false
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
65
|
-
requirements:
|
66
|
-
- - "~>"
|
67
|
-
- !ruby/object:Gem::Version
|
68
|
-
version: 1.0.0
|
69
55
|
- !ruby/object:Gem::Dependency
|
70
56
|
name: minitest
|
71
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -80,34 +66,6 @@ dependencies:
|
|
80
66
|
- - "~>"
|
81
67
|
- !ruby/object:Gem::Version
|
82
68
|
version: '5.15'
|
83
|
-
- !ruby/object:Gem::Dependency
|
84
|
-
name: pry-rescue
|
85
|
-
requirement: !ruby/object:Gem::Requirement
|
86
|
-
requirements:
|
87
|
-
- - ">="
|
88
|
-
- !ruby/object:Gem::Version
|
89
|
-
version: '0'
|
90
|
-
type: :development
|
91
|
-
prerelease: false
|
92
|
-
version_requirements: !ruby/object:Gem::Requirement
|
93
|
-
requirements:
|
94
|
-
- - ">="
|
95
|
-
- !ruby/object:Gem::Version
|
96
|
-
version: '0'
|
97
|
-
- !ruby/object:Gem::Dependency
|
98
|
-
name: pry-stack_explorer
|
99
|
-
requirement: !ruby/object:Gem::Requirement
|
100
|
-
requirements:
|
101
|
-
- - ">="
|
102
|
-
- !ruby/object:Gem::Version
|
103
|
-
version: '0'
|
104
|
-
type: :development
|
105
|
-
prerelease: false
|
106
|
-
version_requirements: !ruby/object:Gem::Requirement
|
107
|
-
requirements:
|
108
|
-
- - ">="
|
109
|
-
- !ruby/object:Gem::Version
|
110
|
-
version: '0'
|
111
69
|
description:
|
112
70
|
email:
|
113
71
|
- support@osohq.com
|