Gérer les frameworks

Les frameworks du Gestionnaire de conformité se composent de contrôles cloud qui vous aident à répondre aux exigences de sécurité et réglementaires d'une organisation ou d'un projet dans vos environnements cloud. L'application d'un framework se fait en deux étapes. Vous devez d'abord identifier les contrôles cloud qui s'alignent sur les obligations de sécurité et de conformité de votre entreprise. Ensuite, vous déployez un framework incluant ces contrôles cloud sur l'organisation, le dossier ou le projet approprié dansGoogle Cloud. Cette page vous aide à effectuer les étapes suivantes :

  1. Évaluez le framework intégré qui correspond le mieux à vos exigences réglementaires et de sécurité. Vous pouvez créer votre propre framework personnalisé, mais nous vous recommandons de commencer par un framework intégré.

  2. Déterminez quels contrôles cloud intégrés correspondent à vos exigences métier. (Niveaux Premium et Enterprise uniquement) Vous pouvez créer des contrôles cloud personnalisés, si nécessaire.

  3. Déterminez si vous souhaitez déployer le framework sur votre organisation Google Cloud, ou sur des dossiers et des projets spécifiques. Vous ne pouvez déployer qu'un seul framework par organisation, dossier ou projet. Compliance Manager est compatible avec les dossiers configurés pour la gestion des applications.

  4. Copiez un framework existant et modifiez-le pour l'adapter à vos besoins. Si nécessaire, vous pouvez créer un framework personnalisé.

  5. Déployez le framework sur l'organisation, le dossier ou le projet approprié.

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 appliquer des frameworks, demandez à votre administrateur de vous accorder les rôles IAM suivants sur votre organisation ou votre projet :

    Pour en savoir plus sur l'attribution de rôles, consultez Gérer l'accès aux projets, aux dossiers et aux organisations.

    Les rôles permettant de déployer des frameworks avec des règles d'administration contiennent les autorisations orgpolicy.policies.create, orgpolicy.policies.update et orgpolicy.policies.get requises.

    Pour les déploiements au niveau de l'organisation, les rôles permettant de créer des dossiers contiennent les autorisations resourcemanager.folders.get, resourcemanager.folders.create et resourcemanager.folders.delete requises.

    Pour les déploiements au niveau de l'organisation, les rôles permettant de créer des projets contiennent les autorisations resourcemanager.projects.get, resourcemanager.projects.create, resourcemanager.projects.delete et resourcemanager.projects.createBillingAssignment requises.

    Les rôles permettant d'attribuer des frameworks DSPM à des applications contiennent les autorisations apphub.locations.list, apphub.applications.list et apphub.applications.get requises.

    Vous pouvez également obtenir ces autorisations avec des rôles personnalisés ou d'autres rôles prédéfinis.

Configurer la Google Cloud CLI

Dans la console Google Cloud , activez Cloud Shell.

Activer Cloud Shell

En bas de la fenêtre de la console Google Cloud , une session Cloud Shell démarre et affiche une invite de ligne de commande. Cloud Shell est un environnement de shell dans lequel la Google Cloud CLI est déjà installée, et dans lequel des valeurs sont déjà définies pour votre projet actuel. L'initialisation de la session peut prendre quelques secondes.

Pour 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 frameworks

Pour afficher la configuration des frameworks intégrés ou d'autres frameworks que vous avez déjà créés, procédez comme suit :

Console

  1. Dans la console Google Cloud , accédez à la page Conformité.

    Accéder

  2. Sélectionnez votre organisation ou votre projet.

  3. Pour afficher tous les frameworks disponibles, cliquez sur l'onglet Configurer.

    Le tableau de bord affiche les frameworks disponibles, une brève description, les plates-formes et les niveaux compatibles, ainsi que les ressources auxquelles le framework a été appliqué.

  4. Pour afficher des informations détaillées sur un framework spécifique, cliquez sur son nom.

CLI

Vous pouvez afficher des informations sur un framework spécifique ou lister tous les frameworks de votre organisation.

Afficher les détails d'un framework

Pour afficher les détails d'un framework spécifique, exécutez la commande gcloud compliance-manager frameworks describe :

gcloud compliance-manager frameworks describe FRAMEWORK \
   --location=LOCATION \
   --organization=ORGANIZATION \
   [--major-revision-id=MAJOR_REVISION_ID]

Remplacez les éléments suivants :

  • FRAMEWORK : nom du framework.

  • ORGANIZATION : ID d'organisation

  • LOCATION : région dans laquelle le framework est stocké

  • MAJOR_REVISION_ID : option facultative qui spécifie la version du framework à afficher. Si vous n'incluez pas l'option, la dernière version est renvoyée.

Par exemple, pour afficher un framework nommé builtin-security-essentials et portant le numéro de révision majeure 12, exécutez la commande suivante :

gcloud compliance-manager frameworks describe \
   builtin-security-essentials \
   --organization=3589215982 \
   --location=global \
   --major-revision-id=12

Pour en savoir plus, consultez gcloud compliance-manager frameworks describe.

Obtenir la liste des frameworks

Pour obtenir la liste des frameworks de votre organisation, exécutez la commande gcloud compliance-manager frameworks list :

gcloud compliance-manager frameworks list \
   --location=LOCATION \
   --organization=ORGANIZATION

Remplacez les valeurs suivantes :

  • ORGANIZATION : ID d'organisation

  • LOCATION : région dans laquelle les frameworks sont stockés

Par exemple, pour afficher tous les frameworks de l'organisation 3589215982 stockés dans l'emplacement global, exécutez la commande suivante :

gcloud compliance-manager frameworks list \
   --organization=3589215982 \
   --location=global

Pour en savoir plus sur les options facultatives, consultez gcloud compliance-manager frameworks list.

Créer un framework

Après avoir déterminé les contrôles cloud qui s'appliquent aux ressources de votre organisation ou d'un dossier ou projet spécifique, vous pouvez créer un framework. Vous pouvez créer un framework personnalisé ou copier un framework existant et le modifier. Lorsque vous copiez un framework, il inclut les dernières versions des contrôles cloud intégrés.

