Trovare gli account di servizio inutilizzati

Questa pagina mostra come gestire gli approfondimenti sugli account di servizio, ovvero i risultati relativi agli account di servizio del progetto che non sono stati utilizzati negli ultimi 90 giorni.

Prima di iniziare

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie per gestire gli approfondimenti dell'account di servizio, chiedi all'amministratore di concederti i seguenti ruoli IAM nel progetto per cui vuoi gestire gli approfondimenti:

Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso a progetti, cartelle e organizzazioni.

Questi ruoli predefiniti contengono le autorizzazioni necessarie per gestire gli approfondimenti sugli account di servizio. Per visualizzare le autorizzazioni esatte richieste, espandi la sezione Autorizzazioni richieste:

Autorizzazioni obbligatorie

Per gestire gli approfondimenti sugli account di servizio sono necessarie le seguenti autorizzazioni:

  • Per visualizzare gli insight sugli account di servizio:
    • recommender.iamServiceAccountinsights.get
    • recommender.iamServiceAccountinsights.list
  • Per modificare gli insight sugli account di servizio: recommender.iamServiceAccountinsights.update

Potresti anche ottenere queste autorizzazioni con ruoli personalizzati o altri ruoli predefiniti.

Elenca gli insight sugli account di servizio

Per elencare tutti gli approfondimenti degli account di servizio per il tuo progetto, utilizza uno dei seguenti metodi:

gcloud

Utilizza il comando gcloud recommender insights list per visualizzare tutti gli approfondimenti dell'account di servizio per il tuo progetto.

Prima di eseguire il comando, sostituisci i seguenti valori:

  • PROJECT_ID: l'ID del progetto per cui vuoi elencare gli approfondimenti.
gcloud recommender insights list --insight-type=google.iam.serviceAccount.Insight \
    --project=PROJECT_ID \
    --location=global

L'output elenca tutti gli approfondimenti dell'account di servizio per il tuo progetto. Ad esempio:

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

Il metodo insights.list dell'API Recommender elenca tutti gli approfondimenti dell'account di servizio per il tuo progetto.

Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

  • PROJECT_ID: l'ID del progetto per cui vuoi elencare gli approfondimenti.

Metodo HTTP e URL:

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

Per inviare la richiesta, espandi una di queste opzioni:

La risposta elenca tutti gli approfondimenti dell'account di servizio per il tuo progetto. Ad esempio:

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

Per scoprire di più sui componenti di un'intuizione, consulta Esaminare gli approfondimenti sugli account di servizio in questa pagina.

Visualizzare un singolo insight sull'account di servizio

Per ottenere ulteriori informazioni su un singolo insight, inclusa la descrizione, lo stato e gli eventuali consigli associati, utilizza uno dei seguenti metodi:

gcloud

Utilizza il comando gcloud recommender insights describe con l'ID di un'informazione per visualizzare le informazioni su un singolo insight.

  • INSIGHT_ID: l'ID dell'informazione che vuoi visualizzare. Per trovare l'ID, elenca gli approfondimenti per il tuo progetto.
  • PROJECT_ID: l'ID del progetto per cui vuoi gestire gli approfondimenti.
gcloud recommender insights describe INSIGHT_ID \
    --insight-type=google.iam.serviceAccount.Insight \
    --project=PROJECT_ID \
    --location=global

L'output mostra l'informazione nel dettaglio. Ad esempio, la seguente informazione indica che l'account di serviziosa-1@my-project.iam.gserviceaccount.com non si è autenticato dal giorno 11 ottobre 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

Per scoprire di più sui componenti di un'intuizione, consulta Esaminare gli approfondimenti sugli account di servizio in questa pagina.

REST

Il metodo insights.get dell'API Recommender riceve un singolo insight.

Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

  • PROJECT_ID: l'ID del progetto per cui vuoi gestire gli approfondimenti.
  • INSIGHT_ID: l'ID dell'informazione che vuoi visualizzare. Se non conosci l'ID insight, puoi trovarlo elencando gli approfondimenti nel progetto. L'ID di un'informazione è tutto ciò che segue insights/ nel campo name dell'informazione.

Metodo HTTP e URL:

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

Per inviare la richiesta, espandi una di queste opzioni:

La risposta contiene l'insight. Ad esempio, la seguente informazione indica che l'account di serviziosa-1@my-project.iam.gserviceaccount.com non si è autenticato dall'11 ottobre 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"
}

Per scoprire di più sui componenti di un'intuizione, consulta Esaminare gli approfondimenti sugli account di servizio in questa pagina.

Rivedi gli insight sugli account di servizio

Dopo aver ottenuto un singolo insight, puoi esaminarne i contenuti per comprendere il pattern di utilizzo delle risorse evidenziato.

I contenuti di un'intuizione sono determinati dai relativi sottotipi. Gli insight sugli account di servizio (google.iam.serviceAccount.Insight) hanno il sottotipo SERVICE_ACCOUNT_USAGE.

