Surveiller les modèles d'utilisation des comptes de service et des clés

Cette page explique comment utiliser Cloud Monitoring pour afficher les métriques d'utilisation de vos comptes de service et de vos clés de compte de service. Ces métriques vous permettent d'afficher et de suivre les modèles d'utilisation, ce qui peut vous aider à identifier des anomalies, automatiquement ou manuellement.

Ces métriques affichent les comptes de service et les clés de compte de service qui permettent d'appeler les API Google, y compris celles ne faisant pas partie de Google Cloud. Les métriques incluent les appels d'API ayant réussi et échoué. Par exemple, si un appel d'API échoue parce que l'appelant n'est pas autorisé à appeler cette API, ou si la requête fait référence à une ressource qui n'existe pas, le compte de service ou la clé utilisé pour cet appel d'API s'affiche dans les métriques.

Les clés de compte de service apparaissent également dans ces métriques si elles sont listées par un système lors de la tentative d'authentification d'une requête, même si ce système n'utilise pas la clé pour authentifier la requête. Ce comportement est le plus courant lorsque vous utilisez des URL signées pour Cloud Storage ou lorsque vous vous authentifiez auprès d'applications tierces. Par conséquent, il est possible d'afficher les métriques d'utilisation de clés qui n'ont pas été utilisées pour l'authentification.

Monitoring conserve les métriques sur le compte de service pendant six semaines. Si vous devez accéder à ces données pendant une période prolongée, vous pouvez exporter régulièrement les résultats vers BigQuery. Pour en savoir plus, consultez la page Exporter des métriques Cloud Monitoring dans la documentation sur les solutions.

Les métriques d'utilisation sont généralement disponibles quelques minutes après que vous ayez utilisé un compte de service ou une clé de compte de service.

Avant de commencer

  • Enable the IAM and Cloud Monitoring APIs.

    Enable the APIs

Rôles requis

Pour obtenir les autorisations nécessaires pour afficher l'utilisation récente des clés et des comptes de service, demandez à votre administrateur de vous accorder le rôle IAM Lecteur Monitoring (roles/monitoring.viewer) sur le projet. Pour en savoir plus sur l'attribution de rôles, consultez la page Gérer l'accès aux projets, aux dossiers et aux organisations.

Vous pouvez également obtenir les autorisations requises via des rôles personnalisés ou d'autres rôles prédéfinis.

Afficher les métriques d'utilisation de tous les comptes de service ou clés de compte de service

Pour afficher les métriques d'utilisation des comptes de service ou des clés de compte de service, procédez comme suit :

Console

Pour afficher les métriques d'une ressource surveillée à l'aide de l'explorateur de métriques, procédez comme suit :

  1. Dans la console Google Cloud, accédez à la page Explorateur de métriques :

    Accéder à l'explorateur de métriques

    Si vous utilisez la barre de recherche pour trouver cette page, sélectionnez le résultat dont le sous-titre est Monitoring.

  2. Dans l'élément Métrique, développez le menu Sélectionner une métrique, saisissez IAM Service Account dans la barre de filtre, puis utilisez les sous-menus pour sélectionner un type de ressource et des métriques spécifiques :
    1. Dans le menu Ressources actives, sélectionnez Compte de service IAM.
    2. Dans le menu Catégories de métriques actives, sélectionnez Service_account.
    3. Dans le menu Métriques actives, sélectionnez une métrique de compte de service. Les métriques suivantes sont disponibles dans l'intervalle de temps sélectionné :
      • Pour les métriques d'utilisation des comptes de service, sélectionnez Événements d'authentification du compte de service.
      • Pour les métriques d'utilisation des clés de compte de service, sélectionnez Événements d'authentification par clé de compte de service.
    4. Cliquez sur Appliquer.
  3. Pour supprimer des séries temporelles de l'affichage, utilisez l'élément Filtre.

  4. Pour combiner des séries temporelles, utilisez les menus de l'élément Agrégation. Par exemple, pour afficher l'utilisation du processeur pour vos VM en fonction de leur zone, définissez le premier menu sur Moyenne et le second sur zone.

    Toutes les séries temporelles sont affichées lorsque le premier menu de l'élément Agrégation est défini sur Non agrégé. Les paramètres par défaut de l'élément Aggregation (Agrégation) sont déterminés par le type de métrique que vous avez sélectionné.

  5. Pour le quota et les autres métriques qui indiquent un échantillon par jour, procédez comme suit :
    1. Dans le volet Affichage, définissez le type de widget sur Graphique à barres empilées.
    2. Définissez la période sur au moins une semaine.

