コードを使用したAPIキーの作成

SDKを使用してAPIキーを作成するには、まずAPIキーに関連付ける役割のIDを取得する必要があります。また、既存のAPIキーを使用して呼び出しを認証する必要があります。APIキーが作成されていない場合は、&nbspへのユーザ名とパスワードを使用して、最初のAPIキーを作成できます。

ロールIDを取得する

役割IDを取得して、役割にAPIキーを割り当てます。役割のIDがわからない場合は、役割を検索して役割IDを取得できます。

たとえば、コンピュータのセキュリティステータスに関するレポートを生成するプログラムでは、すべてのコンピュータに対する読み取りアクセス権が必要です。 Workload Security が提供するAuditorの役割は、初期設定ではコンピュータおよびポリシーに対する読み取り専用アクセスを提供するため、このタスクに適しています。

ロールを作成する場合は、 ロールを使用したアクセスの制御を参照してください。

次の一般的な手順を使用して役割を検索し、IDを取得します。検索の詳細については、 Resources forの検索を参照してください。

  1. 検索条件を定義する SearchCriteria オブジェクトを作成します。
  2. SearchCriteriaSearchFilterに追加します。
  3. AdministratorRolesApi オブジェクトを作成し、それを使用して検索を実行します。
  4. 返された Role オブジェクトからIDを取得します。

次の例では、ロールを名前で検索します。

ソースを表示

# Store the role ID - default is None
role_id = None

# Search criteria
name_criteria = api.SearchCriteria()
name_criteria.field_name = "name"
name_criteria.string_value = role_name
name_criteria.string_test = "equal"

# Search filter
role_filter = api.SearchFilter()
role_filter.search_criteria = [name_criteria]

# Perform the search and obtain the ID of the returned role
admin_roles_api = api.AdministratorRolesApi(api.ApiClient(configuration))
roles = admin_roles_api.search_administrator_roles(api_version, search_filter=role_filter)

if len(roles.roles) > 0:
    role_id = roles.roles[0].id

return roles.roles[0].id

また、APIレファレンス/参照情報の 検索管理者ロール 操作も参照してください。

SDKを使用したAPIキーの作成

SDKキーを使用してAPIキーを作成するには、 ApiKey オブジェクトを作成し、APIキーに関連付ける役割の名前とIDを設定します。また、次のオプションのプロパティを指定することもできます。

  • 説明
  • タイムゾーン
  • ロケール
  • 有効期限

APIKeysApi オブジェクトを使用して、 Workload SecurityでAPIキーを作成します。返される ApiKey オブジェクトには秘密鍵が含まれています。

APIを使用してAPIキーを作成するには、 /api/apikeys エンドポイントの APIキー の作成操作を使用します。

次の例では、監査目的でAPIキーを作成します。キーは作成後2週間で有効期限が切れます。

ソースを表示

# Set key properties
time_to_expiry_in_ms = 14 * 24 * 60 * 60 * 1000
current_time_in_ms = int(round(time.time() * 1000))

key = api.ApiKey()
key.key_name = key_name
key.description = "Read-only access"
key.role_id = "2"
key.locale = "en-US"
key.time_zone = "Asia/Tokyo"
key.expiry_date = current_time_in_ms + time_to_expiry_in_ms # expires in 2 weeks

# Create the key on Workload Security
api_keys_api = api.APIKeysApi(api.ApiClient(configuration))
return api_keys_api.create_api_key(key, api_version)

API呼び出しの認証の詳細については、 Workload Securityを参照してください。

ユーザ名とパスワードを使用してAPIキーを作成する

まだAPIキーが作成されていないときにタスクを自動化するには、APIとユーザ名とパスワードを使用して最初のAPIキーを作成します。

  1. 有効なセッションCookieと要求IDを取得するには、 /api/sessions リソースを使用します。
  2. APIキーを作成するには、 /api/apikeys リソースへの要求でセッションCookieと要求IDを使用します。

作成したら、APIキーを使用して Workload Securityへの後続の呼び出しを行います。

セッションCookieと要求IDを取得する

Postman、Paw、またはcURLなどのHTTPクライアントを使用して、POST要求を /api/sessions リソースに送信します。応答にはセッションIDを含むCookieが含まれ、応答本文には要求IDが含まれます。

