使用 Monitor API 令牌
當您使用 Python 腳本或 IBM Cloud Monitoring REST API 來自動執行例行任務和監控通知時,您可以使用 Monitor API 令牌來驗證 IBM Cloud Monitoring 服務。
請考量每一個 IBM Cloud Monitoring 服務實例的下列資訊:
- 每個隊伍有一個 Monitor API 令牌。
- 如果記號已遭洩露,或您組織的安全原則需要在特定條件之後重設記號,則具有管理許可權的使用者可以重設 API 記號。
透過監視使用者介面取得監視 API 記號
完成下列步驟以取得 Monitor API token:
- 從導覽列的選取器 按鈕中,選擇設定。
- 從 Monitor API 區段,複製 Monitor API Token。
取得記號之後,您可以執行 API 呼叫,並在 Authorization 標頭中使用此記號。
當您複製記號時,請包含 Bearer 關鍵字: Authorization: Bearer MONITOR_API_TOKEN
透過監視使用者介面重設監視 API 記號
請完成下列步驟來重設 Monitor API 記號:
- 從導覽列的選取器 按鈕中,選擇設定。
- 在「監視 API」區段中,按一下「重設令牌」以重設 API 令牌。
使用 API 取得 Monitor API 記號
您可以使用記號 API 來取得監視 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 時,當您嘗試取得監視 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