Cette rubrique vous explique comment utiliser les insights d'éléments pour détecter les risques potentiels dans vos configurations d'éléments et améliorer votre stratégie de sécurité.
Présentation
Cloud Asset Insights fournit des insights basés sur les stratégies IAM associées aux ressources de votre organisation. Il fait partie du service Recommender et est fourni en tant que type d'insight google.cloudasset.asset.Insight
. Les insights sont des anomalies spécifiques qui nécessitent une analyse plus approfondie pour déterminer l'action appropriée. Ils sont générés quotidiennement, à partir d'un instantané des données stockées dans l'inventaire des éléments cloud.
Avant de commencer
Avant de commencer à utiliser les insights d'éléments, vous devez suivre la procédure ci-dessous.
Assurez-vous que votre compte dispose des autorisations suivantes.
recommender.cloudAssetInsights.get
recommender.cloudAssetInsights.list
recommender.cloudAssetInsights.update
Vous pouvez accorder ces autorisations individuellement ou attribuer l'un des rôles suivants.
Lecteur d'insights d'éléments cloud (
roles/recommender.cloudAssetInsightsViewer
)Administrateur d'insights d'éléments cloud (
roles/recommender.cloudAssetInsightsAdmin
)
Demander des insights sur les éléments
Pour demander des insights sur les éléments, le moyen le plus simple est de répertorier les insights comme indiqué dans les étapes suivantes. Pour les autres types d'interactions, consultez le guide sur les insights de l'API Recommender.
Demander des insights sur un projet
Pour demander des insights pour un projet, effectuez l'une des requêtes suivantes.
gcloud
Exécutez les commandes gcloud CLI suivantes pour obtenir la liste des insights concernant votre projet, votre dossier ou votre organisation.
Projets
gcloud recommender insights list \
--project=PROJECT_ID \
--location=global \
--insight-type=google.cloudasset.asset.Insight \
--filter="insightSubtype:SUBTYPE" \
--format="FORMAT"
Indiquez les valeurs suivantes :
PROJECT_ID
: ID du projet pour lequel vous souhaitez obtenir des insights.
Autres indicateurs:
--filter
: facultatif. Filtre les résultats par sous-type d'insight.--format
: facultatif. Format de sortie compatible avec gcloud CLI. Par exemple, pour répertorier le contenu des insights sous la forme d'une table aplatie:gcloud recommender insights list \ --project=PROJECT_ID \ --location=global \ --insight-type=google.cloudasset.asset.Insight \ --flatten="content.matchedPolicies[].matchedBindings[].matchedMembers[]" \ --format="table(insightSubtype, name, content.matchedPolicies.matchedBindings.matchedMembers, content.matchedPolicies.matchedBindings.role, content.matchedPolicies.resource)"
Dossiers
gcloud recommender insights list \
--folder=FOLDER_ID \
--location=global \
--insight-type=google.cloudasset.asset.Insight \
--filter="insightSubtype:SUBTYPE" \
--format="FORMAT"
Indiquez les valeurs suivantes :
FOLDER_ID
: ID du dossier pour lequel vous souhaitez obtenir des insights.Trouver un ID de dossier Google Cloud
Console
Pour trouver un ID de dossier Google Cloud, procédez comme suit:
-
Accédez à Google Cloud Console.
- Cliquez sur le sélecteur dans la barre de menu.
- Cliquez sur le champ Sélectionner à partir de, puis sélectionnez votre organisation.
- Recherchez le nom de votre dossier. L'ID du dossier figure à côté du nom du dossier.
gcloud CLI
Vous pouvez récupérer un ID de 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 peut être une correspondance de chaîne complète ou partielle. Supprimez l'option
--format
pour afficher plus d'informations sur les dossiers trouvés.Pour obtenir l'ID d'un dossier dans un autre dossier, répertoriez les sous-dossiers:
gcloud resource-manager folders list --folder=FOLDER_ID
-
Autres indicateurs:
--filter
: facultatif. Filtre les résultats par sous-type d'insight.--format
: facultatif. Format de sortie compatible avec gcloud CLI. Par exemple, pour répertorier le contenu des insights sous la forme d'une table aplatie:gcloud recommender insights list \ --folder=FOLDER_ID \ --location=global \ --insight-type=google.cloudasset.asset.Insight \ --flatten="content.matchedPolicies[].matchedBindings[].matchedMembers[]" \ --format="table(insightSubtype, name, content.matchedPolicies.matchedBindings.matchedMembers, content.matchedPolicies.matchedBindings.role, content.matchedPolicies.resource)"
Organisations
gcloud recommender insights list \
--organization=ORGANIZATION_ID \
--location=global \
--insight-type=google.cloudasset.asset.Insight \
--filter="insightSubtype:SUBTYPE" \
--format="FORMAT"
Indiquez les valeurs suivantes :
ORGANIZATION_ID
: ID de l'organisation pour laquelle vous souhaitez obtenir des insights.Trouver un ID d'organisation Google Cloud
Console
Pour trouver un ID d'organisation Google Cloud, procédez comme suit:
-
Accédez à Google Cloud Console.
- Cliquez sur le sélecteur dans la barre de menu.
- Cliquez sur le champ Sélectionner à partir de, puis sélectionnez votre organisation.
- Cliquez sur l'onglet Tous. L'ID de l'organisation s'affiche à côté de son nom.
gcloud CLI
Vous pouvez récupérer un ID d'organisation Google Cloud à l'aide de la commande suivante:
gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
-
Autres indicateurs:
--filter
: facultatif. Filtre les résultats par sous-type d'insight.--format
: facultatif. Format de sortie compatible avec gcloud CLI. Par exemple, pour répertorier le contenu des insights sous la forme d'une table aplatie:gcloud recommender insights list \ --organization=ORGANIZATION_ID \ --location=global \ --insight-type=google.cloudasset.asset.Insight \ --flatten="content.matchedPolicies[].matchedBindings[].matchedMembers[]" \ --format="table(insightSubtype, name, content.matchedPolicies.matchedBindings.matchedMembers, content.matchedPolicies.matchedBindings.role, content.matchedPolicies.resource)"
REST
Exécutez la commande curl
suivante pour répertorier les insights de votre projet, dossier ou organisation.
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
https://recommender.googleapis.com/v1/SCOPE/locations/global/insightTypes/google.cloudasset.asset.Insight/insights
Indiquez les valeurs suivantes :
SCOPE
: un champ d'application peut être un projet, un dossier ou une organisation.Les valeurs autorisées sont les suivantes :
projects/PROJECT_ID
projects/PROJECT_NUMBER
Trouver un numéro de projet Google Cloud
Console
Pour trouver un numéro de projet Google Cloud, procédez comme suit:
-
Accédez à la page Tableau de bord dans la console Google Cloud.
- Cliquez sur le sélecteur dans la barre de menu.
- Sélectionnez votre organisation dans la zone Sélectionner à partir de, puis recherchez le nom de votre projet.
- Cliquez sur le nom du projet pour passer à celui-ci. Le numéro du projet est indiqué sur la fiche Informations sur le projet.
gcloud CLI
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
Trouver un ID de dossier Google Cloud
Console
Pour trouver un ID de dossier Google Cloud, procédez comme suit:
-
Accédez à Google Cloud Console.
- Cliquez sur le sélecteur dans la barre de menu.
- Cliquez sur le champ Sélectionner à partir de, puis sélectionnez votre organisation.
- Recherchez le nom de votre dossier. L'ID du dossier figure à côté du nom du dossier.
gcloud CLI
Vous pouvez récupérer un ID de 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 peut être une correspondance de chaîne complète ou partielle. Supprimez l'option
--format
pour afficher plus d'informations sur les dossiers trouvés.Pour obtenir l'ID d'un dossier dans un autre dossier, répertoriez les sous-dossiers:
gcloud resource-manager folders list --folder=FOLDER_ID
-
organizations/ORGANIZATION_ID
Trouver un ID d'organisation Google Cloud
Console
Pour trouver un ID d'organisation Google Cloud, procédez comme suit:
-
Accédez à Google Cloud Console.
- Cliquez sur le sélecteur dans la barre de menu.
- Cliquez sur le champ Sélectionner à partir de, puis sélectionnez votre organisation.
- Cliquez sur l'onglet Tous. L'ID de l'organisation s'affiche à côté de son nom.
gcloud CLI
Vous pouvez récupérer un ID d'organisation Google Cloud à l'aide de la commande suivante:
gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
-
Interpréter les réponses des insights
En plus des attributs d'insights standards, Asset Insights fournit plusieurs sous-types et champs spécialisés.
Sous-types d'insight
Il existe sept sous-types d'Insights associés aux éléments.
EXTERNAL_MEMBER
: détecte les stratégies IAM contenant des utilisateurs ou des groupes appartenant à un domaine extérieur aux domaines de votre organisation.EXTERNAL_POLICY_EDITOR
: détecte les stratégies IAM contenant des utilisateurs ou des groupes en dehors des domaines de votre organisation autorisés à modifier les stratégies IAM.EXTERNAL_CLOUD_STORAGE_OBJECT_VIEWER
: détecte les stratégies IAM contenant des utilisateurs ou des groupes en dehors des domaines de votre organisation autorisés à obtenir ou à répertorier des objets de stockage (storage.objects.list
oustorage.objects.get permission
).EXTERNAL_SERVICE_ACCOUNT_IMPERSONATOR
: détecte les stratégies IAM contenant des utilisateurs ou des groupes en dehors des domaines de votre organisation autorisés à emprunter l'identité des comptes de service.TERMINATED_MEMBER
: détecte les stratégies IAM contenant des utilisateurs ou des groupes avec des comptes désactivés, supprimés ou effacés définitivement.PUBLIC_IAM_POLICY
: détecte les stratégies IAM contenant tous les utilisateurs ou tous les utilisateurs authentifiés.OWNER_TERMINATED_PROJECT
: détecte les projets qui ne contiennent aucun utilisateur ni groupe actif dans la stratégie IAM du projet.
Champs de contenu supplémentaires
En plus des champs standards de la réponse, Asset Insights fournit plusieurs champs spécialisés dans le champ content
.
user
: adresse e-mail de l'utilisateur spécifique détectée dans les membres des liaisons de stratégie pour cet insight spécifique. Ce champ est inclus dans le sous-typeTERMINATED_MEMBER
.domain
: domaine spécifique détecté dans les membres des liaisons de stratégie de cet insight particulier. Ce champ est inclus dans les sous-typesEXTERNAL_MEMBER
,EXTERNAL_POLICY_EDITOR
,EXTERNAL_CLOUD_STORAGE_OBJECT_VIEWER
etEXTERNAL_SERVICE_ACCOUNT_IMPERSONATOR
.assetName
: nom de l'élément pour lequel l'accès a été détecté pour cet insight. Ce champ est inclus dans les sous-typesOWNER_TERMINATED_PROJECT
etPUBLIC_IAM_POLICY
.policyCount
: nombre total de stratégies Cloud IAM distinctes dans lesquelles des membres correspondants ont été détectés pour cet insight particulier. Ce champ est inclus pour tous les sous-types d'Insights sur les éléments.matchedPolicies
: échantillon de stratégies IAM correspondant à l'insight détecté. Les règles de correspondance n'incluent que le sous-ensemble de liaisons et de membres de liaison qui correspondent à l'insight détecté. Ce champ est inclus pour tous les sous-types des insights sur les éléments.policySearchQuery
: requête pouvant être utilisée avec l'API de recherche de stratégies IAM de l'inventaire des éléments cloud afin de récupérer toutes les stratégies pertinentes en temps réel.
Exemple de réponse
L'extrait de code suivant montre le format d'un exemple de réponse.
{
"name": "organizations/1234567/locations/global/insightTypes/google.cloudasset.asset.Insight/insights/0ab35ae7-afa8-42a3-a173-92da8771a489",
"description": "Domain example.com detected in 1 IAM policies",
"content": {
"domain": "example.com",
"policyCount": 1,
"policySearchQuery": "policy: example.com",
"matchedPolicies" :[
{
"resource" :"//cloudresourcemanager.googleapis.com/projects/5678910",
"project" :"projects/5678910",
"matchedBindings" :[
{
"role" :"roles/viewer",
"matchedMembers" :[
"user:example@example.com"
]
}
]
}
]
},
"lastRefreshTime": "2020-12-04T06:59:04Z",
"observationPeriod": "0s",
"stateInfo": {
"state": "ACTIVE"
},
"category": "SECURITY",
"targetResources": [
"//cloudresourcemanager.googleapis.com/organizations/1234567"
],
"insightSubtype": "EXTERNAL_MEMBER",
"etag": "\"00000000000\"",
"initialRefreshTime": "2020-12-01T06:58:03Z"
}
Limites
Ces insights ne prennent pas en compte les membres de groupes dans leurs résultats et ne doivent pas être considérés comme une liste exhaustive des failles correspondantes.
Les insights individuels incluent un échantillonnage des stratégies IAM correspondantes, limitées à 100 stratégies distinctes. Toutes les règles correspondantes peuvent être récupérées en appelant la recherche de règles Cloud Asset Inventory.
Les insights sur les éléments ne prennent pas en compte les comptes de service à des fins de génération d'insights.