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.
Importante
Esta característica está en versión preliminar pública.
En este tutorial se presenta cómo configurar políticas de control de acceso basado en atributos (ABAC) para filtro de fila y máscara de columna en Unity Catalog.
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 seguro 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 los datos del miembro de la UE
- Creación de una directiva de filtro de fila
- Creación de una UDF para ocultar SSN
- Crear una política de máscara de columna
- Selecciona tu mesa usando las políticas
Para obtener una demostración de la configuración de ABAC, consulte Discover Attribute-Based Access Control (ABAC) with Unity Catalog (Detección de Attribute-Based Access Control (ABAC) con Unity Catalog.
Requisitos de proceso
- Debe usar el proceso en Databricks Runtime 16.4 o superior.
- El proceso sin servidor siempre funciona con ABAC.
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, debe tener el permiso CREATE de etiqueta regulada en el 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 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 puede crear la tabla en un esquema donde tenga 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 en un objeto, debe tener MANAGE en el objeto o la propiedad del objeto.
Para agregar una UDF a una directiva, debe tener EXECUTE en la UDF y debe estar en el catálogo de Unity.
Haga clic en
Catálogo.
Haga clic en el
abaccatálogo que creó 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 principales a los que se aplica la política. 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, puede probar la función de enmascaramiento expandiendo la función Test 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:
- Elija Asignar columna al 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 |
| Hiedra | Taylor | 012-345-6789 | 159 Aspen St, AZ | 012-34-5678 |
| Franco | Molinero | 789-012-3456 | 741 Spruce St, WA | 789-01-2345 |
| Jane | Herrero | 234-567-8901 | 456 Oak St, CA | 234-56-7890 |
| Juan | Cierva | 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 |
| Madeja | Moore | 901-234-5678 | 963 Nogal St, CO | 901-23-4567 |
| Bob | Marrón | 456-789-0123 | 321 Maple St, FL | 456-78-9012 |
Puede continuar creando una política de máscara de columna.
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 SSN totalmente enmascarada ('***-**-***'),
Paso 8: Crear una política de máscara de columna
Para crear una directiva en un objeto, debe tener MANAGE en el objeto o la propiedad del objeto.
Para agregar una UDF a una directiva, debe tener EXECUTE en la UDF y debe estar en el catálogo de Unity.
Haga clic en
Catálogo.
Haga clic en el
abaccatálogo que creó 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 principales a los que se aplica la política. 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 SSNs ahora se devuelven como ***-***-***. Solo se devuelven residentes que no son de la UE porque la máscara de filtro de fila también está habilitada.
| First_Name | Apellido | Número de Teléfono | Dirección | SSN |
|---|---|---|---|---|
| Jane | Herrero | 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 | ***-**-**** |
| Madeja | Moore | 901-234-5678 | 963 Nogal St, CO | ***-**-**** |
| Hiedra | Taylor | 012-345-6789 | 159 Aspen St, AZ | ***-**-**** |
| Emily | Blanco | 678-901-2345 | 987 Birch St, WA | ***-**-**** |
| Franco | Molinero | 789-012-3456 | 741 Spruce St, WA | ***-**-**** |
| Juan | Cierva | 123-456-7890 | 123 Main St, NY | ***-**-**** |