Ejemplo de cifrado de nivel de columna de SQL Server mediante SQL Complete

El artículo proporciona una descripción general del cifrado de SQL Server a nivel de columna, incluida la definición de la función Always Encrypted, las claves que utiliza y sus tipos, y describe cómo habilitar Always Encrypted y configurar COLUMN GASTER KEY y COLUMN ENCRYPTION KEY en dbForge. .

Índice

    Introducción

    En términos de mejorar la seguridad de los datos y evitar el acceso no autorizado, todas las empresas están haciendo todo lo posible para cuidar los datos de los clientes, como números de tarjetas de crédito, credenciales, números de seguro social, historial financiero, etc. Normalmente, esta información se almacena en bases de datos. Para conservar datos importantes y evitar la piratería de datos, puede utilizar el cifrado para conexiones, datos, bases de datos, tablas y columnas.

    En SQL Server, existen varios enfoques de cifrado aplicados a nivel de columna y base de datos, que incluyen certificados, claves asimétricas y claves simétricas, algoritmos de cifrado, cifrado de base de datos transparente, siempre cifrado y enmascaramiento dinámico de datos. Por ejemplo, mediante el cifrado de la base de datos, se puede cifrar y descifrar toda la base de datos y todos los archivos de registro, tablas y vistas relacionados. Con el cifrado a nivel de columna, solo se pueden cifrar o descifrar los datos de una columna de la tabla.

    Que siempre está encriptado

    Always Encrypted es una función que se utiliza para administrar las claves de cifrado y descifrado en el lado del cliente para mantener seguros los datos confidenciales en las bases de datos de SQL Server. Esto le permite controlar el acceso a sus datos confidenciales y limitar la posible pérdida de datos. Puede configurar la función Always Encrypted para las columnas de la base de datos especificando claves y algoritmos de cifrado.

    Always Encrypted utiliza dos claves de cifrado para proteger los datos:

    • Una clave de cifrado de columna (CEK) que cifra los datos en una columna cifrada.
    • Una clave maestra de columna (CMK) que cifra una clave de cifrado de columna. Debe existir al menos una clave maestra para cifrar columnas.

    Always Encrypted admite dos tipos de cifrado de claves:

    • Determinista, que genera el mismo valor cifrado para cualquier valor de texto sin formato. Esto le permite utilizar búsquedas de puntos, combinaciones de igualdad, agrupación, filtrado e indexación por columnas de tablas cifradas.
    • Random, que genera diferentes valores cifrados para un mismo valor de texto sin formato. Esto evita el uso de agregación, agrupación, búsqueda e indexación en columnas de tablas cifradas.

    Para continuar, exploraremos cómo los usuarios pueden habilitar el cifrado siempre para una base de datos y crear columnas maestras y claves de cifrado de columnas utilizando dbForge SQL Complete.

    Configurar Always Encrypted con SQL Complete

    Para configurar el cifrado a nivel de columna usando SQL Complete, seguimos estos pasos:

    1. Cree una nueva base de datos y tabla.
    2. Inserta columnas con valores en la tabla.
    3. Obtenga los datos de la tabla.
    4. Cree una clave maestra de columna.
    5. Cree una clave de cifrado de columna.
    6. Cifre las columnas de la tabla creada.

    Paso 1: Cree una nueva base de datos y tabla.

    En esta etapa estamos creando Tienda base de datos y Persona tabla mediante las sentencias CREATE Base de datos y CREATE TABLE, respectivamente. Para hacer esto, ejecute el siguiente script:

    CREATE Base de datos Shop;
    
    USE Shop
    
    CREATE TABLE Person (
        PersonId INT IDENTITY (1, 1) PRIMARY KEY
       ,Name VARCHAR(100)
       ,Password VARCHAR(6) COLLATE Latin1_General_BIN2 not null
       ,SSN VARCHAR(11) COLLATE Latin1_General_BIN2 not null
    );

    El guión crea Persona una tabla que contiene cuatro columnas: PersonID, Name, Password y SSN, y define la clave principal en la columna PersonID. Además, aplicamos asignaciones a dos columnas de la tabla: Contraseña y SSN. Para habilitar las columnas siempre cifradas, debe especificar la cláusula COLLATE. también determina Latin1_General_BIN2 valor como un tipo de cifrado.

    Paso 2: Inserta columnas con valores en la tabla.

    Ahora agregue los datos en Persona tabla ejecutando el siguiente script:

    INSERT INTO Person (Name, Password, SSN) 
    VALUES ('James', 'dxv4cL', '417-86-5080'), 
           ('Emily', 'trv5cN', '247-13-2079');

    El script inserta dos filas con valores para las columnas Nombre, Contraseña y SSN.

    Paso 3: Obtenga los datos de la tabla.

    En esta etapa, obtenga los datos del archivo Persona tabla ejecutando la sentencia SELECT:

    SELECT * FROM Person;

    La salida es la siguiente:

    Como puede ver, la tabla muestra los datos reales sin encriptación.

    Paso 4: Cree la clave maestra de columna.

    En este punto, usamos la instrucción CREATE COLUMN MASTER KEY para crear la clave maestra de columna:

    CREATE COLUMN MASTER KEY MyCMK
    WITH
    (
        KEY_STORE_PROVIDER_NAME = N'MSSQL_CERTIFICATE_STORE',
        KEY_PATH = N'CurrentUser/my/215BE046B1650F033DD1742BA9FCE358E820C342'
    )
    GO

    donde Mi CMK este es el nombre de la llave maestra.

    Para ver la clave maestra de la columna que acaba de crear, en Gerente de la instalación, expanda la base de datos de Tiendas y localice la clave en Seguridad > Claves siempre encriptadas > Las claves principales de la columna. carpeta.

    Paso 5: Cree una clave de cifrado de columna.

    El siguiente paso es crear una clave de cifrado de columna utilizando la instrucción CREATE COLUMN ENCRYPTION KEY:

    CREATE COLUMN ENCRYPTION KEY MyCEK   
    WITH VALUES  
    (  
        COLUMN_MASTER_KEY =  MyCMK,   
        ALGORITHM = 'RSA_OAEP',   
        ENCRYPTED_VALUE = 0x016E000001630075007200720065006E00740075007300650072002F006D0079002F0032003100350062006500300034003600620031003600350030006600300033003300640064003100370034003200620061003900660063006500330035003800650038003200300063003300340032007978F4B4753C7BEE506D330B87A447DBB5BA6D94A2A2B2B4764D2041D3482FCF4A08EEF875DA058315887D67AA55E6C73D5F53D803D9E4E3D6111896E3ED2751402D60F278F30D01C40E4752ACE6C6730C67BB57B6935EBDE694FB9D2AAE4FA4E4C36BA2B1E4391B2DF78D29A8124286A2831DF6AE88F8044FBD1204F3DF731552614A8905A601D8D4696C2DC059870FF1AAC47697E9A87EFCA81C993F5CCE9AA4E574146C89A9853882FC26A13639D6BFE1275EA153D770FC22C2A6D0BA4505068EED6C8AC0929B29121C0451C57AEB8E075CD48AA86CE2B9AE1DCFB550FA7E5C4A035ACD5CFB11E9E731FF8D6F80CAA80032C8E6D3B36F5F4BD1FCD048036E64EDE366D7B6F726A94F163E68D3D50BD7D0FBDF071959100B61DB7C2F49FDCD15EBDE4703A5327CEFF7C81F328EC78B95B1F2BF7D0AA8C19BA8A44A53C463012286128B2053157FFEBD78B3F0DA2E884D300D1947E23A050DE11021BE0837E7CEFAC4959DF95E21334CD3A3DCB77C391AAEFDE01D14FB08A63AC45B459ABF754CFAE467CDBF1969AA93A16DFEDF3AFB25996EB532592B7462FD42FE18F64C176CE207AC9F7D72414C4AD4CE5AF7750D4E07318D864F611A7A30A875353DC3797301C933C7F737DB5393610F3C8411E06493751FE8637BE07038AF98C45A429B270E08435CBC20166C31F64532A4A7CF476BEBDBFED2D104F54DDE0D35702115
    );

    donde MiCEK este es el nombre de la clave de cifrado de la columna.

    Para verificar la clave de cifrado de columna recién creada, en Gerente de la instalación, expanda la base de datos de Tiendas y localice la clave en Seguridad > Claves siempre encriptadas > Claves de cifrado de columna carpeta.

    Además, SQL Complete ahora ofrece los siguientes parámetros en la instrucción CREATE COLUMN ENCRYPTION KEY:

    • Algoritmo de cifrado RSA_OAEP

    Paso 6: cifrar las columnas de la tabla creada.

    Una vez que hemos preparado el entorno y creado la columna principal y las claves de cifrado de la columna, podemos comenzar a cifrar Contraseña y Número de Seguro Social columnas para el Persona mesa incluida Siempre encriptado en SSMS.

    Para cifrar los valores en las columnas, haga lo siguiente:

    1. Ó Gerente de la instalación, botón derecho del ratón Persona tabla y seleccionar Cifrar columnas.

    2. En el arte Siempre encriptado la ventana que se abre, cambiar a Selección de columna en la pestaña, configure las casillas Contraseña y SSN y Aleatorio como el tipo de cifrado para ambas columnas, y luego haga clic en próximo.

    3. Sobre el arte Configuración de la llave maestra pestaña, podemos omitir este paso y hacer clic en próximo porque ya hemos configurado la clave maestra y las claves de cifrado de columnas.

    4. Encendido Configuración de lanzamiento pestaña, seleccione Proceder a la finalización y presiona próximo.

    5. encendido Resumen en la pestaña, verifique la configuración definida en los pasos anteriores y haga clic en Terminar.

    6. Encendido Resultados pestaña, controle el progreso del cifrado.

    Ahora saca los datos Persona tabla ejecutando la sentencia SELECT:

    SELECT * FROM Person;

    Como puede ver, las columnas Contraseña y Número de Seguro Social ahora encriptado:

    Conclusión

    En este artículo, analizamos la función Siempre cifrado, la columna principal y las claves de cifrado de columna, sus tipos y mostramos cómo configurar el cifrado de nivel de columna en SQL Server mediante la herramienta SQL Complete.

    Descargue la prueba gratuita de 30 días de dbForge SQL Complete para evaluar las capacidades de la herramienta.

    Artículos de interés

    Subir