Facebook Google Plus Twitter LinkedIn YouTube RSS Menu Search Resource - BlogResource - WebinarResource - ReportResource - Eventicons_066 icons_067icons_068icons_069icons_070

Tenable ブログ

ブログ通知を受信する

Tenable Python SDKを使用する際のヒント:内部スキャン、スキャンのインポートとエクスポートなどを実行する方法

Tenable Python SDKがビルドされたのは、 Tenable.io™のユーザーが独自のスクリプト、プログラム、およびモジュールを作成してTenable.ioプラットフォーム内のデータとシームレスにやり取りできるように、Tenable.io APIを活用する機能をユーザーに提供するためです。

Python SDKを初めて使用する場合は、私の過去のブログ投稿 を読むか、GitHubにあるこのプロジェクトのREADMEをご覧ください。

前提条件

この投稿で使用した例では、次の条件を想定しています。

  • Python 2.7 または 3.4+ 以降がインストールされていること
  • Tenable.ioの管理者アカウントと生成されたAPIキー
  • Tenable.ioにリンクされたNessusスキャナー

内部スキャンを実行する

このセクションでは、Tenable.io Python SDKを使用して内部スキャンを実行する方法を説明します。

コード

from tenable_io.client import TenableIOClient
from tenable_io.api.scans import ScanCreateRequest
from tenable_io.api.models import ScanSettings
client = TenableIOClient(access_key='{YOUR ACCESS KEY}', secret_key='{YOUR SECRET KEY}')
scanners = {scanner.name: scanner.id for scanner in client.scanners_api.list().scanners}
template = client.scan_helper.template(name='basic')
scan_id = client.scans_api.create(
 ScanCreateRequest(
 template.uuid,
 ScanSettings(
 ‘{YOUR SCAN NAME}’,
 ‘{YOUR SCAN TARGETS}’,
 scanner_id=scanners['{YOUR SCANNER NAME}']
 )
 )
)
scan = client.scan_helper.id(scan_id)
scan.launch()

:上のコードで中括弧で囲まれている変数には、ご自分の環境の情報を入れてください。

最初の数行では、Tenable.io SDKクライアントとスキャンを作成する対象のモデルをインポートしています。

from tenable_io.client import TenableIOClient from tenable_io.api.scans import ScanCreateRequest from tenable_io.api.models import ScanSettings 
次に、クライアントをAPIキーで初期化する必要があります。
client = TenableIOClient(access_key='{YOUR ACCESS KEY}', secret_key='{YOUR SECRET KEY}')

次の行では、すべてのスキャナー名をスキャナーIDとリンクするディクショナリーを作成します。

scanners = {scanner.name: scanner.id for scanner in client.scanners_api.list().scanners}

次の行では、実行するスキャンのポリシーID(内部的にはテンプレートIDとして知られる)を取得します。この例では、「Basic」スキャンテンプレートを使用しています。

template = client.scan_helper.template(name='basic') 

最後に、これらのすべての詳細を使用して、スキャンを作成するためにAPIに渡すことができる「CreateScanRequest」オブジェクトを作成します。

scan_id = client.scans_api.create(
 ScanCreateRequest(
 template.uuid,
 ScanSettings(
 ‘{YOUR SCAN NAME}’,
 ‘{YOUR SCAN TARGETS}’,
 scanner_id=scanners['{YOUR SCANNER NAME}']
 )
 )
)

:スキャンのターゲットはユーザーインターフェイスで定義されているのと同じ方法で定義する必要があり、各ターゲットをコンマで区切ります。

スキャンを正常に作成されると、残っている「ScanRef」をスキャンIDを使用して取得します。これを使用すると、すべてのスキャンコントロールにアクセスすることができます。最後の行に示されているとおり、スキャンの起動も可能です。

scan = client.scan_helper.id(scan_id) scan.launch() 

このスクリプトを実行した後に、Tenable.ioのスキャンページをチェックして、スクリプトが実行されたことを確認できます。このケースでは、スキャンの名前は「My Basic Scan」で、3つのIPをスキャンするように設定されています。

スキャンが完了すると、次のようになります。

名前を指定してスキャンレポートをエクスポートする

多くのユーザーにとって重要な別のユースケースは、以前に実行したスキャンをエクスポートして、その結果を経営陣やその他の利害関係者と共有できることです。これも、SDKを使用すれば簡単にできます。

コード

from tenable_io.client import TenableIOClient

client = TenableIOClient(access_key='{YOUR ACCESS KEY}', secret_key='{YOUR SECRET KEY}')
scans = {scan.name: scan.id for scan in client.scans_api.list().scans}
scan = client.scan_helper.id(scans['{YOUR SCAN NAME}'])
scan.download('{YOUR SCAN NAME}.pdf')

前述の例と同じように、最初にTenable.io SDKクライアントをインポートし、APIキーを使って初期化します。

from tenable_io.client import TenableIOClient

client = TenableIOClient(access_key='{YOUR ACCESS KEY}', secret_key='{YOUR SECRET KEY}')

次に、スキャン名とそれに関連付けられたIDのディクショナリーを生成します。

scans = {scan.name: scan.id for scan in client.scans_api.list().scans}

これについても、前述の例と同じように、スキャンの名前を指定して、必要なスキャンの「ScanRef」を作成します。

scan = client.scan_helper.id(scans['{YOUR SCAN NAME}'])

最後に、最終行でスキャンしたレポートをダウンロードします。デフォルトではPDFです。必要に応じて、「ScanExportRequest」の追加パラメータを渡して、CSVやHTMLなどの別の形式でレポートをエクスポートすることもできます。

scan.download('{YOUR SCAN NAME}.pdf')

NessusスキャンをTenable.ioにインポートする

一部のユーザーには別のソリューションが役立つかもしれません。それは、NessusスキャンをリンクされていないスキャナからTenable.ioにインポートして、最新の サイバーエクスポージャーについてより完全なビューを得る機能です。

コード

import os
from tenable_io.client import TenableIOClient

client = TenableIOClient(access_key='{YOUR ACCESS KEY}', secret_key='{YOUR SECRET KEY}')
dir_path = os.path.dirname(os.path.realpath(__file__))
file = os.path.join(dir_path, '{YOUR NESSUS FILE}')
client.scan_helper.import_scan(file, True)

この例の最初の数行は前の例と同じですが、Pythonのosモジュールが追加されています。これは、アップロードするファイルを指定するために使用します。この例では、ファイルは、実行しているスクリプトと同じディレクトリーにある必要があります。

import os
from tenable_io.client import TenableIOClient

client = TenableIOClient(access_key='{YOUR ACCESS KEY}', secret_key='{YOUR SECRET KEY}')

次の行では、実行中のスクリプトのパスをosモジュールを使用して判別し、アップロードするスキャン結果ファイルのフルパスを取得します。

dir_path = os.path.dirname(os.path.realpath(__file__))
file = os.path.join(dir_path, '{YOUR NESSUS FILE}')

最後に、scan_helperの「import_scan」関数を使用してスキャン結果をアップロードします。

client.scan_helper.import_scan(file, True) 

このスクリプトを実行した後、アップロードされたスキャンがないかTenable.ioのスキャンページをチェックすることで、動作を確認できます。この例では、スキャンの名前は「offlineScanResults.nessus」です。

ヒント

複数のスクリプトを使用したり、スクリプトを他のマシンに展開したりする際に役立つヒントは、INIファイルまたは環境変数にAPIキーを設定して、Tenableクライアントがそれを使用できるようにするという方法です。

INIの例

tenable_io.ini」という名前のスクリプトを実行するのと同じディレクトリに新しいファイルを作成します。このファイルは、下の例のようにフォーマットします。この方法なら、ログ記録のレベルも簡単に設定できます。不明な理由で失敗するスクリプトがある場合は、これをINFOまたはDEBUGに設定するとよいかもしれません。

[tenable_io]
access_key = 1111d58e443e08e080790193e27ae151c16b0415270b738137e50eecbcc08d74
secret_key = 22220bf73a6bcb0cf4bcd9cf5839bff21357f2cd81884e4984e8ed4ecd4b6d83
logging_level = ERROR

環境変数

むしろINIファイルのルートに行かない場合は、TENABLEIO_ACCESS_KEYおよびTENABLEIO_SECRET_KEY環境変数を設定して、クライアントにAPIキーを供給することもできます。

詳細情報

関連記事

役立つサイバーセキュリティ関連のニュース

Tenable エキスパートからのタイムリーな警告とセキュリティガイダンスを見逃さないように、メールアドレスをご入力ください。

Tenable Vulnerability Management

最新のクラウドベースの脆弱性管理プラットフォームにフルアクセスし、これまでにない精度で全資産の表示および追跡が可能です。

Tenable Vulnerability Management トライアルには、Tenable Lumin と Tenable Web App Scanning も含まれています。

Tenable Vulnerability Management

