Cloud One Workload SecurityのAPIを使って自動化してみた:準備編

2021.02.26

こんにちは、コンサル部@大阪オフィスのTodaです。

Cloud One Workload Securityで用意されている自動化するためのAPIをいろいろ操作してみたいと思います。

Cloud One Workload Securityとは?

トレンドマイクロ社が提供している製品でサーバ保護に必要な複数のセキュリティ機能を提供するクラウド型総合サーバセキュリティサービスです。 詳細は公式サイトをご覧ください。

同システムには自動化するためのAPIとSDKが用意されています。
下記マニュアルを参考に操作をしていきます。

■ Workload Security Python SDK
https://cloudone.trendmicro.com/docs/jp/workload-security/sdk-python/

■ Trend Micro Deep Security API (50.0.163)
https://cloudone.trendmicro.com/docs/workload-security/api-reference/

目標

  • Pythonを利用してCloud One Workload Securityの操作ができる状態にする。
  • 試しにログインアカウントの情報をAPI経由で取得する。

前提条件

  • Python3系が動作できる環境
  • Cloud One トライアル版アカウント登録し、利用できる状態

やってみる

Workload Securityのダッシュボードを表示

Cloud Oneにログインをおこない、Workload Securityのダッシュボードに移動します。

APIキーの新規登録

画面上部の[管理]メニューをクリックして画面移動します。

Workload Securityのダッシュボード

左メニューの[APIキー]をクリックしてして画面移動をおこない、一覧の[新規]ボタンをクリックします。

APIキー管理

設定を入力

APIキーの設定情報を入力します、 内容を入力後[次へ]をクリックします。

  • 名前:任意のキー名を指定します。
  • 役割:初期で用意されている FullAccess を利用します。

APIキー設定

情報の確認

登録を完了するとAPI通信で利用する秘密鍵の値が表示されます。
鍵の値は再発行することができないため テキスト等に保存をおこないます。

APIキー秘密鍵

登録完了

一覧にキー情報が入っていれば登録作業が完了になります。

APIキー登録完了

SDKの取得

Workload SecurityのAPIドキュメントを確認してPythonのSDKを取得します。

■ APIとSDK - 自動化のためのDevOpsツール
https://cloudone.trendmicro.com/docs/jp/workload-security/api-first-steps/#apisdk

■ Python SDK
https://cloudone.trendmicro.com/docs/jp/workload-security/sdk-python/

SDKのインストール

取得したファイル解凍して任意のディレクトリに移動をおこないます。
コマンドラインまたはターミナルを開きディレクトリに移動をおこないます。
下記コマンドにてインストールを実行します。

# Windows の場合
python -m pip install .

# Mac の場合
python3 -m pip install .

# 出力結果 (成功時最終行)
# Successfully installed deep-security-api-XX.XX.XX

試しにログインアカウントの情報出力

APIリファレンスを元に管理者の情報を一覧出力するAPIを実行してみます。
2021年2月現在APIのバージョンは「v1」のみ提供になります。
APIのホストがわからなかったのですが、確認したところ「https://cloudone.trendmicro.com/api」が接続先になります。

■ Search Administrators
https://cloudone.trendmicro.com/docs/workload-security/api-reference/#tag/Administrators

setup.py と同じフォルダに administrators.py を作成して下記プログラムを入力します。

from __future__ import print_function
import sys, warnings
import deepsecurity
from deepsecurity.rest import ApiException
from pprint import pprint

# Setup
if not sys.warnoptions:
	warnings.simplefilter("ignore")
configuration = deepsecurity.Configuration()
configuration.host = 'https://cloudone.trendmicro.com/api'

# Authentication
configuration.api_key['api-secret-key'] = '[APIキー発行時の秘密鍵の値を入力]'

# Initialization
# Set Any Required Values
api_instance = deepsecurity.AdministratorsApi(deepsecurity.ApiClient(configuration))
api_version = 'v1'

try:
	api_response = api_instance.list_administrators(api_version)
	pprint(api_response)
except ApiException as e:
	print("An exception occurred when calling AdministratorsApi.list_administrators: %s\n" % e)

実行をするとJSON形式で登録されている管理者の情報が出力されます。

python3 administrators.py
{
    'administrators': [
        {
            'active': True,
            'created': 123456789,
            'description': '',
            'directory_info': None,
            'directory_name': None,
            'email_address': 'xxxxxxxxxxx@xxxxx',
            'external': False,
            'external_user_id': None,
            'full_name': '',
            'id': 1,
            'last_password_change': **********,
            'last_sign_in': **********,
            'locale': 'ja-JP',
            'mfa_type': 'none',
            'mobile_number': '',
            'pager_number': '',
            'password': None,
            'password_never_expires': True,
            'phone_number': '',
            'primary_contact': True,
            'read_only': False,
            'receive_notifications': False,
            'report_pdf_password': None,
            'report_pdf_password_enabled': False,
            'role_id': 1,
            'time_format': '24',
            'time_zone': 'Asia/Tokyo',
            'type': 'normal',
            'unlock_time': None,
            'unsuccessful_sign_in_attempts': 0,
            'username': '**********',
            'utc_offset': 'UTC+9.00'
        }
    ]
}

さいごに

今回はCloud One Workload SecurityのAPIを使えるように準備してみました。
APIはいろいろ設定が用意されているため別システムと連携して操作など可能です。
私も自動化を試していこうと思います。