REST

La méthode timeSeries.list de l'API Cloud Monitoring vous permet d'accéder aux métriques d'utilisation par programmation.

Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :

  • PROJECT_ID : ID de votre projet Google Cloud. Les ID de projet sont des chaînes alphanumériques, telles que my-project.
  • METRIC_TYPE : type de métrique à vérifier. Utilisez l'une des valeurs suivantes :
    • Pour les métriques d'utilisation des comptes de service, utilisez iam.googleapis.com%2Fservice_account%2Fauthn_events_count.
    • Pour les métriques d'utilisation des clés de compte de service, utilisez iam.googleapis.com%2Fservice_account%2Fkey%2Fauthn_events_count.
  • END_TIME : fin de l'intervalle de temps à vérifier, au format RFC 3339 encodé en pourcentage. Exemple : 2020-06-12T00%3A00%3A00.00Z.
  • START_TIME : début de l'intervalle de temps à vérifier, au format RFC 3339 encodé en pourcentage. Par exemple, 2020-04-12T00%3A00%3A00.00Z.

Méthode HTTP et 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

Pour envoyer votre requête, développez l'une des options suivantes :

Pour en savoir plus sur la lecture des métriques d'utilisation par programmation, consultez la page Lire les données de métrique dans la documentation de Monitoring.

Afficher les métriques d'utilisation d'un seul compte de service

Pour afficher les métriques d'utilisation d'un seul compte de service, procédez comme suit :

Console

  1. Dans Google Cloud Console, accédez à la page Comptes de service.

    Accéder à la page "Comptes de service"

  2. Sélectionnez le projet contenant votre compte de service.

  3. Cliquez sur l'adresse e-mail de votre compte de service.

  4. Cliquez sur l'onglet Métriques. Le graphique Trafic d'authentification affiche les métriques d'utilisation du compte de service.

  5. Facultatif : Pour afficher le graphique sur la page Explorateur de métriques, qui offre des options de filtrage et d'affichage supplémentaires, cliquez sur  > Afficher dans l'Explorateur de métriques.

REST

Lorsqu'elle est utilisée avec des filtres spécifiques, la méthode timeSeries.list de l'API Cloud Monitoring vous permet d'obtenir les métriques d'utilisation d'un seul compte de service. Vous pouvez ensuite déterminer la date de la dernière utilisation du compte à l'aide de ces métriques.

Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :

  • PROJECT_ID : ID de votre projet Google Cloud. Les ID de projet sont des chaînes alphanumériques, telles que my-project.
  • SERVICE_ACCOUNT_ID : ID numérique unique de votre compte de service. Pour rechercher l'ID numérique unique de votre compte de service, procédez comme suit :
    1. Dans Google Cloud Console, accédez à la page Comptes de service.

      Accéder à la page Comptes de service
    2. Cliquez sur l'adresse e-mail de votre compte de service. L'ID numérique unique du compte de service correspond à la valeur du champ ID unique.
  • END_TIME : fin de l'intervalle de temps à vérifier, au format RFC 3339 encodé en pourcentage. Exemple : 2020-06-12T00%3A00%3A00.00Z.
  • START_TIME : début de l'intervalle de temps à vérifier, au format RFC 3339 encodé en pourcentage. Par exemple, 2020-04-12T00%3A00%3A00.00Z.

Méthode HTTP et 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

Pour envoyer votre requête, développez l'une des options suivantes :

La réponse contient un objet timeSeries qui inclut tous les événements d'authentification récents du compte de service spécifié.

