我正在尝试创建使用SQL Server数据库的Lumen应用程序(我正在使用Lumen v7)。使用SQL Server上的Always Encrypted功能在数据库级别静态加密某些数据。
[我认为,Linux上用于SQL Server的ODBC驱动程序中的密钥库提供程序(我正在使用CentOS和Nginx)仅支持Azure Key Vault,根据this文章不能使用Windows证书存储,但是我很难时间尝试使用Azure Key Vault的连接字符串来检索解密的数据。
这是我正在使用的连接字符串
'connections' => [
'sqlsrv' => [
'driver' => 'sqlsrv',
'host' => env('DB_HOST', 'localhost'),
'port' => env('DB_PORT', '1433'),
'database' => env('DB_DATABASE', 'user'),
'username' => env('DB_USERNAME', 'user'),
'password' => env('DB_PASSWORD', ''),
'encrypt' => 'yes',
'trust_server_certificate' => 'true',
'column_encryption' => 'Enabled',
'key_store_authentication' => 'KeyVaultClientSecret',
'key_store_principal_id' => env('AZURE_APPLICATION_CLIENT_ID'),
'key_store_secret' => env('AZURE_APPLICATION_CLIENT_SECRET')
],
],
[每当我尝试从加密列中获取数据时,都会出现错误
SQLSTATE[IMSSP]: Field 1 returned no data. (SQL: SELECT * FROM t_users_encrypted)
我还想念其他东西吗?还是根本无法使用当前库?还是有人对我如何使用Linux OS中的PHP / NodeJS应用程序从加密列中连接和检索数据有任何建议?
Laravel和PDO都支持SQL Server加密。
启用column_encryption
不足以使加密或解密成功;您还需要确保:
阅读有关检索加密数据的更多信息: