Referência de tabela do sistema de classificação de dados
Esta página descreve o esquema da tabela de resultados da classificação de dados e inclui consultas de exemplo. A tabela armazena detecções para classes de dados confidenciais no nível da coluna em catálogos habilitados no seu metastore.
Caminho da tabela : system.data_classification.results
Não aplique um filtro de linha ou máscara de coluna no nível da tabela (configurado diretamente na tabela com ALTER TABLE ... SET ROW FILTER ou ALTER TABLE ... ALTER COLUMN ... SET MASK) à tabela system.data_classification.results. A classificação de dados gerencia as gravações nesta tabela, e um filtro de linha ou máscara de coluna no nível da tabela irá interferir no sistema e falhará na verificação.
Essa limitação se aplica apenas a filtros de linha e máscaras de coluna em nível de tabela. As políticas ABAC não afetam as verificações e não são bloqueadas.
Esquema da tabela de resultados da classificação de dados
A tabela do sistema de resultados de classificação de dados usa o seguinte esquema:
Nome da coluna | Tipo de dados | Descrição | Exemplo |
|---|---|---|---|
| carimbo de data/hora | No momento em que a coluna foi escaneada mais recentemente. |
|
| carimbo de data/hora | Horário em que a detecção da coluna foi registrada pela primeira vez. |
|
| string | ID do catálogo. |
|
| string | ID da tabela. |
|
| string | Nome do catálogo. |
|
| string | Nome do esquema. |
|
| string | Nome da tabela. |
|
| string | Nome da coluna. |
|
| string | Tipo de dados da coluna. Tipos complexos incluem definições de struct completas. |
|
| string | tag para a entidade detectada ou key tag e valor opcional. |
|
|
| Até cinco valores de amostra que corresponderam à detecção. |
|
| string | Confiança de detecção. Ou |
|
| Float | Estimativa da proporção de linhas correspondentes na amostra. Entre 0 e 1. |
|
Consultas de exemplo
Substitua os valores dos parâmetros pelos seus antes de executar.
Obter todas as detecções para uma tabela
SELECT *
FROM system.data_classification.results
WHERE
catalog_name = "c"
AND schema_name = "s"
AND table_name = "t";
Obtenha todas as detecções de alta confiança
SELECT *
FROM system.data_classification.results
WHERE
catalog_name = "c"
AND schema_name = "s"
AND table_name = "t"
AND confidence = "HIGH";
Obter o número de tabelas impactadas por uma classificação específica
SELECT
class_tag,
COUNT(DISTINCT catalog_name, schema_name, table_name) AS num_tables
FROM
system.data_classification.results
WHERE
class_tag IS NOT NULL
GROUP BY class_tag;
Obtenha o número de usuários que consultaram tabelas com dados confidenciais nos últimos 30 dias
WITH table_accesses AS (
SELECT
IFNULL(
request_params.full_name_arg,
CONCAT(request_params.catalog_name, '.', request_params.schema_name, '.', request_params.name)
) AS table_full_name,
COUNT(DISTINCT user_identity.email) AS num_users
FROM
system.access.audit
WHERE
action_name IN ("createTable", "getTable", "updateTable", "deleteTable")
AND (
-- For performance, limit the blast radius of the audit log query to only the current catalog
request_params.catalog_name = :catalog_name OR
request_params.full_name_arg LIKE :catalog_name || '%'
)
AND event_time >= DATE_SUB(current_date(), 30)
GROUP BY table_full_name
),
sensitive_tables AS (
SELECT
DISTINCT CONCAT(catalog_name, '.', schema_name, '.', table_name) AS table_full_name
FROM
system.data_classification.results
WHERE class_tag IS NOT NULL
)
SELECT
st.table_full_name,
ta.num_users
FROM
sensitive_tables st
JOIN table_accesses ta
ON st.table_full_name = ta.table_full_name