本頁說明如何使用 Cloud Monitoring 查看服務帳戶和服務帳戶金鑰的用量指標。您可以查看及追蹤這些指標的使用模式,自動或手動找出異常狀況。
如果服務帳戶和服務帳戶金鑰用於呼叫任何 Google API (包括不屬於 Google Cloud的 API),這些指標就會顯示這些項目。這些指標包括成功和失敗的 API 呼叫。舉例來說,如果 API 呼叫失敗,是因為呼叫端未獲授權呼叫該 API,或是因為要求參照的資源不存在,則用於該 API 呼叫的服務帳戶或金鑰會顯示在指標中。
如果系統在嘗試驗證要求時列出服務帳戶金鑰,即使系統未使用該金鑰驗證要求,這些指標也會顯示服務帳戶金鑰。使用 Cloud Storage 的簽署網址或向第三方應用程式驗證時,最常發生這種情況。因此,您可能會看到未用於驗證的金鑰用量指標。
下列指標不會顯示在服務帳戶或服務帳戶金鑰指標中:
- Cloud Storage HMAC 驗證金鑰
- 透過繫結至服務帳戶的 API 金鑰驗證的要求
Monitoring 會保留服務帳戶指標 6 週。如需存取較長時段的資料,您可以定期將結果匯出至 BigQuery。詳情請參閱解決方案文件中的「監控指標匯出」一文。
使用服務帳戶或服務帳戶金鑰後,通常幾分鐘內就會顯示使用指標。
事前準備
-
Enable the IAM and Cloud Monitoring APIs.
必要的角色
如要取得查看服務帳戶和金鑰近期使用情形的必要權限,請要求管理員授予您專案的「監控檢視者」 (roles/monitoring.viewer
) IAM 角色。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。
查看所有服務帳戶或金鑰的用量指標
如要查看服務帳戶或服務帳戶金鑰的用量指標,請按照下列步驟操作:
控制台
如要使用 Metrics Explorer 查看受監控資源的指標,請按照下列步驟操作:
-
前往 Google Cloud 控制台的 leaderboard「Metrics Explorer」頁面:
如果您是使用搜尋列尋找這個頁面,請選取子標題為「Monitoring」的結果。
- 在 Google Cloud 控制台的工具列中,選取您的 Google Cloud 專案。 如要進行 App Hub 設定,請選取 App Hub 主專案或已啟用應用程式的資料夾管理專案。
- 在「指標」元素中,展開「選取指標」選單,
在篩選列中輸入
IAM Service Account
, 然後使用子選單選取特定資源類型和指標:- 在「Active resources」(有效資源) 選單中,選取「IAM Service Account」(IAM 服務帳戶)。
- 在「Active metric categories」(使用中的指標類別) 選單中,選取「Service_account」。
- 在「Active metrics」(使用中的指標) 選單中,選取服務帳戶指標。
所選時間間隔內可用的指標如下:
- 如要查看服務帳戶使用情況指標,請選取「服務帳戶驗證事件」。
- 如要查看服務帳戶金鑰使用情況指標,請選取「服務帳戶金鑰驗證事件」。
- 按一下 [套用]。
如要從顯示畫面中移除時間序列,請使用「篩選器」元素。
如要合併時間序列,請使用「Aggregation」元素上的選單。舉例來說,如要依據 VM 的所在區域顯示 CPU 使用率,請將第一個選單設為「平均值」,第二個選單設為「區域」。
將「Aggregation」(匯總) 元素的第一個選單設為「Unaggregated」(未匯總) 時,系統會顯示所有時間序列。「匯總」元素的預設設定取決於您選取的指標類型。
- 如要取得每日一個樣本的配額和其他指標,請按照下列步驟操作:
- 在「顯示」窗格中,將「小工具類型」設為「堆疊長條圖」。
- 將時間範圍設為至少一週。
REST
您可以使用 Cloud Monitoring API 的 timeSeries.list
方法,以程式輔助方式存取用量指標。
使用任何要求資料之前,請先替換以下項目:
PROJECT_ID
:您的 Google Cloud 專案 ID。專案 ID 為英數字串,例如my-project
。-
METRIC_TYPE
:要檢查的指標類型。請使用下列其中一個值:-
如要查看服務帳戶使用指標,請使用
iam.googleapis.com%2Fservice_account%2Fauthn_events_count
。 -
如要查看服務帳戶金鑰用量指標,請使用
iam.googleapis.com%2Fservice_account%2Fkey%2Fauthn_events_count
。
-
如要查看服務帳戶使用指標,請使用
END_TIME
:要檢查的時間間隔結束時間,採用百分比編碼的 RFC 3339 格式。例如:2020-06-12T00%3A00%3A00.00Z
。START_TIME
:要檢查的時間間隔開始時間,採用百分比編碼的 RFC 3339 格式。例如:2020-04-12T00%3A00%3A00.00Z
。
HTTP 方法和網址:
GET https://monitoring.googleapis.com/v3/projects/PROJECT_ID/timeSeries?filter=metric.type%3D%22METRIC_TYPE%22&interval.endTime=END_TIME&interval.startTime=START_TIME
如要傳送要求,請展開以下其中一個選項:
如要進一步瞭解如何以程式輔助方式讀取用量指標,請參閱 Monitoring 說明文件中的「讀取指標資料」。
查看單一服務帳戶的用量指標
如要查看單一服務帳戶的用量指標,請按照下列步驟操作:
控制台
前往 Google Cloud 控制台的「Service Accounts」(服務帳戶) 頁面。
選取含有服務帳戶的專案。
按一下服務帳戶的電子郵件地址。
按一下「指標」分頁標籤。「驗證流量」圖表會顯示服務帳戶的用量指標。
選用:如要在「指標探索器」頁面查看圖表,並使用其他篩選和查看選項,請依序點選
「在指標探索器中查看」。
REST
搭配特定篩選器使用 Cloud Monitoring API 的 timeSeries.list
方法,即可取得單一服務帳戶的用量指標。然後使用這些指標判斷帳戶上次使用時間。
使用任何要求資料之前,請先替換以下項目:
PROJECT_ID
:您的 Google Cloud 專案 ID。專案 ID 為英數字串,例如my-project
。-
SERVICE_ACCOUNT_ID
:服務帳戶的專屬數值 ID。如要找出服務帳戶的專屬數字 ID,請按照下列步驟操作:-
前往 Google Cloud 控制台的「Service Accounts」(服務帳戶) 頁面。
前往「Service Accounts」(服務帳戶) 頁面 - 按一下服務帳戶的電子郵件地址。服務帳戶的專屬數字 ID 是「專屬 ID」欄位中的值。
-
END_TIME
:要檢查的時間間隔結束時間,採用百分比編碼的 RFC 3339 格式。例如:2020-06-12T00%3A00%3A00.00Z
。START_TIME
:要檢查的時間間隔開始時間,採用百分比編碼的 RFC 3339 格式。例如:2020-04-12T00%3A00%3A00.00Z
。
HTTP 方法和網址:
GET https://monitoring.googleapis.com/v3/projects/PROJECT_ID/timeSeries?filter=metric.type%3D%22iam.googleapis.com%2Fservice_account%2Fauthn_events_count%22%20AND%20resource.labels.unique_id%3D%22SERVICE_ACCOUNT_ID%22&interval.endTime=END_TIME&interval.startTime=START_TIME
如要傳送要求,請展開以下其中一個選項:
回應會包含 timeSeries
物件,內含指定服務帳戶的所有近期驗證事件。
查看單一服務帳戶金鑰的用量指標
如要查看單一服務帳戶金鑰的用量指標,請按照下列步驟操作:
控制台
前往 Google Cloud 控制台的「Service Accounts」(服務帳戶) 頁面。
選取包含與金鑰相關聯服務帳戶的專案。
按一下與金鑰相關聯的服務帳戶電子郵件地址。
按一下「指標」分頁標籤。「每個金鑰的驗證流量」圖表會顯示與服務帳戶相關聯的所有金鑰使用指標。
在圖表圖例中,按一下要查看使用指標的服務帳戶金鑰 ID。圖表會更新,只顯示該服務帳戶金鑰的指標。
選用:如要在「指標探索器」頁面查看圖表,並使用其他篩選和查看選項,請依序點選
「在指標探索器中查看」。
REST
首先,請取得服務帳戶金鑰的 ID。
列出服務帳戶金鑰:
projects.serviceAccounts.keys.list
方法會列出服務帳戶的所有服務帳戶金鑰。使用任何要求資料之前,請先替換以下項目:
PROJECT_ID
:您的 Google Cloud 專案 ID。專案 ID 為英數字串,例如my-project
。SA_NAME
:要列出金鑰的服務帳戶名稱。KEY_TYPES
:選用。以半形逗號分隔的鍵類型清單,您想在回應中加入這些類型。金鑰類型會指出金鑰是由使用者管理 (USER_MANAGED
) 還是系統管理 (SYSTEM_MANAGED
)。如果留空,系統會傳回所有金鑰。
HTTP 方法和網址:
GET https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/SA_NAME@PROJECT_ID.iam.gserviceaccount.com/keys?keyTypes=KEY_TYPES
如要傳送要求,請展開以下其中一個選項:
您應該會收到如下的 JSON 回應:
{ "keys": [ { "name": "projects/my-project/serviceAccounts/my-service-account@my-project.iam.gserviceaccount.com/keys/90c48f61c65cd56224a12ab18e6ee9ca9c3aee7c", "validAfterTime": "2020-03-04T17:39:47Z", "validBeforeTime": "9999-12-31T23:59:59Z", "keyAlgorithm": "KEY_ALG_RSA_2048", "keyOrigin": "GOOGLE_PROVIDED", "keyType": "USER_MANAGED" }, { "name": "projects/my-project/serviceAccounts/my-service-account@my-project.iam.gserviceaccount.com/keys/e5e3800831ac1adc8a5849da7d827b4724b1fce8", "validAfterTime": "2020-03-31T23:50:09Z", "validBeforeTime": "9999-12-31T23:59:59Z", "keyAlgorithm": "KEY_ALG_RSA_2048", "keyOrigin": "GOOGLE_PROVIDED", "keyType": "USER_MANAGED" }, { "name": "projects/my-project/serviceAccounts/my-service-account@my-project.iam.gserviceaccount.com/keys/b97699f042b8eee6a846f4f96259fbcd13e2682e", "validAfterTime": "2020-05-17T18:58:13Z", "validBeforeTime": "9999-12-31T23:59:59Z", "keyAlgorithm": "KEY_ALG_RSA_2048", "keyOrigin": "GOOGLE_PROVIDED", "keyType": "USER_MANAGED", "disabled": true "disable_reason": "SERVICE_ACCOUNT_KEY_DISABLE_REASON_EXPOSED" "extended_status": "SERVICE_ACCOUNT_KEY_EXTENDED_STATUS_KEY_EXPOSED" "extended_status_message": "exposed at: https://www.github.com/SomePublicRepo" } ] }
使用回應中的中繼資料,找出要追蹤的金鑰。 然後從
name
欄位結尾複製金鑰的專屬 ID。name
欄位的格式如下:"name": "projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_EMAIL/keys/KEY_ID"
金鑰的專屬 ID 是
keys/
後方的所有內容。舉例來說,以下鍵名中的專屬 ID 為
0f561cc41650ff521899de2fd653bd3de08e2da4
:"name": "projects/my-project/serviceAccounts/my-account@my-project.iam.gserviceaccount.com/keys/0f561cc41650ff521899de2fd653bd3de08e2da4"
然後使用 ID 查看服務帳戶金鑰的用量指標。
搭配特定篩選器使用 Cloud Monitoring API 的 timeSeries.list
方法,即可取得單一服務帳戶金鑰的用量指標。然後使用這些指標判斷金鑰上次使用的時間。
使用任何要求資料之前,請先替換以下項目:
PROJECT_ID
:您的 Google Cloud 專案 ID。專案 ID 為英數字串,例如my-project
。KEY_ID
:服務帳戶金鑰的專屬 ID。END_TIME
:要檢查的時間間隔結束時間,採用百分比編碼的 RFC 3339 格式。例如:2020-06-12T00%3A00%3A00.00Z
。START_TIME
:要檢查的時間間隔開始時間,採用百分比編碼的 RFC 3339 格式。例如:2020-04-12T00%3A00%3A00.00Z
。
HTTP 方法和網址:
GET https://monitoring.googleapis.com/v3/projects/PROJECT_ID/timeSeries?filter=metric.type%3D%22iam.googleapis.com%2Fservice_account%2Fkey%2Fauthn_events_count%22%20AND%20metric.labels.key_id%3D%22KEY_ID%22&interval.endTime=END_TIME&interval.startTime=START_TIME
如要傳送要求,請展開以下其中一個選項:
回應會包含 timeSeries
物件,其中列出指定服務帳戶金鑰的所有近期驗證事件。
匯出指標
您可以透過 Monitoring 將指標匯出至 BigQuery。匯出指標有助於進行長期分析,因為 Monitoring 只會保留指標一段時間。
如需操作說明,請參閱解決方案文件中的「監控指標匯出」一節。
後續步驟
- 瞭解如何將指標資料匯出至 BigQuery。
- 使用活動分析工具,只查看服務帳戶和金鑰的最近驗證事件。
- 使用服務帳戶洞察功能,找出過去 90 天內未使用的服務帳戶。