Monitoraggio dei pattern di utilizzo di chiavi e account di servizio

Questa pagina spiega come utilizzare Cloud Monitoring per visualizzare le metriche di utilizzo degli account di servizio e delle chiavi degli account di servizio. Queste metriche consentono di visualizzare e monitorare i pattern di utilizzo, che possono aiutarti a identificare le anomalie automaticamente o manualmente.

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

Le chiavi degli 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 utilizza la chiave per autenticare la richiesta. Questo comportamento è più comune quando utilizzi URL firmati per Cloud Storage o quando esegui l'autenticazione per applicazioni di terze parti. Di conseguenza, è possibile vedere metriche di utilizzo per le chiavi che non sono state utilizzate per l'autenticazione.

Monitoring conserva le metriche dell'account di servizio per un periodo di tempo limitato. Se hai bisogno di accedere ai dati per un periodo di tempo più lungo, puoi esportare periodicamente i risultati in BigQuery. Per ulteriori informazioni, consulta la sezione Monitoraggio dell'esportazione delle metriche nella documentazione delle soluzioni.

Dopo aver utilizzato una chiave account di servizio o un account di servizio, le metriche di utilizzo diventano di solito disponibili entro pochi minuti.

Prima di iniziare

  • Abilita le API IAM and Cloud Monitoring.

    Abilita le API

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie per visualizzare l'utilizzo recente per account e chiavi di servizio, chiedi all'amministratore di concederti il ruolo IAM Visualizzatore Monitoring (roles/monitoring.viewer) nel progetto. Per ulteriori informazioni sulla concessione dei ruoli, consulta Gestire l'accesso.

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

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

Console

Per utilizzare Metrics Explorer per visualizzare le metriche relative a una risorsa monitorata, segui questi passaggi:

  1. In Google Cloud Console, vai alla pagina Metrics Explorer all'interno di Monitoring.
  2. Vai a Metrics Explorer

  3. Nella barra degli strumenti, seleziona la scheda Explorer.
  4. Seleziona la scheda Configurazione.
  5. Espandi il menu Seleziona una metrica, inserisci IAM Service Account nella barra dei filtri e 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 dell'account di servizio. Nell'intervallo di tempo selezionato sono disponibili le seguenti metriche:
      • Per le metriche di utilizzo dell'account di servizio, seleziona Eventi di autenticazione dell'account di servizio.
      • Per le metriche di utilizzo della chiave dell'account di servizio, seleziona Eventi di autenticazione della chiave dell'account di servizio.
    4. Fai clic su Applica.
  6. (Facoltativo) Per configurare la modalità di visualizzazione dei dati, aggiungi filtri e utilizza i menu Raggruppa per, Aggregatore e di tipo grafico. Ad esempio, puoi raggruppare in base a etichette di risorsa o metrica. Per scoprire di più, consulta Selezionare le metriche quando utilizzi Metrics Explorer.
  7. (Facoltativo) Modifica le impostazioni del grafico:
    • Per la quota e altre metriche che riportano un campione al giorno, imposta l'intervallo di tempo su almeno una settimana e il tipo di grafico su Grafico a barre in pila.
    • Per le metriche con valore di distribuzione, imposta il tipo di grafico su Grafico termico.

REST

Il metodo timeSeries.list dell'API Cloud Monitoring ti consente di accedere alle metriche di utilizzo in modo programmatico.

Prima di utilizzare uno qualsiasi dei dati della richiesta, effettua le seguenti sostituzioni:

  • PROJECT_ID: ID progetto Google Cloud. Gli ID progetto sono stringhe alfanumeriche, come my-project.
  • METRIC_TYPE: il tipo di metrica da controllare. Utilizza uno dei seguenti valori:
    • Per le metriche di utilizzo dell'account di servizio, utilizza iam.googleapis.com%2Fservice_account%2Fauthn_events_count.
    • Per le metriche di utilizzo della chiave dell'account di servizio, utilizza iam.googleapis.com%2Fservice_account%2Fkey%2Fauthn_events_count.
  • END_TIME: 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 da verificare, 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 ulteriori informazioni sulla lettura programmatica delle metriche di utilizzo, consulta la sezione sulla 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 relative a un singolo account di servizio:

Console

  1. In Cloud Console, vai alla pagina Account di servizio.

    Vai ad Account di servizio

  2. Seleziona il progetto che contiene l'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 Metrics Explorer, che offre opzioni aggiuntive di filtro e visualizzazione, fai clic su > Visualizza in Metrics Explorer.

REST

Il timeSeries.list metodo dell'API Cloud Monitoring , se utilizzato con filtri specifici, consente di ottenere metriche di utilizzo per un singolo account di servizio. Successivamente, puoi utilizzare queste metriche per determinare la data dell'ultimo utilizzo dell'account.

Prima di utilizzare uno qualsiasi dei dati della richiesta, effettua le seguenti sostituzioni:

  • PROJECT_ID: ID progetto Google Cloud. Gli ID progetto sono stringhe alfanumeriche, come my-project.
  • SERVICE_ACCOUNT_ID: l'ID numerico univoco del tuo account di servizio. Per trovare l'ID numerico univoco del tuo account di servizio, segui questi passaggi:
    1. In Cloud Console, 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: 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 da verificare, 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 oggetto timeSeries con tutti gli eventi di autenticazione recenti per l'account di servizio specificato.

Visualizzare le metriche di utilizzo per una singola chiave dell'account di servizio

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

Console

  1. In Cloud Console, vai alla pagina Account di servizio.

    Vai ad Account di servizio

  2. Seleziona il progetto contenente l'account di servizio associato alla chiave.

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

  4. Fai clic sulla scheda Metriche. Il grafico Traffico per 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 di cui vuoi visualizzare le metriche di utilizzo. Il grafico viene aggiornato per mostrare le metriche solo per la chiave dell'account di servizio.

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

REST

Per prima cosa, recupera l'ID della chiave dell'account di servizio.

  1. Elenca le chiavi degli 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 uno qualsiasi dei dati della richiesta, effettua le seguenti sostituzioni:

    • PROJECT_ID: ID progetto Google Cloud. Gli ID progetto sono stringhe alfanumeriche, come my-project.
    • SA_NAME: nome dell'account di servizio di cui vuoi elencare le chiavi.
    • KEY_TYPES: facoltativo. Un elenco separato da virgole dei tipi di chiavi che vuoi includere nella risposta. Il tipo di chiave indica se una chiave è gestita dall'utente (USER_MANAGED) o gestita dal sistema (SYSTEM_MANAGED). Se non la specifichi, 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
        }
      ]
    }
    

  2. Utilizza i metadati nella risposta per identificare la chiave da monitorare. Quindi, 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 dopo il giorno keys/.

    Ad esempio, l'ID univoco nel seguente nome 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 metriche di utilizzo per una singola chiave dell'account di servizio. Puoi quindi utilizzare queste metriche per determinare quando è stata utilizzata la chiave l'ultima volta.

Prima di utilizzare uno qualsiasi dei dati della richiesta, effettua le seguenti sostituzioni:

  • PROJECT_ID: ID progetto Google Cloud. Gli ID progetto sono stringhe alfanumeriche, come my-project.
  • KEY_ID: l'ID univoco della chiave dell'account di servizio.
  • END_TIME: 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 da verificare, 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%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 oggetto timeSeries con tutti gli eventi di autenticazione recenti per la chiave dell'account di servizio specificata.

Esportazione delle metriche

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

Per le istruzioni, consulta la sezione Monitorare l'esportazione delle metriche nella documentazione delle soluzioni.

Passaggi successivi