Compliance Manager inclut de nombreux contrôles cloud intégrés que vous pouvez ajouter à des frameworks et déployer dans votre environnement. Si nécessaire, vous pouvez créer et gérer vos propres contrôles cloud personnalisés, et mettre à jour les contrôles cloud intégrés.
Avant de commencer
Effectuez ces tâches avant de passer aux autres tâches de cette page.
Configurer les autorisations
-
Pour obtenir les autorisations nécessaires pour gérer les frameworks de contrôles cloud, demandez à votre administrateur de vous accorder les rôles IAM suivants sur votre organisation ou votre projet :
- Administrateur de Compliance Manager (
roles/cloudsecuritycompliance.admin) -
Pour créer ou modifier des contrôles cloud basés sur des règles d'administration, l'un des éléments suivants :
- Administrateur des règles d'administration (
roles/orgpolicy.policyAdmin) - Administrateur Assured Workloads (
roles/assuredworkloads.admin) - Éditeur Assured Workloads (
roles/assuredworkloads.editor)
- Administrateur des règles d'administration (
-
Pour créer ou modifier des contrôles cloud basés sur des règles de projet : Administrateur IAM de projet (
roles/resourcemanager.projectIamAdmin)
Pour en savoir plus sur l'attribution de rôles, consultez Gérer l'accès aux projets, aux dossiers et aux organisations.
Vous pouvez également obtenir les autorisations requises avec des rôles personnalisés ou d'autres rôles prédéfinis.
- Administrateur de Compliance Manager (
Configurer la Google Cloud CLI
Installez la Google Cloud CLI, puis connectez-vous à la gcloud CLI avec votre identité fédérée. Après vous être connecté, initialisez la Google Cloud CLI en exécutant la commande suivante :
gcloud initPour configurer la gcloud CLI afin qu'elle utilise l'emprunt d'identité d'un compte de service pour s'authentifier auprès des Google APIs plutôt que d'utiliser vos identifiants utilisateur, exécutez la commande suivante :
gcloud config set auth/impersonate_service_account SERVICE_ACCT_EMAIL
Pour en savoir plus, consultez la section Emprunt d'identité d'un compte de service.
Afficher les contrôles cloud
Suivez les étapes ci-dessous pour afficher les contrôles cloud intégrés et les contrôles cloud personnalisés que vous avez déjà créés.
Console
Dans la console Google Cloud , accédez à la page Conformité.
Sélectionnez votre organisation ou votre projet.
Dans l'onglet Configurer, cliquez sur Commandes cloud. Les contrôles cloud disponibles s'affichent.
Le tableau de bord inclut des informations sur les frameworks qui incluent le contrôle cloud et le nombre de ressources (organisation, dossiers et projets) auxquelles le contrôle cloud est appliqué.
Pour afficher les détails d'un contrôle cloud, cliquez sur son nom.
CLI
Vous pouvez afficher des informations sur un contrôle cloud spécifique ou lister tous les contrôles cloud de votre organisation.
Afficher les détails d'un contrôle cloud
Pour afficher les détails d'un contrôle cloud spécifique, exécutez la commande gcloud
compliance-manager cloud-controls describe :
gcloud compliance-manager cloud-controls describe CLOUD_CONTROL \
--location=LOCATION \
--organization=ORGANIZATION \
[--major-revision-id=MAJOR_REVISION_ID]
Remplacez les valeurs suivantes :
CLOUD_CONTROL: nom du contrôle cloudORGANIZATION: ID d'organisationLOCATION: région dans laquelle le contrôle cloud est stockéMAJOR_REVISION_IDest une option facultative qui spécifie la version du contrôle cloud à afficher. Si vous n'incluez pas l'option, la dernière version est renvoyée.
Par exemple, pour afficher un contrôle cloud nommé builtin-block-external-ip-addresses-for-vm-access et portant le numéro de révision majeure 1, exécutez la commande suivante :
gcloud compliance-manager cloud-controls describe \
builtin-block-external-ip-addresses-for-vm-access \
--organization=3589215982 \
--location=global \
--major-revision-id=1
Pour en savoir plus, consultez gcloud compliance-manager cloud-controls describe.
Obtenir la liste des contrôles cloud
Pour obtenir la liste des contrôles cloud de votre organisation, exécutez la commande gcloud
compliance-manager cloud-controls list :
gcloud compliance-manager cloud-controls list \
--location=LOCATION \
--organization=ORGANIZATION
Remplacez les valeurs suivantes :
ORGANIZATION: ID d'organisationLOCATION: région dans laquelle les contrôles cloud sont stockés.
Par exemple, pour afficher tous les contrôles cloud de l'organisation 3589215982 et stockés dans l'emplacement global, exécutez la commande suivante :
gcloud compliance-manager cloud-controls list \
--organization=3589215982 \
--location=global
Pour en savoir plus sur les options facultatives, consultez gcloud compliance-manager cloud-controls list.
Créer un contrôle cloud personnalisé
Lorsque vous créez un contrôle cloud personnalisé, vous appliquez une règle à n'importe quel type de ressource de l'inventaire des éléments cloud.
Console
Lorsque vous utilisez la console, vous pouvez créer des contrôles cloud personnalisés avec une règle qui s'applique à un type de ressource de l'inventaire des éléments cloud.
Dans la console Google Cloud , accédez à la page Conformité.
Sélectionnez votre organisation ou votre projet.
Dans l'onglet Configurer, cliquez sur Commandes cloud. La liste des contrôles cloud disponibles s'affiche.
Créez un contrôle cloud, soit avec Gemini, soit manuellement :
Utiliser Gemini
Demandez à Gemini de générer un contrôle cloud pour vous. En fonction de votre prompt, Gemini fournit un identifiant unique, un nom, une logique de détection associée et des étapes de correction possibles.
Examinez les recommandations et apportez les modifications nécessaires.
Enregistrez votre contrôle cloud personnalisé.
Créer manuellement
Dans le champ ID du contrôle cloud, indiquez un identifiant unique pour votre contrôle.
Saisissez un nom et une description pour aider les utilisateurs de votre organisation à comprendre l'objectif du contrôle cloud personnalisé.
Facultatif : sélectionnez les catégories du contrôle. Cliquez sur Continuer.
Sélectionnez un type de ressource disponible pour votre contrôle cloud personnalisé. Le Gestionnaire de conformité est compatible avec tous les types de ressources. Pour trouver le nom d'une ressource, consultez Types d'assets.
Fournissez la logique de détection de votre contrôle cloud au format CEL (Common Expression Language).
Les expressions CEL vous permettent de définir comment vous souhaitez évaluer les propriétés d'une ressource. Pour en savoir plus et voir des exemples, consultez Écrire des règles pour les contrôles cloud personnalisés. Cliquez sur Continuer.
Si votre règle d'évaluation n'est pas valide, une erreur s'affiche.
Sélectionnez un niveau de gravité approprié pour les résultats.
Rédigez vos instructions de correction de manière à ce que les administrateurs et les personnes chargées de répondre aux incidents dans votre organisation puissent résoudre les résultats du contrôle cloud. Cliquez sur Continuer.
Vérifiez vos entrées, puis cliquez sur Créer.
CLI
Lorsque vous utilisez la gcloud CLI, vous pouvez créer un contrôle cloud personnalisé avec un maximum de trois règles. Chaque règle ne peut s'appliquer qu'à un seul type de ressource.
Pour créer un contrôle cloud personnalisé, exécutez la commande gcloud compliance-manager
cloud-controls create :
gcloud compliance-manager cloud-controls create CLOUD_CONTROL \
--location=LOCATION \
--organization=ORGANIZATION \
[--display-name=DISPLAY_NAME] \
[--description=DESCRIPTION] \
[--categories=[CATEGORIES,...]] \
[--finding-category=FINDING_CATEGORY] \
[--parameter-spec=[defaultValue=DEFAULTVALUE],[description=DESCRIPTION],[displayName=DISPLAYNAME],[isRequired=ISREQUIRED],[name=NAME],[substitutionRules=SUBSTITUTIONRULES],[validation=VALIDATION],[valueType=VALUETYPE]] \
[--remediation-steps=REMEDIATION_STEPS] \
[--rules=[celExpression=CELEXPRESSION],[description=DESCRIPTION],[ruleActionTypes=RULEACTIONTYPES]] \
[--severity=SEVERITY] \
[--supported-cloud-providers=[SUPPORTED_CLOUD_PROVIDERS,…]] \
[--supported-target-resource-types=[SUPPORTED_TARGET_RESOURCE_TYPES,…]]
Remplacez les valeurs suivantes :
CLOUD_CONTROL: nom alphanumérique unique du contrôle cloudORGANIZATION: ID d'organisationLOCATION: région dans laquelle le contrôle cloud est stockéDISPLAY_NAME: nom lisible par l'humain du contrôle cloudDESCRIPTION: description facultative de l'objectif du contrôle cloudCATEGORIES,…: paramètre facultatif qui définit les catégories auxquelles le contrôle cloud appartient. Pour obtenir la liste des catégories autorisées, consultez gcloud compliance-manager cloud-controls create.FINDING_CATEGORY: valeur qui s'affiche dans le tableau de bord des résultats de Security Command Center lorsque le contrôle cloud génère un résultat.--parameter-spec=[defaultValue=DEFAULTVALUE], \ [description=DESCRIPTION], \ [displayName= DISPLAYNAME], \ [isRequired=ISREQUIRED], \ [name=NAME], \ [substitutionRules=SUBSTITUTIONRULES], \ [validation=VALIDATION], \ [valueType=VALUETYPE]...]
correspond aux informations facultatives sur les paramètres du contrôle cloud, au format suivant :
DEFAULTVALUE: données appliquées si un utilisateur ne personnalise pas le paramètre lors du déploiement d'un framework. Les types de valeurs acceptés sontboolValue,numberValue,stringListValueoustringValue.DESCRIPTION: description facultative du contrôleISREQUIRED:truesi le contrôle nécessite la définition d'un paramètreNAME: nom du paramètreSUBSTITUTIONRULES: comment et où le Gestionnaire de conformité injecte la valeur personnalisée du paramètre. Spécifiez le chemin d'accès ciblé dans la règle à l'aide d'une notation par point proto (par exemple,rules[0].org_policy_constraint...). Choisissez l'une des options suivantes :attributeSubstitutionRulelorsque vous souhaitez injecter la valeur du paramètre directement dans un champ structurel de votre règle (par exemple, en remplissant une liste de valeurs limitées dans un modèle de règle de contrainte de règle d'administration).placeholderSubstitutionRulelorsque votre règle utilise une chaîne de texte (ou une expression CEL). La chaîne doit contenir une variable d'espace réservé précédée de$(par exemple,$deniedServices). Cette règle indique au compilateur de mapper le paramètre à cet espace réservé.
L'exemple suivant crée un paramètre de liste nommé
deniedServicesavec le typeSTRINGLIST. Il utiliseattributeSubstitutionRulepour ajouter des noms de services fournis par l'utilisateur (tels quecompute.googleapis.com) directement dans une règle d'administration personnalisée structurelle (denied_values) lors du déploiement :--parameter-spec='name=deniedServices,isRequired=true,valueType=STRINGLIST,substitutionRules=[{attributeSubstitutionRule={attribute="rules[0].org_policy_constraint.policy_rules[0].values.denied_values"}}]'VALIDATIONest l'ensemble de valeurs autorisé. Choisissez l'une des options suivantes :Utilisez
allowedValuespour appliquer une liste d'autorisation statique. Par exemple, limitez les paramètres d'emplacement à des champs de chaîne spécifiques :validation={allowedValues={values=[{stringValue=us-central1},{stringValue=us-west1}]}}Utilisez
intRangepour appliquer des limites numériques aux entiers. Par exemple, définissez une durée de conservation comprise entre 1 et 365 :validation={intRange={min=1,max=365}}Utilisez
regexpPatternpour appliquer la correspondance d'expression régulière sur le texte de la chaîne, par exemple, pour exiger une dénomination alphanumérique stricte :validation={regexpPattern={pattern="^[a-z][-a-z0-9]*$"}}
VALUETYPE: type de données ou format de la valeur fournie par l'utilisateur pour ce paramètre. Les types de valeurs acceptés sontSTRING,BOOLEAN,STRINGLIST,NUMBERetONEOF.
Vous pouvez également spécifier un fichier JSON ou YAML qui définit les paramètres. Par exemple,
--parameter-spec=path_to_file.(yaml|json). Développez la section suivante pour afficher des exemples de fichiers JSON et YAML.Exemple de fichier JSON
[ { "name": "deniedServices", "displayName": "Services Requiring CMEK", "description": "List of service names that must use Customer-Managed Encryption Keys.", "isRequired": true, "valueType": "STRINGLIST", "substitutionRules": [ { "attributeSubstitutionRule": { "attribute": "rules[0].org_policy_constraint.policy_rules[0].values.denied_values" } } ] } ]Exemple de fichier YAML
- name: deniedServices displayName: "Services Requiring CMEK" description: "List of service names that must use Customer-Managed Encryption Keys." isRequired: true valueType: STRINGLIST substitutionRules: - attributeSubstitutionRule: attribute: "rules[0].org_policy_constraint.policy_rules[0].values.denied_values"REMEDIATION_STEPS : étapes requises pour résoudre les résultats. Cette chaîne est limitée à 400 caractères.
--rules=[celExpression=CELEXPRESSION],[description=DESCRIPTION],[ruleActionTypes=RULEACTIONTYPES]est la règle que vous souhaitez appliquer, au format suivant :CELEXPRESSION: expression CEL (Common Expression Language) de la règle. Pour en savoir plus sur l'écriture d'expressions CEL, consultez Écrire des règles pour les contrôles cloud personnalisés. Incluez les éléments suivants :expression: expression CEL, avec un maximum de 1 000 caractèresresourceTypesValues: nom des ressources, au formatSERVICE_NAME/type. Utilisez un tableauvaluespour lister tous les types de ressources auxquels vous souhaitez appliquer la règle (par exemple,values=[compute.googleapis.com/Instance]).
DESCRIPTION: description de la règleRULEACTIONTYPES: action effectuée par la règle. Les valeurs acceptées sontrule-action-type-detective,rule-action-type-preventiveetrule-action-type-audit.
Par exemple, pour vérifier la période de rotation des clés Cloud Key Management Service, saisissez la commande suivante :
--rules="[ { \"celExpression\": { \"expression\": \"has(resource.data.rotationPeriod) && resource.data.rotationPeriod < duration('60h')\", \"resourceTypesValues\": { \"values\": [ \"cloudkms.googleapis.com/CryptoKey\" ] } }, \"description\": \"Check KMS key rotation period\", \"ruleActionTypes\": [ \"rule-action-type-detective\" ] } ]"Vous pouvez également spécifier un fichier JSON ou YAML qui définit la règle. Par exemple,
--rules=path_to_file.(yaml|json). Développez la section suivante pour afficher des exemples de fichiers JSON et YAML.Exemple de fichier JSON
[ { "celExpression": { "expression": "has(resource.data.rotationPeriod) && resource.data.rotationPeriod < duration('60h')", "resourceTypesValues": { "values": [ "cloudkms.googleapis.com/CryptoKey" ] } }, "description": "Check KMS key rotation period to ensure it is under 60 hours.", "ruleActionTypes": [ "rule-action-type-detective" ] } ]Exemple de fichier YAML
- celExpression: expression: "has(resource.data.rotationPeriod) && resource.data.rotationPeriod < duration('60h')" resourceTypesValues: values: - cloudkms.googleapis.com/CryptoKey description: "Check KMS key rotation period to ensure it is under 60 hours." ruleActionTypes: - rule-action-type-detectiveSEVERITY: niveau de criticité du contrôle cloud. Les valeurs acceptées sontcritical,high,mediumetlow.SUPPORTED_CLOUD_PROVIDERS,…: fournisseurs de services cloud auxquels ce contrôle cloud s'applique. La seule valeur acceptée estgcp.SUPPORTED_TARGET_RESOURCE_TYPES,…: types de ressources (organisation, dossier, projet ou dossier compatible avec les applications dans App Hub) compatibles avec le contrôle cloud. Les valeurs acceptées sonttarget-resource-crm-type-folder,target-resource-crm-type-org,target-resource-crm-type-projectettarget-resource-type-application.
Par exemple, pour créer un contrôle cloud qui applique des emplacements de ressources, exécutez la commande suivante :
gcloud compliance-manager cloud-controls create \
restrict-resource-locations \
--organization=3589215982 \
--location=global \
--display-name="Restrict Resource Locations" \
--description="Enforces checks to ensure resources are only deployed in approved cloud regions." \
--severity=high \
--finding-category="LOCATION_VIOLATION" \
--supported-cloud-providers="gcp" \
--supported-target-resource-types="target-resource-crm-type-project" \
--parameter-spec='name=allowedLocations,isRequired=true,valueType=STRINGLIST,substitutionRules=[{placeholderSubstitutionRule={attribute="rules[0].cel_expression.expression"}}]' \
--rules="[{\"celExpression\": {\"expression\": \"resource.location in \$allowedLocations\", \"resourceTypesValues\": {\"values\": [\"compute.googleapis.com/Instance\"]}}, \"description\": \"Check Compute Engine instance locations\", \"ruleActionTypes\": [\"rule-action-type-detective\"]}]"
Pour créer le même contrôle, mais utiliser des fichiers YAML pour définir les paramètres et les règles, exécutez la commande suivante :
gcloud compliance-manager cloud-controls create \
restrict-resource-locations \
--organization=3589215982 \
--location=global \
--display-name="Restrict Resource Locations" \
--description="Enforces checks to ensure resources are only deployed in approved cloud regions." \
--severity=high \
--finding-category="LOCATION_VIOLATION" \
--supported-cloud-providers="gcp" \
--supported-target-resource-types="target-resource-crm-type-project" \
--parameter-spec=parameters.yaml \
--rules=rules.yaml
Pour en savoir plus, consultez gcloud compliance-manager cloud-controls create.
Terraform
Lorsque vous utilisez Terraform, vous pouvez créer un contrôle cloud personnalisé avec un maximum de trois règles. Chaque règle ne peut s'appliquer qu'à un seul type de ressource.
L'exemple suivant montre comment créer un contrôle cloud personnalisé à l'aide de Terraform.
Modifier un contrôle cloud personnalisé
Après avoir créé un contrôle cloud, vous pouvez modifier son nom, sa description, ses règles, ses étapes de correction et son niveau de gravité. Vous ne pouvez pas modifier la catégorie de contrôle cloud.
Dans la console Google Cloud , accédez à la page Conformité.
Sélectionnez votre organisation ou votre projet.
Dans l'onglet Configurer, cliquez sur Commandes cloud. La liste des commandes cloud disponibles s'affiche.
Cliquez sur le contrôle cloud que vous souhaitez modifier.
Sur la page Détails du contrôle cloud, vérifiez que le contrôle cloud n'est pas inclus dans un framework. Si nécessaire, modifiez le framework pour supprimer le contrôle cloud.
Cliquez sur Modifier.
Sur la page Modifier le contrôle cloud personnalisé, modifiez le nom et la description si nécessaire. Cliquez sur Continuer.
Mettez à jour les règles, la gravité des résultats et les étapes de correction. Cliquez sur Continuer.
Vérifiez vos modifications, puis cliquez sur Enregistrer.
Mettre à jour un contrôle cloud intégré vers une version plus récente
Google publie régulièrement des mises à jour de ses contrôles cloud intégrés à mesure que les services déploient de nouvelles fonctionnalités ou que de nouvelles bonnes pratiques émergent. Les mises à jour peuvent inclure de nouvelles commandes ou des modifications de commandes existantes.
Vous pouvez afficher les versions des contrôles cloud intégrés dans le tableau de bord des contrôles cloud, dans l'onglet Configurer ou sur la page d'informations du contrôle cloud.
Pour mettre à jour un contrôle cloud après avoir reçu une notification, vous devez mettre à jour les frameworks déployés qui incluent le contrôle cloud. Pour obtenir des instructions, consultez Mettre à jour un framework intégré vers une version plus récente.
Supprimer un contrôle cloud personnalisé
Supprimez un contrôle cloud lorsqu'il n'est plus nécessaire. Vous ne pouvez supprimer que les contrôles cloud que vous créez. Vous ne pouvez pas supprimer les contrôles cloud intégrés.
Console
Dans la console Google Cloud , accédez à la page Conformité.
Sélectionnez votre organisation ou votre projet.
Dans l'onglet Configurer, cliquez sur Commandes cloud. La liste des commandes cloud disponibles s'affiche.
Cliquez sur le contrôle cloud que vous souhaitez supprimer.
Sur la page Détails du contrôle cloud, vérifiez que le contrôle cloud n'est pas inclus dans un framework. Si nécessaire, modifiez le framework pour supprimer le contrôle cloud.
Cliquez sur Supprimer.
Dans la fenêtre Supprimer, lisez le message. Saisissez
Delete, puis cliquez sur Confirmer.
CLI
Pour supprimer un contrôle cloud personnalisé, exécutez la commande gcloud compliance-manager
cloud-controls delete :
gcloud compliance-manager cloud-controls delete CLOUD_CONTROL \
--location=LOCATION \
--organization=ORGANIZATION
Remplacez les valeurs suivantes :
CLOUD_CONTROL: nom du contrôle cloudORGANIZATION: ID d'organisationLOCATION: région dans laquelle le contrôle cloud est stocké
Par exemple, pour supprimer un contrôle cloud nommé restrict-resource-locations, exécutez la commande suivante :
gcloud compliance-manager cloud-controls delete \
restrict-resource-locations \
--organization=3589215982 \
--location=global
Pour en savoir plus, consultez gcloud compliance-manager cloud-controls delete.
Mappage des détecteurs Security Health Analytics aux contrôles cloud
Le tableau suivant montre comment les contrôles cloud de Compliance Manager sont mappés aux détecteurs Security Health Analytics.
Adresses Adresses