Tutorial: Introducción a Always Encrypted

Se aplica a:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

En este tutorial se explica cómo empezar a trabajar con Always Encrypted. En él encontrará:

  • Cómo cifrar las columnas seleccionadas en la base de datos.
  • Consulta de columnas cifradas.

Prerrequisitos

En este tutorial, necesitará:

Paso 1: Crear y rellenar el esquema de la base de datos

En este paso, creará el esquema de RR. HH . y la tabla Employees . A continuación, rellenará la tabla con algunos datos.

  1. Conéctese a la base de datos. Para obtener instrucciones sobre cómo conectarse a una base de datos desde SSMS, consulte Inicio rápido: Conexión y consulta de una base de datos de Azure SQL o una Azure SQL Managed Instance mediante SQL Server Management Studio (SSMS) o Inicio rápido: Conexión y consulta de una instancia de SQL Server mediante SQL Server Management Studio (SSMS).

  2. Abra una nueva ventana de consulta para la base de datos ContosoHR .

  3. Pegue y ejecute las instrucciones siguientes para crear una nueva tabla, denominada Employees.

    CREATE SCHEMA [HR];
    GO
    
    CREATE TABLE [HR].[Employees]
    (
        [EmployeeID] [int] IDENTITY(1,1) NOT NULL
        , [SSN] [char](11) NOT NULL
        , [FirstName] [nvarchar](50) NOT NULL
        , [LastName] [nvarchar](50) NOT NULL
        , [Salary] [money] NOT NULL
    ) ON [PRIMARY];
    
  4. Pegue y ejecute las instrucciones siguientes para agregar algunos registros de empleados a la tabla Employees .

    INSERT INTO [HR].[Employees]
    (
        [SSN]
        , [FirstName]
        , [LastName]
        , [Salary]
    )
    VALUES
    (
        '795-73-9838'
        , N'Catherine'
        , N'Abel'
        , $31692
    );
    
    INSERT INTO [HR].[Employees]
    (
        [SSN]
        , [FirstName]
        , [LastName]
        , [Salary]
    )
    VALUES
    (
        '990-00-6818'
        , N'Kim'
        , N'Abercrombie'
        , $55415
    );
    

Paso 2: Cifrar columnas

En este paso, aprovisionará una clave maestra de columna y una clave de cifrado de columna para Always Encrypted. A continuación, cifrará las columnas SSN y Salario en la tabla Empleados .

SSMS proporciona un asistente que le ayuda a configurar fácilmente Always Encrypted mediante la configuración de una clave maestra de columna, una clave de cifrado de columnas y el cifrado de columnas seleccionadas.

  1. En Explorador de objetos, expanda Bases de datos>ContosoHR>Tablas.

  2. Haga clic con el botón derecho en la tabla Empleados y seleccione Cifrar columnas para abrir el asistente para Always Encrypted.

    Captura de pantalla de la apertura del Asistente para Always Encrypted.

  3. Seleccione Siguiente en la página Introducción del asistente.

  4. En la página Selección de columnas .

    1. Seleccione las columnas SSN y Salary . Elija el cifrado determinista para la columna SSN y el cifrado aleatorio para la columna Salario . El cifrado determinista admite consultas, como búsquedas de búsqueda de puntos que implican comparaciones de igualdad en columnas cifradas. El cifrado aleatorio no admite cálculos en columnas cifradas.
    2. Deje CEK-Auto1 (Nuevo) como clave de cifrado de columna para ambas columnas. Esta clave aún no existe y la generará el asistente.
    3. Seleccione Next (Siguiente).

    Captura de pantalla de la selección de columna del Asistente para Always Encrypted.

  5. En la página Configuración de clave maestra, configure una nueva clave maestra de columna generada por el asistente. En primer lugar, debe seleccionar dónde desea almacenar la clave maestra de columna. El asistente admite dos tipos de almacén de claves:

    • Azure Key Vault: se recomienda si la base de datos está en Azure
    • Almacén de certificados de Windows

    En general, Azure Key Vault es la opción recomendada, especialmente si la base de datos está en Azure.

    • Para usar Azure Key Vault:

      1. Seleccione Azure Key Vault.
      2. Seleccione Iniciar sesión y completar el inicio de sesión en Azure.
      3. Una vez que haya iniciado sesión, la página mostrará la lista de suscripciones y almacenes de claves a los que tiene acceso. Seleccione una suscripción de Azure que contenga el almacén de claves que quiera usar.
      4. Seleccione el almacén de claves.
      5. Seleccione Next (Siguiente).

      Captura de pantalla de la selección de clave maestra del Asistente para Always Encrypted mediante Azure Key Vault.

    • Para usar el almacén de certificados de Windows:

      1. Seleccione Almacén de certificados de Windows.

      2. Deje la selección predeterminada del usuario actual : esto indicará al asistente que genere un certificado (la nueva clave maestra de columna) en el almacén usuario actual .

        Captura de pantalla de la selección de clave maestra del Asistente para Always Encrypted mediante el almacén de certificados.

      3. Seleccione Next (Siguiente).

  6. En la página Configuración de cifrado local, no se requiere ninguna configuración adicional porque la base de datos no tiene habilitado un enclave. Seleccione Next (Siguiente).

  7. En la página Configuración de ejecución, se le preguntará si desea continuar con el cifrado o generar un script de PowerShell para que se ejecute más adelante. Deje la configuración predeterminada y seleccione Siguiente.

  8. En la página Resumen , el asistente le informa sobre las acciones que se ejecutarán. Compruebe que toda la información es correcta y seleccione Finalizar.

  9. En la página Resultados , puede supervisar el progreso de las operaciones del asistente. Espere hasta que todas las operaciones se completen correctamente y seleccione Cerrar.

    Captura de pantalla del resumen del Asistente para Always Encrypted.

  10. (Opcional) Explore los cambios realizados por el asistente en la base de datos.

    1. ExpandaSeguridad>de ContosoHR>Always Encrypted Claves para explorar los objetos de metadatos de la clave maestra de columna y el cifrado de columnas que creó el asistente.

    2. También puede ejecutar las consultas siguientes en las vistas de catálogo del sistema que contienen metadatos clave.

      SELECT * FROM sys.column_master_keys;
      SELECT * FROM sys.column_encryption_keys
      SELECT * FROM sys.column_encryption_key_values
      
    3. En Explorador de objetos, haga clic con el botón derecho en la tabla Employees (Empleados) y seleccione Script Table (Crear tabla) comoCREATE ToNew Editor de Power Query Window (Crear a >> nueva ventana de Editor de Power Query). Se abrirá una nueva ventana de consulta con la instrucción CREATE TABLE para la tabla Employees . Observe la cláusula ENCRYPTED WITH que aparece en las definiciones de las columnas SSN y Salary .

    4. También puede ejecutar la consulta siguiente en sys.columns para recuperar metadatos de cifrado de nivel de columna para las dos columnas cifradas.

      SELECT
      [name]
      , [encryption_type]
      , [encryption_type_desc]
      , [encryption_algorithm_name]
      , [column_encryption_key_id]
      FROM sys.columns
      WHERE [encryption_type] IS NOT NULL;
      

