Gérer les requêtes enregistrées

Cette page vous explique comment créer, gérer et exécuter des requêtes Policy Analyzer. Vous pouvez créer jusqu'à 200 requêtes enregistrées par élément. Cette limite n'inclut pas les requêtes enregistrées de ses enfants. Par exemple, si vous avez 10 projets sous une organisation, chaque projet peut avoir jusqu'à 200 requêtes enregistrées, et l'organisation peut en avoir jusqu'à 200.

Avant de commencer

  1. Activez Cloud Asset API.

    Activer l'API

Rôles requis

Pour obtenir les autorisations dont vous avez besoin pour créer et gérer des requêtes enregistrées, demandez à votre administrateur de vous accorder le rôle IAM de propriétaire d'éléments Cloud (roles/cloudasset.owner) sur le projet, le dossier ou l'organisation dans lequel vous allez enregistrer votre requête. Pour en savoir plus sur l'attribution de rôles, consultez la section Gérer les accès.

Ce rôle prédéfini contient les autorisations requises pour créer et gérer des requêtes enregistrées. Pour afficher les autorisations exactes requises, développez la section Autorisations requises :

Autorisations requises

  • cloudasset.savedqueries.create
  • cloudasset.savedqueries.delete
  • cloudasset.savedqueries.get
  • cloudasset.savedqueries.list
  • cloudasset.savedqueries.update

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

Créez une requête enregistrée

Pour créer une requête Policy Analyzer enregistrée dans un projet, dossier ou organisation parent, utilisez la méthode savedQueries.create de l'API Cloud Asset Inventory.

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

  • RESOURCE_TYPE: type de ressource pour lequel vous souhaitez enregistrer une requête. Utilisez la valeur projects, folders ou organizations.
  • RESOURCE_ID : ID du projet, du dossier ou de l'organisation Google Cloud pour lequel vous souhaitez enregistrer une requête. Les ID de projet peuvent être alphanumériques ou numériques. Les ID de dossier et d'organisation sont numériques.
  • QUERY_ID: ID à utiliser pour la requête enregistrée, qui doit être unique dans la ressource parente spécifiée (projet, dossier ou organisation). Vous pouvez utiliser des lettres, des chiffres et des traits d'union dans l'ID de la requête.
  • SCOPE_RESOURCE_TYPE : type de ressource pour lequel vous souhaitez étendre votre recherche. Seules les stratégies d'autorisation IAM associées à cette ressource et à ses descendants seront analysées. Utilisez la valeur projects, folders ou organizations.
  • SCOPE_RESOURCE_ID : ID du projet, du dossier ou de l'organisation Google Cloud dont vous souhaitez limiter la recherche. Seules les stratégies IAM autorisées à associer cette ressource et à ses descendants seront analysées. Les ID de projet sont des chaînes alphanumériques, comme my-project. Les ID de dossier et d'organisation sont numériques, par exemple 123456789012.
  • FULL_RESOURCE_NAME : facultatif. Nom complet de la ressource pour laquelle vous souhaitez analyser l'accès. Pour obtenir la liste des formats de noms de ressources complets, consultez Format du nom de la ressource.
  • PRINCIPAL : facultatif. Le compte principal dont vous souhaitez analyser l'accès, au format PRINCIPAL_TYPE:ID (par exemple, user:my-user@example.com). Pour obtenir la liste complète des types de comptes principaux, consultez la section Identifiants principaux.
  • PERMISSION_1, PERMISSION_2... PERMISSION_N: facultatif. Les autorisations que vous souhaitez vérifier, par exemple compute.instances.get. Si vous répertoriez plusieurs autorisations, Policy Analyzer recherche toutes les autorisations répertoriées.
  • LABEL_KEY et LABEL_VALUE : paire clé/valeur à associer à la requête, qui peut être utilisée dans les opérations de recherche et de liste. Vous pouvez inclure jusqu'à 10 étiquettes par requête enregistrée.
  • DESCRIPTION: chaîne décrivant la requête.

Méthode HTTP et URL :

POST https://cloudasset.googleapis.com/v1/RESOURCE_TYPE/RESOURCE_ID/savedQueries?savedQueryId=QUERY_ID

Corps JSON de la requête :

{
  "content": {
    "iamPolicyAnalysisQuery": {
      "scope": "SCOPE_RESOURCE_TYPE/SCOPE_RESOURCE_ID"
      "resourceSelector": {
        "fullResourceName": "FULL_RESOURCE_NAME"
      },
      "identitySelector": {
        "identity": "PRINCIPAL"
      },
      "accessSelector": {
        "permissions": [
          "PERMISSION_1",
          "PERMISSION_2",
          "PERMISSION_N"
        ]
      }
    }
  },
  "labels": {
    "LABEL_KEY": "LABEL_VALUE"
  },
  "description": "DESCRIPTION"
}

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