Console

  1. Dans la console Google Cloud , accédez à la page Conformité.

    Accéder

  2. Sélectionnez votre organisation ou votre projet.

  3. Dans l'onglet Configurer, cliquez sur Créer un framework personnalisé.

  4. Effectuez l'une des actions suivantes :

    • Pour utiliser un framework existant, procédez comme suit :

      1. Sélectionnez Démarrer à partir d'un framework existant.

      2. Sélectionnez le framework que vous souhaitez copier.

      3. Cliquez sur Ajouter.

    • Pour créer un framework personnalisé, sélectionnez Créer.

  5. Saisissez un nom, un identifiant unique et une description pour votre framework. Cliquez sur Continuer.

    Si vous copiez un framework existant, la liste des contrôles cloud qui en faisaient partie s'affiche.

  6. Pour ajouter les contrôles cloud dont vous avez besoin, procédez comme suit :

    • Pour ajouter un contrôle cloud existant, cliquez sur Ajouter des contrôles cloud. Sélectionnez tous les contrôles cloud dont vous avez besoin, puis cliquez sur Ajouter.

      Lorsque vous ajoutez un contrôle, vérifiez son type (détection, prévention ou audit). Notez que les contrôles préventifs et d'audit ne sont disponibles que dans les niveaux Premium et Enterprise. N'incluez pas de contrôles d'audit uniquement dans un framework que vous souhaitez utiliser pour surveiller votre environnement et détecter les cas de non-conformité. Vous ne pouvez pas déployer de frameworks incluant des contrôles d'audit uniquement.

    • (Niveaux Premium et Enterprise uniquement) Pour créer un contrôle cloud personnalisé, cliquez sur Créer un contrôle cloud personnalisé. Pour obtenir des instructions, consultez Créer un contrôle cloud personnalisé.

  7. Cliquez sur Continuer.

  8. Ajoutez les paramètres supplémentaires requis par les contrôles cloud.

    Par exemple, si vous souhaitez activer un contrôle cloud de Data Security Posture Management (DSPM), tel que le contrôle cloud Limiter l'accès aux données sensibles aux utilisateurs autorisés, spécifiez les emplacements que les comptes principaux doivent utiliser. Pour en savoir plus sur les contrôles de Data Security Posture Management, consultez Contrôles cloud avancés de gouvernance et de sécurité des données.

  9. Cliquez sur Créer.

CLI

Pour créer un framework personnalisé, exécutez la commande gcloud compliance-manager frameworks create :

