Encontre contas de serviço não usadas

Esta página mostra como gerir as estatísticas das contas de serviço, que são descobertas sobre as contas de serviço no seu projeto que não foram usadas nos últimos 90 dias.

Os pedidos autenticados por chaves da API associadas a contas de serviço não são registados nas métricas de utilização da conta de serviço. Consequentemente, estas contas de serviço podem ser comunicadas como não utilizadas.

Antes de começar

Funções necessárias

Para receber as autorizações de que precisa para gerir as estatísticas da conta de serviço, peça ao seu administrador que lhe conceda as seguintes funções do IAM no projeto para o qual quer gerir estatísticas:

Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.

Estas funções predefinidas contêm as autorizações necessárias para gerir as estatísticas da conta de serviço. Para ver as autorizações exatas que são necessárias, expanda a secção Autorizações necessárias:

Autorizações necessárias

São necessárias as seguintes autorizações para gerir as estatísticas da conta de serviço:

  • Para ver as estatísticas da conta de serviço:
    • recommender.iamServiceAccountinsights.get
    • recommender.iamServiceAccountinsights.list
  • Para modificar as estatísticas da conta de serviço: recommender.iamServiceAccountinsights.update

Também pode conseguir estas autorizações com funções personalizadas ou outras funções predefinidas.

Apresente estatísticas da conta de serviço

Para apresentar uma lista de todas as estatísticas da conta de serviço do seu projeto, use um dos seguintes métodos:

gcloud

Use o comando gcloud recommender insights list para ver todas as estatísticas da conta de serviço do seu projeto.

Antes de executar o comando, substitua os seguintes valores:

  • PROJECT_ID: o ID do projeto para o qual quer listar estatísticas.
gcloud recommender insights list --insight-type=google.iam.serviceAccount.Insight \
    --project=PROJECT_ID \
    --location=global

O resultado apresenta todas as estatísticas da conta de serviço para o seu projeto. Por exemplo:

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

O método insights.list da API Recommender apresenta todas as estatísticas da conta de serviço para o seu projeto.

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • PROJECT_ID: o ID do projeto para o qual quer listar estatísticas.

Método HTTP e URL:

GET https://recommender.googleapis.com/v1/projects/PROJECT_ID/locations/global/insightTypes/google.iam.serviceAccount.Insight/insights

Para enviar o seu pedido, expanda uma destas opções:

A resposta apresenta todas as estatísticas da conta de serviço para o seu projeto. Por exemplo:

{
  "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"
    }
  ]
}

Para saber mais acerca dos componentes de uma estatística, consulte Reveja as estatísticas da conta de serviço nesta página.

Obtenha uma única estatística da conta de serviço

Para obter mais informações sobre uma única estatística, incluindo a descrição, o estado e as recomendações associadas, use um dos seguintes métodos:

gcloud

Use o comando gcloud recommender insights describe com o ID da estatística para ver informações sobre uma única estatística.

  • INSIGHT_ID: o ID da estatística que quer ver. Para encontrar o ID, liste as estatísticas do seu projeto.
  • PROJECT_ID: o ID do projeto para o qual quer gerir estatísticas.
gcloud recommender insights describe INSIGHT_ID \
    --insight-type=google.iam.serviceAccount.Insight \
    --project=PROJECT_ID \
    --location=global

O resultado mostra a estatística detalhadamente. Por exemplo, a seguinte estatística indica que a conta de serviço sa-1@my-project.iam.gserviceaccount.com não foi autenticada desde 11 de outubro de 2020.

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

Para saber mais acerca dos componentes de uma estatística, consulte Reveja as estatísticas da conta de serviço nesta página.

REST

O método insights.get da API Recommender recebe uma única estatística.

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • PROJECT_ID: o ID do projeto para o qual quer gerir estatísticas.
  • INSIGHT_ID: o ID da estatística que quer ver. Se não souber o ID da estatística, pode encontrá-lo listando as estatísticas no seu projeto. O ID de uma estatística é tudo o que se encontra depois de insights/ no campo name da estatística.

Método HTTP e URL:

GET https://recommender.googleapis.com/v1/projects/PROJECT_ID/locations/global/insightTypes/google.iam.serviceAccount.Insight/insights/INSIGHT_ID

Para enviar o seu pedido, expanda uma destas opções:

A resposta contém a estatística. Por exemplo, a seguinte estatística indica que a conta de serviço sa-1@my-project.iam.gserviceaccount.com não foi autenticada desde 11 de outubro de 2020.

{
  "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"
}

Para saber mais acerca dos componentes de uma estatística, consulte Reveja as estatísticas da conta de serviço nesta página.

Reveja as estatísticas da conta de serviço

Depois de receber uma única estatística, pode rever o respetivo conteúdo para compreender o padrão de utilização de recursos que realça.

O conteúdo de uma estatística é determinado pelos respetivos subtipos. As estatísticas de contas de serviço (google.iam.serviceAccount.Insight) têm o subtipo SERVICE_ACCOUNT_USAGE.