La réponse contient la requête enregistrée. Exemple:

{
  "name": "projects/12345678901/savedQueries/my-query",
  "description": "A query checking what permissions my-user@example.com has on my-project",
  "createTime": "2022-04-18T22:47:25.640783Z",
  "lastUpdateTime": "2022-04-18T22:47:25.640783Z",
  "labels": {
    "user": "my-user"
  },
  "content": {
    "iamPolicyAnalysisQuery": {
      "scope": "projects/scope-project",
      "resourceSelector": {
        "fullResourceName": "//cloudresourcemanager.googleapis.com/projects/my-project"
      },
      "identitySelector": {
        "identity": "user:my-user@example.com"
      }
    }
  }
}

Exécuter une requête enregistrée

Pour exécuter une requête d'analyse enregistrée, utilisez la méthode analyzeIamPolicy de l'API Cloud Asset Inventory.

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

  • SCOPE_RESOURCE_TYPE : type de ressource pour lequel vous souhaitez étendre votre recherche. Seules les stratégies d'autorisation IAM associées à cette ressource et à ses descendants seront analysées. Utilisez la valeur projects, folders ou organizations.
  • SCOPE_RESOURCE_ID: ID du projet, du dossier ou de l'organisation Google Cloud dont vous souhaitez limiter la recherche. Seules les stratégies IAM autorisées à associer cette ressource et à ses descendants seront analysées. Les ID de projet sont des chaînes alphanumériques, comme my-project. Les ID de dossier et d'organisation sont numériques, par exemple 123456789012.
  • RESOURCE_TYPE : type de ressource dans lequel la requête est enregistrée. Utilisez la valeur projects, folders ou organizations.
  • RESOURCE_NUM_ID : ID numérique du projet, du dossier ou de l'organisation Google Cloud dans lequel la requête est enregistrée. Vous ne pouvez pas utiliser l'ID alphanumérique du projet pour identifier un projet. Vous devez utiliser le numéro de projet.
  • QUERY_ID: ID de la requête enregistrée que vous souhaitez utiliser.

Méthode HTTP et URL :

POST https://cloudasset.googleapis.com/v1/SCOPE_RESOURCE_TYPE/SCOPE_RESOURCE_ID:analyzeIamPolicy

Corps JSON de la requête :

{
  "savedAnalysisQuery": "RESOURCE_TYPE/RESOURCE_NUM_ID/savedQueries/QUERY_ID"
}

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

La réponse contient les résultats de l'exécution de la requête enregistrée sur la ressource spécifiée. Pour obtenir des exemples de résultats de requête, consultez Analyser les stratégies IAM.

Obtenir une requête enregistrée

Pour obtenir une requête de l'outil d'analyse de règles enregistrée, utilisez la méthode savedQueries.get de l'API Cloud Asset Inventory.

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

  • RESOURCE_TYPE : type de ressource dans lequel la requête est enregistrée. Utilisez la valeur projects, folders ou organizations.
  • RESOURCE_NUM_ID : ID numérique du projet, du dossier ou de l'organisation Google Cloud dans lequel la requête est enregistrée. Vous ne pouvez pas utiliser l'ID alphanumérique du projet pour identifier un projet. Vous devez utiliser le numéro de projet.
  • QUERY_ID: ID de la requête enregistrée que vous souhaitez obtenir.

Méthode HTTP et URL :

GET https://cloudasset.googleapis.com/v1/RESOURCE_TYPE/RESOURCE_NUM_ID/savedQueries/QUERY_ID

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

La réponse contient la requête enregistrée. Exemple:

{
  "name": "projects/12345678901/savedQueries/my-query",
  "description": "A query checking what permissions my-user@example.com has on my-project",
  "createTime": "2022-04-18T22:47:25.640783Z",
  "lastUpdateTime": "2022-04-18T22:47:25.640783Z",
  "labels": {
    "user": "my-user"
  },
  "content": {
    "iamPolicyAnalysisQuery": {
      "scope": "projects/scope-project",
      "resourceSelector": {
        "fullResourceName": "//cloudresourcemanager.googleapis.com/projects/my-project"
      },
      "identitySelector": {
        "identity": "user:my-user@example.com"
      }
    }
  }
}

Répertorier les requêtes enregistrées

Pour recenser toutes les requêtes de l'outil d'analyse de règles enregistrées dans un projet, un dossier ou une organisation, utilisez la méthode savedQueries.list de l'API Cloud Asset Inventory.

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

  • RESOURCE_TYPE : type de ressource dans lequel les requêtes sont enregistrées. Utilisez la valeur projects, folders ou organizations.
  • RESOURCE_ID: ID du projet, du dossier ou de l'organisation Google Cloud pour lequel vous souhaitez enregistrer une requête. Les ID de projet peuvent être alphanumériques ou numériques. Les ID de dossier et d'organisation sont numériques.

