Tenable.io SDK for Pythonを利用してtenable.ioにスキャンを作成する
こんにちは、坂巻です。
SaaSで利用できる脆弱性診断のサービスのtenable.ioについてのエントリです。
今回は「Tenable.io SDK for Python」を利用して、tenable.ioにスキャンを作成してみたいと思います。
前提
- tenable.ioアカウントが取得済みであること
- アカウントがない場合はコチラよりトライアルアカウントの作成が可能です
- トライアルアカウントはtenable.ioの全ての機能が利用できます
- tenable.io上にスキャナが作成済みであること
- スキャナの作成については5分でつくるNessus Scanner on AWSでサクッと作成することができます
目次
- API Keys取得
- 開発環境構築
- スキャン作成スクリプト
API Keys取得
tenable.ioの管理画面にログインし[Settings]をクリックします。
[My Account]をクリックします。
[API Keys]をクリックします。
[Generate]をクリックします。
Access Key
とSecret Key
が表示されるので、控えておきます。(次項のプログラム内で使用します。)
開発環境構築
「Tenable.io SDK for Python」が利用できる環境を構築していきます。
適当なワークディレクトリにて、以下のコマンドを実行します。
$ mkdir tio && cd tio
続いてvirtualenvを利用して、python用の仮想環境を作成します。
virtualenvは「Tenable.io SDK for Python」の利用に対して必須ではありませんが、他のPythonのパッケージや依存関係を気にする必要がなくなるので利用をお勧めします。
$ pip3 install virtualenv $ virtualenv -p $(which python3) .
ここではPython 3を利用していますが、Python 2.7以降もサポートされています。
以下のコマンドを実行して、仮想環境を起動します。
$ source bin/activate
プロンプトが以下の用に変化したことを確認し、sdkをインストールします。
(tio)$ pip install tenable_io
スキャン作成スクリプト
以下のコードでCreateTenableScan.py
を作成します。
from tenable_io.client import TenableIOClient from tenable_io.api.scans import ScanCreateRequest from tenable_io.api.models import ScanSettings SCANNERS_NAME = 'AWS_Scanner' SCAN_NAME = 'Test Scan' SCAN_TARGET = '10.0.2.0/24' client = TenableIOClient(access_key='33fc3xxxxxxxxxxxxxxx', secret_key='19f5bxxxxxxxxxxxxxxx') 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( SCAN_NAME, SCAN_TARGET, scanner_id=scanners[SCANNERS_NAME])) ) scan = client.scan_helper.id(scan_id)
TenableIOClientのパラメータのaccess_key
とsecret_key
には、前項「API Keys取得」で確認した値を入力します。
以下の値については、環境にあわせ任意で設定してください。
SCANNERS_NAME
…スキャンで利用するスキャナSCAN_NAME
…作成するスキャン名SCAN_TARGET
…スキャン対象のネットワーク
作成したスクリプトを実行します。
(tio)$ python CreateTenableScan.py
tenable.ioの管理画面にログインし、[My Scans]を確認すると、以下のスキャンが作成されていました。
スクリプト内で指定した値が設定されています。
さいごに
「Tenable.io SDK for Python」のマニュアルは、Read the Docsに公開されていました。
ソースコードは、GitHUbに公開されています。
様々なAPIが公開されていましたので、スキャナ・スキャンの作成から、スキャンの実行、運用作業のツール化等で、うまいこと利用すれば幸せが訪れるかもしれませんね!