查找未使用的服务账号

本页面介绍如何管理服务账号数据分析,即有关您的项目中过去 90 天内未进行身份验证的服务账号的发现结果。我们建议您停用或删除这些未使用的服务账号和密钥,因为它们会带来不必要的安全风险。

通过绑定到服务账号的 API 密钥进行身份验证的请求不会记录在服务账号使用情况指标中。因此,这些服务账号可能会被报告为未使用。

Google Cloud之外的 Google API 的身份验证活动(例如向 Google Workspace API 全网域委托权限)不会由活动分析器服务账号数据洞见跟踪。如需跟踪这些身份验证活动,请使用 Cloud Monitoring 服务账号使用情况指标

建议您在停用或删除服务账号之前,将服务账号洞见与 Cloud Monitoring 服务账号使用情况指标进行交叉对比。此方法可防止您移除正在 Google Cloud之外的 Google API 中使用的服务账号。

准备工作

  • 启用 Recommender API。

    启用 API 所需的角色

    如需启用 API,您需要拥有 serviceusage.services.enable 权限。如果您创建了项目,则可能已经通过 Owner 角色 (roles/owner) 获得了此权限。否则,您可以通过 Service Usage Admin 角色 (roles/serviceusage.serviceUsageAdmin) 获得此权限。了解如何授予角色

    启用 API

  • 可选:了解 Recommender 数据分析

所需的角色

如需获得管理服务账号数据分析所需的权限,请让管理员向您授予您要管理其数据分析的项目的以下 IAM 角色:

如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

这些预定义角色包含管理服务账号数据分析所需的权限。如需查看所需的确切权限,请展开所需权限部分:

所需权限

如需管理服务账号分析洞见,您需要具有以下权限:

  • 如需查看服务账号数据分析:
    • 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. was inactive.
4cfd82c3-7320-4dc6-9b67-ca0756bbd54c  SECURITY  ACTIVE         2022-05-24T07:00:00Z  LOW       SERVICE_ACCOUNT_USAGE  Service account sa-2@my-project. was inactive.
a627bed7-c8f4-4611-89c9-2a9a8618ca1b  SECURITY  ACTIVE         2022-05-24T07:00:00Z  LOW       SERVICE_ACCOUNT_USAGE  Service account sa-3@my-project. was inactive.
a922dd59-df0a-422d-a2a4-096195e1dae5  SECURITY  ACTIVE         2022-05-24T07:00:00Z  LOW       SERVICE_ACCOUNT_USAGE  Service account sa-4@my-project. 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. was inactive.",
      "content": {
        "serviceAccountId": "103185812403937829397",
        "email": "sa-1@my-project.",
        "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. was inactive.",
      "content": {
        "serviceAccountId": "105496400997178042131",
        "email": "sa-2@my-project."
      },
      "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. 自 2020 年 10 月 11 日起未进行身份验证。

category: SECURITY
content:
  email: sa-1@my-project.
  lastAuthenticatedTime: '2020-10-11T07:00:00Z'
  serviceAccountId: '103185812403937829397'
description: Service account sa-1@my-project.
  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。