Controlar o acesso do IAM com base na sensibilidade dos dados

Esta página descreve como conceder ou negar automaticamente o acesso do Identity and Access Management (IAM) a recursos com base na sensibilidade dos dados.

É possível configurar o serviço de descoberta da Proteção de dados sensíveis para anexar tags automaticamente a recursos com base nos níveis de sensibilidade calculados desses recursos. Em seguida, use as condições do IAM para conceder ou negar acesso a um recurso com base na presença ou ausência de uma chave ou valor de tag de nível de confidencialidade.

Suponha que você queira que a equipe de dados da sua organização possa copiar e compartilhar dados do BigQuery livremente nas operações diárias. No entanto, você não sabe se algum desses dados contém informações de identificação pessoal (PII) dos seus clientes. É possível executar a descoberta para classificar os níveis de sensibilidade dos seus dados do BigQuery. Em seguida, conceda acesso condicional à equipe de dados para que ela só possa acessar tabelas do BigQuery com dados de baixa sensibilidade.

Para mais informações sobre como a Proteção de dados sensíveis calcula a sensibilidade dos dados, consulte Níveis de risco e sensibilidade de dados.

Para mais informações sobre como usar tags para controlar o acesso a recursos, consulte Tags e acesso condicional na documentação do IAM. Para informações gerais sobre tags, consulte a Visão geral das tags na documentação do Resource Manager.

Tag de nível de sensibilidade

Este documento usa o termo tag de nível de sensibilidade para se referir a uma tag que você anexa automaticamente a um recurso para indicar o nível de sensibilidade calculado dos dados nesse recurso.

Vantagens

Com esse recurso, você pode:

  • Automatize o controle de acesso em vários recursos com suporte com base em atributos e classificações dos dados nesses recursos. Automation ajuda você a acompanhar o crescimento e as mudanças nos dados da sua organização, pastas e projetos.
  • Restrinja o acesso aos recursos compatíveis até que eles sejam classificados e classificados pela Proteção de dados sensíveis. Essa prática está de acordo com o princípio de segurança por padrão.
  • Configure a descoberta para atualizar o valor da tag do nível de confidencialidade sempre que ela criar o perfil dos seus dados. Consequentemente, o acesso de um principal a um recurso muda automaticamente conforme o nível de sensibilidade de dados calculado para esse recurso muda.
  • Configure a descoberta para diminuir o nível de risco de dados calculado em um recurso se ela detectar que uma tag de nível de sensibilidade está presente nesse recurso. Essa opção ajuda a medir a melhoria na postura de segurança e privacidade dos dados.

Recursos suportados

Com esse recurso, a Proteção de dados sensíveis codifica automaticamente os dados nos seguintes níveis:

  • tabelas do BigQuery
  • Instâncias do Cloud SQL
  • Buckets do Cloud Storage

Como funciona

Confira a seguir um fluxo de trabalho de alto nível para controlar o acesso a recursos com base na sensibilidade dos dados. Essas tarefas não precisam ser realizadas pela mesma pessoa.

  1. Criar uma tag de nível de confidencialidade
  2. Conceder acesso condicional a recursos com base no valor da tag de nível de sensibilidade
  3. Ativar a codificação automática na configuração de detecção
  4. Conceder permissão ao agente de serviço para anexar a tag de nível de sensibilidade aos recursos

Permissões necessárias

As permissões necessárias dependem da ação que você precisa realizar.

Para receber essas permissões, peça ao administrador para conceder o papel sugerido no nível apropriado da hierarquia de recursos.

Permissões para administrar tags

Consulte Administrar tags na documentação do Resource Manager.

Permissões para conceder acesso condicional a recursos

Consulte Funções necessárias na documentação do IAM.

Permissões para configurar a descoberta

Consulte Papéis necessários para configurar e visualizar perfis de dados.

Criar uma tag de nível de sensibilidade

Nesta tarefa, você vai criar uma chave de tag com valores que são mapeados para os níveis de sensibilidade de dados que a Proteção de dados sensíveis usa para classificar seus dados. Por exemplo, é possível usar a chave e os valores de tag a seguir.

  1. Defina a chave da tag como sensitivity-level.
  2. Defina os seguintes valores de tag:

    low
    Valor da tag a ser anexado a dados de baixa sensibilidade
    moderate
    Valor da tag a ser anexado a dados de sensibilidade moderada
    high
    Valor da tag a ser anexado a dados de alta sensibilidade

    Também é possível criar um valor de tag para recursos com um nível de confidencialidade desconhecido. Como alternativa, é possível reutilizar qualquer um dos valores de tag low, medium ou high para esses recursos.

  3. Observe o seguinte. Você vai precisar deles na próxima tarefa:

    • ID da chave de tag, por exemplo, tagKeys/281478077849901
    • Valores de chaves de tag, por exemplo, tagValues/281479490918432
    • Caminhos de valor da tag, por exemplo, example-project/tag-key/tag-value1

Para simplificar, este exemplo define um mapeamento um a um entre um valor de tag e um nível de sensibilidade. Na prática, você pode personalizar os valores das tags de acordo com as necessidades da sua empresa. Por exemplo, você pode usar valores como confidential, PII ou SPII (PII sensível).

A descoberta de dados sensíveis pode ser configurada no nível da organização, da pasta e do projeto. Se você pretende usar essa tag de nível de sensibilidade para a descoberta no nível da organização ou da pasta, recomendamos criar essa tag no nível da organização.

Para saber como criar uma tag, consulte Criar e gerenciar tags na documentação do Resource Manager.

Conceder acesso condicional a recursos com base no valor da tag do nível de sensibilidade

Nesta tarefa, você concede um papel a um principal somente se a tag do nível de sensibilidade anexada ao recurso tiver um valor específico. Por exemplo, é possível conceder um acesso principal somente a dados com valores de tag moderate e low.

Esta seção apresenta exemplos de condições formatadas para uso com o editor de condições. O editor de condições fornece uma interface baseada em texto para inserir manualmente uma expressão usando a sintaxe CEL. Para saber como anexar condições do IAM a vinculações de função, consulte Gerenciar vinculações de função condicionais na documentação do IAM.

Esses exemplos seguem o modelo de inclusão de tags definido em Criar uma tag de nível de confidencialidade nesta página.

Conceder acesso a dados de baixa sensibilidade

Neste exemplo, você concede acesso a um recurso se ele contém apenas dados de baixa sensibilidade. Também é possível usar esse exemplo para restringir todo o acesso ao recurso até que a descoberta de dados sensíveis seja executada nele.

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

Substitua:

  • SENSITIVITY_LEVEL_TAG_KEY: o ID numérico da chave da tag do nível de sensibilidade que você criou.
  • TAG_VALUE_FOR_LOW_SENSITIVITY: o ID numérico do valor da tag que você criou para dados de baixa sensibilidade

Conceder acesso a pessoas autorizadas apenas a dados de sensibilidade moderada e baixa

Neste exemplo, você concede acesso a um recurso se ele contém apenas dados de sensibilidade moderada ou baixa. Há um operador OR entre as duas condições.

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")

Substitua:

  • SENSITIVITY_LEVEL_TAG_KEY: o ID numérico da chave da tag do nível de sensibilidade que você criou.
  • TAG_VALUE_FOR_LOW_SENSITIVITY: o ID numérico do valor da tag que você criou para dados de baixa sensibilidade
  • TAG_VALUE_FOR_MODERATE_SENSITIVITY: o ID numérico do valor da tag que você criou para dados de sensibilidade moderada

Conceder acesso a pessoas autorizadas somente se a tag de nível de sensibilidade estiver presente

Isso é útil, por exemplo, se você quiser definir uma política da organização que exija que todo o acesso do IAM seja condicional com base na presença de uma tag de nível de sensibilidade. Também é possível usar esse exemplo para restringir todo o acesso ao recurso até que a descoberta de dados sensíveis seja executada nele.

resource.hasTagKeyId("tagKeys/SENSITIVITY_LEVEL_TAG_KEY")

Substitua SENSITIVITY_LEVEL_TAG_KEY pelo ID numérico da chave de tag de nível de sensibilidade que você criou.

Exemplos de políticas de negação

Para saber como formar uma política de negação para uso com uma tag de recurso, consulte Estrutura de uma política de negação. Para uma lista de permissões com suporte, consulte Permissões compatíveis com políticas de negação.

Negar acesso se não houver uma tag de nível de sensibilidade

O trecho a seguir de uma política de negação nega a permissão bigquery.googleapis.com/tables.get se o recurso não tiver a tag de nível de sensibilidade.

  "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")"
        }
      }
    }
  ]

Substitua SENSITIVITY_LEVEL_TAG_KEY pelo ID numérico da chave de tag de nível de sensibilidade que você criou.

Negar acesso se houver dados de sensibilidade moderada ou alta

O trecho a seguir de uma política de negação nega a permissão bigquery.googleapis.com/tables.get se o recurso tiver dados de sensibilidade moderada ou alta.

  "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")"
        }
      }
    }
  ]

Substitua:

  • SENSITIVITY_LEVEL_TAG_KEY: o ID numérico da chave da tag do nível de sensibilidade que você criou.
  • TAG_VALUE_FOR_MODERATE_SENSITIVITY: o ID numérico do valor da tag que você criou para dados de sensibilidade moderada
  • TAG_VALUE_FOR_HIGH_SENSITIVITY: o ID numérico do valor da tag que você criou para dados de alta sensibilidade

Ativar a inclusão automática de tag na configuração de descoberta

Nesta tarefa, você vai ativar a ação Marcar recursos. Essa ação orienta a Proteção de dados sensíveis a marcar automaticamente seus dados de acordo com o nível de sensibilidade calculado. Você realiza essa tarefa ao criar ou editar uma configuração de verificação de descoberta.

Para marcar automaticamente um recurso de acordo com o nível de sensibilidade calculado, siga estas etapas:

  1. Ative a opção Tag resources.
  2. Para cada nível de sensibilidade (alto, moderado, baixo e desconhecido), insira o caminho do valor da tag que você criou para o nível de sensibilidade.

    Se você pular um nível de confidencialidade, nenhuma tag será anexada a ele.

  3. Para diminuir automaticamente o nível de risco de dados de um recurso quando a tag de nível de sensibilidade estiver presente, selecione Quando uma tag for aplicada a um recurso, diminua o risco de dados do perfil para BAIXO. Essa opção ajuda a medir a melhoria na postura de segurança e privacidade dos dados.

  4. Selecione uma ou ambas as opções a seguir:

    • Marcar um recurso quando ele receber um perfil pela primeira vez.
    • Marcar um recurso quando o perfil dele for atualizado. Selecione essa opção se quiser que a Proteção de Dados Sensíveis substitua o valor da tag do nível de sensibilidade nas próximas execuções de descoberta. Consequentemente, o acesso de um principal a um recurso muda automaticamente conforme o nível de sensibilidade de dados calculado para esse recurso aumenta ou diminui.

      Não selecione essa opção se você planeja atualizar manualmente os valores da tag de nível de sensibilidade que o serviço de descoberta anexou aos seus recursos. Se você selecionar essa opção, a Proteção de dados sensíveis poderá substituir as atualizações manuais.

A descoberta de dados sensíveis pode ser configurada no nível da organização, da pasta e do projeto. Se você pretende usar essa tag de nível de sensibilidade para a descoberta no nível da organização e não quer que as operações de descoberta no nível do projeto sobrescrevam os valores de tag definidos pela descoberta no nível da organização, verifique se apenas o agente de serviço da configuração de descoberta no nível da organização pode anexar essa tag aos recursos. Para saber como conceder um papel no nível da tag, consulte Como gerenciar o acesso a tags na documentação do Resource Manager.

Solucionar erros

Esta seção descreve os erros que podem ocorrer ao usar esse recurso e como resolvê-los.

O número máximo de tags foi excedido

Cada recurso pode ter no máximo 300 pares de chave-valor anexados. A tentativa de marcar um recurso que já tem o número máximo de tags faz com que a geração de perfil falhe. Você recebe o seguinte erro:

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.

Para resolver esse problema, remova uma tag do recurso. Para ver mais informações, consulte os seguintes tópicos:

Outra opção é desativar a ação Marcar recursos na configuração de verificação de descoberta.

Um valor de tag foi excluído ou renomeado, e a descoberta tentou anexá-lo a um recurso

Se um valor de tag para a tag de nível de confidencialidade for excluído ou renomeado e a Proteção de dados sensíveis tentar anexar esse valor a um recurso com perfil, você vai receber o seguinte erro:

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

Para resolver esse problema, faça uma das seguintes ações:

  • Se a tag foi excluída, recrie o valor dela. Verifique se o valor da tag recriada corresponde ao valor da tag referenciado na configuração da verificação de descoberta. Para mais informações, consulte Criar uma tag de nível de sensibilidade nesta página.
  • Se o valor da tag tiver sido renomeado, atualize a configuração da verificação de descoberta para usar o novo nome do valor da tag.

O agente de serviço não tem permissões

Se o agente de serviço não tiver as permissões necessárias para anexar a tag de nível de sensibilidade aos recursos de perfil, você vai receber o seguinte erro:

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.

Para resolver o problema, siga estas etapas:

  1. Use o ID do agente de serviço associado à configuração de verificação de descoberta:

    1. Acesse a lista de configurações de verificação de descoberta.

      Acessar as configurações de verificação de descoberta

    2. Selecione a configuração de verificação.
    3. Na página exibida, copie o ID do agente de serviço. Esse ID está no formato de um endereço de e-mail.
  2. Conceda ao agente de serviço o papel de usuário da tag (roles/resourcemanager.tagUser) na tag do nível de sensibilidade.

    Como alternativa, é possível conceder um papel personalizado na tag do nível de sensibilidade. A função personalizada precisa ter a permissão resourcemanager.tagValues.get e as permissões específicas do recurso para gerenciar vinculações de tags. Você precisa das permissões createTagBinding, deleteTagBinding e listEffectiveTags específicas do recurso. Por exemplo, para tabelas do BigQuery, você precisa do seguinte:

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

    Para saber como conceder um papel no nível da tag, consulte Como gerenciar o acesso a tags na documentação do Resource Manager.

A seguir

  • Crie ou edite uma configuração de verificação.