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 IAM (Identity and Access Management) aux ressources en fonction de la sensibilité des données qu'elles contiennent.

Vous pouvez configurer le service de découverte de la protection des données sensibles pour qu'il associe automatiquement des tags aux ressources en fonction de leur niveau de sensibilité calculé. 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 de 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 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. Ensuite, accordez l'accès à l'équipe de données de manière conditionnelle, de sorte qu'elle ne puisse accéder qu'aux tables BigQuery contenant des données peu sensibles.

Pour en savoir plus sur la façon dont Sensitive Data Protection calcule la sensibilité des données, consultez Niveaux de sensibilité et de risques liés aux données.

Pour en savoir plus sur l'utilisation des tags pour contrôler l'accès aux ressources, consultez Tags et accès conditionnel dans la documentation IAM. Pour obtenir des informations générales sur les tags, consultez la présentation des tags dans la documentation Resource Manager.

Tag de niveau de sensibilité

Dans ce document, le terme tag de niveau de sensibilité désigne un tag que vous associez 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 à 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 dans votre organisation, vos dossiers et vos projets.
  • Limitez l'accès aux ressources compatibles jusqu'à ce qu'elles soient profilées et classées par Sensitive Data Protection. Cette pratique est conforme au principe de sécurité par défaut.
  • Configurez la découverte pour mettre à jour la valeur du tag de niveau de sensibilité chaque fois qu'elle profile 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 abaisser le niveau de risque de données calculé sur une ressource si la découverte détecte qu'un tag de niveau de sensibilité est présent sur cette ressource. Cette option vous aide à mesurer l'amélioration de la sécurité et de la confidentialité de vos données.

Ressources compatibles

Grâce à 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 nécessairement ê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. Autoriser l'agent de service à 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 Administrer les tags dans la documentation Resource Manager.

Autorisations pour accorder un accès conditionnel aux ressources

Consultez la section Rôles requis de la documentation IAM.

Autorisations pour configurer la découverte

Consultez 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 tag avec des valeurs de tag 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 tag suivantes.

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

    low
    Valeur du tag à associer aux données de sensibilité faible
    moderate
    Valeur du tag à associer aux données de sensibilité modérée
    high
    Valeur du tag à associer aux données de sensibilité élevée

    Vous pouvez également créer une valeur de tag pour les ressources dont le niveau de sensibilité est inconnu. Vous pouvez également réutiliser l'une des 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 clés des tags (par exemple, tagValues/281479490918432)
    • Chemins d'accès de la valeur du tag (par exemple, example-project/tag-key/tag-value1)

Pour plus de simplicité, cet exemple définit un mappage un-à-un entre une valeur de tag et un niveau de sensibilité. Dans la 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 des données sensibles peut être configurée au niveau de l'organisation, du dossier et du projet. Si vous prévoyez d'utiliser ce tag de niveau de sensibilité pour la découverte au niveau de l'organisation ou du dossier, nous vous recommandons de le créer au niveau de l'organisation.

Pour savoir comment créer un tag, consultez 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 le tag de niveau de sensibilité associé à la ressource a une valeur spécifique. Par exemple, vous pouvez accorder à un principal l'accès aux données portant les valeurs de tag moderate et low uniquement.

Cette section fournit des exemples de conditions formatées pour être utilisées avec l'éditeur de conditions. L'é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 à des liaisons de rôles, consultez Gérer les liaisons de rôles conditionnelles dans la documentation IAM.

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

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

Dans cet exemple, vous accordez l'accès à une ressource si elle ne contient que des données à sensibilité faible. Vous pouvez également utiliser cet exemple pour restreindre tout accès à la ressource jusqu'à ce que la découverte des 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 l'accès aux données de sensibilité modérée et faible uniquement

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'il existe un opérateur OR 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 comptes principaux que si le tag de niveau de sensibilité est présent

Cela peut être utile, par exemple, si vous souhaitez définir une règle 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 tout accès à la ressource jusqu'à ce que la découverte des 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é du tag de niveau de sensibilité que vous avez créée.

Exemples de règles de refus

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

Refuser l'accès si aucun tag de niveau de sensibilité n'est présent

L'extrait suivant d'une règle de refus refuse l'autorisation bigquery.googleapis.com/tables.get si la ressource ne possède pas le 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 tag 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 à sensibilité élevée

Activer le taggage automatique dans la configuration de découverte

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

Pour taguer automatiquement 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 à la valeur du tag que vous avez créé pour le niveau de sensibilité concerné.

    Si vous ignorez un niveau de sensibilité, aucun tag ne lui est associé.

  3. Pour abaisser automatiquement le niveau de risque des données d'une ressource lorsque le tag de niveau de sensibilité est présent, sélectionnez Lorsqu'un tag est appliqué à une ressource, réduire le risque des données de son profil à FAIBLE. Cette option vous permet de mesurer l'amélioration de votre niveau de sécurité et de confidentialité des données.

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

    • Taguer une ressource lorsqu'elle est profilée pour la première fois.
    • Taguer une ressource lorsque son profil est mis à jour. Sélectionnez cette option si vous souhaitez que Sensitive Data Protection remplace la valeur du tag de niveau de sensibilité lors des analyses de découverte suivantes. 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 des libellés de niveau de sensibilité que le service de découverte a associés à vos ressources. Si vous sélectionnez cette option, Sensitive Data Protection peut écraser vos mises à jour manuelles.

La découverte des données sensibles peut être configurée au niveau de l'organisation, du dossier et du projet. Si vous prévoyez d'utiliser ce tag de niveau de sensibilité pour la découverte au niveau de l'organisation et que vous ne souhaitez pas que les opérations de découverte au niveau du projet écrasent les valeurs de tag 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 ce tag aux ressources. Pour savoir comment attribuer un rôle au niveau du tag, consultez 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 lorsque vous utilisez cette fonctionnalité et comment les résoudre.

Nombre maximal de tags dépassé

Chaque ressource peut être associée à un maximum de 50 paires clé/valeur. Si vous tentez d'ajouter un tag à une ressource qui a déjà atteint le nombre maximal de tags, la génération du profil échoue. Vous obtenez l'erreur suivante :

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 votre analyse de détection.

Une valeur de tag a été supprimée ou renommée, et la découverte 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 Sensitive Data Protection 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 de tag supprimée. Assurez-vous que la valeur de tag recréée correspond à celle référencée dans la configuration de votre analyse de découverte. Pour en savoir plus, consultez Créer un tag de niveau de confidentialité sur cette page.
  • Si la valeur du tag a été renommée, mettez à jour la configuration de l'analyse de découverte pour utiliser le nouveau nom de la valeur du tag.

L'agent de service ne dispose pas des autorisations requises

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. Dans la barre d'outils, sélectionnez votre organisation.
    3. Sélectionnez votre configuration d'analyse.
    4. Sur la page Détails de la configuration de l'analyse, copiez la valeur du champ Agent de service. L'ID de l'agent de service se présente sous la forme d'une adresse e-mail.
  2. Attribuez le rôle Utilisateur de tags (roles/resourcemanager.tagUser) à l'agent de service pour le tag de niveau de sensibilité.

    Vous pouvez également attribuer un rôle personnalisé au tag de niveau de sensibilité. Le rôle personnalisé doit disposer de l'autorisation resourcemanager.tagValues.get et d'autorisations spécifiques aux ressources pour gérer les liaisons de tags. 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 Gérer l'accès aux tags dans la documentation de Resource Manager.

Étapes suivantes