Contrôler l'accès IAM en fonction de la sensibilité des données

Cette page explique comment accorder ou refuser automatiquement l'accès Identity and Access Management (IAM) aux ressources en fonction de la sensibilité des données de ces ressources.

Vous pouvez configurer le service de découverte de la protection des données sensibles pour associer automatiquement des balises aux ressources en fonction des niveaux de sensibilité calculés de ces ressources. Vous pouvez ensuite utiliser des conditions IAM pour accorder ou refuser l'accès à une ressource, en fonction de la présence ou de l'absence d'une clé ou d'une valeur de tag de niveau de sensibilité.

Supposons que vous souhaitiez que l'équipe chargée des données de votre organisation puisse copier et partager librement des données BigQuery dans ses opérations quotidiennes. Toutefois, vous ne savez pas si certaines de ces données contiennent des informations permettant d'identifier personnellement vos clients. Vous pouvez exécuter une découverte pour classer les niveaux de sensibilité de vos données BigQuery. Accordez ensuite un accès conditionnel à l'équipe chargée des données, afin qu'elle ne puisse accéder qu'aux tables BigQuery contenant uniquement des données à faible sensibilité.

Pour en savoir plus sur la façon dont la protection des données sensibles calcule la sensibilité des données, consultez la section Niveaux de risque et de sensibilité des données.

Pour en savoir plus sur l'utilisation de tags pour contrôler l'accès aux ressources, consultez la section Tags et accès conditionnel dans la documentation IAM. Pour en savoir plus sur les tags, consultez la section Présentation des tags dans la documentation Resource Manager.

Tag de niveau de sensibilité

Dans ce document, le terme balise de niveau de sensibilité désigne une balise que vous joignez automatiquement à une ressource pour indiquer le niveau de sensibilité calculé des données de cette ressource.

Avantages

Cette fonctionnalité vous permet d'effectuer les opérations suivantes:

  • Automatisez le contrôle des accès sur différentes ressources compatibles en fonction des attributs et des classifications des données de ces ressources. L'automatisation vous aide à suivre la croissance et les modifications des données de votre organisation, de vos dossiers et de vos projets.
  • Limitez l'accès aux ressources compatibles jusqu'à ce qu'elles soient profilées et classées par la protection des données sensibles. Cette pratique est conforme au principe de sécurité par défaut.
  • Configurez la découverte pour mettre à jour la valeur de la balise de niveau de sensibilité chaque fois qu'elle effectue un profilage de vos données. Par conséquent, l'accès d'un principal à une ressource change automatiquement lorsque le niveau de sensibilité des données calculé pour cette ressource change.
  • Configurez la découverte pour réduire le niveau de risque de données calculé sur une ressource si elle détecte qu'un tag de niveau de sensibilité est présent sur cette ressource. Cette option vous aide à mesurer l'amélioration de votre posture en matière de sécurité et de confidentialité des données.

Ressources compatibles

Avec cette fonctionnalité, la protection des données sensibles tague automatiquement les données aux niveaux suivants:

  • les tables BigQuery
  • Instances Cloud SQL
  • Buckets Cloud Storage

Fonctionnement

Voici un workflow général pour contrôler l'accès aux ressources en fonction de la sensibilité des données. Ces tâches ne doivent pas être effectuées par la même personne.

  1. Créer un tag de niveau de sensibilité
  2. Accorder un accès conditionnel aux ressources en fonction de la valeur du tag de niveau de sensibilité
  3. Activer le taggage automatique dans la configuration de la découverte
  4. Accorder à l'agent de service l'autorisation d'associer le tag de niveau de sensibilité aux ressources

Autorisations requises

Les autorisations dont vous avez besoin dépendent de l'action que vous devez effectuer.

Pour obtenir ces autorisations, demandez à votre administrateur d'attribuer le rôle suggéré au niveau approprié de la hiérarchie des ressources.

Autorisations pour administrer les tags

Consultez la section Administrer les tags dans la documentation de Resource Manager.

Autorisations pour accorder un accès conditionnel aux ressources

Consultez la section Rôles obligatoires dans la documentation IAM.

Autorisations pour configurer la découverte

Consultez la section Rôles requis pour configurer et afficher des profils de données.

Créer un tag de niveau de sensibilité

