Monitor API トークンの処理

Python スクリプトまたは IBM Cloud Monitoring REST API でルーチン・タスクを自動化して通知をモニターする場合は、IBM Cloud Monitoring サービスでの認証に Monitor API トークンを使用することができます。

IBM Cloud Monitoring サービスの各インスタンスに関する以下の情報を考慮してください。

  • チームごとに Monitor API トークンがあります。
  • トークンが漏えいした場合や組織のセキュリティー・ポリシーによって特定の条件後にトークンをリセットする必要がある場合、管理権限を持つユーザーは API トークンをリセットできます。

モニタリング UI を使用した Monitor API トークンの取得

Monitor API トークンを取得するには、以下のステップを実行します。

  1. ナビゲーション・バーの*「セレクター (Selector)」ボタンから*「設定」**を選択します。
  2. 「Monitor API」セクションから「Monitor API トークン (Monitor API Token)」**をコピーします。

トークンを取得したら、API 呼び出しを実行し、このトークンを Authorization ヘッダーで使用できます。

トークンをコピーする際、次の Bearer キーワードを含めます: Authorization: Bearer MONITOR_API_TOKEN

モニタリング UI を使用した Monitor API トークンのリセット

Monitor API トークンをリセットするには、以下のステップを実行します。

  1. ナビゲーション・バーの*「セレクター (Selector)」*ボタンから、**「設定」**を選択します。
  2. 「Monitor API」セクションで「トークンのリセット (Reset Token)」**をクリックすると、API トークンがリセットされます。

API を使用した Monitor API トークンの取得

トークン API を使用して、Monitor API トークンを取得できます。

例えば、以下の cURL コマンドを使用して Monitor API トークンを取得できます。

curl -X GET <MONITORING_REST_API_ENDPOINT>/api/token -H "Authorization: $AUTH_TOKEN" -H "IBMInstanceID: $GUID" -H "SysdigTeamID: $TEAM_ID" -H "content-type: application/json"
GET <MONITORING_REST_API_ENDPOINT>/api/token -H "Authorization: $AUTH_TOKEN" -H "IBMInstanceID: $GUID" -H "SysdigTeamID: $TEAM_ID" -H "content-type: application/json"

説明

  • <MONITORING_REST_API_ENDPOINT> は、REST API 呼び出しの対象となるエンドポイントを示します。 詳しくは、REST API エンドポイントを参照してください。 例えば、us-south で使用可能なインスタンスのパブリック・エンドポイントは https://us-south.monitoring.cloud.ibm.com/api です。

  • -H を使用して複数のヘッダーを渡すことができます。

    AuthorizationIBMInstanceID は、認証に必要なヘッダーです。

    SysdigTeamID は、Monitor API トークンを取得したいチームを定義します。

    AUTH_TOKENGUID を取得する方法については、IAM トークンのヘッダーを参照してください。

モニタリング・インスタンスで許可されている権限が IAM_ONLY に設定されている場合は、Monitor API トークンを取得しようとすると、「{"errors":[{"reason":"Not enough privileges to complete the action","message":"Access is denied"}]}」という応答が返されます。

サンプルの JSON コード

以下のサンプルの JSON コードを使用して、Monitor API トークンを取得できます。

def get_sysdig_api_token(self, instance_guid):
   """ Get the Monitor API token  by calling the /api/token endpoint """
   if self.access_token == None:
       self.get_iam_token()
   if self.access_token == None:
       # If the token is still None we have problems ....
       return None
   headers = { "Authorization": self.access_token,
               "Accept": "application/json",
               "IBMInstanceID": instance_guid }
   url = self.sysdig_endpoint + "/api/token"
   response = requests.get(url, headers=headers)
   if response.status_code == 200:
       data = response.json()
       return data["token"]["key"]
   else:
       print_error("Error getting Monitor API token  - {}".format(response.text))
       return None