Monitorare i pattern di utilizzo di chiavi e account di servizio

Questa pagina spiega come utilizzare Cloud Monitoring per visualizzare le metriche di utilizzo per i service account e le chiavi dei service account. Queste metriche ti consentono di visualizzare e monitorare modelli di utilizzo, che possono aiutarti a identificare anomalie, in modo automatico manualmente.

Gli account di servizio e le chiavi degli account di servizio vengono visualizzati in queste metriche se sono per chiamare qualsiasi API di Google, incluse le API che non fanno parte di Google Cloud. Le metriche includono le chiamate API riuscite e non riuscite. Ad esempio, se un'API la chiamata non riesce perché il chiamante non è autorizzato a chiamare tale API o perché richiesta riferita a una risorsa che non esiste, l'account di servizio o la chiave usato per la chiamata API in questione.

Le chiavi dell'account di servizio vengono visualizzate anche in queste metriche se un sistema le elenca mentre tenta di autenticare una richiesta, anche se il sistema non le utilizza per autenticare la richiesta. Questo comportamento è più comuni quando si utilizzano URL firmati per Cloud Storage o durante l'autenticazione su applicazioni di terze parti. Di conseguenza, è possibile visualizzare le metriche di utilizzo per le chiavi che non sono state utilizzate per l'autenticazione.

Il monitoraggio conserva le metriche dell'account di servizio per 6 settimane. Se devi accedere ai dati per un periodo di tempo più lungo, puoi esportare periodicamente i risultati in BigQuery. Per ulteriori informazioni, vedi Monitoraggio dell'esportazione delle metriche nella sezione Soluzioni documentazione.

Dopo aver utilizzato un account di servizio o una chiave dell'account di servizio, le metriche di utilizzo sono solitamente disponibili entro pochi minuti.

Prima di iniziare

  • Enable the IAM and Cloud Monitoring APIs.

    Enable the APIs

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie per visualizzare l'utilizzo recente di account di servizio e chiavi, chiedi all'amministratore di concederti il ruolo IAM Visualizzatore monitoraggio (roles/monitoring.viewer) nel progetto. Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso a progetti, cartelle e organizzazioni.

Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.

Visualizzare le metriche di utilizzo per tutti gli account di servizio o le chiavi

Per visualizzare le metriche di utilizzo per i tuoi account di servizio o le chiavi degli account di servizio:

Console

