sql >> Base de Datos >  >> RDS >> Database

Uso de datos protegidos con un almacén de claves personalizado de Linux

El proceso para trabajar con columnas Always Encrypted seguras de almacenamiento de claves personalizadas de Linux es:

  1. Instale el controlador ODBC de SQL Server 1.10.5+ en su máquina Linux.
  2. Configure una fuente de datos ODBC en /etc/odbc.ini que se conecta a una instancia de SQL Server 2016+:
    [SQLSERVER_2016]Driver=Easysoft ODBC-SQL Server SSL Server=equipo\sqlserver_instanceDatabase=database_with_always_encrypted_dataUser=usuario # Esto puede ser un inicio de sesión de Windows o SQL Server. 
  3. En esta máquina Linux, cree dos archivos nuevos:
    $ cd ~/Documents$ touch MyKSP.c KspApp.c
  4. Copie y pegue el código del proveedor de almacén de claves de ejemplo en MyKSP.c.
  5. Copie y pegue el código de la aplicación ODBC de ejemplo en KspApp.c.
  6. Abra MyKSP.c y KspApp.c en un editor de texto. En ambos archivos, reemplace esta línea:
    #include "msodbcsql.h"

    con:

    #incluir 
    Nota de 32 bits Para usar una versión de 32 bits de la aplicación ODBC de muestra, tuvimos que cambiar el código en KspApp.c:
    1. Agregamos esta función:
      { wchar_t c1, c2; hacer { c1 =*s1++; c2 =*s2++; si (c1 =='\0') devuelve c1 - c2; } mientras (c1 ==c2); devuelve c1 - c2;}

      inmediatamente después de esta línea:

      int. estático safe_wcscmp( wchar_t *s1, wchar_t *s2 )
    2. Reemplazamos las llamadas a wcscmp con safe_wcscmp .
  7. Compile el código y establezca el permiso de ejecución en la biblioteca y la aplicación resultantes. Por ejemplo:
    $ gcc -I/usr/local/easysoft/unixODBC/include -I/usr/local/easysoft/sqlserver/include \ -fshort-wchar -fPIC -o MyKSP.so -shared MyKSP.c$ gcc -I/usr/local/easysoft/unixODBC/include -I/usr/local/easysoft/sqlserver/include \ -fshort-wchar -fPIC -o KspApp -fshort-wchar \ KspApp.c -lodbc -L/usr/ local/easysoft/unixODBC/lib/ \ -L/usr/lib/x86_64-linux-gnu/libdl.so -ldl$ chmod +x MyKSP.so KspApp
  8. Ejecute la aplicación (KspApp), que usa el almacén de claves personalizadas (MyKSP.so) para crear y llenar una tabla con columnas AlwaysEncrypted, recupera los datos sin cifrar y suelta la tabla:
    $ ./KspApp DSN=SQLSERVER_2016Press Ingrese para continuar... Llamada a la función KSP Decrypt() (keypath=Datos recuperados:c1=1 c2=Datos de muestra 0 para la columna 2Datos recuperados:c1=12 c2=Datos de muestra 1 para la columna 2
  9. Antes de limpiar los datos de muestra, usamos isql para confirmar que, para una aplicación que no tiene acceso al almacén de claves personalizado, los datos están cifrados. Desactivamos ColumnEncryption para esta aplicación porque, a menos que se haga, el controlador ODBC de SQL Server intentará descifrar los datos con un almacén de claves local, lo que no funcionará:
    /usr/local/easysoft/unixODBC/bin/isql - v -k "CONTROLADOR={Easysoft ODBC-SQL Server SSL};Servidor=máquina\sqlserver_instance; UID=usuario;PWD=contraseña;Base de datos=base_de_datos_con_datos_cifrados_siempre;ColumnEncryption=No"SQL> seleccione el 1 superior c2 de CustomKSPTestTable+----+ | c2 |+----+| 0104590D628739293CD8D455BD43EC59...