現在 /api/sessions リソースはSDKでは使用できません。

次の情報を使用して要求を作成します。

  • 要求の種類: POST
  • URL: https://<Workload Security Hostname>:<port>/api/sessions、たとえば https://localhost:4119/api/sessions
  • 最初のヘッダ:
    • 名前 api-version
    • 値: v1
  • 2番目のヘッダ:
    • 名前 Content-type
    • 値: application/json
  • 本文( tenantNamemfaCode も必要に応じて含めます)):

    {
      "userName": "myUserName",
      "password": "myPassword"
    }

次に、cURLコマンドの例を示します。応答Cookieはcookie.txtファイルに保存されます。

curl -i -X POST \
  https://&nbsp;localhost:4119/api/sessions \
  -H 'Cache-Control: no-cache' \
  -H 'Content-Type: application/json' \
  -H 'api-version: v1' \
  -c cookie.txt \
  -d '{
"userName": "myUserName",
"password": "myPassword"
}'

Set-Cookie 応答ヘッダには、 sID Cookie内のセッションIDが含まれます。応答本文には、 RIDの値として応答IDが含まれています。応答は次の例のようになります。

X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1;mode=block
Cache-Control: no-cache,no-store
Pragma: no-cache
Set-Cookie: sID=D5EE2AC155601C895B33B701080D40A6; Path=/; Secure; HttpOnly
Content-Type: application/json
Content-Length: 141
Date: Wed, 24 Oct 2018 15:29:53 GMT

{
    "administratorID": 1,
    "created": 1540309893123,
    "lastActivity": 1540309893123,
    "accessType": "webService",
    "RID": "77DFF81036170DBF92CB71E4559512B9"
}

セッションCookieと要求IDを使用してAPIキーを作成する

Postman、Paw、またはcURLなどのHTTPクライアントを使用して、POST要求を /api/apikeys リソースに送信します。 /api/sessions リソースから取得したセッションCookieと応答IDを使用して、コールを認証します。

このSDKでは、現在セッションIDとリソースIDを認証に使用することはできません。

次の情報を使用して要求を作成します。

  • 要求の種類: POST
  • URL: https://<Workload Security Hostname>:<port>/api/apikeys、たとえば https://localhost:4119/api/sessions
  • 最初のヘッダ:
    • 名前 api-version
    • 値: v1
  • 2番目のヘッダ:
    • 名前 Content-type
    • 値: application/json
  • 3番目のヘッダ:
    • 名前 rID
    • 値: sessions リソースなどから取得した要求IDです。 77DFF81036170DBF92CB71E4559512B9
  • Cookie: /api/sessions リソースから受け取ったレスポンスの sID Cookieを含めます。
  • ボディ:

    {
      "keyName": "First Key",
      "description": "Created using a request ID",
      "roleID: 1
    }

    役割IDの取得については、 役割IDの取得を参照してください。

次に、cURLコマンドの例を示します。セッションCookieはcookie.txtファイルを介して含まれます。

curl -X POST \
  https://&nbsp;192.168.60.128:4119/api/apikeys \
  -H 'Content-Type: application/json' \
  -H 'Postman-Token: 6f81da09-e5e2-421b-a38a-d5679f50608d' \
  -H 'api-version: v1' \
  -H 'rID: 77DFF81036170DBF92CB71E4559512B9' \
  -b cookie.txt \
  -d '{
  "keyName": "First Key",
  "description": "Created using a request ID",
  "roleID": 1
}'

レスポンス本文には、 secretKeyの値としての秘密鍵が含まれています。次の例のようになります。

{
    "keyName": "First Key",
    "description": "Created using a request ID",
    "locale": "en-US",
    "roleID": 1,
    "timeZone": "America/New_York",
    "active": true,
    "created": 1540310105209,
    "unsuccessfulSignInAttempts": 0,
    "secretKey": "8:4rFctPvno+dxntueMcso4F61SUZMFVt3I6SczG7ysOA=",
    "serviceAccount": false,
    "ID": 8
}

secretKey を保存して、API呼び出しの api-secret-key ヘッダで後で使用できるようにします。