Les éléments sont des ressources Google Cloud d'une organisation, telles que des instances Compute Engine ou des buckets Cloud Storage.
Ce guide explique comment utiliser les bibliothèques clientes de Security Command Center pour accéder aux enregistrements obsolètes que Security Command Center gère pour les éléments d'un projet ou d'une organisation.
Security Command Center ne conserve les enregistrements que pour un sous-ensemble des éléments de l'inventaire des éléments Cloud. Pour obtenir la liste la plus complète des éléments de votre environnement, utilisez inventaire des éléments cloud.
Pour en savoir plus, consultez les ressources suivantes :
- Service de liste d'éléments Cloud Asset Inventory
- Types d'éléments acceptés dans Security Command Center
Niveaux d'autorisation pour les rôles IAM
Les rôles IAM pour Security Command Center peuvent être attribués au niveau de l'organisation, du dossier ou du projet. Votre capacité à afficher, modifier, créer ou mettre à jour les résultats, les éléments et les sources de sécurité dépend du niveau pour lequel vous disposez d'un accès. Pour en savoir plus sur les rôles Security Command Center, consultez la page Contrôle des accès.
Avant de commencer
Avant de configurer une source, vous devez effectuer les opérations suivantes :
Taille de la page
Toutes les API de liste Security Command Center sont paginées. Chaque réponse renvoie une page de résultats et un jeton pour renvoyer la page suivante. La taille de la page est configurable. La valeur pageSize par défaut est de 10. Elle peut être définie sur une valeur comprise entre 1 et 1 000.
Types de ressources
L'attribut resourceType
dans Security Command Center utilise une convention de nommage différente de celle de l'inventaire des éléments cloud. Pour obtenir la liste des formats des types de ressources, consultez la page Types d'éléments acceptés dans Security Command Center.
Répertorier tous les éléments
Ces exemples montrent comment répertorier tous les éléments:
gcloud
Pour répertorier tous les composants d'un projet, d'un dossier ou d'une organisation, exécutez la commande suivante:
gcloud scc assets list PARENT_ID
Remplacez PARENT_ID
par l'une des valeurs suivantes :
- Un ID d'organisation au format suivant :
ORGANIZATION_ID
(ID numérique uniquement) - Un ID de dossier au format suivant:
folders/FOLDER_ID
- Un ID de projet au format suivant:
projects/PROJECT_ID
Pour plus d'exemples, exécutez la commande suivante :
gcloud scc assets list --help
Pour consulter des exemples dans la documentation, consultez gcloud scc assets list.
Python
Java
Go
Node.js
Le résultat pour chaque élément est un objet JSON qui se présente comme suit :
asset:
createTime: '2020-10-05T17:55:14.823Z'
iamPolicy:
policyBlob: '{"bindings":[{"role":"roles/owner","members":["serviceAccount:SERVICE_ACCOUNT@PROJECT_ID.iam.gserviceaccount.com","user:USER_EMAIL@gmail.com"]}]}'
name: organizations/ORGANIZATION_ID/assets/ASSET_ID
resourceProperties:
createTime: '2020-10-05T17:36:17.915Z'
lifecycleState: ACTIVE
name: PROJECT_ID
parent: '{"id":"ORGANIZATION_ID","type":"organization"}'
projectId: PROJECT_ID
projectNumber: 'PROJECT_NUMBER'
securityCenterProperties:
resourceDisplayName: PROJECT_ID
resourceName: //cloudresourcemanager.googleapis.com/projects/PROJECT_NUMBER
resourceOwners:
- serviceAccount:SERVICE_ACCOUNT@PROJECT_ID.iam.gserviceaccount.com
- user:USER_EMAIL@gmail.com
resourceParent: //cloudresourcemanager.googleapis.com/organizations/ORGANIZATION_ID
resourceParentDisplayName: ORGANIZATION_NAME
resourceProject: //cloudresourcemanager.googleapis.com/projects/PROJECT_NUMBER
resourceProjectDisplayName: PROJECT_ID
resourceType: google.cloud.resourcemanager.Project
securityMarks:
name: organizations/ORGANIZATION_ID/assets/ASSET_ID/securityMarks
updateTime: '2020-10-05T17:55:14.823Z'
Filtrer les éléments
Un projet, un dossier ou une organisation peut contenir de nombreux éléments. L'exemple ci-dessus n'utilise aucun filtre. Par conséquent, tous les éléments sont renvoyés. Security Command Center vous permet d'utiliser des filtres d'éléments pour obtenir des informations sur des éléments spécifiques. Les filtres sont semblables à des clauses "where" dans les instructions SQL, à ceci près qu'ils s'appliquent aux objets renvoyés par l'API et non à des colonnes.
L'exemple de résultat de l'exemple précédent montre certains champs et sous-champs, ainsi que leurs propriétés, qui peuvent être utilisés dans les filtres d'éléments. Security Command Center est compatible avec les tableaux et objets JSON entiers en tant que types de propriétés potentiels. Vous pouvez appliquer les filtres suivants :
- Éléments de tableau
- Objets JSON entiers avec correspondance de chaîne partielle dans l'objet
- Sous-champs d'objets JSON
Les sous-champs doivent être des nombres, des chaînes ou des valeurs booléennes, et les expressions de filtre doivent utiliser les opérateurs de comparaison suivants :
- Chaînes :
- Égalité parfaite
=
- Chaîne partielle correspondant à
:
- Égalité parfaite
- Numéros :
- Inégalités
<
,>
,<=
,>=
- Égalité
=
- Inégalités
- Valeurs booléennes :
- Égalité
=
- Égalité
Les exemples suivants filtrent les composants:
gcloud
Utilisez la commande suivante pour filtrer les éléments:
gcloud scc assets list PARENT_ID --filter="FILTER"
Remplacez les éléments suivants :
FILTER
par le filtre que vous devez utiliser. Par exemple, le filtre suivant ne renvoie que les ressources de projet:--filter="security_center_properties.resource_type=\"google.cloud.resourcemanager.Project\""
PARENT_ID
par l'une des valeurs suivantes :- Un ID d'organisation au format suivant :
ORGANIZATION_ID
(ID numérique uniquement) - Un ID de dossier au format suivant:
folders/FOLDER_ID
- Un ID de projet au format suivant:
projects/PROJECT_ID
- Un ID d'organisation au format suivant :
Pour plus d'exemples, exécutez la commande suivante :
gcloud scc assets list --help
Pour consulter des exemples dans la documentation, consultez gcloud scc assets list.
Python
Java
Go
Node.js
Liste à un moment donné
Les exemples précédents montrent comment répertorier un ensemble d'éléments actuel. Security Command Center vous permet également d'afficher un instantané historique des éléments. Les exemples suivants renvoient l'état de tous les éléments à un moment donné. Security Command Center est compatible avec des résolutions à la milliseconde.
gcloud
Utilisez la commande suivante pour lister les composants à un moment donné:
gcloud scc assets list PARENT_ID --read-time="READ_TIME"
Remplacez les éléments suivants :
READ_TIME
avec l'heure à laquelle répertorier les éléments. Utilisez le format suivant :YYYY-MM-DDThh:mm:ss.ffffffZ
. Exemple :--read-time="2022-12-21T07:00:06.861Z"
PARENT_ID
par l'une des valeurs suivantes :- Un ID d'organisation au format suivant :
ORGANIZATION_ID
(ID numérique uniquement) - Un ID de projet au format suivant:
projects/PROJECT_ID
- Un ID de dossier au format suivant:
folders/FOLDER_ID
- Un ID d'organisation au format suivant :
Pour plus d'exemples, exécutez la commande suivante :
gcloud scc assets list --help
Pour consulter des exemples dans la documentation, consultez gcloud scc assets list.
Python
Java
Go
Node.js
Répertorier des éléments avec des changements d'état
Security Command Center vous permet de comparer un élément à deux moments précis afin de déterminer s'il a été ajouté ou supprimé ou s'il était présent pendant la période spécifiée. Les exemples suivants comparent les projets existants avec READ_TIME
à un moment spécifique dans le passé (spécifié dans COMPARE_DURATION
). COMPARE_DURATION
est fourni en secondes.
Lorsque COMPARE_DURATION
est défini, l'attribut stateChange
des résultats de liste des éléments est mis à jour avec l'une des valeurs suivantes :
ADDED
: l'élément n'était pas présent au début decompareDuration
, mais il était présent àreadTime
.REMOVED
: l'élément était présent au début decompareDuration
, mais pas àreadTime
.ACTIVE
: l'élément était présent au début et à la fin de la période définie parcompareDuration
etreadTime
.
gcloud
Utilisez la commande suivante pour comparer l'état des composants à deux moments différents:
gcloud scc assets list PARENT_ID \ --filter="FILTER" \ --read-time=READ_TIME \ --compare-duration=COMPARE_DURATION
Remplacez les éléments suivants :
COMPARE_DURATION
avec un nombre de secondes qui définit un point dans le temps antérieur à l'heure spécifiée sur l'indicateur--read-time
. Exemple :--compare-duration=84600s
FILTER
par le filtre que vous devez utiliser. Par exemple, le filtre suivant ne renvoie que les ressources de projet:--filter="security_center_properties.resource_type=\"google.cloud.resourcemanager.Project\""
PARENT_ID
par l'une des valeurs suivantes :- Un ID d'organisation au format suivant :
ORGANIZATION_ID
(ID numérique uniquement) - Un ID de projet au format suivant:
projects/PROJECT_ID
- Un ID de dossier au format suivant:
folders/FOLDER_ID
- Un ID d'organisation au format suivant :
READ_TIME
avec l'heure à laquelle répertorier les éléments. Utilisez le format suivant :YYYY-MM-DDThh:mm:ss.ffffffZ
. Exemple : Pour obtenir d'autres exemples, exécutez la commande suivante:--read-time="2022-12-21T07:00:06.861Z"
gcloud scc assets list --help
Pour consulter des exemples dans la documentation, consultez gcloud scc assets list.
Python
Java
Go
Node.js
Exemples de filtres
Voici d'autres filtres d'éléments utiles. Vous pouvez utiliser AND
et OR
dans les filtres pour combiner des paramètres et développer ou affiner les résultats.
Rechercher un élément de projet avec un propriétaire spécifique
"security_center_properties.resource_type = \"google.cloud.resourcemanager.Project\" AND security_center_properties.resource_owners : \"$USER\""
$USER
est généralement au format user:someone@domain.com
. La comparaison de user
utilise l'opérateur de sous-chaîne :
. Une correspondance exacte n'est pas nécessaire.
Règles de pare-feu comprenant des ports HTTP ouverts
"security_center_properties.resource_type = \"google.compute.Firewall\" AND resource_properties.name =\"default-allow-http\""
Ressources appartenant à des projets spécifiques
"security_center_properties.resource_parent = \"$PROJECT_1_NAME\" OR security_center_properties.resource_parent = \"$PROJECT_2_NAME\""
$PROJECT_1_NAME
et $PROJECT_2_NAME
sont des identifiants de ressources au format //cloudresourcemanager.googleapis.com/projects/$PROJECT_ID
, où $PROJECT_ID
est le numéro du projet. Voici un exemple complet : //cloudresourcemanager.googleapis.com/projects/100090906
Rechercher des images Compute Engine dont les noms contiennent une chaîne spécifique
Ce filtre renvoie des images Compute Engine contenant la sous-chaîne "Debia" :
"security_center_properties.resource_type = \"google.compute.Image\" AND resource_properties.name : \"Debia\""
Ressources dont les propriétés contiennent des paires clé/valeur
Ce filtre renvoie les buckets Cloud Storage où bucketPolicyOnly
est désactivé. La valeur de resourceProperties.iamConfiguration
est encodée sous forme de chaîne. Vous utilisez le caractère \
pour échapper les caractères spéciaux dans les chaînes, y compris l'opérateur :
entre le nom de clé et la valeur.
"resourceProperties.iamConfiguration:"\"bucketPolicyOnly\"\:{\"enabled\"\:false""
Rechercher des éléments de projet créés à une heure précise ou avant
Ces exemples de filtres correspondent aux éléments créés au plus tard le 18 juillet 2019 à 20:26:21 GMT. Avec le filtre create_time
, vous pouvez exprimer le temps à l'aide des formats et types suivants :
Heure Unix (en millisecondes) sous forme de littéral entier
"create_time <= 1563481581000"
RFC 3339 en tant que littéral de chaîne
"create_time <= \"2019-07-18T20:26:21+00:00\""
Exclure des éléments des résultats
Pour exclure un élément des résultats, utilisez la négation en plaçant un caractère -
devant un paramètre. Cette opération est semblable à l'utilisation de l'opérateur NOT dans une instruction SQL.
Ce filtre renvoie toutes les ressources du projet, sauf Debia
:
"security_center_properties.resource_type = \"google.cloud.resourcemanager.Project\" AND -resource_properties.projectId = \"Debia\""
Étape suivante
Découvrez comment accéder à Security Command Center à l'aide d'une bibliothèque cliente.