Per visualizzare le metriche per una risorsa monitorata con Esplora metriche, segui questi passaggi:

  1. Nella console Google Cloud, vai alla pagina  Esplora metriche:

    Vai a Esplora metriche

    Se utilizzi la barra di ricerca per trovare questa pagina, seleziona il risultato con il sottotitolo Monitoring.

  2. Nell'elemento Metrica, espandi il menu Seleziona una metrica, inserisci IAM Service Account nella barra dei filtri, poi utilizza i sottomenu per selezionare un tipo di risorsa e una metrica specifici:
    1. Nel menu Risorse attive, seleziona Account di servizio IAM.
    2. Nel menu Categorie di metriche attive, seleziona Service_account.
    3. Nel menu Metriche attive, seleziona una metrica per l'account di servizio. Le seguenti metriche sono disponibili nell'intervallo di tempo selezionato:
      • Per le metriche di utilizzo degli account di servizio, Seleziona Service account authentication events (Eventi di autenticazione dell'account di servizio).
      • Per le metriche di utilizzo delle chiavi degli account di servizio, Seleziona Service account key authentication events (Eventi di autenticazione della chiave dell'account di servizio).
    4. Fai clic su Applica.
  3. Per rimuovere le serie temporali dalla visualizzazione, utilizza l'elemento Filtro.

  4. Per combinare le serie temporali, utilizza i menu dell'elemento Aggregazione. Ad esempio, per visualizzare l'utilizzo della CPU per le VM, in base alla zona, imposta il primo menu su Media e il secondo menu su zone.

    Tutte le serie temporali vengono visualizzate quando è impostato il primo menu dell'elemento Aggregation in Unaggregated (Non aggregato). Le impostazioni predefinite per l'elemento Aggregation sono determinati dal tipo di metrica selezionato.

  5. Per la quota e altre metriche che generano un campione al giorno:
    1. Nel riquadro Display, Imposta Tipo di widget su Grafico a barre in pila.
    2. Imposta il periodo di tempo su almeno una settimana.

REST

L'API Cloud Monitoring timeSeries.list consente di accedere alle metriche di utilizzo in modo programmatico.

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

  • PROJECT_ID: il tuo progetto Google Cloud ID. Gli ID progetto sono stringhe alfanumeriche, ad esempio my-project.
  • METRIC_TYPE: il tipo di metrica che vuoi controllare. Utilizza uno dei seguenti i seguenti valori:
    • Per le metriche di utilizzo degli account di servizio, usa iam.googleapis.com%2Fservice_account%2Fauthn_events_count.
    • Per le metriche di utilizzo delle chiavi dell'account di servizio, utilizza iam.googleapis.com%2Fservice_account%2Fkey%2Fauthn_events_count.
  • END_TIME: la fine dell'intervallo di tempo che vuoi controllare, in formato RFC 3339 con codifica percentuale. Ad esempio: 2020-06-12T00%3A00%3A00.00Z.
  • START_TIME: l'inizio dell'intervallo di tempo che vuoi controllare, in formato RFC 3339 con codifica percentuale. Ad esempio, 2020-04-12T00%3A00%3A00.00Z.

Metodo HTTP e URL:

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

Per inviare la richiesta, espandi una delle seguenti opzioni:

Per saperne di più sulla lettura programmatica delle metriche di utilizzo, consulta Lettura dei dati delle metriche nella documentazione di Monitoring.

Visualizzare le metriche di utilizzo per un singolo account di servizio

Per visualizzare le metriche di utilizzo per un singolo account di servizio:

Console

  1. Nella console Google Cloud, vai alla pagina Account di servizio.

    Vai a Service account

  2. Seleziona il progetto che contiene il tuo account di servizio.

  3. Fai clic sull'indirizzo email del tuo account di servizio.

  4. Fai clic sulla scheda Metriche. Il grafico Traffico di autenticazione mostra le metriche di utilizzo per l'account di servizio.

  5. (Facoltativo) Per visualizzare il grafico nella pagina Esplora metriche, che offre opzioni di visualizzazione e filtro aggiuntive, fai clic su  > Visualizza in Esplora metriche.

REST

Il metodo timeSeries.list dell'API Cloud Monitoring, se utilizzato con filtri specifici, consente di ottenere le metriche di utilizzo per un singolo account di servizio. Puoi quindi utilizzare queste metriche per determinare quando è stato utilizzato l'account.

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

  • PROJECT_ID: l'ID del tuo progetto Google Cloud. Gli ID progetto sono stringhe alfanumeriche, ad esempio my-project.
  • SERVICE_ACCOUNT_ID: l'ID numerico univoco del tuo account di servizio. A per trovare l'ID numerico univoco dell'account di servizio, segui questi passaggi:
    1. Nella console Google Cloud, vai alla pagina Account di servizio.

      Vai alla pagina Account di servizio
    2. Fai clic sull'indirizzo email del tuo account di servizio. L'ID numerico univoco del tuo account di servizio è il valore nel campo ID univoco.
  • END_TIME: la fine dell'intervallo di tempo che vuoi controllare, in formato RFC 3339 con codifica percentuale. Ad esempio, 2020-06-12T00%3A00%3A00.00Z.
  • START_TIME: l'inizio dell'intervallo di tempo che vuoi controllare, in formato RFC 3339 con codifica percentuale. Ad esempio, 2020-04-12T00%3A00%3A00.00Z.

Metodo HTTP e URL:

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

Per inviare la richiesta, espandi una delle seguenti opzioni:

La risposta contiene un timeSeries oggetto con tutti gli eventi di autenticazione recenti per l'account di servizio specificato.

Visualizzare le metriche di utilizzo per una singola chiave del service account

Per visualizzare le metriche di utilizzo per una singola chiave dell'account di servizio:

Console

  1. Nella console Google Cloud, vai alla pagina Account di servizio.

    Vai a Service account

  2. Seleziona il progetto che contiene l'account di servizio associato alla tua chiave.

  3. Fai clic sull'indirizzo email dell'account di servizio associato alla chiave.

  4. Fai clic sulla scheda Metriche. Grafico Traffico di autenticazione per chiave mostra le metriche di utilizzo per tutte le chiavi associate all'account di servizio.

  5. Nella legenda del grafico, fai clic sull'ID della chiave dell'account di servizio per cui vuoi visualizzare le metriche sull'utilizzo. Il grafico viene aggiornato in modo da mostrare le metriche solo per quella chiave dell'account di servizio.

  6. (Facoltativo) Per visualizzare il grafico nella pagina Esplora metriche, che offre altre opzioni di filtro e visualizzazione, fai clic  > Visualizza in Esplora metriche.

REST

Innanzitutto, recupera l'ID della chiave dell'account di servizio.

  1. Elenca le chiavi dell'account di servizio:

    Il metodo projects.serviceAccounts.keys.list elenca tutte le chiavi dell'account di servizio per un account di servizio.

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

    • PROJECT_ID: il tuo progetto Google Cloud ID. Gli ID progetto sono stringhe alfanumeriche, ad esempio my-project.
    • SA_NAME: il nome dell'account di servizio di cui vuoi elencare le chiavi.
    • KEY_TYPES: facoltativo. Un elenco separato da virgole di tipi di chiavi da includere nella risposta. Il tipo di chiave indica se una chiave è gestita dall'utente (USER_MANAGED) o dal sistema (SYSTEM_MANAGED). Se non viene specificato, vengono restituite tutte le chiavi.

    Metodo HTTP e URL:

    GET https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/SA_NAME@PROJECT_ID.iam.gserviceaccount.com/keys?keyTypes=KEY_TYPES

    Per inviare la richiesta, espandi una delle seguenti opzioni:

    Dovresti ricevere una risposta JSON simile alla seguente:

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

  2. Utilizza i metadati nella risposta per identificare la chiave da monitorare. A questo punto, copia l'ID univoco della chiave dalla fine del campo name.

    Il campo name ha il seguente formato:

    "name": "projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_EMAIL/keys/KEY_ID"

    L'ID univoco della chiave è tutto ciò che segue keys/.

    Ad esempio, l'ID univoco nel seguente nome della chiave è 0f561cc41650ff521899de2fd653bd3de08e2da4:

    "name": "projects/my-project/serviceAccounts/my-account@my-project.iam.gserviceaccount.com/keys/0f561cc41650ff521899de2fd653bd3de08e2da4"

Quindi, utilizza l'ID per visualizzare le metriche di utilizzo per la chiave dell'account di servizio.

Il metodo timeSeries.list dell'API Cloud Monitoring, se utilizzato con filtri specifici, consente di ottenere le metriche di utilizzo per una singola chiave dell'account di servizio. Puoi quindi utilizzare queste metriche per determinare quando la chiave era l'ultima volta in uso.

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

  • PROJECT_ID: l'ID del tuo progetto Google Cloud. Gli ID progetto sono stringhe alfanumeriche, ad esempio my-project.
  • KEY_ID: l'ID univoco della chiave dell'account di servizio.
  • END_TIME: la fine dell'intervallo di tempo che vuoi controllare, in formato RFC 3339 con codifica percentuale. Ad esempio: 2020-06-12T00%3A00%3A00.00Z.
  • START_TIME: l'inizio dell'intervallo di tempo che vuoi controllare, con codifica percentuale formato RFC 3339. Ad esempio: 2020-04-12T00%3A00%3A00.00Z.

Metodo HTTP e URL:

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

Per inviare la richiesta, espandi una delle seguenti opzioni:

La risposta contiene un timeSeries con tutti gli eventi di autenticazione recenti per la chiave dell'account di servizio specificata.

Esportazione delle metriche

Puoi utilizzare il monitoraggio per esportare le metriche in BigQuery. L'esportazione delle metriche è utile per eseguire analisi a lungo termine, in quanto Monitoring conserva le metriche solo per un periodo di tempo limitato.

Per le istruzioni, consulta Esportazione delle metriche di Monitoring nella documentazione delle soluzioni.

Passaggi successivi