Intégrer l'inventaire des éléments cloud à Google SecOps
Ce document explique comment intégrer inventaire des éléments cloud à Google Security Operations (Google SecOps).
Version de l'intégration : 12.0
Dans la plate-forme Google SecOps, l'intégration de inventaire des éléments cloud s'appelle Google Cloud Asset Inventory.
Avant de commencer
Pour utiliser l'intégration, vous avez besoin d'un rôle IAM (Identity and Access Management) et d'unGoogle Cloud compte de service.
Créer et configurer un rôle IAM personnalisé
Pour créer un rôle IAM personnalisé et lui configurer une autorisation spécifique, procédez comme suit :
Dans la console Google Cloud , accédez à la page Rôles d'IAM.
Cliquez sur Créer un rôle pour créer un rôle personnalisé avec les autorisations requises pour l'intégration.
Pour un nouveau rôle personnalisé, indiquez le titre, la description et un ID unique.
Définissez l'étape de lancement du rôle sur Disponibilité générale.
Ajoutez l'autorisation suivante au rôle créé :
cloudasset.assets.searchAllResources
Créer et configurer un compte de service
Pour intégrer l'inventaire des éléments cloud à Google SecOps, vous pouvez utiliser un compte de service existant ou en créer un. Pour savoir comment créer un compte de service, consultez Créer des comptes de service.
L'intégration de l'inventaire des éléments cloud vous oblige à accorder à votre compte de service le rôle personnalisé que vous avez créé dans la section précédente et le rôle Cloud Asset Viewer
.
Si vous n'utilisez pas d'adresse e-mail d'identité de charge de travail pour configurer l'intégration, créez une clé de compte de service au format JSON après avoir créé un compte de service. Vous devez fournir l'intégralité du contenu du fichier de clé JSON téléchargé lorsque vous configurez les paramètres d'intégration.
Pour des raisons de sécurité, nous vous recommandons d'utiliser des adresses e-mail Workload Identity au lieu de clés JSON de compte de service. Pour en savoir plus sur les identités de charge de travail, consultez Identités pour les charges de travail.
Attribuer un rôle personnalisé à un compte principal existant
Une fois que vous avez accordé votre nouveau rôle personnalisé à un compte principal sélectionné, celui-ci peut modifier les autorisations de n'importe quel utilisateur de votre organisation.
Pour attribuer le rôle personnalisé à un compte principal existant, procédez comme suit :
Dans la console Google Cloud , accédez à la page IAM.
Dans le champ Filtre, collez la valeur Adresse e-mail de l'identité de charge de travail que vous utilisez pour l'intégration inventaire des éléments cloud, puis recherchez le principal existant.
Cliquez sur
Modifier le compte principal. La boîte de dialogue Modifier l'accès à "PROJECT" s'ouvre.Sous Attribuer des rôles, cliquez sur
Ajouter un autre rôle.Sélectionnez les rôles prédéfinis pour l'inventaire des éléments cloud.
Cliquez sur Enregistrer.
Paramètres d'intégration
L'intégration Cloud Asset Inventory nécessite les paramètres suivants :
Paramètre | Description |
---|---|
API Root |
Obligatoire
Racine de l'API de l'instance inventaire des éléments cloud. La valeur par défaut est |
Organization ID |
Optional
ID de l'organisation à utiliser dans l'intégration de l'inventaire des éléments cloud. |
Project ID |
Optional ID du projet à utiliser pour l'intégration de inventaire des éléments cloud. Si vous ne définissez pas de valeur pour ce paramètre, l'intégration récupère l'ID du projet à partir du contenu du fichier JSON fourni dans le paramètre |
User's Service Account |
Obligatoire
Contenu du fichier JSON de clé de compte de service. Vous pouvez configurer ce paramètre ou le paramètre Pour configurer ce paramètre, indiquez le contenu complet du fichier JSON de la clé de compte de service que vous avez téléchargé lors de la création d'un compte de service. |
Quota Project ID |
Optional ID de projet Google Cloud que vous utilisez pour les API Google Cloud et la facturation. Ce paramètre nécessite que vous accordiez le rôle Si vous ne définissez aucune valeur pour ce paramètre, l'intégration récupère l'ID du projet à partir de votre compte de service Google Cloud . |
Workload Identity Email |
Optional Adresse e-mail du client de votre compte de service. Vous pouvez configurer ce paramètre ou le paramètre Pour emprunter l'identité de comptes de service avec la fédération d'identité de charge de travail, accordez le rôle |
Verify SSL |
Obligatoire
Si cette option est sélectionnée, l'intégration vérifie que le certificat SSL pour la connexion au serveur inventaire des éléments cloud est valide. Cette option est sélectionnée par défaut. |
Pour obtenir des instructions détaillées sur la configuration d'une intégration dans Google SecOps, consultez Configurer des intégrations.
Vous pourrez apporter des modifications ultérieurement si nécessaire. Une fois que vous avez configuré une instance d'intégration, vous pouvez l'utiliser dans des playbooks. Pour en savoir plus sur la configuration et la prise en charge de plusieurs instances, consultez Prise en charge de plusieurs instances.
Actions
Pour en savoir plus sur les actions, consultez Répondre aux actions en attente dans Votre espace de travail et Effectuer une action manuelle.
Enrichir une ressource
Utilisez l'action Enrichir la ressource pour enrichir les informations sur une ressource Google Cloudà l'aide de inventaire des éléments cloud.
L'action ne s'exécute pas sur les entités Google SecOps.
Entrées d'action
Pour configurer l'action Enrichir la ressource, utilisez les paramètres suivants :
Paramètre | Description |
---|---|
Resource Names |
Obligatoire
Liste de noms de ressources (séparés par une virgule) pour lesquelles récupérer des informations. Pour configurer ce paramètre, saisissez le nom complet de la ressource de métadonnées au format suivant : |
Fields To Return |
Optional
Liste de champs à renvoyer, séparés par une virgule. La valeur par défaut est Voici quelques exemples de valeurs :
L'action renvoie toujours le champ Vous pouvez également configurer des filtres avancés. Par exemple, pour renvoyer une clé spécifique à partir de |
Sorties d'action
L'action Enrichir la ressource fournit les résultats suivants :
Type de sortie de l'action | Disponibilité |
---|---|
Pièce jointe au mur des cas | Non disponible |
Lien vers le mur des cas | Non disponible |
Table du mur des cas | Non disponible |
Table d'enrichissement | Non disponible |
Résultat JSON | Disponible |
Messages de sortie | Disponible |
Résultat du script | Disponible |
Résultat JSON
L'exemple suivant montre le résultat JSON reçu lors de l'utilisation de l'action Enrichir la ressource :
[
{
"Entity": "//iam.googleapis.com/projects/PROJECT/serviceAccounts/SERVICE_ACCOUNT/keys/KEY_ID",
"EntityResult": {
"additionalAttributes": {
"email": "email@example.iam.gserviceaccount.com",
"uniqueId": 123456789
},
"name": "//iam.googleapis.com/projects/PROJECT/serviceAccounts/SERVICE_ACCOUNT/keys/KEY_ID",
"assetType": "iam.googleapis.com/ServiceAccountKey",
"project": "projects/PROJECT",
"displayName": "projects/PROJECT/serviceAccounts/SERVICE_ACCOUNT@PROJECT.iam.gserviceaccount.com/keys/KEY_ID",
"createTime": "2022-05-26T17:35:07Z",
"versionedResources": [
{
"version": "v1",
"resource": {
"keyAlgorithm": "KEY_ALG_RSA_2048",
"keyOrigin": "GOOGLE_PROVIDED",
"keyType": "USER_MANAGED",
"name": "projects/PROJECT/serviceAccounts/SERVICE_ACCOUNT@PROJECT.iam.gserviceaccount.com/keys/KEY_ID",
"validAfterTime": "2022-05-26T17:35:07Z",
"validBeforeTime": "9999-12-31T23:59:59Z"
}
}
],
"organization": "organizations/ORGANIZATION",
"parentFullResourceName": "//iam.googleapis.com/projects/PROJECT/serviceAccounts/SERVICE_ACCOUNT@PROJECT.iam.gserviceaccount.com",
"parentAssetType": "iam.googleapis.com/ServiceAccount"
}
}
]
Messages de sortie
L'action Enrichir la ressource peut renvoyer les messages de sortie suivants :
Message affiché | Description du message |
---|---|
|
L'action a réussi. |
Error executing action "Enrich resources". Reason:
ERROR_REASON |
Échec de l'action. Vérifiez la connexion au serveur, les paramètres d'entrée ou les identifiants. |
Résultat du script
Le tableau suivant répertorie la valeur de la sortie du résultat du script lorsque vous utilisez l'action Enrichir la ressource :
Nom du résultat du script | Valeur |
---|---|
is_success |
True ou False |
Obtenir l'instantané de la ressource
Utilisez l'action Obtenir un instantané de la ressource pour obtenir des informations sur la ressource à l'aide de inventaire des éléments cloud.
Cette action ne s'applique pas aux entités Google SecOps.
Entrées d'action
Pour configurer l'action Obtenir un instantané de la ressource, utilisez les paramètres suivants :
Paramètre | Description |
---|---|
Resource Names |
Obligatoire Liste de ressources séparées par une virgule pour lesquelles récupérer les détails. Pour configurer ce paramètre, saisissez le nom complet de la ressource de métadonnées au format suivant : |
Fields To Return |
Optional Liste de champs à renvoyer, séparés par une virgule. Saisissez chaque champ au format suivant : assets.FIELD
Voici quelques exemples de valeurs : L'action renvoie toujours le champ La valeur par défaut est |
Sorties d'action
L'action Obtenir un instantané de la ressource fournit les sorties suivantes :
Type de sortie de l'action | Disponibilité |
---|---|
Pièce jointe au mur des cas | Non disponible |
Lien vers le mur des cas | Non disponible |
Table du mur des cas | Non disponible |
Table d'enrichissement | Non disponible |
Résultat JSON | Disponible |
Messages de sortie | Disponible |
Résultat du script | Disponible |
Résultat JSON
Les exemples suivants montrent les résultats JSON reçus lors de l'utilisation de l'action Obtenir l'instantané de la ressource :
Résultat JSON pour Google Cloud
[ { "Entity": "//compute.googleapis.com/projects/example-project/zones/us-central1-a/instances/example-instance", "EntityResult": { "window": { "startTime": "2023-08-14T19:43:41.805828Z", "endTime": "2262-04-11T23:47:16.854775807Z" }, "asset": { "name": "//compute.googleapis.com/projects/example-project/zones/us-central1-a/instances/example-instance", "assetType": "compute.googleapis.com/Instance", "resource": { "version": "v1", "discoveryDocumentUri": "https://www.googleapis.com/discovery/v1/apis/compute/v1/rest", "discoveryName": "Instance", "parent": "//cloudresourcemanager.googleapis.com/projects/example-project-id", "data": { "description": "", "serviceAccounts": [ { "email": "user@example.com", "scopes": [ "https://www.googleapis.com/auth/devstorage.read_only", "https://www.googleapis.com/auth/logging.write", "https://www.googleapis.com/auth/monitoring.write", "https://www.googleapis.com/auth/servicecontrol", "https://www.googleapis.com/auth/service.management.readonly", "https://www.googleapis.com/auth/trace.append" ] } ], "lastStartTimestamp": "2022-05-26T01:44:52.756-07:00", "deletionProtection": false, "name": "example-name", "keyRevocationActionType": "NONE_ON_KEY_REVOCATION", "canIpForward": false, "shieldedInstanceIntegrityPolicy": { "updateAutoLearnPolicy": true }, "zone": "https://www.googleapis.com/compute/v1/projects/example-project/zones/us-central1-a", "resourceStatus": {}, "scheduling": { "onHostMaintenance": "MIGRATE", "preemptible": false, "provisioningModel": "STANDARD", "automaticRestart": true }, "machineType": "https://www.googleapis.com/compute/v1/projects/example-project/zones/us-central1-a/machineTypes/e2-micro", "confidentialInstanceConfig": { "enableConfidentialCompute": false }, "selfLink": "https://www.googleapis.com/compute/v1/projects/example-project/zones/us-central1-a/instances/example-instance", "id": "example-id", "fingerprint": "example-fingerprint", "startRestricted": false, "networkInterfaces": [ { "network": "https://www.googleapis.com/compute/v1/projects/example-project/global/networks/example-network", "stackType": "IPV4_ONLY", "name": "example", "subnetwork": "https://www.googleapis.com/compute/v1/projects/example-project/regions/us-central1/subnetworks/example-network-subnet", "accessConfigs": [ { "type": "ONE_TO_ONE_NAT", "name": "External NAT", "natIP": "192.0.2.1", "networkTier": "PREMIUM" } ], "fingerprint": "example-fingerprint", "networkIP": "203.0.113.2" } ], "allocationAffinity": { "consumeAllocationType": "ANY_ALLOCATION" }, "labelFingerprint": "example-label", "shieldedInstanceConfig": { "enableSecureBoot": false, "enableVtpm": true, "enableIntegrityMonitoring": true }, "cpuPlatform": "Intel Broadwell", "creationTimestamp": "2022-05-26T01:44:40.323-07:00", "status": "RUNNING", "disks": [ { "guestOsFeatures": [ { "type": "VIRTIO_SCSI_MULTIQUEUE" }, { "type": "SEV_CAPABLE" }, { "type": "UEFI_COMPATIBLE" }, { "type": "GVNIC" } ], "interface": "SCSI", "shieldedInstanceInitialState": { "dbxs": [ { "content": "2gcDBhMRFQAAAAAAAAAAABENAAAAAvEOndK", "fileType": "BIN" } ], "dbx": [ { "fileType": "BIN", "content": "2gcDBhMRFQAAAAAAAAAAABENAAAAAvEOndK" } ] }, "diskSizeGb": "10", "deviceName": "example-device-name", "type": "PERSISTENT", "source": "https://www.googleapis.com/compute/v1/projects/example-project/zones/us-central1-a/disks/example-instance", "boot": true, "licenses": [ "https://www.googleapis.com/compute/v1/projects/example-project/global/licenses" ], "index": 0, "autoDelete": true, "mode": "READ_WRITE" } ], "tags": { "items": [ "http-server" ], "fingerprint": "example-fingerprint" }, "displayDevice": { "enableDisplay": false }, "reservationAffinity": { "consumeReservationType": "ANY_ALLOCATION" } }, "location": "us-central1-a" }, "ancestors": [ "projects/example-project-id", "organizations/example-org-id" ], "updateTime": "2023-08-14T19:43:41.805828Z" } } }, { "Entity": "//iam.googleapis.com/projects/example-project/serviceAccounts/example-account-id", "EntityResult": { "window": { "startTime": "2023-12-22T13:37:50Z", "endTime": "2262-04-11T23:47:16.854775807Z" }, "asset": { "name": "//iam.googleapis.com/projects/example-project/serviceAccounts/example-account-id", "assetType": "iam.googleapis.com/ServiceAccount", "resource": { "version": "v1", "discoveryDocumentUri": "https://iam.googleapis.com/$discovery/rest", "discoveryName": "ServiceAccount", "parent": "//cloudresourcemanager.googleapis.com/projects/example-project-id", "data": { "name": "projects/example-project/serviceAccounts/cloud-asset-inventory-auto@example-project.iam.gserviceaccount.com", "projectId": "example-project", "email": "cloud-asset-inventory-auto@example-project.iam.gserviceaccount.com", "uniqueId": "example-account-id", "displayName": "Cloud Asset Inventory Automation", "oauth2ClientId": "example-account-id" } }, "ancestors": [ "projects/example-project-id", "organizations/example-org-id" ], "updateTime": "2023-12-22T13:37:50Z" } } } ]
Résultat JSON pour AWS
[ { "Entity": "//cloudasset.googleapis.com/organizations/example-org-id/otherCloudConnections/aws/arn:aws:s3:::aps-max-test-bucket", "EntityResult": { "assets": [ { "window": { "startTime": "2024-01-24T17:51:03.412233028Z", "endTime": "2262-04-11T23:47:16.854775807Z" }, "asset": { "name": "//cloudasset.googleapis.com/organizations/example-org-id/otherCloudConnections/aws/arn:aws:s3:::aps-max-test-bucket", "assetType": "cloudasset.googleapis.com/AWS::S3::Bucket", "resource": { "version": "v1", "discoveryDocumentUri": "n/a", "discoveryName": "n/a", "data": { "dataSourceProvider": "AMAZON_WEB_SERVICES", "supplementaryConfigurations": { "PublicAccessBlockConfiguration": { "BlockPublicPolicy": true, "RestrictPublicBuckets": true, "BlockPublicAcls": true, "IgnorePublicAcls": true }, "TagSet": [ { "Key": "my-key2", "Value": "my-value2" }, { "Key": "my-key1", "Value": "my-value1" } ], "ServerSideEncryptionConfiguration": { "Rules": [ { "ApplyServerSideEncryptionByDefault": { "SSEAlgorithm": "AES256" }, "BucketKeyEnabled": true } ] }, "AccessControlPolicy": { "Grants": [ { "Grantee": { "DisplayName": "example", "ID": "example-id", "Type": "CanonicalUser" }, "Permission": "FULL_CONTROL" } ], "Owner": { "DisplayName": "example", "ID": "example-id" } } }, "configuration": { "Name": "aps-max-test-bucket", "CreationDate": "2023-12-04T15:29:50+00:00" }, "tags": { "my-key2": "my-value2", "my-key1": "my-value1" }, "originalResourceName": "arn:aws:s3:::aps-max-test-bucket", "awsAccount": "arn:aws:organizations::example-id:account/example-account/example-account-id" }, "location": "global" }, "ancestors": [ "organizations/example-org-id" ], "updateTime": "2024-01-24T17:51:03.412233028Z" } } ] } } ]
Messages de sortie
L'action Obtenir un instantané de ressource peut renvoyer les messages de sortie suivants :
Message affiché | Description du message |
---|---|
Successfully returned information about the following resources
using Google Cloud Asset Inventory:
ASSET_IDENTIFIER
|
L'action a réussi. |
Error executing action "Get Resource Snapshot". Reason:
ERROR_REASON |
Échec de l'action. Vérifiez la connexion au serveur, les paramètres d'entrée ou les identifiants. |
Résultat du script
Le tableau suivant répertorie la valeur de la sortie du résultat du script lorsque vous utilisez l'action Obtenir un instantané de la ressource :
Nom du résultat du script | Valeur |
---|---|
is_success |
True ou False |
Lister les rôles des comptes de service
Utilisez l'action Lister les rôles du compte de service pour lister les rôles associés au compte de service Google Cloud à l'aide de inventaire des éléments cloud.
Cette action ne s'applique pas aux entités Google SecOps.
Entrées d'action
Pour configurer l'action Lister les rôles du compte de service, utilisez les paramètres suivants :
Paramètre | Description |
---|---|
Service Accounts |
Obligatoire Liste de comptes de service dont vous souhaitez récupérer les détails, séparés par une virgule. |
Check Roles |
Optional Liste de rôles séparés par une virgule à vérifier par rapport au compte de service, par exemple |
Check Permissions |
Optional Liste d'autorisations séparées par une virgule à vérifier par rapport au compte de service, par exemple |
Expand Permissions |
Optional Si cette option est sélectionnée, l'action renvoie des informations sur toutes les autorisations uniques associées à la ressource. (non sélectionnée par défaut). |
Max Roles To Return |
Obligatoire Nombre de rôles associés au compte de service à renvoyer. La valeur par défaut est 100. |
Max Permissions To Return |
Obligatoire Nombre d'autorisations liées au compte de service à renvoyer. |
Sorties d'action
L'action Lister les rôles du compte de service fournit les sorties suivantes :
Type de sortie de l'action | Disponibilité |
---|---|
Pièce jointe au mur des cas | Non disponible |
Lien vers le mur des cas | Non disponible |
Table du mur des cas | Non disponible |
Table d'enrichissement | Non disponible |
Résultat JSON | Disponible |
Messages de sortie | Disponible |
Résultat du script | Disponible |
Résultat JSON
L'exemple suivant montre le résultat JSON reçu lors de l'utilisation de l'action Lister les rôles du compte de service :
{
"roles": ["role1", "role2"],
"unique_permissions": ["permission1", "permission2"]
}
Messages de sortie
L'action Lister les rôles du compte de service peut renvoyer les messages de sortie suivants :
Message affiché | Description du message |
---|---|
|
L'action a réussi. |
Error executing action "List Service Account Roles". Reason:
ERROR_REASON |
Échec de l'action. Vérifiez la connexion au serveur, les paramètres d'entrée ou les identifiants. |
Ping
Utilisez l'action Ping pour tester la connectivité à inventaire des éléments cloud.
L'action ne s'exécute pas sur les entités Google SecOps.
Entrées d'action
Aucun
Sorties d'action
L'action Ping fournit les résultats suivants :
Type de sortie de l'action | Disponibilité |
---|---|
Pièce jointe au mur des cas | Non disponible |
Lien vers le mur des cas | Non disponible |
Table du mur des cas | Non disponible |
Table d'enrichissement | Non disponible |
Résultat JSON | Non disponible |
Messages de sortie | Disponible |
Résultat du script | Disponible |
Messages de sortie
L'action Ping peut renvoyer les messages de résultat suivants :
Message affiché | Description du message |
---|---|
Successfully connected to the Google Cloud Asset Inventory
server with the provided connection parameters! |
L'action a réussi. |
Failed to connect to the Google Cloud Asset Inventory server!
|
Échec de l'action. |
Résultat du script
Le tableau suivant répertorie la valeur du résultat du script lorsque vous utilisez l'action Ping :
Nom du résultat du script | Valeur |
---|---|
is_success |
True ou False |
Vous avez encore besoin d'aide ? Obtenez des réponses de membres de la communauté et de professionnels Google SecOps.