最新のクラウドベースの脆弱性管理プラットフォームの全機能にアクセスして、これまでにない精度で全ての資産を確認、追跡しましょう。 年間サブスクリプションをご購入ください。

100 資産

サブスクリプションオプションを選択してください。

今すぐ購入する

Tenable Vulnerability Management

最新のクラウドベースの脆弱性管理プラットフォームにフルアクセスし、これまでにない精度で全資産の表示および追跡が可能です。

Tenable Vulnerability Management トライアルには、Tenable Lumin と Tenable Web App Scanning も含まれています。

Tenable Vulnerability Management

最新のクラウドベースの脆弱性管理プラットフォームの全機能にアクセスして、これまでにない精度で全ての資産を確認、追跡しましょう。 年間サブスクリプションをご購入ください。

100 資産

サブスクリプションオプションを選択してください。

今すぐ購入する

Tenable Vulnerability Management

最新のクラウドベースの脆弱性管理プラットフォームにフルアクセスし、これまでにない精度で全資産の表示および追跡が可能です。

Tenable Vulnerability Management トライアルには、Tenable Lumin と Tenable Web App Scanning も含まれています。

Tenable Vulnerability Management

最新のクラウドベースの脆弱性管理プラットフォームの全機能にアクセスして、これまでにない精度で全ての資産を確認、追跡しましょう。 年間サブスクリプションをご購入ください。

100 資産

サブスクリプションオプションを選択してください。

今すぐ購入する

Tenable Web App Scanning を試す

Tenable One サイバーエクスポージャー管理プラットフォームの一部として、最新のアプリケーション向けに設計された最新のウェブアプリケーションスキャンサービスを完全な形でご利用いただけます。手作業による労力や重大なウェブアプリケーションの中断なしに、脆弱性のオンラインポートフォリオを安全に高精度でスキャンします。 今すぐサインアップしてください。

Tenable Web App Scanning トライアルには、Tenable Vulnerability Management と Tenable Lumin も含まれています。

Tenable Web App Scanning を購入

最新のクラウドベースの脆弱性管理プラットフォームの全機能にアクセスして、これまでにない精度で全ての資産を確認、追跡しましょう。 年間サブスクリプションをご購入ください。

5 FQDN

3,578ドル

今すぐ購入する

Tenable Lumin を試用する

Tenable Lumin で、サイバーエクスポージャー管理の視覚化と調査、経時的なリスク削減の追跡、同業他社とのベンチマークの実施が可能です。

Tenable Lumin トライアルには、Tenable Vulnerability Management と Tenable Web App Scanning も含まれています。

Tenable Lumin を購入する

営業担当者に連絡することで、Tenable Lumin がどのように組織全体のインサイトを獲得し、サイバーリスクを管理するのに役立つかをご確認いただけます。

無料で Tenable Nessus Professional を試す

7 日間無料

Tenable Nessus は、今日の市場で最も包括的な脆弱性スキャナーです。

新 - Tenable Nessus Expert
利用可能に

Nessus Expert にはより多くの機能が追加されています。外部アタックサーフェスのスキャン機能や、スキャン対象となるドメインの追加とクラウドインフラのスキャンなどが含まれています。Nessus Expert を試してみるにはここをクリック。

Nessus Pro のトライアルをお求めの場合、下のフォームに入力してください。

Tenable Nessus Professional を購入

Tenable Nessus は、今日の市場で最も包括的な脆弱性スキャナーです。Tenable Nessus Professional は、脆弱性スキャンプロセスの自動化を支援し、コンプライアンスサイクルの時間を節約し、IT チームの関与を可能にします。

複数年ライセンスをご購入いただくと割引が適用されます。拡張サポートを追加すると、24 時間x365 日、電話、コミュニティ、チャットサポートにアクセスできます。

ライセンスをお選びください

複数年ライセンスをご購入いただくと割引が適用されます。

サポートとトレーニングを追加

無料で Tenable Nessus Expert を試す

7 日間無料

最新のアタックサーフェス用に構築された Nessus Expert を使用すると、拡大された領域が可視化でき、IT やクラウド資産に潜む脆弱性から企業を保護できます。

すでに Tenable Nessus Professional をお持ちですか?
Nessus Expert にアップグレードすると、7 日間無料でご利用いただけます。

Tenable Nessus Expert を購入

最新のアタックサーフェス用に構築された Nessus Expert を使用すると、拡大された領域が可視化でき、IT やクラウド資産に潜む脆弱性から企業を保護できます。

ライセンスをお選びください

複数年ライセンスの場合、よりお求めやすい価格でご購入いただけます。

サポートとトレーニングを追加