tenable-ruby 0.3.9 → 0.4.4
Sign up to get free protection for your applications and to get access to all the features.
- 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: []
|