本頁面說明如何管理服務帳戶洞察資料,這些資料是關於專案中哪些服務帳戶在過去 90 天內未通過驗證的發現。建議您停用或刪除這些未使用的服務帳戶和金鑰,因為這會造成不必要的安全風險。
以繫結至服務帳戶的 API 金鑰驗證的要求,不會記錄在服務帳戶用量指標中。因此,這些服務帳戶可能會回報為未使用。
事前準備
- 
     
     
      
      
  
   
   
     
   
  
   
   
     
   
  
 
 
   
 
 
  
  
    
      Enable the Recommender API. Roles required to enable APIs To enable APIs, you need the Service Usage Admin IAM role ( roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.
- 選用:瞭解建議工具洞察。
必要的角色
如要取得管理服務帳戶洞察資料所需的權限,請要求管理員在您要管理洞察資料的專案中,授予下列 IAM 角色:
- 
            如要查看服務帳戶洞察資料,請執行下列操作:
              
  
  
    
      IAM Recommender 檢視者  (roles/recommender.iamViewer)
- 
            如要修改服務帳戶洞察資料:
              
  
  
    
      IAM 建議工具管理員  (roles/recommender.iamAdmin)
如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。
這些預先定義的角色包含管理服務帳戶洞察資料所需的權限。如要查看確切的必要權限,請展開「必要權限」部分:
所需權限
如要管理服務帳戶洞察資料,您必須具備下列權限:
- 
                如要查看服務帳戶深入分析,請按照下列步驟操作:
                - 
                      recommender.iamServiceAccountinsights.get
- 
                      recommender.iamServiceAccountinsights.list
 
- 
                      
- 
                如要修改服務帳戶洞察資料:
                  recommender.iamServiceAccountinsights.update
列出服務帳戶深入分析
如要列出專案的所有服務帳戶洞察資料,請使用下列其中一個方法:gcloud
      使用 gcloud recommender
      insights list 指令,查看專案的所有服務帳戶洞察資料。
執行指令前,請先替換下列值:
- PROJECT_ID:您要列出洞察資料的專案 ID。
gcloud recommender insights list --insight-type=google.iam.serviceAccount.Insight \ --project=PROJECT_ID \ --location=global
輸出內容會列出專案的所有服務帳戶洞察資料。例如:
INSIGHT_ID CATEGORY INSIGHT_STATE LAST_REFRESH_TIME SEVERITY INSIGHT_SUBTYPE DESCRIPTION 446303ba-2a14-49cc-b9fa-e2d2499d4f82 SECURITY ACTIVE 2022-05-24T07:00:00Z LOW SERVICE_ACCOUNT_USAGE Service account sa-1@my-project.iam.gserviceaccount.com was inactive. 4cfd82c3-7320-4dc6-9b67-ca0756bbd54c SECURITY ACTIVE 2022-05-24T07:00:00Z LOW SERVICE_ACCOUNT_USAGE Service account sa-2@my-project.iam.gserviceaccount.com was inactive. a627bed7-c8f4-4611-89c9-2a9a8618ca1b SECURITY ACTIVE 2022-05-24T07:00:00Z LOW SERVICE_ACCOUNT_USAGE Service account sa-3@my-project.iam.gserviceaccount.com was inactive. a922dd59-df0a-422d-a2a4-096195e1dae5 SECURITY ACTIVE 2022-05-24T07:00:00Z LOW SERVICE_ACCOUNT_USAGE Service account sa-4@my-project.iam.gserviceaccount.com was inactive.
REST
  Recommender API 的
  insights.list
  
  方法會列出專案的所有服務帳戶洞察資料。
使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID:要列出洞察資料的專案 ID。
HTTP 方法和網址:
GET https://recommender.googleapis.com/v1/projects/PROJECT_ID/locations/global/insightTypes/google.iam.serviceAccount.Insight/insights
如要傳送要求,請展開以下其中一個選項:
回應會列出專案的所有服務帳戶洞察資料。例如:
{
  "insights": [
    {
      "name": "projects/123456789012/locations/global/insightTypes/google.iam.serviceAccount.Insight/insights/446303ba-2a14-49cc-b9fa-e2d2499d4f82",
      "description": "Service account sa-1@my-project.iam.gserviceaccount.com was inactive.",
      "content": {
        "serviceAccountId": "103185812403937829397",
        "email": "sa-1@my-project.iam.gserviceaccount.com",
        "lastAuthenticatedTime": "2020-09-11T07:00:00Z"
      },
      "lastRefreshTime": "2022-05-24T07:00:00Z",
      "observationPeriod": "19008000s",
      "stateInfo": {
        "state": "ACTIVE"
      },
      "category": "SECURITY",
      "targetResources": [
        "//cloudresourcemanager.googleapis.com/projects/123456789012"
      ],
      "insightSubtype": "SERVICE_ACCOUNT_USAGE",
      "etag": "\"9d797dd04263c855\"",
      "severity": "LOW"
    },
    {
      "name": "projects/123456789012/locations/global/insightTypes/google.iam.serviceAccount.Insight/insights/4cfd82c3-7320-4dc6-9b67-ca0756bbd54c",
      "description": "Service account sa-2@my-project.iam.gserviceaccount.com was inactive.",
      "content": {
        "serviceAccountId": "105496400997178042131",
        "email": "sa-2@my-project.iam.gserviceaccount.com"
      },
      "lastRefreshTime": "2022-05-24T07:00:00Z",
      "observationPeriod": "16070400s",
      "stateInfo": {
        "state": "ACTIVE"
      },
      "category": "SECURITY",
      "targetResources": [
        "//cloudresourcemanager.googleapis.com/projects/123456789012"
      ],
      "insightSubtype": "SERVICE_ACCOUNT_USAGE",
      "etag": "\"783a32b635d79a4e\"",
      "severity": "LOW"
    }
  ]
}如要進一步瞭解洞察資料的元件,請參閱本頁的「查看服務帳戶洞察資料」。
取得單一服務帳戶洞察資料
如要進一步瞭解單一洞察資料,包括洞察資料的說明、狀態和任何相關聯的建議,請使用下列其中一種方法:
gcloud
      使用 gcloud recommender
      insights describe 指令和洞察 ID,查看單一洞察的相關資訊。
    
- 
        INSIGHT_ID:要查看的洞察 ID。如要找出 ID,請列出專案的洞察資料。
- PROJECT_ID:要管理洞察資料的專案 ID。
gcloud recommender insights describe INSIGHT_ID \ --insight-type=google.iam.serviceAccount.Insight \ --project=PROJECT_ID \ --location=global
      輸出內容會詳細顯示洞察資料。舉例來說,以下洞察資訊指出服務帳戶 sa-1@my-project.iam.gserviceaccount.com 自 2020 年 10 月 11 日起就未通過驗證。
category: SECURITY content: email: sa-1@my-project.iam.gserviceaccount.com lastAuthenticatedTime: '2020-10-11T07:00:00Z' serviceAccountId: '103185812403937829397' description: Service account sa-1@my-project.iam.gserviceaccount.com was inactive. etag: '"9d797dd04263c855"' insightSubtype: SERVICE_ACCOUNT_USAGE lastRefreshTime: '2022-05-24T07:00:00Z' name: projects/123456789012/locations/global/insightTypes/google.iam.serviceAccount.Insight/insights/446303ba-2a14-49cc-b9fa-e2d2499d4f82 observationPeriod: 19008000s severity: LOW stateInfo: state: ACTIVE targetResources: - //cloudresourcemanager.googleapis.com/projects/123456789012
如要進一步瞭解洞察資料的元件,請參閱本頁的「查看服務帳戶洞察資料」。
REST
  Recommender API 的 insights.get 方法會取得單一洞察資料。
使用任何要求資料之前,請先替換以下項目:
- 
          PROJECT_ID:要管理洞察資料的專案 ID。
- 
        INSIGHT_ID:要查看的洞察資料 ID。如果您不知道洞察 ID,可以列出專案中的洞察來找出 ID。洞察 ID 是洞察的name欄位中insights/後方的所有內容。
HTTP 方法和網址:
GET https://recommender.googleapis.com/v1/projects/PROJECT_ID/locations/global/insightTypes/google.iam.serviceAccount.Insight/insights/INSIGHT_ID
如要傳送要求,請展開以下其中一個選項:
      回覆會包含洞察資料。舉例來說,以下洞察資訊指出服務帳戶 sa-1@my-project.iam.gserviceaccount.com 自 2020 年 10 月 11 日起就未通過驗證。
{
  "name": "projects/123456789012/locations/global/insightTypes/google.iam.serviceAccount.Insight/insights/446303ba-2a14-49cc-b9fa-e2d2499d4f82",
  "description": "Service account sa-1@my-project.iam.gserviceaccount.com was inactive.",
  "content": {
    "serviceAccountId": "103185812403937829397",
    "email": "sa-1@my-project.iam.gserviceaccount.com",
    "lastAuthenticatedTime": "2020-09-11T07:00:00Z"
  },
  "lastRefreshTime": "2022-05-24T07:00:00Z",
  "observationPeriod": "19008000s",
  "stateInfo": {
    "state": "ACTIVE"
  },
  "category": "SECURITY",
  "targetResources": [
    "//cloudresourcemanager.googleapis.com/projects/123456789012"
  ],
  "insightSubtype": "SERVICE_ACCOUNT_USAGE",
  "etag": "\"9d797dd04263c855\"",
  "severity": "LOW"
}如要進一步瞭解洞察資料的元件,請參閱本頁的「查看服務帳戶洞察資料」。
查看服務帳戶深入分析
取得單一洞察後,您可以查看其內容,瞭解洞察所強調的資源用量模式。
    洞察內容取決於子類型。
    服務帳戶深入分析 (google.iam.serviceAccount.Insight) 深入分析具有 SERVICE_ACCOUNT_USAGE 子類型。
    SERVICE_ACCOUNT_USAGE 洞察包含下列元件,但不一定會依序顯示:
- 
      associatedRecommendations:與洞察資料相關聯的任何建議 ID。如果沒有與洞察資料相關的建議,這個欄位會留空。
- 
      category:IAM 洞察的類別一律為SECURITY。
- 
      content:回報服務帳戶上次通過驗證的時間。這個欄位包含下列元件:- email:服務帳戶的電子郵件地址。
- lastAuthenticatedTime:服務帳戶最近一次通過驗證的時間。如果服務帳戶沒有任何記錄的驗證,就不會包含這個欄位。
- serviceAccountId:服務帳戶的專屬數值 ID。
 
- 
      description:使用者可自然閱讀的洞察摘要。
- 
      etag:洞察資料目前狀態的專屬 ID。 每次洞察資料變更時,系統都會指派新的etag值。如要變更洞察資料的狀態,必須提供現有洞察資料的 etag。使用etag可確保只有在洞察資料自上次擷取後未變更時,才會執行任何作業。
- 
      insightSubtype:洞察子類型。
- 
      lastRefreshTime:洞察資料上次更新的日期,表示用於產生洞察資料的資料是否為最新狀態。
- 
      name:洞察名稱,格式如下:projects/PROJECT_ID/locations/global/insightTypes/google.iam.serviceAccount.Insight/insights/INSIGHT_ID 預留位置的值如下: - 
          PROJECT_ID:產生洞察資料的專案 ID。
- INSIGHT_ID:洞察資料的專屬 ID。
 
- 
          
- 
      observationPeriod:洞察資料的參考時間範圍。用來生成洞察的來源資料結束於lastRefreshTime,開始於lastRefreshTime減去observationPeriod。
- 
      stateInfo:提案後,洞察資料會經歷多種狀態轉換:- 
          ACTIVE:洞察資料已產生,但未採取任何行動,或採取行動後未更新洞察資料的狀態。基礎資料變更時,系統會更新有效的洞察資料。
- 
          ACCEPTED:已根據洞察資料採取行動。當相關聯的建議標示為CLAIMED、SUCCEEDED或FAILED,或直接接受洞察資料時,洞察資料就會獲得採用。洞察資料處於ACCEPTED狀態時,洞察資料內容無法變更。接受的洞察資料會在接受後保留 90 天。
 
- 
          
- 
      targetResources:洞察資料所屬專案的完整資源名稱 。例如://cloudresourcemanager.googleapis.com/projects/123456789012。
將服務帳戶洞察資料標示為 ACCEPTED
  
    如果根據有效洞察資料採取行動,您可以將該洞察資料標示為 ACCEPTED。ACCEPTED 狀態會告知 Recommender API 您已根據這項洞察資料採取行動,有助於改善建議。
    接受的洞察資料在標示為 ACCEPTED 後,會保留 90 天。
  
gcloud
      使用 
      gcloud recommender insights mark-accepted 指令並提供洞察 ID,將洞察標示為 ACCEPTED。
    
- 
        INSIGHT_ID:要查看的洞察 ID。如要找出 ID,請列出專案的洞察資料。
- PROJECT_ID:要管理洞察資料的專案 ID。
- 
        ETAG:洞察版本的 ID。如要取得etag,請按照下列步驟操作:- 
            使用 gcloud recommender insights describe指令取得洞察資料。
- 
            從輸出內容中找出並複製 etag值,包括前後的引號。例如:"d3cdec23cc712bd0"。
 
- 
            使用 
gcloud recommender insights mark-accepted INSIGHT_ID \ --insight-type=google.iam.serviceAccount.Insight \ --project=PROJECT_ID \ --location=global \ --etag=ETAG
      輸出內容會顯示洞察資料,現在狀態為 ACCEPTED:
    
category: SECURITY content: email: sa-1@my-project.iam.gserviceaccount.com lastAuthenticatedTime: '2020-10-11T07:00:00Z' serviceAccountId: '103185812403937829397' description: Service account sa-1@my-project.iam.gserviceaccount.com was inactive. etag: '"39c4199dcec92848"' insightSubtype: SERVICE_ACCOUNT_USAGE lastRefreshTime: '2022-05-24T07:00:00Z' name: projects/123456789012/locations/global/insightTypes/google.iam.serviceAccount.Insight/insights/446303ba-2a14-49cc-b9fa-e2d2499d4f82 observationPeriod: 19008000s severity: LOW stateInfo: state: ACCEPTED targetResources: - //cloudresourcemanager.googleapis.com/projects/123456789012
如要進一步瞭解洞察資訊的狀態,請參閱本頁的「查看服務帳戶洞察資訊」。
REST
  Recommender API 的
  insights.markAccepted
  
  方法會將洞察標示為 ACCEPTED。
使用任何要求資料之前,請先替換以下項目:
- 
          PROJECT_ID:要管理洞察資料的專案 ID。
- 
        INSIGHT_ID:要查看的洞察資料 ID。如果您不知道洞察 ID,可以列出專案中的洞察來找出 ID。洞察 ID 是洞察的name欄位中insights/後方的所有內容。
- 
        ETAG:洞察版本的 ID。如要取得etag,請按照下列步驟操作:- 使用 insights.get方法取得洞察資料。
- 從回應中找出並複製 etag值。
 
- 使用 
HTTP 方法和網址:
POST https://recommender.googleapis.com/v1/projects/PROJECT_ID/locations/global/insightTypes/google.iam.serviceAccount.Insight/insights/INSIGHT_ID:markAccepted
JSON 要求主體:
{
  "etag": "ETAG"
}如要傳送要求,請展開以下其中一個選項:
      回應包含洞察資料,現在會顯示 ACCEPTED 的狀態:
    
{
  "name": "projects/123456789012/locations/global/insightTypes/google.iam.serviceAccount.Insight/insights/446303ba-2a14-49cc-b9fa-e2d2499d4f82",
  "description": "Service account sa-1@my-project.iam.gserviceaccount.com was inactive.",
  "content": {
    "serviceAccountId": "103185812403937829397",
    "email": "sa-1@my-project.iam.gserviceaccount.com",
    "lastAuthenticatedTime": "2020-10-11T07:00:00Z"
  },
  "lastRefreshTime": "2022-05-24T07:00:00Z",
  "observationPeriod": "19008000s",
  "stateInfo": {
    "state": "ACCEPTED"
    },
  "category": "SECURITY",
  "targetResources": [
    "//cloudresourcemanager.googleapis.com/projects/123456789012"
  ],
  "insightSubtype": "SERVICE_ACCOUNT_USAGE",
  "etag": "\"39c4199dcec92848\"",
  "severity": "LOW"
}如要進一步瞭解洞察資訊的狀態,請參閱本頁的「查看服務帳戶洞察資訊」。
後續步驟
- 查看其他可用的工具,瞭解服務帳戶的使用情況。
- 使用 Active Assist 查看及管理專案的所有建議,包括 IAM 建議。