tenable-ruby 0.3.9 → 0.4.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 +4 -4
- data/lib/tenable-ruby.rb +59 -33
- 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: 77917278fce3594ee5fce1156ba4309ef5ed2fdeeaace91d2b3c3626818acd67
|
4
|
+
data.tar.gz: 26b073b7ef3de954d470002eb035e3aa52d2bb30bde90b211680f6f2f0bb82b8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fa26c48c98bfea63c85c82402c9850c724de8fe77d81315b23d58c6ce45527f9fd2e6f9302b0ac466abedbffe8ec35caa5598275a5e420381be42d584901e18d
|
7
|
+
data.tar.gz: 933cbeb33c6c6027b18431edfa5347ffd7c00de1483360f8b067ef9d9ceab1b569861bbac4013567a78c9ecf5f7617535ac42cfea374ef3d04caa442140298fa
|
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?
|
@@ -566,33 +568,15 @@ module TenableRuby
|
|
566
568
|
scan_create(template_uuid, settings)
|
567
569
|
end
|
568
570
|
|
569
|
-
# Returns
|
571
|
+
# Returns the latest status for a scan.
|
572
|
+
#
|
573
|
+
# Reference: https://developer.tenable.com/reference#scans-get-latest-status
|
570
574
|
def scan_status(scan_id)
|
571
|
-
|
572
|
-
if
|
573
|
-
|
574
|
-
end
|
575
|
-
if not details['error'].nil?
|
576
|
-
raise TenableRuby::Error::TenableError, "Get scan_details returned the following error: #{details['error']}"
|
577
|
-
end
|
578
|
-
details['info']['status']
|
579
|
-
end
|
580
|
-
|
581
|
-
# Returns the status of the latest history object of a scan by performing a 'scan_details' API call.
|
582
|
-
# Note this is currently updated more frequently than the scan status in the tenable.io API
|
583
|
-
def scan_latest_history_status(scan_id)
|
584
|
-
details = scan_details(scan_id)
|
585
|
-
if details.nil?
|
586
|
-
raise TenableRuby::Error::TenableError, "Get scan_details returned nil"
|
587
|
-
end
|
588
|
-
if not details['error'].nil?
|
589
|
-
raise TenableRuby::Error::TenableError, "Get scan_details returned the following error: #{details['error']}"
|
590
|
-
end
|
591
|
-
history = details['history']
|
592
|
-
if history.nil? or history.length == 0
|
593
|
-
raise TenableRuby::Error::TenableError, "Get scan_details returned empty history object"
|
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']
|
594
578
|
else
|
595
|
-
|
579
|
+
raise TenableRuby::Error::TenableError, "Tenable.io did not return a valid status response"
|
596
580
|
end
|
597
581
|
end
|
598
582
|
|
@@ -715,6 +699,48 @@ module TenableRuby
|
|
715
699
|
http_get(:uri => "/container-security/api/v1/reports/by_image_digest?image_digest=#{image_digest}", :fields => header)
|
716
700
|
end
|
717
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
|
+
|
718
744
|
private
|
719
745
|
|
720
746
|
# Perform HTTP put method with uri, data and fields
|
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.4.4
|
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-06-16 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: []
|