Dans cette tâche, vous allez créer une clé de balise avec des valeurs de balise qui correspondent aux niveaux de sensibilité des données que Sensitive Data Protection utilise pour classer vos données. Par exemple, vous pouvez utiliser la clé et les valeurs de balise suivantes.

  1. Définissez la clé de balise sur sensitivity-level.
  2. Définissez les valeurs de balise suivantes:

    low
    Valeur de balise à associer aux données à faible sensibilité
    moderate
    Valeur de balise à associer aux données de sensibilité moyenne
    high
    Valeur de balise à associer aux données hautement sensibles

    Vous pouvez également créer une valeur de balise pour les ressources dont le niveau de sensibilité est inconnu. Vous pouvez également réutiliser les valeurs de tag low, medium ou high pour ces ressources.

  3. Veuillez noter les points suivants. Vous en aurez besoin pour la tâche suivante:

    • ID de clé de tag (par exemple, tagKeys/281478077849901)
    • Valeurs de clé de balise (par exemple, tagValues/281479490918432)
    • Chemins d'accès de la valeur du tag (par exemple, example-project/tag-key/tag-value1)

Pour simplifier, cet exemple définit un mappage individuel entre une valeur de balise et un niveau de sensibilité. En pratique, vous pouvez personnaliser les valeurs des balises en fonction des besoins de votre entreprise. Par exemple, vous pouvez utiliser des valeurs telles que confidential, PII ou SPII (informations personnelles sensibles).

La découverte de données sensibles peut être configurée au niveau de l'organisation, du dossier et du projet. Si vous prévoyez d'utiliser cette balise de niveau de sensibilité pour la découverte au niveau de l'organisation ou du dossier, nous vous recommandons de la créer au niveau de l'organisation.

Pour savoir comment créer un tag, consultez la section Créer et gérer des tags dans la documentation Resource Manager.

Accorder un accès conditionnel aux ressources en fonction de la valeur du tag de niveau de sensibilité

Dans cette tâche, vous n'accordez un rôle à un compte principal que si la balise de niveau de sensibilité associée à la ressource a une valeur spécifique. Par exemple, vous pouvez n'accorder à un principal l'accès qu'aux données avec des valeurs de tag moderate et low.

Cette section fournit des exemples de conditions formatées pour être utilisées avec l'éditeur de conditions. L'outil Éditeur de conditions fournit une interface textuelle permettant de saisir manuellement une expression à l'aide de la syntaxe CEL. Pour savoir comment associer des conditions IAM aux liaisons de rôles, consultez la section Gérer les liaisons de rôles conditionnelles dans la documentation IAM.

Ces exemples suivent le modèle de taggage défini dans Créer un tag de niveau de sensibilité sur cette page.

Accorder aux principaux un accès uniquement aux données à faible sensibilité

Dans cet exemple, vous accordez l'accès à une ressource si elle ne contient que des données à faible sensibilité. Vous pouvez également utiliser cet exemple pour restreindre tous les accès à la ressource jusqu'à ce que la découverte de données sensibles ait été exécutée sur cette ressource.

resource.matchTagId("tagKeys/SENSITIVITY_LEVEL_TAG_KEY",
"tagValues/TAG_VALUE_FOR_LOW_SENSITIVITY")

Remplacez les éléments suivants :

  • SENSITIVITY_LEVEL_TAG_KEY: ID numérique de la clé de tag de niveau de sensibilité que vous avez créée
  • TAG_VALUE_FOR_LOW_SENSITIVITY: ID numérique de la valeur de tag que vous avez créée pour les données à faible sensibilité

Accorder aux principaux un accès uniquement aux données à sensibilité modérée et faible

Dans cet exemple, vous accordez l'accès à une ressource si elle ne contient que des données de sensibilité modérée ou faible. Notez qu'un opérateur OR est placé entre les deux conditions.

resource.matchTagId("tagKeys/SENSITIVITY_LEVEL_TAG_KEY", "tagValues/TAG_VALUE_FOR_LOW_SENSITIVITY") ||
resource.matchTagId("tagKeys/SENSITIVITY_LEVEL_TAG_KEY", "tagValues/TAG_VALUE_FOR_MODERATE_SENSITIVITY")

Remplacez les éléments suivants :

  • SENSITIVITY_LEVEL_TAG_KEY: ID numérique de la clé de tag de niveau de sensibilité que vous avez créée
  • TAG_VALUE_FOR_LOW_SENSITIVITY: ID numérique de la valeur de tag que vous avez créée pour les données à faible sensibilité
  • TAG_VALUE_FOR_MODERATE_SENSITIVITY: ID numérique de la valeur de tag que vous avez créée pour les données à sensibilité modérée

N'accorder l'accès aux principaux que si la balise de niveau de sensibilité est présente

