tenable-ruby 0.4.0 → 0.5
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/lib/tenable-ruby.rb +70 -17
- metadata +5 -5
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 0ffe53830580db35bbb25fa2b418ef6fd4de79d276b65d65689f662270e1ea2e
|
|
4
|
+
data.tar.gz: 2a47587b3045d58b9b05ba186e288068da080ebd7497e129587ed7d8430011dc
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 718a5e61e6005ccb0500248309dc985614a37dd9905d45e8fac03d74281b1c61369500e61bba9f29b1a6391c35c17bc873ba0ef0a7c4927f5586197edf202d59
|
|
7
|
+
data.tar.gz: 89f12942cec5d12d0fbaa4775affa2805c362242434b229168fffa09c79d5219cfbc2cdb58e38c560abf11a79506809bb107a6b59dd1cf10dbc948ea151e635c
|
data/lib/tenable-ruby.rb
CHANGED
|
@@ -526,11 +526,11 @@ module TenableRuby
|
|
|
526
526
|
|
|
527
527
|
# Performs scan with scan policy provided (uuid of policy or policy name).
|
|
528
528
|
# Name is your scan name and opts is your scan configuration hash
|
|
529
|
-
# (
|
|
529
|
+
# (scan_folder is optional - folder where to save the scan (if that folder exists))
|
|
530
530
|
# (scanner_id is optional - ID of the scanner/cloud scanner you want to run this scan on)
|
|
531
531
|
#
|
|
532
532
|
# returns: JSON parsed object with scan info
|
|
533
|
-
def scan_quick_policy(policyname, name, opts = {},
|
|
533
|
+
def scan_quick_policy(policyname, name, opts = {}, scan_folder = nil, scanner_id = nil)
|
|
534
534
|
policies = list_policies['policies']
|
|
535
535
|
if policies.nil?
|
|
536
536
|
raise TenableRuby::Error::TenableError, "Tenable API request 'list_policies' responded with 'nil'"
|
|
@@ -548,16 +548,18 @@ module TenableRuby
|
|
|
548
548
|
settings.merge!(opts)
|
|
549
549
|
settings['name'] = name
|
|
550
550
|
settings['policy_id'] = policy['id']
|
|
551
|
-
|
|
551
|
+
if scan_folder.is_a?(Integer)
|
|
552
|
+
settings['folder_id'] = scan_folder
|
|
553
|
+
elsif scan_folder.is_a?(String)
|
|
552
554
|
folders = list_folders['folders']
|
|
553
555
|
if folders.nil?
|
|
554
556
|
raise TenableRuby::Error::TenableError, "Tenable API request 'list_folders' responded with 'nil'"
|
|
555
557
|
end
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
558
|
+
selected_folder = folders.find { |f| f['name'] == scan_folder }
|
|
559
|
+
if selected_folder
|
|
560
|
+
settings['folder_id'] = selected_folder['id']
|
|
561
|
+
else
|
|
562
|
+
raise TenableRuby::Error::TenableError, "Could not find folder with name #{scan_folder}"
|
|
561
563
|
end
|
|
562
564
|
end
|
|
563
565
|
unless scanner_id.nil?
|
|
@@ -570,7 +572,12 @@ module TenableRuby
|
|
|
570
572
|
#
|
|
571
573
|
# Reference: https://developer.tenable.com/reference#scans-get-latest-status
|
|
572
574
|
def scan_status(scan_id)
|
|
573
|
-
http_get(:uri => "/scans/#{scan_id}/latest-status", :fields => header)
|
|
575
|
+
response = http_get(:uri => "/scans/#{scan_id}/latest-status", :fields => header)
|
|
576
|
+
if response.is_a?(Hash) and response.has_key?('status')
|
|
577
|
+
response['status']
|
|
578
|
+
else
|
|
579
|
+
raise TenableRuby::Error::TenableError, "Tenable.io did not return a valid status response"
|
|
580
|
+
end
|
|
574
581
|
end
|
|
575
582
|
|
|
576
583
|
# Parse the scan status command to determine if a scan has finished
|
|
@@ -692,6 +699,48 @@ module TenableRuby
|
|
|
692
699
|
http_get(:uri => "/container-security/api/v1/reports/by_image_digest?image_digest=#{image_digest}", :fields => header)
|
|
693
700
|
end
|
|
694
701
|
|
|
702
|
+
# Creates a new target group for the current user.
|
|
703
|
+
#
|
|
704
|
+
# Reference:
|
|
705
|
+
# https://developer.tenable.com/reference#target-groups-create
|
|
706
|
+
def create_target_group(name, members, acls: nil)
|
|
707
|
+
http_post(:uri => "/target-groups", :fields => header,
|
|
708
|
+
:data => {:name => name, :members => members, :acls => acls})
|
|
709
|
+
end
|
|
710
|
+
|
|
711
|
+
# Returns the current target groups.
|
|
712
|
+
#
|
|
713
|
+
# Reference:
|
|
714
|
+
# https://developer.tenable.com/reference#target-groups-list
|
|
715
|
+
def list_target_groups
|
|
716
|
+
http_get(:uri => "/target-groups", :fields => header)
|
|
717
|
+
end
|
|
718
|
+
|
|
719
|
+
# Returns details for the specified target group.
|
|
720
|
+
#
|
|
721
|
+
# Reference:
|
|
722
|
+
# https://developer.tenable.com/reference#target-groups-details
|
|
723
|
+
def get_target_group(group_id)
|
|
724
|
+
http_get(:uri => "/target-groups/#{group_id}", :fields => header)
|
|
725
|
+
end
|
|
726
|
+
|
|
727
|
+
# Updates a target group.
|
|
728
|
+
#
|
|
729
|
+
# Reference:
|
|
730
|
+
# https://developer.tenable.com/reference#target-groups-edit
|
|
731
|
+
def update_target_group(group_id, name, members, acls: nil)
|
|
732
|
+
http_put(:uri => "/target-groups/#{group_id}", :fields => header,
|
|
733
|
+
:data => {:name => name, :members => members, :acls => acls})
|
|
734
|
+
end
|
|
735
|
+
|
|
736
|
+
# Deletes a target group.
|
|
737
|
+
#
|
|
738
|
+
# Reference:
|
|
739
|
+
# https://developer.tenable.com/reference#target-groups-delete
|
|
740
|
+
def delete_target_group(group_id)
|
|
741
|
+
http_delete(:uri => "/target-groups/#{group_id}", :fields => header)
|
|
742
|
+
end
|
|
743
|
+
|
|
695
744
|
private
|
|
696
745
|
|
|
697
746
|
# Perform HTTP put method with uri, data and fields
|
|
@@ -799,7 +848,6 @@ module TenableRuby
|
|
|
799
848
|
uri = opts[:uri]
|
|
800
849
|
fields = opts[:fields] || {}
|
|
801
850
|
raw_content = opts[:raw_content] || false
|
|
802
|
-
json = {}
|
|
803
851
|
tries = @httpretry
|
|
804
852
|
|
|
805
853
|
request = Net::HTTP::Get.new(uri)
|
|
@@ -815,11 +863,17 @@ module TenableRuby
|
|
|
815
863
|
sleep @httpsleep
|
|
816
864
|
retry
|
|
817
865
|
else
|
|
818
|
-
|
|
866
|
+
raise TenableRuby::Error::TenableError.new("#{e}: No more retries for http GET '#{opts[:uri]}'")
|
|
819
867
|
end
|
|
820
|
-
rescue URI::InvalidURIError
|
|
821
|
-
|
|
868
|
+
rescue URI::InvalidURIError => e
|
|
869
|
+
raise TenableRuby::Error::TenableError.new("#{e}: http GET '#{opts[:uri]}'")
|
|
870
|
+
end
|
|
871
|
+
|
|
872
|
+
if response.code.to_s != "200"
|
|
873
|
+
raise TenableRuby::Error::TenableError.new(response: response),
|
|
874
|
+
"Tenable API request '#{opts[:uri]}' responded with response code #{response.code}"
|
|
822
875
|
end
|
|
876
|
+
|
|
823
877
|
if !raw_content
|
|
824
878
|
parse_json(response.body)
|
|
825
879
|
else
|
|
@@ -854,7 +908,6 @@ module TenableRuby
|
|
|
854
908
|
fields = opts[:fields] || {}
|
|
855
909
|
body = opts[:body]
|
|
856
910
|
ctype = opts[:ctype]
|
|
857
|
-
json = {}
|
|
858
911
|
tries = @httpretry
|
|
859
912
|
|
|
860
913
|
request = Net::HTTP::Post.new(uri)
|
|
@@ -873,10 +926,10 @@ module TenableRuby
|
|
|
873
926
|
sleep @httpsleep
|
|
874
927
|
retry
|
|
875
928
|
else
|
|
876
|
-
|
|
929
|
+
raise TenableRuby::Error::TenableError.new("#{e}: No more retries for http POST '#{opts[:uri]}'")
|
|
877
930
|
end
|
|
878
|
-
rescue URI::InvalidURIError
|
|
879
|
-
|
|
931
|
+
rescue URI::InvalidURIError => e
|
|
932
|
+
raise TenableRuby::Error::TenableError.new("#{e}: http POST '#{opts[:uri]}'")
|
|
880
933
|
end
|
|
881
934
|
|
|
882
935
|
if response.code.to_s != "200"
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: tenable-ruby
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: '0.5'
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Patrick Craston
|
|
8
|
-
autorequire:
|
|
8
|
+
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2020-
|
|
11
|
+
date: 2020-07-01 00:00:00.000000000 Z
|
|
12
12
|
dependencies: []
|
|
13
13
|
description: |-
|
|
14
14
|
Ruby library for communicating with the tenable.io API.
|
|
@@ -25,7 +25,7 @@ homepage: https://gitlab.com/intruder/tenable-ruby
|
|
|
25
25
|
licenses:
|
|
26
26
|
- MIT
|
|
27
27
|
metadata: {}
|
|
28
|
-
post_install_message:
|
|
28
|
+
post_install_message:
|
|
29
29
|
rdoc_options: []
|
|
30
30
|
require_paths:
|
|
31
31
|
- lib
|
|
@@ -41,7 +41,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
41
41
|
version: '0'
|
|
42
42
|
requirements: []
|
|
43
43
|
rubygems_version: 3.0.3
|
|
44
|
-
signing_key:
|
|
44
|
+
signing_key:
|
|
45
45
|
specification_version: 4
|
|
46
46
|
summary: Ruby library for communicating with the tenable.io API
|
|
47
47
|
test_files: []
|