Paso 3: Consulta de columnas cifradas

  1. Conéctese a la base de datos con Always Encrypted deshabilitado para la conexión.

    1. Abra una nueva ventana de consulta.
    2. Haga clic con el botón derecho en cualquier parte de la ventana de consulta y seleccione ConnectionChange Connection (Cambiar conexión).> Se abrirá el cuadro de diálogo Conectar al motor de base de datos .
    3. Seleccione Opciones <<. Esto mostrará pestañas adicionales en el cuadro de diálogo Conectar al motor de base de datos .
    4. Seleccione la pestaña Always Encrypted.
    5. Asegúrese de que la opción Habilitar Always Encrypted (cifrado de columnas) no está seleccionada.
    6. Seleccione Conectar.

    Captura de pantalla de la opción de conexión de SSMS para Always Encrypted deshabilitado.

  2. Pegue y ejecute la siguiente consulta. La consulta debe devolver datos cifrados binarios.

    SELECT [SSN], [Salary] FROM [HR].[Employees]
    

    Captura de pantalla de los resultados del texto cifrado de las columnas cifradas.

  3. Conéctese a la base de datos con Always Encrypted habilitada para la conexión.

    1. Haga clic con el botón derecho en cualquier parte de la ventana de consulta y seleccione ConnectionChange Connection (Cambiar conexión).> Se abrirá el cuadro de diálogo Conectar al motor de base de datos .
    2. Seleccione Opciones <<. Esto mostrará pestañas adicionales en el cuadro de diálogo Conectar al motor de base de datos .
    3. Seleccione la pestaña Always Encrypted.
    4. Seleccione Habilitar Always Encrypted (cifrado de columnas).
    5. Seleccione Conectar.

    Captura de pantalla de la opción de conexión de SSMS para Always Encrypted habilitado.

  4. Vuelva a ejecutar la misma consulta. Dado que está conectado con Always Encrypted habilitado para la conexión de base de datos, el controlador cliente de SSMS intentará descifrar los datos almacenados en ambas columnas cifradas. Si usa Azure Key Vault, es posible que se le pida que inicie sesión en Azure.

    Captura de pantalla de los resultados de texto no cifrado de columnas cifradas.

  5. Habilite la parametrización para Always Encrypted. Esta característica permite ejecutar consultas que filtran los datos por columnas cifradas (o insertan datos en columnas cifradas).

    1. Seleccione Consulta en el menú principal de SSMS.
    2. Seleccione Opciones de consulta… .
    3. Vaya a Ejecución>Avanzadas.
    4. Asegúrese de que la opción Habilitar parametrización para Always Encrypted esté activada.
    5. Seleccione Aceptar.

    Captura de pantalla que habilita la parametrización en una ventana de consulta existente.

  6. Pegue y ejecute la consulta siguiente, que filtra los datos por la columna de SSN cifrada. La consulta debe devolver una fila que contenga valores de texto no cifrado.

    DECLARE @SSN [char](11) = '795-73-9838'
    SELECT [SSN], [Salary] FROM [HR].[Employees]
    WHERE [SSN] = @SSN
    
  7. Opcionalmente, si usa Azure Key Vault configurado con el modelo de permisos de directiva de acceso, siga estos pasos para ver lo que sucede cuando un usuario intenta recuperar datos de texto no cifrado de columnas cifradas sin tener acceso a la clave maestra de columna que protege los datos.

    1. Quite el permiso de clave unwrap para usted mismo en la directiva de acceso del almacén de claves. Para más información, consulte Asignación de una directiva de acceso de Key Vault.
    2. Dado que el controlador de cliente de SSMS almacena en caché las claves de cifrado de columna adquiridas desde un almacén de claves durante 2 horas, cierre SSMS y vuelva a abrirla. Esto garantizará que la caché de claves esté vacía.
    3. Conéctese a la base de datos con Always Encrypted habilitada para la conexión.
    4. Pegue y ejecute la siguiente consulta. Se debe producir un error en la consulta con el mensaje de error que indica que falta el permiso necesario unwrap .
    SELECT [SSN], [Salary] FROM [HR].[Employees]
    

Pasos siguientes

Vea también