gcloud compliance-manager frameworks create FRAMEWORK \
   --location=LOCATION \
   --organization=ORGANIZATION \
   --display-name=DISPLAY_NAME \
   [--description=DESCRIPTION] \
   [--category=[CATEGORY,...] \
   [--cloud-control-details=[majorRevisionId=MAJOR_REVISION_ID],[name=NAME],[parameters=PARAMETERS]]

Remplacez les valeurs suivantes :

  • FRAMEWORK : identifiant alphanumérique unique du framework

  • ORGANIZATION : ID d'organisation

  • LOCATION : région dans laquelle le framework est stocké

  • DISPLAY_NAME : nom lisible par l'humain du framework

  • DESCRIPTION : description facultative de l'objectif du framework

  • [CATEGORY,...] : paramètre facultatif qui définit les catégories auxquelles le framework appartient. La valeur recommandée pour votre framework personnalisé est custom-framework.

  • --cloud-control-details=`[majorRevisionId=MAJOR_REVISION_ID],[name=NAME],[parameters=PARAMETERS]'

    est la liste facultative des contrôles cloud à inclure dans votre framework, au format suivant :

    • MAJOR_REVISION_ID : option facultative qui spécifie la version du contrôle cloud à afficher. Si vous n'incluez pas l'option, la dernière version est utilisée.

    • NAME : nom du contrôle cloud, au format organizations/ORGANIZATION_ID/locations/LOCATION/cloudControls/NAME. NAME est l'identifiant unique du contrôle cloud. Vous pouvez trouver l'ID de contrôle cloud à l'aide de la commande gcloud compliance-manager cloud-controls list.

    • PARAMETERS : paramètres facultatifs requis par certains contrôles cloud. Par exemple, si vous souhaitez activer un contrôle cloud de Data Security Posture Management tel que le contrôle cloud Limiter l'accès aux données sensibles aux utilisateurs autorisés, spécifiez les emplacements que les comptes principaux doivent utiliser.

    Vous pouvez également spécifier un fichier JSON ou YAML contenant la liste de tous les contrôles cloud. Par exemple, --cloud-control-details=path_to_file.(yaml|json). Développez la section suivante pour afficher des exemples de fichiers JSON et YAML.

    Exemple de fichier JSON

      [
        {
          "name": "organizations/3589215982/locations/global/cloudControls/restrict-bucket-region",
          "majorRevisionId": 1,
          "parameters": [
            {
              "name": "location",
              "parameterValue": {
                "stringValue": "us-west"
              }
            }
          ]
        },
        {
          "name": "organizations/3589215982/locations/global/cloudControls/enable-binary-authorization",
          "majorRevisionId": 2
        }
      ]
          

    Exemple de fichier YAML

      - name: organizations/3589215982/locations/global/cloudControls/restrict-bucket-region
        majorRevisionId: 1
        parameters:
        - name: location
          parameterValue:
            stringValue: us-west
      - name: organizations/3589215982/locations/global/cloudControls/enable-binary-authorization
        majorRevisionId: 2
          

    Si vous ne spécifiez pas de contrôles cloud lors de la création d'un framework, vous pouvez les ajouter ultérieurement à l'aide de la console.

Par exemple, pour créer un framework nommé my-custom-framework, exécutez la commande suivante :

gcloud compliance-manager frameworks create \
   my-custom-framework \
   --organization=3589215982 \
   --location=global \
   --description="This framework is my custom framework" \
   --display-name="My framework name" \
   --cloud-control-details='[{"name":"organizations/3589215982/locations/global/cloudControls/restrict-bucket-region","majorRevisionId":1,"parameters":[{"name":"location","parameterValue":{"stringValue":"us-west"}}]},{"name":"organizations/3589215982/locations/global/cloudControls/enable-binary-authorization","majorRevisionId":2}]'

Pour en savoir plus, consultez gcloud compliance-manager frameworks create.

Terraform

L'exemple suivant montre comment créer un framework à l'aide de Terraform.

resource "google_cloud_security_compliance_framework" "example" {
  parent       = "organizations/123456789"
  location     = "global"
  framework_id = "example-framework"

  display_name = "Terraform Framework Name"
  description  = "An Terraform description for the framework"

  cloud_control_details {
		name              = "organizations/123456789/locations/global/cloudControls/builtin-assess-resource-availability"
		major_revision_id = "2"

    parameters {
      name = "location"
      parameter_value {
        string_value = "us-central1"
      }
    }
  }

    cloud_control_details {
		name              = "organizations/123456789/locations/global/cloudControls/builtin-cmek-key-in-use-for-bigquery-table"
		major_revision_id = "1"

    parameters {
      name = "location"
      parameter_value {
        string_list_value {
          values = ["us-central1", "us-west1"]
        }
      }
    }
  }

  cloud_control_details {
		name              = "organizations/123456789/locations/global/cloudControls/builtin-enable-automatic-backups-cloud-sql"
		major_revision_id = "3"

    parameters {
      name = "location"
      parameter_value {
        bool_value = true
      }
    }
  }

  cloud_control_details {
		name              = "organizations/123456789/locations/global/cloudControls/builtin-require-cmek-on-bigquery-datasets"
		major_revision_id = "2"

    parameters {
      name = "location"
      parameter_value {
        number_value = 1
      }
    }
  }


}

Déployer un framework

Déployez un framework sur une organisation, un dossier ou un projet afin de pouvoir contrôler et surveiller ces ressources à l'aide des contrôles cloud du framework. Vous pouvez déployer plusieurs frameworks sur chaque organisation, dossier ou projet. Si vous déployez un framework qui n'inclut que les contrôles cloud de sécurité avancée des données, vous pouvez le déployer sur des applications App Hub dans des dossiers configurés pour la gestion des applications.

Les dossiers et les projets héritent des frameworks via la hiérarchie des ressources Google Cloud . Par conséquent, si vous déployez des frameworks au niveau de l'organisation et au niveau d'un projet, tous les contrôles cloud des deux frameworks s'appliquent aux ressources du projet. En cas de différences dans les définitions des contrôles cloud, le contrôle cloud de niveau inférieur est utilisé par les ressources du projet. Par exemple, si une règle de contrôle cloud est définie sur "Autoriser" au niveau de l'organisation et sur "Refuser" au niveau du projet, le paramètre "Refuser" au niveau du projet est appliqué aux ressources du projet.

Nous vous recommandons de déployer un framework au niveau de l'organisation qui inclut les contrôles cloud pouvant s'appliquer à l'ensemble de votre entreprise. Vous pouvez ensuite déployer des frameworks plus stricts sur les dossiers et les projets qui en ont besoin.

Console

  1. Dans la console Google Cloud , accédez à la page Conformité.

    Accéder

  2. Sélectionnez votre organisation ou votre projet.

  3. Dans l'onglet Configurer, pour le framework que vous souhaitez déployer, cliquez sur Autres actions > Appliquer aux ressources.

  4. Choisissez Surveiller ou Surveiller et empêcher pour surveiller uniquement la dérive.

  5. Sélectionnez la ressource sur laquelle vous souhaitez déployer le framework. Vous pouvez choisir une organisation, un dossier ou un projet existants. Pour DSPM uniquement, vous pouvez sélectionner une application pour déployer un framework qui n'inclut que les contrôles cloud avancés DSPM dans une application. Vous pouvez éventuellement créer un dossier ou un projet, et y déployer le framework.

  6. Effectuez l'une des actions suivantes :

    • Si vous avez sélectionné Surveiller, procédez comme suit :

      1. Vérifiez les informations.
      2. Si vous avez sélectionné un dossier configuré pour la gestion des applications et que votre framework n'inclut que des contrôles cloud DSPM avancés, sélectionnez l'application que vous souhaitez surveiller.
      3. Cliquez sur Monitor (Surveiller).
    • Si vous avez sélectionné Surveiller et empêcher, procédez comme suit :

      1. Cliquez sur Suivant. Examinez les contrôles et les modes cloud.
      2. Cliquez sur Continuer.
      3. Si elles s'affichent, vérifiez les informations supplémentaires requises pour certains contrôles cloud.
      4. Cliquez sur Suivant.
      5. Vérifiez vos sélections, puis cliquez sur Appliquer.

CLI

Pour déployer un framework dans votre organisation, exécutez la commande gcloud compliance-manager framework-deployments create. Voici quelques bonnes pratiques :

  • Créez un fichier YAML ou JSON distinct pour vos métadonnées de contrôle cloud.

  • Utilisez les options de cible appropriées pour indiquer si vous allez déployer le framework dans une organisation, un dossier ou un projet existant, ou si vous allez créer un projet ou un dossier en même temps que vous déployez le framework.

  • Si possible, utilisez uniquement des identifiants de ressources au lieu de noms de ressources complets.

gcloud compliance-manager framework-deployments create \
   (FRAMEWORK_DEPLOYMENT : \
   --location=LOCATION \
   --organization=ORGANIZATION) \
   --cloud-control-metadata=[cloudControlDetails=CLOUD_CONTROL_DETAILS],[enforcementMode=ENFORCEMENT_MODE] \
   (--framework=FRAMEWORK : \
   --framework-major-revision-id=FRAMEWORK_MAJOR_REVISION_ID) \
   (--target-resource-config-existing=TARGET_RESOURCE_CONFIG_EXISTING     | \
   --target-resource-creation-config-folder-display-name=TARGET_RESOURCE_CREATION_CONFIG_FOLDER_DISPLAY_NAME \
   --target-resource-creation-config-folder-parent=TARGET_RESOURCE_CREATION_CONFIG_FOLDER_PARENT     | \
   --target-resource-creation-config-project-billing-account-id=TARGET_RESOURCE_CREATION_CONFIG_PROJECT_BILLING_ACCOUNT_ID \
   --target-resource-creation-config-project-display-name=TARGET_RESOURCE_CREATION_CONFIG_PROJECT_DISPLAY_NAME \
   --target-resource-creation-config-project-parent=TARGET_RESOURCE_CREATION_CONFIG_PROJECT_PARENT) \
   [--description=DESCRIPTION]

Remplacez les valeurs suivantes :

  • FRAMEWORK_DEPLOYMENT : ID du déploiement du framework

  • ORGANIZATION : ID d'organisation

  • LOCATION : région dans laquelle le déploiement du framework est stocké

  • cloud-control-metadata=[cloudControlDetails=CLOUD_CONTROL_DETAILS],[enforcementMode=ENFORCEMENT_MODE] : liste des contrôles cloud du framework, avec leurs noms, paramètres, ID de révision et mode d'application, au format suivant :

    • CLOUD_CONTROL_DETAILS : objet incluant la liste des noms, des paramètres et des ID de révision des contrôles cloud. Il utilise le format suivant :

      • name=NAME : nom complet de la ressource du contrôle cloud, au format organizations/ORGANIZATION_ID/locations/LOCATION/cloudControls/CLOUD_CONTROL_NAME.

      • majorRevisionId=MAJOR_REVISION_ID : version majeure du contrôle cloud

      • parameters=PARAMETERS : paramètres facultatifs requis par certains contrôles cloud. Par exemple, si vous souhaitez activer un contrôle cloud de Data Security Posture Management tel que le contrôle cloud Limiter l'accès aux données sensibles aux utilisateurs autorisés, spécifiez les emplacements que les comptes principaux doivent utiliser.

    • ENFORCEMENT_MODE : indique si le contrôle est un contrôle AUDIT, DETECTIVE ou PREVENTIVE.

      Vous pouvez également spécifier un fichier JSON ou YAML incluant les détails du contrôle cloud et les modes d'application. Par exemple, --cloud-control-metadata=path_to_file.(yaml|json). Développez les sections suivantes pour afficher des exemples de fichiers JSON et YAML.

      Exemple de fichier JSON

        [
          {
            "cloudControlDetails": {
              "name": "organizations/3589215982/locations/global/cloudControls/restrict-bucket-region",
              "majorRevisionId": 1,
              "parameters": [
                {
                  "name": "location",
                  "parameterValue": {
                    "stringValue": "us-west"
                  }
                }
              ]
            },
            "enforcementMode": "DETECTIVE"
          },
          {
            "cloudControlDetails": {
              "name": "organizations/3589215982/locations/global/cloudControls/enable-binary-authorization",
              "majorRevisionId": 2
            },
            "enforcementMode": "DETECTIVE"
          }
        ]
            

      Exemple de fichier YAML

        - cloudControlDetails:
            name: organizations/3589215982/locations/global/cloudControls/restrict-bucket-region
            majorRevisionId: 1
            parameters:
            - name: location
              parameterValue:
                stringValue: us-west
          enforcementMode: DETECTIVE
        - cloudControlDetails:
            name: organizations/3589215982/locations/global/cloudControls/enable-binary-authorization
            majorRevisionId: 2
          enforcementMode: DETECTIVE
            
    • FRAMEWORK : nom d'un framework existant que vous souhaitez déployer, au format organizations/ORGANIZATION_ID/locations/LOCATION/frameworks/FRAMEWORK_NAME.

    • FRAMEWORK_MAJOR_REVISION_ID : numéro de version du framework que vous souhaitez déployer

    • TARGET_RESOURCE_CONFIG_EXISTING  : nom d'une organisation, d'un dossier ou d'un projet existant dans lequel vous souhaitez déployer le nouveau framework, dans l'un des formats suivants :

      • organizations/ORGANIZATION_ID
      • folders/FOLDER_ID
      • projects/PROJECT_ID
    • TARGET_RESOURCE_CREATION_CONFIG_FOLDER_DISPLAY_NAME : nom du dossier que vous souhaitez créer, puis déployer le framework

    • TARGET_RESOURCE_CREATION_CONFIG_FOLDER_PARENT : nom de l'organisation ou du dossier existant dans lequel vous souhaitez créer le dossier. Les formats acceptés sont organizations/ORGANIZATION_ID et folders/FOLDER_ID.

    • TARGET_RESOURCE_CREATION_CONFIG_PROJECT_BILLING_ACCOUNT_ID : ID du compte de facturation à attribuer au nouveau projet, si vous créez un projet sur lequel vous souhaitez déployer le framework

    • TARGET_RESOURCE_CREATION_CONFIG_PROJECT_DISPLAY_NAME : nom du projet que vous souhaitez créer, puis sur lequel vous souhaitez déployer le framework

    • TARGET_RESOURCE_CREATION_CONFIG_PROJECT_PARENT : nom de l'organisation ou du dossier existant dans lequel vous souhaitez créer le projet. Les formats acceptés sont organizations/ORGANIZATION_ID et folders/FOLDER_ID.

    • DESCRIPTION : description facultative du déploiement du framework.

Par exemple, pour déployer un framework nommé organizations/3589215982/locations/global/frameworks/builtin-aipp dans un dossier existant dont l'ID est example-folder, exécutez la commande suivante :

gcloud compliance-manager framework-deployments create \
   example-framework-deployment \
   --organization=3589215982 \
   --location=global \
   --cloud-control-metadata='[{"cloudControlDetails": {"name": "organizations/3589215982/locations/global/cloudControls/restrict-bucket-region", "majorRevisionId": "1", "parameters": []}, "enforcementMode": "DETECTIVE"}, {"cloudControlDetails": {"name": "organizations/3589215982/locations/global/cloudControls/enable-binary-authorization", "majorRevisionId": 2}, "enforcementMode": "DETECTIVE"}]' \
   --framework="organizations/3589215982/locations/global/frameworks/builtin-aipp" \
   --framework-major-revision-id=6 \
   --target-resource-config-existing="folders/example-folder" \
   --description="Deployment for AI Platform into example-folder"

Par exemple, pour déployer un framework nommé organizations/3589215982/locations/global/frameworks/builtin-aipp et créer un projet nommé example-new-project dans un dossier existant avec l'ID de dossier example-folder, exécutez la commande suivante :

gcloud compliance-manager framework-deployments create \
  example-framework-deployment \
   --organization=3589215982 \
   --location=global \
   --cloud-control-metadata=deploy-controls.yaml \
   --framework="organizations/3589215982/locations/global/frameworks/builtin-aipp" \
   --framework-major-revision-id=6 \
   --target-resource-creation-config-project-billing-account-id=012345-567890-ABCDEF \
   --target-resource-creation-config-project-display-name=example-new-project \
   --target-resource-creation-config-project-parent=folders/example-folder \
   --description="Deployment for AI Platform into a new example-new-project in example-folder"

Pour en savoir plus, consultez gcloud compliance-manager framework-deployments create.

Terraform

L'exemple suivant montre comment déployer un framework à l'aide de Terraform.

resource "google_cloud_security_compliance_cloud_control" "example" {
  parent           = "organizations/123456789"
  location         = "global"
  cloud_control_id = "example-cloudcontrol"

  display_name              = "TF test CloudControl Name"
  description               = "A test cloud control for security compliance"
  categories                = ["CC_CATEGORY_INFRASTRUCTURE"]
  severity                  = "HIGH"
  finding_category          = "SECURITY_POLICY"
  remediation_steps         = "Review and update the security configuration according to best practices."
  supported_cloud_providers = ["GCP"]

  rules {
    description       = "Ensure compute instances have secure boot enabled"
    rule_action_types = ["RULE_ACTION_TYPE_DETECTIVE"]

    cel_expression {
      expression = "resource.data.shieldedInstanceConfig.enableSecureBoot == true"
      resource_types_values {
        values = ["compute.googleapis.com/Instance"]
      }
    }
  }

  parameter_spec {
    name        = "enabled"
    value_type  = "BOOLEAN"
    is_required = true
  }

  parameter_spec {
    name        = "regions"
    value_type  = "STRINGLIST"
    is_required = true
  }

  parameter_spec {
    name        = "location"
    value_type  = "STRING"
    is_required = true
  }

  parameter_spec {
    name        = "oneof-parameter"
    value_type  = "ONEOF"
    is_required = true

    sub_parameters {
      name        = "test-oneof"
      value_type  = "STRING"
      is_required = true
    }

    sub_parameters {
      name        = "updated-test-oneof"
      value_type  = "STRING"
      is_required = true
    }
  }

  parameter_spec {
    name        = "bool-parameter"
    value_type  = "ONEOF"
    is_required = true

    sub_parameters {
      name        = "bool-oneof"
      value_type  = "BOOLEAN"
      is_required = true
    }

    sub_parameters {
      name        = "updated-bool-oneof"
      value_type  = "BOOLEAN"
      is_required = true
    }
  }

  parameter_spec {
    name        = "number-parameter"
    value_type  = "ONEOF"
    is_required = true

    sub_parameters {
      name        = "number-oneof"
      value_type  = "NUMBER"
      is_required = true
    }

    sub_parameters {
      name        = "updated-number-oneof"
      value_type  = "NUMBER"
      is_required = true
    }
  }

  parameter_spec {
    name        = "string-list-parameter"
    value_type  = "ONEOF"
    is_required = true

    sub_parameters {
      name        = "string-list-oneof"
      value_type  = "STRINGLIST"
      is_required = true
    }

    sub_parameters {
      name        = "updated-string-list-oneof"
      value_type  = "STRINGLIST"
      is_required = true
    }
  }
}

resource "google_cloud_security_compliance_framework" "example" {
  parent       = "organizations/123456789"
  location     = "global"
  framework_id = "example-framework"

  display_name = "Terraform Framework Name"
  description  = "An Terraform description for the framework"

  cloud_control_details {
    name              = google_cloud_security_compliance_cloud_control.example.name
    major_revision_id = "1"

    parameters {
      name = "enabled"
      parameter_value {
        bool_value = true
      }
    }
  }
}

resource "google_cloud_security_compliance_framework_deployment" "example" {
  parent                  = "organizations/123456789"
  location                = "global"
  framework_deployment_id = "example-deployment"
  description             = "A framework deployment for cloud security compliance"

  framework {
    framework         = google_cloud_security_compliance_framework.example.name
    major_revision_id = "1"
  }

  target_resource_config {
    existing_target_resource = "organizations/123456789"
  }

  cloud_control_metadata {
    enforcement_mode = "DETECTIVE"

    cloud_control_details {
      name              = google_cloud_security_compliance_cloud_control.example.name
      major_revision_id = "1"

      parameters {
        name = "enabled"
        parameter_value {
          bool_value = true
        }
      }

      parameters {
        name = "regions"
        parameter_value {
          string_list_value {
            values = ["us-central1", "us-west1", "us-east1"]
          }
        }
      }

      parameters {
        name = "location"
        parameter_value {
          string_value = "us-central1"
        }
      }

      parameters {
        name = "oneof-parameter"
        parameter_value {
          oneof_value {
            name = "test-oneof"
            parameter_value {
              string_value = "test-value"
            }
          }
        }
      }

      parameters {
        name = "bool-parameter"
        parameter_value {
          oneof_value {
            name = "bool-oneof"
            parameter_value {
              bool_value = true
            }
          }
        }
      }

      parameters {
        name = "number-parameter"
        parameter_value {
          oneof_value {
            name = "number-oneof"
            parameter_value {
              number_value = 123.45
            }
          }
        }
      }

      parameters {
        name = "string-list-parameter"
        parameter_value {
          oneof_value {
            name = "string-list-oneof"
            parameter_value {
              string_list_value {
                values = ["value1", "value2"]
              }
            }
          }
        }
      }
    }
  }
}

Après avoir déployé le framework, vous pouvez surveiller votre environnement pour détecter toute dérive par rapport aux contrôles cloud que vous avez définis. Security Command Center signale les instances de dérive sous forme de résultats que vous pouvez examiner, filtrer et résoudre. Après le déploiement d'un framework, un délai d'environ six heures peut être nécessaire pour que les résultats liés aux contrôles cloud s'affichent.

Modifier un framework personnalisé

Après avoir créé un framework, vous pouvez modifier son nom et sa description, ajouter ou supprimer des contrôles cloud, et mettre à jour ses paramètres. Vous ne pouvez modifier que les frameworks que vous créez. Vous ne pouvez pas modifier les frameworks intégrés. De plus, vous ne pouvez modifier que les frameworks qui ne sont pas déployés.

  1. Dans la console Google Cloud , accédez à la page Conformité.

    Accéder

  2. Sélectionnez votre organisation ou votre projet.

  3. Dans l'onglet Configurer, cliquez sur le framework que vous souhaitez modifier.

  4. Sur la page Détails du framework, vérifiez que le framework n'est pas attribué à une ressource. Si nécessaire, supprimez les attributions.

  5. Cliquez sur Actions > Modifier.

  6. Sur la page Mettre à jour les détails du framework, modifiez le nom et la description si nécessaire. Cliquez sur Continuer.

  7. Pour modifier les contrôles cloud inclus dans le framework, procédez comme suit :

    • Pour ajouter un contrôle cloud existant, cliquez sur Ajouter des contrôles cloud. Sélectionnez tous les contrôles cloud dont vous avez besoin, puis cliquez sur Ajouter.

    • Pour créer un contrôle cloud personnalisé, cliquez sur Créer un contrôle cloud personnalisé. Pour obtenir des instructions, consultez Créer un contrôle cloud personnalisé.

    • Pour supprimer un contrôle cloud, sélectionnez-le, puis cliquez sur Supprimer.

  8. Cliquez sur Continuer.

  9. Ajoutez les paramètres supplémentaires requis par les contrôles cloud.

  10. Cliquez sur Enregistrer.

Supprimer un framework déployé d'une ressource

Vous pouvez supprimer un framework de l'organisation, des dossiers ou des projets auxquels vous l'avez attribué. La suppression du framework signifie que Compliance Manager ne génère plus de résultats pour ce nœud de votre hiérarchie des ressources.

Lorsque vous supprimez un framework, l'état de la plupart des résultats associés passe à Inactive après sept jours. Si votre framework inclut le contrôle cloud Limiter le flux de données sensibles entre les juridictions géographiques, les résultats passent à Inactive après 90 jours. Les états des résultats liés au contrôle cloud Limiter le flux de données sensibles entre les juridictions géographiques et au contrôle cloud Limiter l'accès aux données sensibles aux utilisateurs autorisés ne sont pas automatiquement modifiés.

Console

  1. Dans la console Google Cloud , accédez à la page Conformité.

    Accéder

  2. Sélectionnez votre organisation ou votre projet.

  3. Dans l'onglet Configurer, cliquez sur le framework que vous souhaitez supprimer.

  4. Sur la page Détails du framework, cliquez sur Actions > Gérer les attributions de ressources.

  5. Dans le tableau Ressources attribuées, recherchez la ressource que vous souhaitez supprimer, puis cliquez sur Supprimer.

  6. Lisez le message de confirmation, puis cliquez sur Annuler l'attribution.

  7. Facultatif : remplacez l'état des résultats associés par Inactive. Pour obtenir des instructions, consultez Modifier l'état d'un résultat.

CLI

Pour supprimer un déploiement de framework particulier dans votre organisation, exécutez la commande gcloud compliance-manager framework-deployments delete :

gcloud compliance-manager framework-deployments delete \
   FRAMEWORK_DEPLOYMENT \
   --location=LOCATION \
   --organization=ORGANIZATION \
   --etag=ETAG_ID

Remplacez les valeurs suivantes :

  • FRAMEWORK_DEPLOYMENT : ID du déploiement du framework

  • ORGANIZATION : ID d'organisation

  • LOCATION : région dans laquelle le déploiement du framework est stocké

  • ETAG_ID : identifiant de la version actuelle du déploiement du framework, qui permet de s'assurer que vous supprimez la version prévue du déploiement du framework. Si l'identifiant ne correspond pas à la version actuelle, la requête échoue. Si vous omettez cette valeur, Compliance Manager supprime le déploiement du framework sans condition.

Par exemple, pour supprimer example-deployment de l'organisation 3589215982 et stocké dans l'emplacement global, exécutez la commande suivante :

gcloud compliance-manager framework-deployments delete \
   example-deployment \
   --organization=3589215982 \
   --location=global \
   --etag=MTc3NDU4MjM4OTY0MzU5MjQ5OTI=

Pour en savoir plus sur les options facultatives, consultez gcloud compliance-manager framework-deployments delete.

Mettre à jour un framework intégré vers une version plus récente

Google publie régulièrement des mises à jour de ses frameworks intégrés à mesure que les services déploient de nouvelles fonctionnalités ou que de nouvelles bonnes pratiques émergent.

Vous pouvez afficher les versions des frameworks intégrés dans le tableau de bord des frameworks, dans l'onglet Configurer ou sur la page d'informations du framework.

Google vous informe dans la console lorsque les mises à jour suivantes se produisent :

Pour mettre à jour un framework que vous avez déployé, procédez comme suit :

  1. Dans la console Google Cloud , accédez à la page Conformité.

    Accéder

  2. Sélectionnez votre organisation ou votre projet.

  3. Dans l'onglet Configurer, cliquez sur le framework que vous souhaitez mettre à jour.

  4. Sur la page Détails du framework, dans le tableau Ressources attribuées, vérifiez l'état de la mise à jour pour toutes les attributions identifiées comme Mise à jour disponible.

  5. Créez une liste des contrôles cloud mis à jour, y compris leurs ID, paramètres et ID de révision, que vous souhaitez inclure dans le framework mis à jour ou en supprimer.

  6. Pour appliquer les modifications, procédez comme suit :

    Console

    Vous pouvez utiliser la console Google Cloud pour mettre à jour les frameworks en les supprimant, puis en les redéployant. Utilisez la gcloud CLI ou l'API REST Cloud Security Compliance pour mettre à jour les frameworks en place sans affecter votre tableau de bord des résultats et sans avoir à supprimer et à redéployer le framework.

    1. Supprimez l'attribution de ressources.

    2. Redéployez le framework sur votre ressource afin que Compliance Manager puisse reprendre l'évaluation de la ressource et la création de résultats.

    CLI

    Pour mettre à jour un déploiement de framework sur place, exécutez la commande gcloud compliance-manager framework-deployments update. Pour spécifier les contrôles cloud et les modes d'application qui s'appliquent au framework, utilisez l'une des options suivantes :

    • Spécifiez les contrôles cloud et les modes d'application de manière intégrée à l'aide de l'option --cloud-control-metadata. Si vous utilisez cette option, vous devez spécifier tous les contrôles cloud et modes d'application qui s'appliquent au framework.
    • Spécifiez les contrôles cloud et les modes d'application dans un fichier JSON ou YAML. Si vous utilisez un fichier, vous devez spécifier tous les contrôles cloud et modes d'application qui s'appliquent au framework.
    • Utilisez les options --add-cloud-control-metadata et --remove-cloud-control-metadata pour ajouter ou supprimer des contrôles cloud individuels.

    Exécutez la commande suivante :

    gcloud compliance-manager framework-deployments update \
       FRAMEWORK_DEPLOYMENT \
       --location=LOCATION \
       (--organization=ORGANIZATION | --project=PROJECT_ID) \
       [--framework-major-revision-id=FRAMEWORK_MAJOR_REVISION_ID] \
       [--cloud-control-metadata=[cloudControlDetails=CLOUD_CONTROL_DETAILS],[enforcementMode=ENFORCEMENT_MODE] \
          | [--add-cloud-control-metadata=[cloudControlDetails=CLOUD_CONTROL_DETAILS],[enforcementMode=ENFORCEMENT_MODE]] \
            [--remove-cloud-control-metadata=[cloudControlDetails=CLOUD_CONTROL_DETAILS],[enforcementMode=ENFORCEMENT_MODE]]] \
       [--etag=ETAG_ID] \
       [--async]
    

    Remplacez les éléments suivants :

    • FRAMEWORK_DEPLOYMENT : ID du déploiement du framework.

    • LOCATION : région dans laquelle le déploiement du framework est stocké.

    • ORGANIZATION ou PROJECT_ID : ID de votre organisation ou de votre projet.

    • FRAMEWORK_MAJOR_REVISION_ID : ID de la révision majeure du framework vers lequel vous souhaitez effectuer la mise à jour. Si vous omettez cette option, Compliance Manager met à jour le déploiement vers la dernière révision majeure du framework. Vous ne pouvez pas revenir à un ID de révision majeure antérieur.

    • Choisissez l'une des options suivantes :

      • --cloud-control-metadata=[cloudControlDetails=CLOUD_CONTROL_DETAILS],[enforcementMode=ENFORCEMENT_MODE] : liste des contrôles cloud du framework, avec leurs noms, paramètres, ID de révision et mode d'application, au format suivant :

      • CLOUD_CONTROL_DETAILS : objet incluant la liste des noms, des paramètres et des ID de révision des contrôles cloud. Il utilise le format suivant :

        • name=NAME : nom complet de la ressource du contrôle cloud, au format organizations/ORGANIZATION_ID/locations/LOCATION/cloudControls/CLOUD_CONTROL_NAME ou projects/PROJECT_ID/locations/LOCATION/cloudControls/CLOUD_CONTROL_NAME.

        • majorRevisionId=MAJOR_REVISION_ID : version majeure du contrôle cloud.

        • parameters=PARAMETERS : paramètres facultatifs requis par certains contrôles cloud.

      • ENFORCEMENT_MODE : indique si le contrôle est un contrôle AUDIT, DETECTIVE ou PREVENTIVE.

      • --cloud-control-metadata=PATH_TO_FILE : chemin d'accès à un fichier JSON ou YAML incluant les détails du contrôle cloud et les modes d'application. Développez les sections suivantes pour afficher des exemples de fichiers JSON et YAML.

        Exemple de fichier JSON

          [
            {
              "cloudControlDetails": {
                "name": "organizations/3589215982/locations/global/cloudControls/restrict-bucket-region",
                "majorRevisionId": 1,
                "parameters": [
                  {
                    "name": "location",
                    "parameterValue": {
                      "stringValue": "us-west"
                    }
                  }
                ]
              },
              "enforcementMode": "DETECTIVE"
            },
            {
              "cloudControlDetails": {
                "name": "organizations/3589215982/locations/global/cloudControls/enable-binary-authorization",
                "majorRevisionId": 2
              },
              "enforcementMode": "DETECTIVE"
            }
          ]
              

        Exemple de fichier YAML

          - cloudControlDetails:
              name: organizations/3589215982/locations/global/cloudControls/restrict-bucket-region
              majorRevisionId: 1
              parameters:
              - name: location
                parameterValue:
                  stringValue: us-west
            enforcementMode: DETECTIVE
          - cloudControlDetails:
              name: organizations/3589215982/locations/global/cloudControls/enable-binary-authorization
              majorRevisionId: 2
            enforcementMode: DETECTIVE
              
      • --add-cloud-control-metadata ou --remove-cloud-control-metadata : contrôles cloud à ajouter ou à supprimer du déploiement du framework. Vous pouvez utiliser les deux options dans la même commande. Vous pouvez utiliser l'une des options suivantes pour spécifier plusieurs contrôles cloud à ajouter ou à supprimer :

        • Répétez l'option pour chaque contrôle.
        • Incluez les contrôles dans une liste JSON [ {...}, {...} ] dans un seul flag.
        • Indiquez le chemin d'accès à un fichier JSON ou YAML contenant une liste de contrôles. Utilisez le même schéma que l'option --cloud-control-metadata. Exemple : --add-cloud-control-metadata=add-controls.yaml --remove-cloud-control-metadata=remove-controls.yaml.
    • ETAG_ID : identifiant de la version actuelle du déploiement du framework, qui permet de s'assurer que vous mettez à jour la version prévue du déploiement du framework. Si l'identifiant ne correspond pas à la version actuelle, la requête échoue. Si vous omettez cette valeur, Compliance Manager met à jour le déploiement du framework sans condition.

    Vous pouvez également inclure l'option --async pour renvoyer immédiatement une réponse sans attendre la fin de l'opération de mise à jour de longue durée.

    Par exemple, pour mettre à jour example-deployment déployé dans l'organisation 3589215982 et stocké dans l'emplacement global, exécutez la commande suivante :

    gcloud compliance-manager framework-deployments update \
       example-deployment \
       --organization=3589215982 \
       --location=global \
       --framework-major-revision-id=7 \
       --cloud-control-metadata=cloud-control-metadata.yaml \
       --etag=MTc3NDU4MjM4OTY0MzU5MjQ5OTI=
    

    Pour en savoir plus sur les options facultatives, consultez gcloud compliance-manager framework-deployments update.

    REST

    Pour mettre à jour un déploiement de framework en place, appelez la méthode frameworkDeployments.patch (pour les organisations ou les projets). Spécifiez l'ID de la révision majeure cible, ainsi que tous les contrôles cloud et modes d'application qui s'appliquent au framework dans cloudControlMetadata.

    Avant d'utiliser les données de requête, effectuez les remplacements suivants :

    • RESOURCE_TYPE : type de conteneur de ressources parent pour le déploiement du framework : organizations ou projects.
    • RESOURCE_ID : ID d'organisation ou ID du projet. Exemple : 3589215982.
    • LOCATION : emplacement du déploiement du framework. Valeur acceptée : global.
    • FRAMEWORK_DEPLOYMENT : ID du déploiement de framework que vous souhaitez mettre à jour. Exemple : example-deployment.
    • UPDATE_MASK : liste facultative de champs à écraser, séparés par une virgule, par rapport à la ressource FrameworkDeployment. Par exemple : framework.majorRevisionId,cloudControlMetadata. Si cette option est omise, tous les champs sont écrasés.
    • FRAMEWORK_NAME : nom de ressource du framework, au format organizations/ORGANIZATION_ID/locations/LOCATION/frameworks/FRAMEWORK_ID ou projects/PROJECT_ID/locations/LOCATION/frameworks/FRAMEWORK_ID. Exemple : organizations/3589215982/locations/global/frameworks/builtin-aipp
    • FRAMEWORK_MAJOR_REVISION_ID : ID de la révision majeure du framework vers lequel vous souhaitez effectuer la mise à jour. Si ce paramètre est omis, Compliance Manager met à jour le déploiement vers la dernière révision majeure du framework.
    • CLOUD_CONTROL_NAME : nom complet de la ressource d'un contrôle cloud dans le framework, au format organizations/ORGANIZATION_ID/locations/LOCATION/cloudControls/CLOUD_CONTROL_ID.
    • MAJOR_REVISION_ID : ID de la révision majeure du contrôle cloud.
    • ENFORCEMENT_MODE : indique si le contrôle cloud est un contrôle AUDIT, DETECTIVE ou PREVENTIVE.
    • ETAG_ID : identifiant facultatif de la version actuelle du déploiement du framework pour empêcher les mises à jour simultanées de s'écraser mutuellement. Exemple : MTc3NDU4MjM4OTY0MzU5MjQ5OTI=.

    Méthode HTTP et URL :

    PATCH https://cloudsecuritycompliance.googleapis.com/v1/RESOURCE_TYPE/RESOURCE_ID/locations/LOCATION/frameworkDeployments/FRAMEWORK_DEPLOYMENT?updateMask=UPDATE_MASK

    Corps JSON de la requête :

    {
      "framework": {
        "framework": "FRAMEWORK_NAME",
        "majorRevisionId": "FRAMEWORK_MAJOR_REVISION_ID"
      },
      "cloudControlMetadata": [
        {
          "cloudControlDetails": {
            "name": "CLOUD_CONTROL_NAME",
            "majorRevisionId": "MAJOR_REVISION_ID",
            "parameters": []
          },
          "enforcementMode": "ENFORCEMENT_MODE"
        }
      ],
      "etag": "ETAG_ID"
    }
    

    Pour envoyer votre requête, choisissez l'une des options suivantes :

    curl

    Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

    curl -X PATCH \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://cloudsecuritycompliance.googleapis.com/v1/RESOURCE_TYPE/RESOURCE_ID/locations/LOCATION/frameworkDeployments/FRAMEWORK_DEPLOYMENT?updateMask=UPDATE_MASK"

    PowerShell

    Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method PATCH `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://cloudsecuritycompliance.googleapis.com/v1/RESOURCE_TYPE/RESOURCE_ID/locations/LOCATION/frameworkDeployments/FRAMEWORK_DEPLOYMENT?updateMask=UPDATE_MASK" | Select-Object -Expand Content

    Vous devriez recevoir une réponse JSON de ce type :

    {
      "name": "organizations/3589215982/locations/global/operations/operation-1726842525305-6228ddb4dca96-78a6db59-f9dd9a24",
      "done": false
    }
    

    La réponse inclut les informations suivantes :

    • name : identifiant de chaîne unique pour l'opération de mise à jour de longue durée, que vous pouvez utiliser pour suivre la progression de la mise à jour.
    • done : indicateur booléen défini sur false au début de l'opération de mise à jour et sur true à la fin de l'opération.

Supprimer un framework personnalisé

Supprimez un framework lorsqu'il n'est plus nécessaire. Vous ne pouvez supprimer que les frameworks que vous créez. Vous ne pouvez pas supprimer les frameworks intégrés.

Console

  1. Dans la console Google Cloud , accédez à la page Conformité.

    Accéder

  2. Sélectionnez votre organisation ou votre projet.

  3. Dans l'onglet Configurer, cliquez sur le framework dont vous souhaitez annuler l'attribution de ressources.

  4. Sur la page Détails du framework, vérifiez que le framework n'est pas attribué à une ressource. Si nécessaire, supprimez les attributions.

  5. Cliquez sur Actions > Supprimer.

  6. Dans la fenêtre Supprimer, lisez le message. Saisissez Delete, puis cliquez sur Confirmer.

CLI

Pour supprimer un framework particulier de votre organisation, exécutez la commande gcloud compliance-manager frameworks delete :

gcloud compliance-manager frameworks delete \
   FRAMEWORK \
   --location=LOCATION \
   --organization=ORGANIZATION

Remplacez les valeurs suivantes :

  • FRAMEWORK : nom du framework.

  • ORGANIZATION : ID d'organisation

  • LOCATION : région dans laquelle le framework est stocké

Par exemple, pour supprimer example-framework de l'organisation 3589215982 et stocké dans l'emplacement global, exécutez la commande suivante :

gcloud compliance-manager frameworks delete \
   example-framework \
   --organization=3589215982 \
   --location=global

Pour en savoir plus sur les options facultatives, consultez gcloud compliance-manager frameworks delete.

Étapes suivantes