Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este tutorial se muestra cómo configurar políticas de control de acceso basado en atributos (ABAC) para filtros de filas y máscaras de columnas en Unity Catalog mediante la interfaz de usuario del Explorador de Catálogos. Para obtener una versión totalmente basada en SQL que también cubre el enmascaramiento condicional de correo electrónico, consulte Tutorial: Configuración de ABAC con SQL.
En este ejemplo, un equipo de análisis de EE. UU. no debe poder acceder a los registros de clientes de la UE ni a los números de seguridad social. Sin embargo, deben poder acceder a otros clientes y datos de clientes en la misma tabla. Este tutorial incluye los pasos siguientes:
- Creación de una etiqueta regulada
- Creación de un catálogo, esquema y tabla de Unity Catalog
- Aplicación de etiquetas reguladas a columnas
- Crear una UDF para ocultar datos de clientes de la UE
- Creación de una directiva de filtro de fila
- Creación de una UDF para ocultar SSN
- Crear una directiva de máscara de columna
- Selecciona tu mesa usando las políticas
Para obtener una demostración de la configuración de ABAC, consulte Descubrimiento del Control de Acceso Basado en Atributos (ABAC) con Unity Catalog.
Prerrequisitos
- Databricks Runtime 16.4 o superior, o computación sin servidor.
- Permisos de administrador de cuenta o administrador del área de trabajo (para crear etiquetas reguladas).
- Para aplicar etiquetas reguladas a columnas (paso 3): el
ASSIGNprivilegio de la etiqueta regulada (los administradores de cuentas tienen esto de forma predeterminada) y elAPPLY TAGprivilegio en la tabla de destino. - Permiso
MANAGEen el catálogo o esquema de destino. -
EXECUTEen las UDF.
El proceso que ejecuta entornos de ejecución anteriores no puede acceder a las tablas protegidas por ABAC. Como solución alternativa temporal, puede configurar ABAC para que se aplique solo a un grupo específico. Agregue los usuarios que desea restringir a ese grupo. Los usuarios que no están en el grupo todavía pueden acceder a las tablas.
Paso 1: Crear una etiqueta regulada
Para crear una etiqueta regulada, debes tener el permiso CREATE para etiquetas reguladas a nivel de cuenta. Los administradores de cuentas y áreas de trabajo tienen CREATE de forma predeterminada.
En el área de trabajo de Azure Databricks, haga clic en
Catálogo.
Haga clic en el
botón Administrar.
En el menú desplegable, haga clic en Etiquetas gobernadas.
Haga clic en Crear etiqueta regulada.
Escriba la clave de etiqueta
pii.Escriba una descripción para la etiqueta regulada.
Escriba los valores permitidos para la etiqueta :
ssnyaddress. Solo estos valores se pueden asignar a esta clave de etiqueta.
Haga clic en Crear.
Advertencia
Los datos de etiqueta se almacenan como texto sin formato y se pueden replicar globalmente. No use nombres de etiqueta, valores ni descriptores que puedan poner en peligro la seguridad de los recursos. Por ejemplo, no use nombres de etiqueta, valores o descriptores que contengan información personal o confidencial.
Paso 2: Crear la tabla de clientes
Para seguir estos pasos, debe tener el permiso de CREATE CATALOG en el metastore de Unity Catalog. También puedes crear la tabla en un esquema sobre el que tengas el permiso CREATE TABLE.
- En la barra lateral, haga clic en +Nuevo>Cuaderno.
- Seleccione
SQLcomo idioma del cuaderno. - Haga clic en Conectar y adjunte el cuaderno a un recurso de proceso.
- Agregue los siguientes comandos al cuaderno y ejecútelos:
-- Create catalog (if not already exists)
CREATE CATALOG IF NOT EXISTS abac;
USE CATALOG abac;
-- Create schema
CREATE SCHEMA IF NOT EXISTS customers;
USE SCHEMA customers;
-- Create table
CREATE TABLE IF NOT EXISTS profiles (
First_Name STRING,
Last_Name STRING,
Phone_Number STRING,
Address STRING,
SSN STRING
)
USING DELTA;
-- Insert data
INSERT INTO profiles (First_Name, Last_Name, Phone_Number, Address, SSN)
VALUES
('John', 'Doe', '123-456-7890', '123 Main St, NY', '123-45-6789'),
('Jane', 'Smith', '234-567-8901', '456 Oak St, CA', '234-56-7890'),
('Alice', 'Johnson', '345-678-9012', '789 Pine St, TX', '345-67-8901'),
('Bob', 'Brown', '456-789-0123', '321 Maple St, FL', '456-78-9012'),
('Charlie', 'Davis', '567-890-1234', '654 Cedar St, IL', '567-89-0123'),
('Emily', 'White', '678-901-2345', '987 Birch St, WA', '678-90-1234'),
('Frank', 'Miller', '789-012-3456', '741 Spruce St, WA', '789-01-2345'),
('Grace', 'Wilson', '890-123-4567', '852 Elm St, NV', '890-12-3456'),
('Hank', 'Moore', '901-234-5678', '963 Walnut St, CO', '901-23-4567'),
('Ivy', 'Taylor', '012-345-6789', '159 Aspen St, AZ', '012-34-5678'),
('Liam', 'Connor', '111-222-3333', '12 Abbey Street, Dublin, Ireland EU', '111-22-3333'),
('Sophie', 'Dubois', '222-333-4444', '45 Rue de Rivoli, Paris, France Europe', '222-33-4444'),
('Hans', 'Müller', '333-444-5555', '78 Berliner Str., Berlin, Germany E.U.', '333-44-5555'),
('Elena', 'Rossi', '444-555-6666', '23 Via Roma, Milan, Italy Europe', '444-55-6666'),
('Johan', 'Andersson', '555-666-7777', '56 Drottninggatan, Stockholm, Sweden EU', '555-66-7777');
Paso 3: Agregar etiquetas reguladas a las columnas PII
- Agregue el siguiente comando al cuaderno y ejecútelo:
-- Add the governed tag to ssn column
ALTER TABLE abac.customers.profiles
ALTER COLUMN SSN
SET TAGS ('pii' = 'ssn');
-- Add governed tag to address column
ALTER TABLE abac.customers.profiles
ALTER COLUMN Address
SET TAGS ('pii' = 'address');
Paso 4: Crear una UDF para buscar direcciones de la UE
- Agregue el siguiente comando al cuaderno y ejecútelo:
-- Determine if an address is not in the EU
CREATE OR REPLACE FUNCTION is_not_eu_address(address STRING)
RETURNS BOOLEAN
RETURN (
SELECT CASE
WHEN LOWER(address) LIKE '%eu%'
OR LOWER(address) LIKE '%e.u.%'
OR LOWER(address) LIKE '%europe%'
THEN FALSE
ELSE TRUE
END
);
Esta UDF comprueba si una cadena determinada no parece hacer referencia a Europa o a la UE. Si se encuentra alguna de estas subcadenas, devuelve FALSE (lo que significa que es una dirección de la UE). Si no se encuentra ninguna de las subcadenas, devuelve TRUE (lo que significa que no es una dirección de la UE).
Paso 5: Crear una directiva de filtro de fila
Para crear una directiva sobre un objeto, debes tener MANAGE sobre el objeto o ser el propietario del mismo.
Para añadir una UDF a una directiva, debes tener EXECUTE sobre la UDF y esta debe estar en Unity Catalog.
Haga clic en
Catálogo.
Haga clic en el
abaccatálogo que ha creado anteriormente.Haga clic en la pestaña Directivas.
Haga clic en Nueva directiva.
En general:
- En Nombre, escriba
hide_eu_customers. - En Descripción, escriba una descripción de la directiva.
- En Aplicado a..., busque y seleccione los sujetos a los que se aplica la directiva. En este ejemplo, puede usar el grupo Todos los usuarios de la cuenta.
- Deje Excepto para... en blanco.
- En Ámbito, elija el
abaccatálogo y Todos los esquemas.
- En Nombre, escriba
Para propósito, elija Ocultar filas de tabla.
En Condiciones, haga clic en Seleccionar existente. A continuación, haga clic en
Seleccione función.
En el menú Seleccionar una función , haga clic en el
abaccatálogo, elcustomersesquema yis_not_eu_addressla función que creó anteriormente.Haga clic en Seleccionar.
Opcionalmente, puedes probar tu función expandiendo la función de Prueba y proporcionando una entrada. Por ejemplo, escribir
78 Berliner Str., Berlin, Germany E.U.y hacer clic en Ejecutar prueba correctamente devuelveFALSE (Hide row).
En Parámetros de función:
- Seleccione Asignar columna a parámetro si tiene una etiqueta específica.
- Busque
pii. Seleccionepii : address.
Haga clic en Crear directiva.
Paso 6: Probar la política
- Vuelva al cuaderno y ejecute el siguiente comando:
SELECT DISTINCT * FROM abac.customers.profiles
Solo se devuelven las filas correspondientes a no residentes en la UE.
| First_Name | Apellido | Número de Teléfono | Dirección | SSN |
|---|---|---|---|---|
| Gracia | Wilson | 890-123-4567 | 852 Elm St, NV | 890-12-3456 |
| Alice | Johnson | 345-678-9012 | 789 Pine St, TX | 345-67-8901 |
| Ivy | Taylor | 012-345-6789 | 159 Aspen St, AZ | 012-34-5678 |
| Franco | Miller | 789-012-3456 | 741 Spruce St, WA | 789-01-2345 |
| Jane | Smith | 234-567-8901 | 456 Oak St, CA | 234-56-7890 |
| Juan | Coneja | 123-456-7890 | 123 Main St, NY | 123-45-6789 |
| Charlie | Davis | 567-890-1234 | 654 Cedar St, IL | 567-89-0123 |
| Emily | Blanco | 678-901-2345 | 987 Birch St, WA | 678-90-1234 |
| Hank | Moore | 901-234-5678 | 963 Walnut St, CO | 901-23-4567 |
| Bob | Marrón | 456-789-0123 | 321 Maple St, FL | 456-78-9012 |
Puede continuar creando una directiva de enmascaramiento de columnas.
Paso 7: Crear una UDF para enmascarar SSN
- Agregue el siguiente comando al cuaderno y ejecútelo:
-- Masks any SSN input by returning a fully masked value
CREATE FUNCTION mask_SSN(ssn STRING)
RETURN '***-**-****' ;
Esta UDF devuelve una cadena de número de la Seguridad Social (SSN) totalmente enmascarada (***-**-****).
Paso 8: Crear una política de máscara de columna
Para crear una directiva sobre un objeto, debes tener MANAGE sobre el objeto o ser el propietario del mismo.
Para añadir una UDF a una directiva, debes tener EXECUTE sobre la UDF y esta debe estar en Unity Catalog.
Haga clic en
Catálogo.
Haga clic en el
abaccatálogo que ha creado anteriormente.Haga clic en la pestaña Directivas.
Haga clic en Nueva directiva.
En general:
- En Nombre, escriba
mask_ssn. - En Descripción, escriba una descripción de la directiva.
- En Aplicado a..., busque y seleccione los sujetos a los que se aplica la directiva. En este ejemplo, puede usar el grupo Todos los usuarios de la cuenta.
- Deje Excepto para... en blanco.
- En Ámbito, elija el
abaccatálogo y Todos los esquemas.
- En Nombre, escriba
Para propósito, elija Enmascarar datos de columna.
En Condiciones:
- Elija Enmascarar columna si tiene una etiqueta específica. Busque
piiy seleccionepii : ssn. - Haga clic en Seleccionar existente. A continuación, haga clic en
Seleccione función.
- En el menú Seleccionar una función , haga clic en el
abaccatálogo, elcustomersesquema ymask_ssnla función que creó anteriormente.
- Elija Enmascarar columna si tiene una etiqueta específica. Busque
Haga clic en Seleccionar.
Opcionalmente, puede probar la función de enmascaramiento expandiendo la función Test y proporcionando una entrada. Por ejemplo, escribir
901-234-5678y hacer clic en Ejecutar prueba correctamente devuelve***-**-****.
Haga clic en Crear directiva.
Paso 9: Prueba tu política
- Vuelva al cuaderno y ejecute el siguiente comando:
SELECT * FROM abac.customers.profiles
Los números de la Seguridad Social (SSN) ahora se muestran como ***-**-****. Solo se muestran los residentes fuera de la UE porque también está activada la máscara de filtrado de filas.
| First_Name | Apellido | Número de Teléfono | Dirección | SSN |
|---|---|---|---|---|
| Jane | Smith | 234-567-8901 | 456 Oak St, CA | ***-**-**** |
| Alice | Johnson | 345-678-9012 | 789 Pine St, TX | ***-**-**** |
| Charlie | Davis | 567-890-1234 | 654 Cedar St, IL | ***-**-**** |
| Gracia | Wilson | 890-123-4567 | 852 Elm St, NV | ***-**-**** |
| Bob | Marrón | 456-789-0123 | 321 Maple St, FL | ***-**-**** |
| Hank | Moore | 901-234-5678 | 963 Walnut St, CO | ***-**-**** |
| Ivy | Taylor | 012-345-6789 | 159 Aspen St, AZ | ***-**-**** |
| Emily | Blanco | 678-901-2345 | 987 Birch St, WA | ***-**-**** |
| Franco | Miller | 789-012-3456 | 741 Spruce St, WA | ***-**-**** |
| Juan | Coneja | 123-456-7890 | 123 Main St, NY | ***-**-**** |