Ce document explique comment exporter les métadonnées d'éléments de votre projet vers un bucket Cloud Storage.
Avant de commencer
Activez l'API Cloud Asset Inventory dans le projet à partir duquel vous exécutez les commandes inventaire des éléments cloud.
Assurez-vous que votre compte dispose du rôle approprié pour appeler l'API Cloud Asset Inventory. Pour connaître les autorisations individuelles pour chaque type d'appel, consultez la section Autorisations.
Créez un bucket Cloud Storage vers lequel exporter les données, si ce n'est pas déjà fait.
Limites
Les buckets Cloud Storage chiffrés avec des clés Cloud Key Management Service (Cloud KMS) personnalisées ne sont pas compatibles.
Aucune règle de conservation ne doit être définie pour le bucket Cloud Storage.
Lors de l'exportation, l'opération peut créer des fichiers temporaires dans le dossier de sortie. Ne supprimez pas ces fichiers temporaires lorsque l'opération est en cours. Une fois l'opération terminée, les fichiers temporaires sont automatiquement supprimés.
Le type de contenu
ACCESS_POLICY
ne peut être exporté qu'au niveau de l'organisation.Si le fichier vers lequel vous exportez existe déjà et est en cours d'exportation, une erreur
400
est renvoyée.Pour tester les autorisations, inventaire des éléments cloud crée un fichier vide avant d'exporter les données, ce qui envoie un événement de déclencheur Cloud Storage supplémentaire de
google.cloud.storage.object.v1.finalized
.
Exporter un instantané d'élément vers Cloud Storage
gcloud
gcloud asset export \ --SCOPE \ --billing-project=BILLING_PROJECT_ID \ --asset-types=ASSET_TYPE_1,ASSET_TYPE_2,... \ --content-type=CONTENT_TYPE \ --relationship-types=RELATIONSHIP_TYPE_1,RELATIONSHIP_TYPE_2,... \ --snapshot-time="SNAPSHOT_TIME" \ --OUTPUT_TYPE
Indiquez les valeurs suivantes :
-
SCOPE
: utilisez l'une des valeurs suivantes:-
project=PROJECT_ID
, oùPROJECT_ID
est l'ID du projet contenant les métadonnées des éléments que vous souhaitez exporter. -
folder=FOLDER_ID
, oùFOLDER_ID
est l'ID du dossier contenant les métadonnées d'élément que vous souhaitez exporter.Trouver l'ID d'un dossier Google Cloud
Google Cloud console
Pour trouver l'ID d'un dossier Google Cloud , procédez comme suit:
-
Accédez à la console Google Cloud .
- Cliquez sur la liste déroulante Basculateur dans la barre de menu.
- Sélectionnez votre organisation dans la liste.
- Recherchez le nom de votre dossier. L'ID du dossier s'affiche à côté de son nom.
CLI gcloud
Vous pouvez récupérer l'ID d'un dossier Google Cloud situé au niveau de l'organisation à l'aide de la commande suivante:
gcloud resource-manager folders list \ --organization=$(gcloud organizations describe ORGANIZATION_NAME \ --format="value(name.segment(1))") \ --filter='"DISPLAY_NAME":"TOP_LEVEL_FOLDER_NAME"' \ --format="value(ID)"
Où TOP_LEVEL_FOLDER_NAME correspond à une correspondance partielle ou complète de la chaîne pour le nom du dossier. Supprimez l'indicateur
--format
pour afficher plus d'informations sur les dossiers trouvés.La commande précédente ne renvoie pas les ID des sous-dossiers dans les dossiers. Pour ce faire, exécutez la commande suivante à l'aide de l'ID d'un dossier de niveau supérieur:
gcloud resource-manager folders list --folder=FOLDER_ID
-
-
organization=ORGANIZATION_ID
, oùORGANIZATION_ID
est l'ID de l'organisation qui possède les métadonnées d'élément que vous souhaitez exporter.Trouver l'ID d'une organisation Google Cloud
Google Cloud console
Pour trouver l'ID d'une organisation Google Cloud , procédez comme suit:
-
Accédez à la console Google Cloud .
- Cliquez sur la liste déroulante Basculateur dans la barre de menu.
- Sélectionnez votre organisation dans la liste.
- Cliquez sur l'onglet Tous. L'ID de l'organisation s'affiche à côté de son nom.
CLI gcloud
Vous pouvez récupérer l'ID d'une organisation Google Cloud à l'aide de la commande suivante:
gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
-
-
-
BILLING_PROJECT_ID
: facultatif. ID de projet dans lequel se trouve l'agent de service d'inventaire des éléments cloud par défaut, qui dispose des autorisations nécessaires pour gérer vos ensembles de données et vos tables BigQuery. Découvrez comment définir le projet de facturation. ASSET_TYPE_#
: facultatif. Liste des types d'éléments pouvant faire l'objet d'une recherche séparés par une virgule. Les expressions régulières compatibles avec RE2 sont acceptées. Si l'expression régulière ne correspond à aucun type d'élément compatible, une erreurINVALID_ARGUMENT
est renvoyée. Lorsque--asset-types
n'est pas spécifié, tous les types d'assets sont renvoyés.CONTENT_TYPE
: facultatif. Type de contenu des métadonnées que vous souhaitez récupérer. Lorsque--content-type
n'est pas spécifié, seules les informations de base sont renvoyées, telles que les noms des composants, la dernière fois qu'ils ont été mis à jour, ainsi que les projets, les dossiers et les organisations auxquels ils appartiennent.-
RELATIONSHIP_TYPE_#
: facultatif. Nécessite un accès au niveau Premium ou Enterprise de Security Command Center ou à Gemini Cloud Assist. Liste des types de relations d'éléments que vous souhaitez récupérer, séparés par une virgule. Pour que cela fonctionne, vous devez définirCONTENT_TYPE
surRELATIONSHIP
. -
SNAPSHOT_TIME
: facultatif. Heure à laquelle vous souhaitez prendre un instantané de vos éléments, au format gcloud topic datetime. La valeur ne doit pas remonter à plus de 35 jours. Lorsque--snapshot-time
n'est pas spécifié, un instantané est pris à l'heure actuelle. -
OUTPUT_TYPE
: utilisez l'une des valeurs suivantes:--output-path="gs://BUCKET_NAME/FILE_NAME"
pour écrire la sortie dans un fichier, où:-
BUCKET_NAME
est le nom du bucket Cloud Storage dans lequel écrire. -
FILE_NAME
est le fichier dans lequel écrire dans votre bucket Cloud Storage.
-
-
--output-path-prefix="gs://BUCKET_NAME/FOLDER_NAME"
pour écrire la sortie dans un dossier, où:-
BUCKET_NAME
est le nom du bucket Cloud Storage dans lequel écrire. -
FOLDER_NAME
est le dossier dans lequel écrire dans votre bucket Cloud Storage. La sortie est divisée en sous-dossiers nommés d'après les types d'assets. Les sous-dossiers ne doivent pas déjà exister dans le dossier que vous spécifiez.
-
Consultez la documentation de référence de la gcloud CLI pour toutes les options.
Exemple
Exécutez la commande suivante pour exporter vos métadonnées resource
telles qu'elles étaient le 30 janvier 2024 dans le projet my-project
, vers le fichier my-file.txt
dans le bucket Cloud Storage my-bucket
.
gcloud asset export \ --project=my-project \ --billing-project=my-project \ --content-type=resource \ --snapshot-time="2024-01-30" \ --output-path="gs://my-bucket/my-file.txt"
Exemple de réponse
Export in progress for root asset [projects/my-project]. Use [gcloud asset operations describe projects/000000000000/operations/ExportAssets/RESOURCE/00000000000000000000000000000000] to check the status of the operation.
REST
Méthode HTTP et URL :
POST https://cloudasset.googleapis.com/v1/SCOPE_PATH:exportAssets
En-têtes :
X-Goog-User-Project: BILLING_PROJECT_ID
Corps JSON de la requête :
{ "assetTypes": [ "ASSET_TYPE_1", "ASSET_TYPE_2", "..." ], "contentType": "CONTENT_TYPE", "relationshipTypes": [ "RELATIONSHIP_TYPE_1", "RELATIONSHIP_TYPE_2", "..." ], "readTime": "SNAPSHOT_TIME", "outputConfig": { "gcsDestination": { OUTPUT_TYPE } } }
Indiquez les valeurs suivantes :
-
SCOPE_PATH
: utilisez l'une des valeurs suivantes:Les valeurs autorisées sont les suivantes :
-
projects/PROJECT_ID
, oùPROJECT_ID
est l'ID du projet contenant les métadonnées des éléments que vous souhaitez exporter. -
projects/PROJECT_NUMBER
, oùPROJECT_NUMBER
correspond au numéro du projet contenant les métadonnées d'élément que vous souhaitez exporter.Trouver un numéro de projet Google Cloud
Google Cloud console
Pour trouver un numéro de projet Google Cloud , procédez comme suit:
-
Accédez à la page Bienvenue dans la console Google Cloud .
- Cliquez sur la liste déroulante Basculateur dans la barre de menu.
-
Sélectionnez votre organisation dans la liste, puis recherchez le nom de votre projet. Le nom, le numéro et l'ID du projet sont affichés près de l'en-tête Bienvenue.
Jusqu'à 4 000 ressources peuvent être affichées. Si le projet que vous recherchez ne s'affiche pas, accédez à la page Gérer les ressources et filtrez la liste en utilisant le nom de ce projet.
CLI gcloud
Vous pouvez récupérer un numéro de projet Google Cloud à l'aide de la commande suivante:
gcloud projects describe PROJECT_ID --format="value(projectNumber)"
-
-
folders/FOLDER_ID
, oùFOLDER_ID
est l'ID du dossier contenant les métadonnées d'élément que vous souhaitez exporter.Trouver l'ID d'un dossier Google Cloud
Google Cloud console
Pour trouver l'ID d'un dossier Google Cloud , procédez comme suit:
-
Accédez à la console Google Cloud .
- Cliquez sur la liste déroulante Basculateur dans la barre de menu.
- Sélectionnez votre organisation dans la liste.
- Recherchez le nom de votre dossier. L'ID du dossier s'affiche à côté de son nom.
CLI gcloud
Vous pouvez récupérer l'ID d'un dossier Google Cloud situé au niveau de l'organisation à l'aide de la commande suivante:
gcloud resource-manager folders list \ --organization=$(gcloud organizations describe ORGANIZATION_NAME \ --format="value(name.segment(1))") \ --filter='"DISPLAY_NAME":"TOP_LEVEL_FOLDER_NAME"' \ --format="value(ID)"
Où TOP_LEVEL_FOLDER_NAME correspond à une correspondance partielle ou complète de la chaîne pour le nom du dossier. Supprimez l'indicateur
--format
pour afficher plus d'informations sur les dossiers trouvés.La commande précédente ne renvoie pas les ID des sous-dossiers dans les dossiers. Pour ce faire, exécutez la commande suivante à l'aide de l'ID d'un dossier de niveau supérieur:
gcloud resource-manager folders list --folder=FOLDER_ID
-
-
organizations/ORGANIZATION_ID
, oùORGANIZATION_ID
est l'ID de l'organisation qui possède les métadonnées d'élément que vous souhaitez exporter.Trouver l'ID d'une organisation Google Cloud
Google Cloud console
Pour trouver l'ID d'une organisation Google Cloud , procédez comme suit:
-
Accédez à la console Google Cloud .
- Cliquez sur la liste déroulante Basculateur dans la barre de menu.
- Sélectionnez votre organisation dans la liste.
- Cliquez sur l'onglet Tous. L'ID de l'organisation s'affiche à côté de son nom.
CLI gcloud
Vous pouvez récupérer l'ID d'une organisation Google Cloud à l'aide de la commande suivante:
gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
-
-
-
BILLING_PROJECT_ID
: ID du projet dans lequel se trouve l'agent de service d'inventaire des éléments cloud par défaut, qui dispose des autorisations nécessaires pour gérer vos ensembles de données et vos tables BigQuery. Découvrez comment définir le projet de facturation. ASSET_TYPE_#
: facultatif. Tableau de types d'éléments pouvant faire l'objet d'une recherche. Les expressions régulières compatibles avec RE2 sont acceptées. Si l'expression régulière ne correspond à aucun type d'élément compatible, une erreurINVALID_ARGUMENT
est renvoyée. LorsqueassetTypes
n'est pas spécifié, tous les types d'assets sont renvoyés.CONTENT_TYPE
: facultatif. Type de contenu des métadonnées que vous souhaitez récupérer. LorsquecontentType
n'est pas spécifié, seules les informations de base sont renvoyées, telles que les noms des composants, la dernière fois qu'ils ont été mis à jour, ainsi que les projets, les dossiers et les organisations auxquels ils appartiennent.-
RELATIONSHIP_TYPE_#
: facultatif. Nécessite un accès au niveau Premium ou Enterprise de Security Command Center ou à Gemini Cloud Assist. Liste des types de relations d'éléments que vous souhaitez récupérer, séparés par une virgule. Pour que cela fonctionne, vous devez définirCONTENT_TYPE
surRELATIONSHIP
. -
SNAPSHOT_TIME
: facultatif. Heure à laquelle vous souhaitez prendre un instantané de vos éléments, au format RFC 3339. La valeur ne doit pas remonter à plus de 35 jours. LorsquereadTime
n'est pas spécifié, un instantané est pris à l'heure actuelle. -
OUTPUT_TYPE
: utilisez l'une des valeurs suivantes:"uri": "gs://BUCKET_NAME/FILE_NAME"
pour écrire la sortie dans un fichier, où:-
BUCKET_NAME
est le nom du bucket Cloud Storage dans lequel écrire. -
FILE_NAME
est le fichier dans lequel écrire dans votre bucket Cloud Storage.
-
-
"uriPrefix": "gs://BUCKET_NAME/FOLDER_NAME"
pour écrire la sortie dans un dossier, où:-
BUCKET_NAME
est le nom du bucket Cloud Storage dans lequel écrire. -
FOLDER_NAME
est le dossier dans lequel écrire dans votre bucket Cloud Storage. La sortie est divisée en sous-dossiers nommés d'après les types d'assets. Les sous-dossiers ne doivent pas déjà exister dans le dossier que vous spécifiez.
-
Consultez la documentation de référence REST pour toutes les options.
Exemples de commandes
Exécutez l'une des commandes suivantes pour exporter vos métadonnées resource
telles qu'elles étaient le 30 janvier 2024 dans le projet my-project
, vers le fichier my-file.txt
dans le bucket Cloud Storage my-bucket
.
curl (Linux, macOS ou Cloud Shell)
curl -X POST \ -H "X-Goog-User-Project: BILLING_PROJECT_ID" \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ -d '{ "contentType": "RESOURCE", "readTime": "2024-01-30T00:00:00Z", "outputConfig": { "gcsDestination": { "uri": "gs://my-bucket/my-file" } } }' \ https://cloudasset.googleapis.com/v1/projects/my-project:exportAssets
PowerShell (Windows)
$cred = gcloud auth print-access-token $headers = @{ "X-Goog-User-Project" = "BILLING_PROJECT_ID"; "Authorization" = "Bearer $cred" } $body = @" { "contentType": "RESOURCE", "readTime": "2024-01-30T00:00:00Z", "outputConfig": { "gcsDestination": { "uri": "gs://my-bucket/my-file" } } } "@ Invoke-WebRequest ` -Method POST ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -Body $body ` -Uri "https://cloudasset.googleapis.com/v1/projects/my-project:exportAssets" | Select-Object -Expand Content
Exemple de réponse
{ "name": "projects/000000000000/operations/ExportAssets/RESOURCE/00000000000000000000000000000000", "metadata": { "@type": "type.googleapis.com/google.cloud.asset.v1.ExportAssetsRequest", "parent": "projects/000000000000", "readTime": "2024-01-30T00:00:00Z", "contentType": "RESOURCE", "outputConfig": { "gcsDestination": { "uri": "gs://my-bucket/export.txt" } } } }
C#
Pour savoir comment installer et utiliser la bibliothèque cliente pour inventaire des éléments cloud, consultez la page Bibliothèques clientes Cloud Asset Inventory.
Pour vous authentifier auprès de inventaire des éléments cloud, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Go
Pour savoir comment installer et utiliser la bibliothèque cliente pour inventaire des éléments cloud, consultez la page Bibliothèques clientes Cloud Asset Inventory.
Pour vous authentifier auprès de inventaire des éléments cloud, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Java
Pour savoir comment installer et utiliser la bibliothèque cliente pour inventaire des éléments cloud, consultez la page Bibliothèques clientes Cloud Asset Inventory.
Pour vous authentifier auprès de inventaire des éléments cloud, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Node.js
Pour savoir comment installer et utiliser la bibliothèque cliente pour inventaire des éléments cloud, consultez la page Bibliothèques clientes Cloud Asset Inventory.
Pour vous authentifier auprès de inventaire des éléments cloud, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
PHP
Pour savoir comment installer et utiliser la bibliothèque cliente pour inventaire des éléments cloud, consultez la page Bibliothèques clientes Cloud Asset Inventory.
Pour vous authentifier auprès de inventaire des éléments cloud, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Python
Pour savoir comment installer et utiliser la bibliothèque cliente pour inventaire des éléments cloud, consultez la page Bibliothèques clientes Cloud Asset Inventory.
Pour vous authentifier auprès de inventaire des éléments cloud, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Ruby
Pour savoir comment installer et utiliser la bibliothèque cliente pour inventaire des éléments cloud, consultez la page Bibliothèques clientes Cloud Asset Inventory.
Pour vous authentifier auprès de inventaire des éléments cloud, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Vérifier l'état d'une exportation
Les exportations prennent du temps. Pour vérifier si une exportation est terminée, vous pouvez interroger l'opération à l'aide de son ID d'opération.
Sachez que même si votre exportation est terminée, quelqu'un a peut-être envoyé une autre demande d'exportation vers la même destination pour une autre opération. Vous pouvez envoyer de nouvelles requêtes d'exportation vers la même destination une fois qu'une requête précédente est terminée ou si plus de 15 minutes se sont écoulées. Les requêtes d'exportation effectuées en dehors de ces conditions sont refusées par l'inventaire des éléments cloud.
gcloud
Pour afficher l'état de votre exportation, procédez comme suit:
Obtenez le
OPERATION_PATH
, qui inclut l'ID d'opération, à partir de la réponse à votre requête d'exportation. L'OPERATION_PATH
s'affiche dans la réponse à l'exportation, au format suivant:projects/PROJECT_NUMBER/operations/ExportAssets/CONTENT_TYPE/OPERATION_ID
Pour vérifier l'état de l'exportation, exécutez la commande suivante avec l'ID d'opération
OPERATION_PATH
:gcloud asset operations describe OPERATION_PATH
REST
Pour afficher l'état de votre exportation, procédez comme suit:
Obtenez le
OPERATION_PATH
, qui inclut l'ID d'opération, à partir de la réponse à votre requête d'exportation. L'OPERATION_PATH
s'affiche sous la forme de la valeur du champname
dans la réponse à l'exportation, au format suivant:projects/PROJECT_NUMBER/operations/ExportAssets/CONTENT_TYPE/OPERATION_ID
Pour vérifier l'état de votre exportation, effectuez la requête suivante.
REST
Méthode HTTP et URL :
GET https://cloudasset.googleapis.com/v1/OPERATION_PATH
Exemples de commandes
curl (Linux, macOS ou Cloud Shell)
curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ https://cloudasset.googleapis.com/v1/OPERATION_PATH
PowerShell (Windows)
$cred = gcloud auth print-access-token $headers = @{ "Authorization" = "Bearer $cred" } Invoke-WebRequest ` -Method GET ` -Headers $headers ` -Uri "https://cloudasset.googleapis.com/v1/OPERATION_PATH" | Select-Object -Expand Content
Exemple de réponse
{ "name": "projects/000000000000/operations/ExportAssets/RESOURCE/00000000000000000000000000000000", "metadata": { "@type": "type.googleapis.com/google.cloud.asset.v1.ExportAssetsRequest", "parent": "projects/000000000000", "readTime": "2024-01-30T00:00:00Z", "contentType": "RESOURCE", "outputConfig": { "gcsDestination": { "uri": "gs://my-bucket/export.txt" } } } }
Afficher un instantané d'élément
Pour afficher l'instantané d'élément, procédez comme suit :
Accédez à la page Buckets (Buckets) de Cloud Storage dans la console Google Cloud .
Cliquez sur le nom du bucket dans lequel vous avez exporté votre instantané d'élément, puis sur le nom du fichier d'exportation.
Cliquez sur Télécharger pour télécharger votre instantané d'éléments, puis ouvrez-le dans l'éditeur de texte de votre choix.