Tenable.io SDK for Pythonを利用してtenable.ioにスキャンを作成する

SaaSで利用できる脆弱性診断のサービスのtenable.ioについてのエントリです。 今回は「Tenable.io SDK for Python」を利用して、tenable.ioにスキャンを作成してみたいと思います。
2018.09.09

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、坂巻です。

SaaSで利用できる脆弱性診断のサービスのtenable.ioについてのエントリです。
今回は「Tenable.io SDK for Python」を利用して、tenable.ioにスキャンを作成してみたいと思います。

前提

  • tenable.ioアカウントが取得済みであること
    • アカウントがない場合はコチラよりトライアルアカウントの作成が可能です
    • トライアルアカウントはtenable.ioの全ての機能が利用できます
  • tenable.io上にスキャナが作成済みであること

目次

  • API Keys取得
  • 開発環境構築
  • スキャン作成スクリプト

API Keys取得

tenable.ioの管理画面にログインし[Settings]をクリックします。

1

[My Account]をクリックします。

2

[API Keys]をクリックします。

3

[Generate]をクリックします。

4

Access KeySecret Keyが表示されるので、控えておきます。(次項のプログラム内で使用します。)

5

開発環境構築

「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_keysecret_keyには、前項「API Keys取得」で確認した値を入力します。 以下の値については、環境にあわせ任意で設定してください。

  • SCANNERS_NAME…スキャンで利用するスキャナ
  • SCAN_NAME …作成するスキャン名
  • SCAN_TARGET…スキャン対象のネットワーク

作成したスクリプトを実行します。

(tio)$ python CreateTenableScan.py

tenable.ioの管理画面にログインし、[My Scans]を確認すると、以下のスキャンが作成されていました。

6

スクリプト内で指定した値が設定されています。

7

さいごに

「Tenable.io SDK for Python」のマニュアルは、Read the Docsに公開されていました。

ソースコードは、GitHUbに公開されています。

様々なAPIが公開されていましたので、スキャナ・スキャンの作成から、スキャンの実行、運用作業のツール化等で、うまいこと利用すれば幸せが訪れるかもしれませんね!

参考