Uso de Always Encrypted con el controlador ODBC de Linux

 

DownloadDownload ODBC Driver

Always Encrypted permite a los clientes cifrar datos confidenciales en aplicaciones de cliente y nunca revelar las claves de cifrado en SQL Server. Un controlador habilitado para Always Encrypted instalado en el equipo cliente consigue esto al cifrar y descifrar automáticamente los datos confidenciales en la aplicación cliente de SQL Server. El controlador cifra los datos en columnas confidenciales antes de pasar los datos a SQL Server y vuelve a escribir las consultas automáticamente para que se conserve la semántica de la aplicación. De forma similar, el controlador descifra de forma transparente los datos almacenados en columnas de base de datos cifradas que se incluyen en los resultados de la consulta. Para obtener más información, consulte Always Encrypted (motor de base de datos).

Limitaciones de la versión preliminar

System_CAPS_ICON_note.jpg Nota


Always Encrypted solo es compatible con Microsoft ODBC Driver 13 (Preview) for SQL Server con SQL Server 2016 (Preview 3.4 o superior). Esta versión preliminar no admite siguiente:

  • Operaciones masivas mediante las funciones masivas de ODBC o BCP.
  • Configuraciones regionales distintas a EN-US.
  • Almacén de claves de Azure y proveedores de almacenes de claves personalizados. Nota: Los proveedores de almacenes de claves del equipo local son compatibles.

La consulta de una base de datos con tecnología Always Encrypted desde una aplicación cliente requiere un esfuerzo mínimo de desarrollo. A continuación se ofrece un resumen de los requisitos previos y los pasos que debe seguir para que su aplicación pueda leer y escribir datos Always Encrypted.

Requisitos previos

  • Configure el servidor según las instrucciones en la sección Introducción a Always Encrypted del tema Always Encrypted (motor de base de datos).

  • Instale Microsoft ODBC Driver 13 (Preview) for SQL Server en Linux en el equipo cliente.

Configurar la aplicación cliente

La aplicación cliente debe configurarse para tener acceso a un almacén de claves que contiene una clave maestra de columna (CMK) que protege los datos a los que la aplicación accederá. Para obtener información sobre las claves maestras, consulte Always Encrypted (motor de base de datos). El controlador ODBC admite el almacenamiento de CMK en los almacenes de claves del equipo local: usuario local y equipo local.

Uso de los proveedores de almacenes de claves del equipo local

El controlador ODBC incluye una implementación integrada del proveedor de almacenes de claves para el equipo local y los almacenes de claves del usuario local. Las aplicaciones cliente deben garantizar que OpenSSL esté instalado y configurado tal y como se recomienda en su distribución. El creador o administrador de certificados (normalmente, el administrador de las bases de datos) tendrá que distribuir la CMK en cada equipo cliente que trabaje con columnas cifradas. En concreto, tendrá que instalar la clave maestra de columna en la ubicación que especificó cuando se creó en SQL Server. En los sistemas Linux, la ubicación de LOCALMACHINE corresponde al directorio "/etc/ssl/private", y la ubicación CURRENTUSER, a la ruta de acceso "~/ssl/private". Puede obtener más información sobre cómo realizar esta operación en la página Always Encrypted (motor de base de datos).

Habilitar Always Encrypted para una conexión cliente

Modifique la cadena de conexión en la aplicación cliente agregando el parámetro ColumnEncryption=Enabled a la cadena de conexión.

A continuación, se muestra un ejemplo de una cadena de conexión para Microsoft ODBC Driver 13 for SQL Server que habilita Always Encrypted:

SQLWCHAR *connString = L"DRIVER=ODBC Driver 13 for SQL Server;SERVER=.;ColumnEncryption=Enabled"; 

Insertar o recuperar los datos de ejemplo

Inserte los datos en columnas cifradas mediante las funciones SQLPrepare/SQLExecute o SQLExecDirect con la función SQLBindParam. La aplicación transmite la instrucción SQL de texto no cifrado con marcadores de parámetros en los argumentos de función y enlaza los búferes con valores de texto no cifrado de todos los parámetros marcados. Después, el controlador cifra estos parámetros de manera transparente y transmite los valores cifrados al servidor. De forma similar, al recuperar columnas cifradas a través de las funciones BindCol o GetData, el controlador descifra de forma transparente los valores antes de enviarlos a los búferes de recuento de la aplicación. Cuando se cifra una columna, no hay datos de texto no cifrado disponibles para SQL Server; solo envía y recibe datos cifrados.

Desde el punto de vista de los procesos de desarrollo, el funcionamiento sigue siendo el mismo cuando se utiliza el controlador ODBC con columnas cifradas. Consulte el código de ejemplo de ODBC para ver una muestra de cómo interactuar con el controlador.

System_CAPS_ICON_note.jpg Nota


La versión Preview de Microsoft ODBC Driver 13 for SQL Server proporciona una compatibilidad limitada en lo que respecta al uso de Always Encrypted con procedimientos almacenados. Aún no se admiten operaciones con procedimientos almacenados cuando se habilita Always Encrypted.

System_CAPS_ICON_note.jpg Nota


Las consultas pueden realizar comparaciones de igualdad en las columnas si se cifran mediante el cifrado determinista. Para obtener más información, consulte la sección Seleccionar cifrado determinista o aleatorio del tema Always Encrypted (motor de base de datos).

Referencia de la API de Always Encrypted

Hay una modificación de la API del controlador ODBC para utilizarla en aplicaciones cliente que usan Always Encrypted.

System_CAPS_ICON_note.jpg Nota


Esta actualización está disponible solo en Microsoft ODBC Driver 13 (Preview) for SQL Server.

Clase SQLServerConnection

NombreDescripción
Nueva palabra clave de cadena de conexión:

ColumnEncryption
ColumnEncryption=Enabled habilita la funcionalidad de Always Encrypted para la conexión y ColumnEncryption=Disabled la deshabilita. Los valores aceptados son Enabled y Disabled. El valor predeterminado es Disabled.

Microsoft ODBC Driver for SQL Server en Linux
Always Encrypted (motor de base de datos)

Mostrar: