Controlar o acesso do IAM com base na sensibilidade dos dados

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

É possível configurar o serviço de descoberta da Proteção de dados sensíveis para anexar tags automaticamente aos recursos com base nos níveis de sensibilidade calculados deles. 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 sensibilidade.

Suponha que você queira que a equipe de dados da sua organização possa copiar e compartilhar livremente dados do BigQuery 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 o uso de 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

Neste documento, usamos 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, é possível:

  • Automatize o controle de acesso em vários recursos compatíveis com base nos 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 criados e classificados pela proteção de dados sensíveis. Essa prática está de acordo com o princípio seguro por padrão.
  • Configure a descoberta para atualizar o valor da tag de nível de sensibilidade sempre que ela criar um perfil dos seus dados. Como consequência, o acesso de um principal a um recurso muda automaticamente à medida que o nível de sensibilidade dos 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 nele. Essa opção ajuda a medir a melhoria na sua postura de segurança e privacidade de dados.

Recursos suportados

Com esse recurso, a Proteção de dados sensíveis marca 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 sensibilidade
  2. Conceder acesso condicional a recursos com base no valor da tag de nível de sensibilidade
  3. Ativar a inclusão automática de tags na configuração de descoberta
  4. Conceda ao agente de serviço permissã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 obrigató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 mapeiam os níveis de sensibilidade de dados que a Proteção de Dados Sensíveis usa para classificar seus dados. Por exemplo, você pode usar a seguinte chave e valores de tag.

  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 sensibilidade desconhecido. Como alternativa, é possível reutilizar qualquer um dos valores de tag low, medium ou high para esses recursos.

  3. Observações: Você vai precisar destas informações na próxima tarefa:

    • ID da chave de tag. Por exemplo, tagKeys/281478077849901
    • Valores de chave 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 individual entre um valor de tag e um nível de sensibilidade. Na prática, você pode personalizar os valores de tag 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 nos níveis da organização, da pasta e do projeto. Se você pretende usar essa tag de nível de sensibilidade para descoberta no nível da organização ou da pasta, recomendamos que você crie essa tag no nível da organização.

Para informações sobre como criar uma tag, consulte Como criar e gerenciar tags na documentação do Resource Manager.

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

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

Nesta seção, apresentamos 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 informações sobre como anexar condições do IAM a vinculações de papéis, consulte Gerenciar vinculações de papéis 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 sensibilidade nesta página.

Conceder acesso a principais apenas dados de baixa sensibilidade

Neste exemplo, você concede acesso a um recurso se ele contiver apenas dados de baixa sensibilidade. Você também pode usar este 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 de 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 aos principais acesso apenas a dados de sensibilidade moderada e baixa

Neste exemplo, você concede acesso a um recurso se ele contiver apenas dados com 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 de 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 aos principais 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. Você também pode usar este 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 informações sobre como criar 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 compatíveis, consulte Permissões compatíveis com políticas de negação.

Negar o 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 de 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

Ative a inclusão automática de tags na configuração de descoberta

Nesta tarefa, você vai ativar a ação Adicionar tags aos recursos. Essa ação instrui 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 adicionar uma tag automática a um recurso de acordo com o nível de sensibilidade calculado, siga estas etapas:

  1. Ative a opção Marcar recursos.
  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 em questão.

    Se você pular um nível de sensibilidade, 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 é aplicada a um recurso, diminua o risco de dados do perfil para BAIXO. Essa opção ajuda a medir a melhoria na sua postura de segurança e privacidade de dados.

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

    • Aplicar tag a um recurso quando ele recebe um perfil pela primeira vez.
    • Aplicar tag a um recurso quando o perfil é atualizado. Selecione esta opção se quiser que a Proteção de Dados Sensíveis substitua o valor da tag de nível de sensibilidade nas execuções de descoberta subsequentes. Como resultado, o acesso de um principal a um recurso muda automaticamente à medida que o nível de sensibilidade dos dados calculado para esse recurso aumenta ou diminui.

      Não selecione essa opção se você planeja atualizar manualmente os valores de 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 suas atualizações manuais.

A descoberta de dados sensíveis pode ser configurada nos níveis da organização, da pasta e do projeto. Se você pretende usar essa tag de nível de sensibilidade para descoberta no nível da organização e não quer que as operações de descoberta no nível do projeto substituam 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 informações sobre como conceder um papel no nível da tag, consulte 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ê vai receber 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:

Ou desative a ação Recursos de tag 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 sensibilidade 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 foi renomeado, atualize a configuração da verificação de descoberta para usar o novo nome.

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 analisados, 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. Na barra de ferramentas, selecione sua organização.
    3. Selecione a configuração de verificação.
    4. Na página Detalhes da configuração da verificação, copie o valor do campo Agente de serviço. O ID do agente de serviço 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 de nível de sensibilidade.

    Como alternativa, é possível conceder um papel personalizado na tag de nível de sensibilidade. A função personalizada precisa ter a permissão resourcemanager.tagValues.get e permissões específicas do recurso para gerenciar vinculações de tags. Você precisa ter as 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 informações sobre como conceder um papel no nível da tag, consulte Gerenciar o acesso a tags na documentação do Resource Manager.

A seguir

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