Méthode HTTP et URL :

GET https://cloudasset.googleapis.com/v1/RESOURCE_TYPE/RESOURCE_ID/savedQueries

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

La réponse contient toutes les requêtes Policy Analyzer enregistrées pour le projet, le dossier ou l'organisation. Exemple:

{
  "savedQueries": [
    {
      "name": "projects/12345678901/savedQueries/query-1",
      "description": "A query checking what permissions my-user@example.com has on my-project",
      "createTime": "2022-04-15T21:17:33.777212Z",
      "lastUpdateTime": "2022-04-15T21:17:33.777212Z",
      "labels": {
        "missing-info": "permission"
      },
      "content": {
        "iamPolicyAnalysisQuery": {
          "scope": "projects/scope-project",
          "resourceSelector": {
            "fullResourceName": "//cloudresourcemanager.googleapis.com/projects/my-project"
          },
          "identitySelector": {
            "identity": "user:my-user@example.com"
          }
        }
      }
    },
    {
      "name": "projects/12345678901/savedQueries/query-2",
      "description": "A query checking what resources my-user@example.com has permission to view roles on",
      "createTime": "2022-04-18T22:47:25.640783Z",
      "lastUpdateTime": "2022-04-18T22:47:25.640783Z",
      "labels": {
        "missing-info": "resource"
      },
      "content": {
        "iamPolicyAnalysisQuery": {
          "scope": "projects/scope-project",
          "accessSelector": {
            "permissions": [
              "iam.roles.get",
              "iam.roles.list"
            ]
          },
          "identitySelector": {
            "identity": "user:my-user@example.com"
          }
        }
      }
    }
  ]
}

Mettre à jour une requête enregistrée

Pour mettre à jour une requête de l'outil d'analyse des règles enregistrée, utilisez la méthode savedQueries.patch de l'API Cloud Asset Inventory.

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

  • RESOURCE_TYPE: type de ressource dans lequel la requête est enregistrée. Utilisez la valeur projects, folders ou organizations.
  • RESOURCE_NUM_ID : ID numérique du projet, du dossier ou de l'organisation Google Cloud dans lequel la requête est enregistrée. Vous ne pouvez pas utiliser l'ID alphanumérique du projet pour identifier un projet. Vous devez utiliser le numéro de projet.
  • QUERY_ID: ID de la requête enregistrée que vous souhaitez modifier.
  • UPDATED_FIELDS : listes des champs que vous souhaitez mettre à jour, séparés par une virgule. Par exemple, si vous mettez à jour les champs de contenu, de libellés et de description, vous devez utiliser la valeur content,labels,description.
  • UPDATED_QUERY : facultatif. Requête de l'outil d'analyse de règles que vous souhaitez enregistrer. Pour en savoir plus sur la mise en forme de la requête, consultez Créer une requête enregistrée.
  • UPDATED_LABELS : facultatif. Libellés mis à jour que vous souhaitez associer à la requête enregistrée.
  • UPDATED_DESCRIPTION : facultatif. Description mise à jour pour la requête enregistrée.

Méthode HTTP et URL :

POST https://cloudasset.googleapis.com/v1/RESOURCE_TYPE/RESOURCE_NUM_ID/savedQueries/QUERY_ID?update_mask=UPDATED_FIELDS

Corps JSON de la requête :

{
  "content": {
    "iamPolicyAnalysisQuery": {
      UPDATED_QUERY
  },
  "labels": {
    UPDATED_LABELS
  },
  "description": "UPDATED_DESCRIPTION"
}

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

La réponse contient la requête mise à jour.

Supprimer une requête enregistrée

Pour supprimer une requête Policy Analyzer enregistrée, utilisez la méthode savedQueries.delete de l'API Cloud Asset Inventory.

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

  • RESOURCE_TYPE: type de ressource dans lequel la requête est enregistrée. Utilisez la valeur projects, folders ou organizations.
  • RESOURCE_NUM_ID: ID numérique du projet, du dossier ou de l'organisation Google Cloud dans lequel la requête est enregistrée. Vous ne pouvez pas utiliser l'ID alphanumérique du projet pour identifier un projet. Vous devez utiliser le numéro de projet.
  • QUERY_ID : ID de la requête enregistrée que vous souhaitez supprimer.

Méthode HTTP et URL :

DELETE https://cloudasset.googleapis.com/v1/RESOURCE_TYPE/RESOURCE_NUM_ID/savedQueries/QUERY_ID

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

Si la requête a bien été supprimée, l'API renvoie une réponse vide.