Monitor API トークンの処理
Python スクリプトまたは IBM Cloud Monitoring REST API でルーチン・タスクを自動化して通知をモニターする場合は、IBM Cloud Monitoring サービスでの認証に Monitor API トークンを使用することができます。
IBM Cloud Monitoring サービスの各インスタンスに関する以下の情報を考慮してください。
- チームごとに Monitor API トークンがあります。
- トークンが漏えいした場合や組織のセキュリティー・ポリシーによって特定の条件後にトークンをリセットする必要がある場合、管理権限を持つユーザーは API トークンをリセットできます。
モニタリング UI を使用した Monitor API トークンの取得
Monitor API トークンを取得するには、以下のステップを実行します。
- ナビゲーション・バーの*「セレクター (Selector)」ボタンから*「設定」**を選択します。
- 「Monitor API」セクションから「Monitor API トークン (Monitor API Token)」**をコピーします。
トークンを取得したら、API 呼び出しを実行し、このトークンを Authorization ヘッダーで使用できます。
トークンをコピーする際、次の Bearer キーワードを含めます: Authorization: Bearer MONITOR_API_TOKEN
モニタリング UI を使用した Monitor API トークンのリセット
Monitor API トークンをリセットするには、以下のステップを実行します。
- ナビゲーション・バーの*「セレクター (Selector)」*ボタンから、**「設定」**を選択します。
- 「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を使用して複数のヘッダーを渡すことができます。AuthorizationとIBMInstanceIDは、認証に必要なヘッダーです。SysdigTeamIDは、Monitor API トークンを取得したいチームを定義します。AUTH_TOKENとGUIDを取得する方法については、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