Cela peut être utile, par exemple, si vous souhaitez définir une stratégie d'organisation qui exige que tous les accès IAM soient conditionnels en fonction de la présence d'un tag de niveau de sensibilité. Vous pouvez également utiliser cet exemple pour restreindre tous les accès à la ressource jusqu'à ce que la découverte de données sensibles ait été exécutée sur cette ressource.

resource.hasTagKeyId("tagKeys/SENSITIVITY_LEVEL_TAG_KEY")

Remplacez SENSITIVITY_LEVEL_TAG_KEY par l'ID numérique de la clé de balise de niveau de sensibilité que vous avez créée.

Exemples de règles de refus

Pour savoir comment créer une règle de refus à utiliser avec un tag de ressource, consultez la section Structure d'une règle de refus. Pour obtenir la liste des autorisations compatibles, consultez la section Autorisations compatibles avec les stratégies de refus.

Refuser l'accès si aucun tag de niveau de sensibilité n'est défini

L'extrait de règle de refus suivant refuse l'autorisation bigquery.googleapis.com/tables.get si la ressource ne dispose pas du tag de niveau de sensibilité.

  "rules": [
    {
      "denyRule": {
        "deniedPrincipals": [
          "principalSet://goog/group/data-team@example.com"
        ],
        "deniedPermissions": [
          "bigquery.googleapis.com/tables.get"
        ],
        "denialCondition": {
          "title": "Resource has no key",
          "expression": "!resource.hasTagKeyId("tagKeys/SENSITIVITY_LEVEL_TAG_KEY")"
        }
      }
    }
  ]

Remplacez SENSITIVITY_LEVEL_TAG_KEY par l'ID numérique de la clé de balise de niveau de sensibilité que vous avez créée.

Refuser l'accès si des données de sensibilité moyenne ou élevée sont présentes

L'extrait suivant d'une stratégie de refus refuse l'autorisation bigquery.googleapis.com/tables.get si la ressource contient des données de sensibilité modérée ou élevée.

  "rules": [
    {
      "denyRule": {
        "deniedPrincipals": [
          "principalSet://goog/group/data-team@example.com"
        ],
        "deniedPermissions": [
          "bigquery.googleapis.com/tables.get"
        ],
        "denialCondition": {
          "title": "Resource has moderate or high data sensitivity",
          "expression": "resource.matchTagId("tagKeys/SENSITIVITY_LEVEL_TAG_KEY", "tagValues/TAG_VALUE_FOR_MODERATE_SENSITIVITY") || resource.matchTagId("tagKeys/SENSITIVITY_LEVEL_TAG_KEY", "tagValues/TAG_VALUE_FOR_HIGH_SENSITIVITY")"
        }
      }
    }
  ]

Remplacez les éléments suivants :

  • SENSITIVITY_LEVEL_TAG_KEY: ID numérique de la clé de tag de niveau de sensibilité que vous avez créée
  • TAG_VALUE_FOR_MODERATE_SENSITIVITY: ID numérique de la valeur de tag que vous avez créée pour les données à sensibilité modérée
  • TAG_VALUE_FOR_HIGH_SENSITIVITY: ID numérique de la valeur de tag que vous avez créée pour les données hautement sensibles

Activer le taggage automatique dans la configuration de découverte

Dans cette tâche, vous allez activer l'action Taguer des ressources. Cette action demande à la protection des données sensibles d'ajouter automatiquement des balises à vos données en fonction de leur niveau de sensibilité calculé. Vous effectuez cette tâche lorsque vous create ou modifiez une configuration d'analyse de découverte.

Pour ajouter automatiquement un tag à une ressource en fonction de son niveau de sensibilité calculé, procédez comme suit:

  1. Activez l'option Taguer les ressources.
  2. Pour chaque niveau de sensibilité (élevé, modéré, faible et inconnu), saisissez le chemin d'accès de la valeur de balise que vous avez créée pour le niveau de sensibilité donné.

    Si vous ignorez un niveau de sensibilité, aucune balise ne lui est associée.

  3. Pour réduire automatiquement le niveau de risque des données d'une ressource lorsque la balise de niveau de sensibilité est présente, sélectionnez Lorsque qu'une balise est appliquée à une ressource, réduire le risque des données de son profil à FAIBLE. Cette option vous aide à mesurer l'amélioration de votre posture en matière de sécurité et de confidentialité des données.

  4. Sélectionnez l'une des options suivantes ou les deux:

    • Taguez une ressource lorsqu'elle est profilée pour la première fois.
    • Taguez une ressource lorsque son profil est mis à jour. Sélectionnez cette option si vous souhaitez que Sensitive Data Protection écrase la valeur de la balise de niveau de sensibilité lors des prochaines exécutions de détection. Par conséquent, l'accès d'un principal à une ressource change automatiquement à mesure que le niveau de sensibilité des données calculé pour cette ressource augmente ou diminue.

      Ne sélectionnez pas cette option si vous prévoyez de mettre à jour manuellement les valeurs de balise de niveau de sensibilité que le service de découverte a associées à vos ressources. Si vous sélectionnez cette option, la protection des données sensibles peut écraser vos mises à jour manuelles.