Gli approfondimenti di SERVICE_ACCOUNT_USAGE hanno i seguenti componenti, non necessariamente in questo ordine:

  • associatedRecommendations: gli identificatori di eventuali consigli associati all'approfondimento. Se non sono associati suggerimenti all'insight, questo campo è vuoto.
  • category: la categoria per gli approfondimenti IAM è sempre SECURITY.
  • content: indica l'ultima volta che l'account di servizio è stato autenticato. Questo campo contiene i seguenti componenti:

    • email: l'indirizzo email dell'account di servizio.
    • lastAuthenticatedTime: l'ora più recente in cui l'account di servizio è stato autenticato. Se l'account di servizio non ha autenticazioni registrate, questo campo non è incluso.
    • serviceAccountId: l'ID numerico univoco dell'account di servizio.
  • description: un riepilogo leggibile dell'intuizione.
  • etag: un identificatore univoco per lo stato corrente di un'intuizione. Ogni volta che l'insight cambia, viene assegnato un nuovo valore etag.

    Per modificare lo stato di un'intuizione, devi fornire il etag dell'intuizione esistente. L'utilizzo di etag consente di garantire che eventuali operazioni vengano eseguite solo se l'approfondimento non è cambiato dall'ultima volta che lo hai recuperato.

  • insightSubtype: il sottotipo di informazioni.
  • lastRefreshTime: la data dell'ultimo aggiornamento dell'approfondimento, che indica la frequenza di aggiornamento dei dati utilizzati per generarlo.
  • name: il nome dell'approfondimento, nel seguente formato:

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

    I segnaposto hanno i seguenti valori:

    • PROJECT_ID: l'ID del progetto in cui è stato generato l'insight.
    • INSIGHT_ID: un ID univoco per l'intuizione.
  • observationPeriod: il periodo di tempo che precede l'approfondimento. I dati di origine utilizzati per generare l'approfondimento terminano il giorno lastRefreshTime e iniziano il giorno lastRefreshTime meno observationPeriod.
  • stateInfo: gli approfondimenti passano attraverso più transizioni di stato dopo essere stati proposti:

    • ACTIVE: l'intuizione è stata generata, ma non sono state intraprese azioni o ne è stata intrapresa una senza aggiornare lo stato dell'intuizione. Gli insight attivi vengono aggiornati quando i dati sottostanti cambiano.
    • ACCEPTED: è stata intrapresa un'azione in base all'intuizione. Le informazioni vengono accettate quando un consiglio associato è contrassegnato come CLAIMED, SUCCEEDED o FAILED oppure quando l'informazione è stata accettata direttamente. Quando un'intuizione è nello stato ACCEPTED, i contenuti dell'intuizione non possono essere modificati. Gli approfondimenti accettati vengono conservati per 90 giorni dopo la loro accettazione.
  • targetResources: il nome completo della risorsa del progetto a cui si riferisce l'informazione. Ad esempio, //cloudresourcemanager.googleapis.com/projects/123456789012.

Contrassegnare un'informazione sull'account di servizio come ACCEPTED

Se intervieni in base a un'intuizione attiva, puoi contrassegnarla come ACCEPTED. Lo stato ACCEPTED indica all'API Recommender che hai intrapreso un'azione in base a questa informazione, il che contribuisce a perfezionare i consigli.

Gli approfondimenti accettati vengono conservati per 90 giorni dopo essere stati contrassegnati come ACCEPTED.

gcloud

Utilizza il comando gcloud recommender insights mark-accepted con l'ID di un'informazione per contrassegnarla come ACCEPTED.

  • INSIGHT_ID: l'ID dell'informazione che vuoi visualizzare. Per trovare l'ID, elenca gli approfondimenti per il tuo progetto.
  • PROJECT_ID: l'ID del progetto per cui vuoi gestire gli approfondimenti.
  • ETAG: un identificatore per una versione dell'approfondimento. Per ottenere il etag:

    1. Ottieni l'insight utilizzando il comando gcloud recommender insights describe.
    2. Trova e copia il valore etag dall'output, incluse le virgolette. Ad esempio, "d3cdec23cc712bd0".
gcloud recommender insights mark-accepted INSIGHT_ID \
    --insight-type=google.iam.serviceAccount.Insight \
    --project=PROJECT_ID \
    --location=global \
    --etag=ETAG

L'output mostra l'informazione, ora con lo stato 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

Per scoprire di più sulle informazioni sullo stato di un'informazione, consulta Esaminare le informazioni sugli account di servizio in questa pagina.

REST

Il metodo insights.markAccepted dell'API Recommender contrassegna un'intuizione come ACCEPTED.

Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

  • PROJECT_ID: l'ID del progetto per cui vuoi gestire gli approfondimenti.
  • INSIGHT_ID: l'ID dell'informazione che vuoi visualizzare. Se non conosci l'ID insight, puoi trovarlo elencando gli approfondimenti nel progetto. L'ID di un'informazione è tutto ciò che segue insights/ nel campo name dell'informazione.
  • ETAG: un identificatore per una versione dell'approfondimento. Per ricevere il etag, procedi nel seguente modo:
    1. Ottieni le informazioni utilizzando il metodo insights.get.
    2. Individua e copia il valore etag dalla risposta.

Metodo 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 della richiesta:

{
  "etag": "ETAG"
}

Per inviare la richiesta, espandi una di queste opzioni:

La risposta contiene l'insight, ora con lo stato 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"
}

Per scoprire di più sulle informazioni sullo stato di un'informazione, consulta Esaminare le informazioni sugli account di servizio in questa pagina.

Passaggi successivi