Cloud One のサービス別APIが変わっていたので内容をまとめてみました

2021.10.15

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

トレンドマイクロ社が提供しているCloud Oneで最近大阪リージョンの提供や、
新しいログオンシステムの導入に伴いAPIの機能が変わっています。
提供されている各サービス毎にAPIが変わる内容をまとめております。

Cloud Oneとは?

Cloud Oneはトレンドマイクロ社が提供するソリューションでサーバ保護に必要な機能を提供するクラウド型総合サーバーセキュリティサービスです。

■ Cloud One
https://www.trendmicro.com/ja_jp/business/products/hybrid-cloud/cloud-one.html

■ 提供されている機能

  • Workload Security
  • Container Security
  • File Storage Security
  • Application Security
  • Network Security
  • Conformity
  • Accounts and Identity Management (CloudOneアカウントとID管理)

APIの利点

Cloud OneのAPIは初期の設定から運用の時の監視ツールとの連携などご活用頂けると思います。
初期設定をシステムに頼ることで作業時間の軽減とヒューマンエラーの防止をおこなうことができます。

各APIの変更点

リージョンの追加に伴い、APIのURLが変更になっています。
合わせて認証キーの指定方法も新しいAPIとレガシーAPIで内容が変わっています。

新しいAPIにはリージョン{region}指定をする箇所がございます。
下記表から環境に合わせたリージョンコードを入力します。

  • us-1 : アメリカ
  • in-1 : インド
  • gb-1 : イギリス
  • jp-1 : 日本
  • de-1 : ドイツ
  • au-1 : オーストラリア

Workload Security

■ APIドキュメント (50.0.601)
https://cloudone.trendmicro.com/docs/workload-security/api-reference/

■ APIのURL
・最新
 https://workload.{region}.cloudone.trendmicro.com/api [処理別パス]

・レガシー
 https://cloudone.trendmicro.com/api/workload [処理別パス]

■ SDKライブラリ
https://cloudone.trendmicro.com/docs/jp/workload-security/sdk-python/
Workload SecurityにはPython SDKにてAPIをご利用頂くことが可能です。

Container Security

■ APIドキュメント (2020-03-30)
https://cloudone.trendmicro.com/docs/container-security/api-reference/

■ APIのURL
・最新
 https://container.{region}.cloudone.trendmicro.com/api [処理別パス]

・レガシー
 https://cloudone.trendmicro.com/api/container [処理別パス]

File Storage Security

■ APIドキュメント (v1)
https://cloudone.trendmicro.com/docs/file-storage-security/api-reference/

■ APIのURL
・最新
 https://filestorage.{region}.cloudone.trendmicro.com/api [処理別パス]

・レガシー
 https://cloudone.trendmicro.com/api/filestorage [処理別パス]

Application Security

■ APIドキュメント (v1)
https://cloudone.trendmicro.com/docs/application-security/api-reference/

■ APIのURL
・最新
 https://application.{region}.cloudone.trendmicro.com [処理別パス]

・レガシー
 https://cloudone.trendmicro.com/api/application [処理別パス]

Network Security

■ APIドキュメント (2021-10-14)
https://cloudone.trendmicro.com/docs/network-security/api-reference/

■ APIのURL
・最新
 https://network.{region}.cloudone.trendmicro.com/api [処理別パス]

・レガシーAPI
 https://cloudone.trendmicro.com/api/network [処理別パス]

Conformity

■ APIドキュメント (1.0)
https://cloudone.trendmicro.com/docs/conformity/api-reference/

■ APIのURL
https://eu-west-1-api.cloudconformity.com/v1[処理別パス]
https://eu-west-2-api.cloudconformity.com/v1[処理別パス]
https://ap-southeast-2-api.cloudconformity.com/v1[処理別パス]
https://ap-south-1-api.cloudconformity.com/v1[処理別パス]
https://eu-west-2-api.cloudconformity.com/v1[処理別パス]

Cloud One Accounts and Identity Management

■ APIドキュメント (1.0.0)
https://cloudone.trendmicro.com/docs/conformity/api-reference/

■ APIのURL
 https://accounts.cloudone.trendmicro.com/api [処理別パス]

サンプルプログラム

APIドキュメントを確認するとWorkload Securityを除きSDKが用意されていないため リクエストをおこなうプログラムを利用します。簡易なPythonプログラムを作成してみました。
プログラムはPython3.9にて作成をおこないリクエスト用にrequestsとjsonのモジュールを利用しています。

  • GET: 一覧、詳細の参照
  • POST: 新規登録、変更
  • DELETE: 削除

GET: 一覧、詳細の参照

Cloud One Accounts and Identity Managementにてユーザー一覧を参照した場合のサンプルプログラムになります。
正常に取得できた場合は、ステータス200にて受取ができます。

■ List users within an account
https://cloudone.trendmicro.com/docs/account-and-user-management/api-reference/tag/Users#operation/listUsers

■ プログラム例

import json
import requests

# API URL指定
api_url = 'https://accounts.cloudone.trendmicro.com/api/users'

# API 認証設定
api_headers = {
    'Authorization': 'ApiKey [APIキー]',
    'Api-Version': 'v1'
}

# API通信処理
api_response = requests.get(api_url, headers=api_headers)
print(api_response.status_code)

if api_response.status_code == 200:
    users = json.loads(api_response.text)
    print(users)

■ 出力例

# python3 list_users.py

200
{'users': 複数のユーザ情報がリストにて出力}

POST: 新規登録、変更

上記の同じAPIにてユーザーを変更した場合のサンプルプログラムになります。
URLにユーザのIDをおこない、変更内容はPOSTにて送信します。
正常に変更できた場合は、ステータス200と変更後のユーザー情報が受取できます。

■ Modify a user within an account
https://cloudone.trendmicro.com/docs/account-and-user-management/api-reference/tag/Users#operation/modifyUser

■ プログラム例

import json
import requests

# API URL指定
api_url = 'https://accounts.cloudone.trendmicro.com/api/users/[ユーザーのID]'

# API 認証設定
api_headers = {
    'Authorization': 'ApiKey [APIキー]',
    'Api-Version': 'v1'
}

# POST情報
payload = {
    'roleID': 'full-access',
    'state': 'enabled'
}

# API通信処理
api_response = requests.post(api_url, headers=api_headers, json=payload)
print(api_response.status_code)

if api_response.status_code == 200:
    users = json.loads(api_response.text)
    print(users)

■ 出力例

# python3 edit_user.py

200
{'users': 変更をしたユーザーの情報が出力}

DELETE: 削除

上記の同じAPIにてユーザーを削除した場合のサンプルプログラムになります。
URLにユーザのIDをおこない、変更内容はPOSTにて送信します。
正常に変更できた場合は、ステータス200と変更後のユーザー情報が受取できます。

■ Modify a user within an account
https://cloudone.trendmicro.com/docs/account-and-user-management/api-reference/tag/Users#operation/modifyUser

■ プログラム例

import json
import requests

# API URL指定
api_url = 'https://accounts.cloudone.trendmicro.com/api/users/[ユーザーのID]'

# API 認証設定
api_headers = {
    'Authorization': 'ApiKey [APIキー]',
    'Api-Version': 'v1'
}

# API通信処理
api_response = requests.delete(api_url, headers=api_headers)
print(api_response.status_code)

■ 出力例

# python3 delete_user.py

204

さいごに

Cloud OneのAPIについてまとめてみました。
今回、初期設定の自動化スクリプトを組んでいますが大体の設定項目を変更できそうです。
今後別システムとの連携についてもご案内してきます。