La découverte de données sensibles peut être configurée au niveau de l'organisation, du dossier et du projet. Si vous souhaitez utiliser cette balise de niveau de sensibilité pour la découverte au niveau de l'organisation et si vous ne souhaitez pas que les opérations de découverte au niveau du projet écrasent les valeurs de balise définies par la découverte au niveau de l'organisation, assurez-vous que seul l'agent de service de la configuration de découverte au niveau de l'organisation peut associer cette balise aux ressources. Pour savoir comment attribuer un rôle au niveau des tags, consultez la section Gérer l'accès aux tags dans la documentation Resource Manager.

Résoudre les erreurs

Cette section décrit les erreurs que vous pouvez rencontrer lors de l'utilisation de cette fonctionnalité et comment les résoudre.

Nombre maximal de balises dépassé

Chaque ressource peut être associée à un maximum de 50 paires clé/valeur. Si vous tentez d'ajouter une balise à une ressource qui comporte déjà le nombre maximal de balises, la génération de profil échoue. L'erreur suivante s'affiche:

The resource RESOURCE_NAME cannot be tagged because there are
too many existing tags bound to the resource. You can either disable automatic
tagging or delete at least one tag binding from the resource.

Pour résoudre ce problème, dissociez un tag de la ressource. Pour en savoir plus, consultez les ressources suivantes :

Vous pouvez également désactiver l'action Tag resources (Taguer les ressources) dans la configuration de l'analyse de détection.

Une valeur de tag a été supprimée ou renommée, et la détection a tenté de l'associer à une ressource.

Si une valeur de tag pour le tag de niveau de sensibilité est supprimée ou renommée et que la protection des données sensibles tente d'associer cette valeur de tag à une ressource profilée, l'erreur suivante s'affiche:

Tag value TAG_VALUE not found, it has possibly been either deleted or renamed.

Pour résoudre ce problème, effectuez l'une des opérations suivantes :

  • Si le tag a été supprimé, recréez la valeur du tag supprimé. Assurez-vous que la valeur de la balise recréée correspond à celle référencée dans la configuration de l'analyse de découverte. Pour en savoir plus, consultez la section Créer une balise de niveau de sensibilité sur cette page.
  • Si la valeur de la balise a été renommée, modifiez la configuration de l'analyse de découverte pour utiliser le nouveau nom de la valeur de la balise.

Autorisations manquantes pour l'agent de service

Si l'agent de service ne dispose pas des autorisations requises pour associer le tag de niveau de sensibilité aux ressources profilées, l'erreur suivante s'affiche:

The DLP service account SERVICE_AGENT_NAME is missing
permissions needed for attaching tags to resources. Check that the role
'resourcemanager.tagUser' is granted to the DLP service account.

Pour résoudre ce problème, procédez comme suit :

  1. Obtenez l'ID de l'agent de service associé à votre configuration d'analyse de découverte:

    1. Accédez à la liste des configurations d'analyse de découverte.

      Accéder aux configurations d'analyse de découverte

    2. Sélectionnez votre configuration d'analyse.
    3. Sur la page de détails qui s'affiche, copiez l'ID de l'agent de service. Cet ID est au format d'une adresse e-mail.
  2. Attribuez à l'agent de service le rôle Utilisateur de tags (roles/resourcemanager.tagUser) sur le tag de niveau de sensibilité.

    Vous pouvez également attribuer un rôle personnalisé à la balise de niveau de sensibilité. Le rôle personnalisé doit disposer de l'autorisation resourcemanager.tagValues.get et des autorisations spécifiques aux ressources pour gérer les liaisons de balises. Vous avez besoin des autorisations createTagBinding, deleteTagBinding et listEffectiveTags spécifiques à la ressource. Par exemple, pour les tables BigQuery, vous avez besoin des éléments suivants:

    • resourcemanager.tagValues.get
    • bigquery.tables.createTagBinding
    • bigquery.tables.deleteTagBinding
    • bigquery.tables.listEffectiveTags

    Pour savoir comment attribuer un rôle au niveau des tags, consultez la section Gérer l'accès aux tags dans la documentation de Resource Manager.

Étape suivante