As estatísticas SERVICE_ACCOUNT_USAGE têm os seguintes componentes, não necessariamente nesta ordem:

  • associatedRecommendations: Os identificadores de quaisquer recomendações associadas à estatística. Se não existirem recomendações associadas à estatística, este campo está vazio.
  • category: a categoria das estatísticas de IAM é sempre SECURITY.
  • content: indica a última vez que a conta de serviço foi autenticada. Este campo contém os seguintes componentes:

    • email: o endereço de email da conta de serviço.
    • lastAuthenticatedTime: a hora mais recente em que a conta de serviço foi autenticada. Se a conta de serviço não tiver autenticações registadas, este campo não é incluído.
    • serviceAccountId: o ID numérico exclusivo da conta de serviço.
  • description: um resumo da estatística legível por humanos.
  • etag: um identificador exclusivo do estado atual de uma estatística. Sempre que a estatística muda, é atribuído um novo valor etag.

    Para alterar o estado de uma estatística, tem de fornecer o etag da estatística existente. A utilização do etag ajuda a garantir que as operações só são realizadas se a estatística não tiver sido alterada desde a última vez que a obteve.

  • insightSubtype: o subtipo de estatística.
  • lastRefreshTime: a data da última atualização da estatística, que indica a atualidade dos dados usados para gerar a estatística.
  • name: o nome da estatística, no seguinte formato:

    projects/PROJECT_ID/locations/global/insightTypes/google.iam.serviceAccount.Insight/insights/INSIGHT_ID

    Os marcadores de posição têm os seguintes valores:

    • PROJECT_ID: o ID do projeto onde a estatística foi gerada.
    • INSIGHT_ID: um ID exclusivo para a estatística.
  • observationPeriod: o período que antecede a estatística. Os dados de origem usados para gerar as estatísticas terminam a lastRefreshTime e começam a lastRefreshTime menos observationPeriod.
  • stateInfo: as estatísticas passam por várias transições de estado depois de serem propostas:

    • ACTIVE: a estatística foi gerada, mas não foram tomadas ações ou foi tomada uma ação sem atualizar o estado da estatística. As estatísticas ativas são atualizadas quando os dados subjacentes mudam.
    • ACCEPTED: foi tomada alguma medida com base na estatística. As estatísticas são aceites quando uma recomendação associada foi marcada como CLAIMED, SUCCEEDED ou FAILED, ou quando a estatística foi aceite diretamente. Quando um insight está no estado ACCEPTED, o conteúdo do insight não pode ser alterado. As estatísticas aceites são retidas durante 90 dias após serem aceites.
  • targetResources: o nome completo do recurso do projeto ao qual a estatística se refere. Por exemplo, //cloudresourcemanager.googleapis.com/projects/123456789012.

Marque uma estatística da conta de serviço como ACCEPTED

Se tomar medidas com base numa estatística ativa, pode marcar essa estatística como ACCEPTED. O estado ACCEPTED indica à API Recommender que tomou medidas com base nesta estatística, o que ajuda a refinar as suas recomendações.

As estatísticas aceites são retidas durante 90 dias após serem marcadas como ACCEPTED.

gcloud

Use o comando gcloud recommender insights mark-accepted com o ID das estatísticas para marcar uma estatística como ACCEPTED.

  • INSIGHT_ID: o ID da estatística que quer ver. Para encontrar o ID, liste as estatísticas do seu projeto.
  • PROJECT_ID: o ID do projeto para o qual quer gerir estatísticas.
  • ETAG: um identificador de uma versão da estatística. Para receber o etag, faça o seguinte:

    1. Obtenha as estatísticas através do comando gcloud recommender insights describe.
    2. Localize e copie o valor etag do resultado, incluindo as aspas circundantes. Por exemplo, "d3cdec23cc712bd0".
gcloud recommender insights mark-accepted INSIGHT_ID \
    --insight-type=google.iam.serviceAccount.Insight \
    --project=PROJECT_ID \
    --location=global \
    --etag=ETAG

O resultado mostra a estatística, agora com o estado de 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

Para saber mais sobre as informações de estado de uma estatística, consulte a secção Reveja as estatísticas da conta de serviço nesta página.

REST

O método insights.markAccepted da API Recommender marca uma estatística como ACCEPTED.

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • PROJECT_ID: o ID do projeto para o qual quer gerir estatísticas.
  • INSIGHT_ID: o ID da estatística que quer ver. Se não souber o ID da estatística, pode encontrá-lo listando as estatísticas no seu projeto. O ID de uma estatística é tudo o que se encontra depois de insights/ no campo name da estatística.
  • ETAG: um identificador de uma versão da estatística. Para obter o etag, faça o seguinte:
    1. Obtenha a estatística através do método insights.get.
    2. Encontre e copie o valor etag da resposta.

Método HTTP e URL:

POST https://recommender.googleapis.com/v1/projects/PROJECT_ID/locations/global/insightTypes/google.iam.serviceAccount.Insight/insights/INSIGHT_ID:markAccepted

Corpo JSON do pedido:

{
  "etag": "ETAG"
}

Para enviar o seu pedido, expanda uma destas opções:

A resposta contém a estatística, agora com o estado 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"
}

Para saber mais sobre as informações de estado de uma estatística, consulte a secção Reveja as estatísticas da conta de serviço nesta página.

O que se segue?

  • Reveja as outras ferramentas disponíveis para compreender a utilização da conta de serviço.
  • Use o Active Assist para ver e gerir todas as recomendações para o seu projeto, incluindo recomendações da IAM.