Afficher les métriques d'utilisation d'une seule clé de compte de service

Pour afficher les métriques d'utilisation d'une seule clé de compte de service, procédez comme suit :

Console

  1. Dans Google Cloud Console, accédez à la page Comptes de service.

    Accéder à la page "Comptes de service"

  2. Sélectionnez le projet contenant le compte de service associé à votre clé.

  3. Cliquez sur l'adresse e-mail du compte de service associé à la clé.

  4. Cliquez sur l'onglet Métriques. Le graphique Trafic d'authentification par clé affiche les métriques d'utilisation de toutes les clés associées au compte de service.

  5. Dans la légende du graphique, cliquez sur l'ID de la clé de compte de service pour laquelle vous souhaitez afficher les métriques d'utilisation. Le graphique est mis à jour pour n'afficher que les métriques de cette clé de compte de service.

  6. Facultatif : Pour afficher le graphique sur la page Explorateur de métriques, qui offre des options de filtrage et d'affichage supplémentaires, cliquez sur  > Afficher dans l'Explorateur de métriques.

REST

Tout d'abord, obtenez l'ID de la clé de compte de service.

  1. Répertoriez les clés du compte de service :

    La méthode projects.serviceAccounts.keys.list répertorie toutes les clés d'un compte de service donné.

    Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :

    • PROJECT_ID : ID de votre projet Google Cloud. Les ID de projet sont des chaînes alphanumériques, telles que my-project.
    • SA_NAME : nom du compte de service dont vous souhaitez répertorier les clés.
    • KEY_TYPES : facultatif. Liste de types de clés séparés par une virgule que vous souhaitez inclure dans la réponse. Le type de clé indique si une clé est gérée par l'utilisateur (USER_MANAGED) ou gérée par le système (SYSTEM_MANAGED). Si aucune valeur n'est spécifiée, toutes les clés sont renvoyées.

    Méthode HTTP et URL :

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

    Pour envoyer votre requête, développez l'une des options suivantes :

    Vous devriez recevoir une réponse JSON de ce type :

    {
      "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. Identifiez la clé dont vous souhaitez effectuer le suivi à l'aide des métadonnées de la réponse. Copiez ensuite l'ID unique de la clé à la fin du champ name.

    Le champ name a le format suivant :

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

    L'ID unique de la clé correspond à tout ce qui suit keys/.

    Par exemple, l'ID unique est 0f561cc41650ff521899de2fd653bd3de08e2da4 dans le nom de clé suivant :

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

Utilisez ensuite cet ID pour afficher les métriques d'utilisation de la clé de compte de service.

Lorsqu'elle est utilisée avec des filtres spécifiques, la méthode timeSeries.list de l'API Cloud Monitoring vous permet d'obtenir les métriques d'utilisation d'une seule clé de compte de service. Vous pouvez ensuite déterminer la date de la dernière utilisation de la clé à l'aide de ces métriques.

Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :

  • PROJECT_ID : ID de votre projet Google Cloud. Les ID de projet sont des chaînes alphanumériques, telles que my-project.
  • KEY_ID : ID unique de votre clé de compte de service.
  • END_TIME : fin de l'intervalle de temps à vérifier, au format RFC 3339 encodé en pourcentage. Exemple : 2020-06-12T00%3A00%3A00.00Z.
  • START_TIME : début de l'intervalle de temps à vérifier, au format RFC 3339 encodé en pourcentage. Par exemple, 2020-04-12T00%3A00%3A00.00Z.

Méthode HTTP et 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

Pour envoyer votre requête, développez l'une des options suivantes :

La réponse contient un objet timeSeries qui inclut tous les événements d'authentification récents de la clé de compte de service spécifiée.

Exporter les métriques

Monitoring vous permet d'exporter des métriques vers BigQuery. Cette opération est utile pour effectuer une analyse à long terme, car Monitoring ne conserve les métriques que pendant une durée limitée.

Pour savoir comment procéder, consultez la page Exporter des métriques Monitoring dans la documentation sur les solutions.

Étape suivante