我们正在为一家希望能够将旅客信息输入在线数据库的旅游公司开发旅行/旅游应用程序。
在数据库中存储护照号码是否有任何安全最佳实践?应该加密吗?
我们有一个(SQL 代理)作业,它每晚备份我们的生产数据库(并恢复到测试数据库服务器),并且我们正在为表中的某些列添加加密。我创建了一个主密钥并将其绑定到服务主密钥:
Create MASTER KEY Encryption By Password = 'MyReallyStrongPW'
ALTER MASTER KEY ADD ENCRYPTION BY SERVICE MASTER KEY CLOSE MASTER KEY
Run Code Online (Sandbox Code Playgroud)
我还创建了我的证书:
CREATE CERTIFICATE [My_Cert] With Subject = 'My Certificate'
CREATE SYMMETRIC KEY My_Symm_Key WITH ALGORITHM = AES_256 ENCRYPTION BY CERTIFICATE [MY_Cert];
Run Code Online (Sandbox Code Playgroud)
同一个账号
域\MyBigSqlAccount
正在运行 sql (prod & test) 的两个实例。
能够看到数据(在测试中)的唯一方法是运行这个:
OPEN MASTER KEY DECRYPTION BY PASSWORD = 'MyReallyStringPW'
ALTER MASTER KEY ADD ENCRYPTION BY SERVICE MASTER KEY CLOSE MASTER KEY
Run Code Online (Sandbox Code Playgroud)
然后这将起作用:
OPEN SYMMETRIC KEY My_Symm_Key DECRYPTION BY CERTIFICATE …Run Code Online (Sandbox Code Playgroud) 在修补或升级 TDE 加密数据库时,是否应该考虑任何注意事项?在职责分离的情况下,执行补丁或升级过程的人员是否需要访问 TDE 加密数据库的密钥或证书,或者可以在没有密钥的情况下修补数据库。答案很重要,因为我们是一家合法商店,希望应用程序管理员加密数据库并将数据库维护功能外包给 dba,以便在无法访问“应用程序数据”的情况下修补和升级数据库。你能解释一下吗?
我熟悉 SQL Server 的数据库加密选项,例如 TDE,并确保正确加密和保护备份/备份位置。
我正在为一个新客户做一些工作,他要求我详细说明端到端加密的选项,换句话说,以确保从数据库服务器发送到应用程序服务器的数据在途中保持加密并且无法被拦截(或者更确切地说,解释) 通过任何类型的数据包监控。
我知道使用 SSL 证书来加密与数据库的连接,尽管我很少配置它。我真的不知道这是否是端到端加密的合适选项,因为这肯定不能单独使用 SQL Server 进行配置?
在我看来,应用程序端或网络路由上必须有一些东西可以实现这样的端到端加密?
我对网络安全的了解基本上仅限于防火墙规则和一般路由,因此我正在寻找可供我进一步研究或付诸实践的选项。
我担心这个问题会被关闭,因为它是基于意见的,所以我真的要求在 SQL Server 本身(或在 DBA 的职权范围内)提供可靠的选项来配置端到端的数据加密。
我已通过密码证书加密,我想将其用于备份加密。问题是我无法使用证书(在 T-SQL 语句或维护计划中),因为我无法打开它 - 似乎没有OPEN CERTIFICATE命令。
我希望通过密码加密证书,因为我们的目标是只有一个用户负责在 SQL Server 实例中创建/插入证书。没有其他人能够导出证书并恢复加密的备份。
是否有可能,或者为了加密备份,我必须始终使用数据库主密钥加密证书?
sql-server backup encryption sql-server-2016 sql-server-2017
我已经使用 Ola Hallengren 的脚本几年了,最近升级到 MSSQL2017 允许我开始测试加密备份。在有人问之前:是的,主密钥和加密证书已备份并存储在我们的密码管理器中。
我遇到了以下参数组合的问题:
EXECUTE [OlaHallengren].[DatabaseBackup]
@Databases = 'SYSTEM_DATABASES'
,@Directory = N'\\<SHARE>\SQLBackup\Daily'
,@BackupType = 'FULL'
,@Verify = 'Y'
,@CheckSum = 'Y'
,@Encrypt = 'Y'
,@EncryptionAlgorithm = 'AES_256'
,@ServerCertificate = 'DBBackupEncryptCert<SERVERNAME>'
,@LogToTable = 'Y'
Run Code Online (Sandbox Code Playgroud)
备份运行良好,但验证没有:
Command: RESTORE VERIFYONLY FROM DISK = N'\\<SHARE>\SQLBackup\Daily\<SERVER>\master\FULL\...
Process Exit Code 1.
The step failed.
Run Code Online (Sandbox Code Playgroud)
Ola Hallengren 的脚本无法打开主密钥似乎是一个问题,因为这不起作用:
RESTORE VERIFYONLY FROM DISK = N'\\<SHARE>\SQLBackup\Daily\<SERVER>\master\FULL\<SERVER>_master_FULL_<DATE>_<TIME>.bak'
Run Code Online (Sandbox Code Playgroud)
但这确实:
use master;
OPEN MASTER KEY DECRYPTION BY PASSWORD = '<PASSWORD>';
RESTORE VERIFYONLY FROM DISK = N'\\<SHARE>\SQLBackup\Daily\<SERVER>\master\FULL\<SERVER>_master_FULL_<DATE>_<TIME>.bak'
CLOSE MASTER KEY …Run Code Online (Sandbox Code Playgroud) 大家早上好。
我对这个有点难住了。我们有一个数据库,我们对表中的一列进行了加密。这是我创建的主密钥以及证书和对称密钥。我需要将此数据库迁移到另一个 SQL 实例,但迁移数据库后,我无法解密信息。
帮助?
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'omitted';
CREATE CERTIFICATE SecureLoginPasswords
WITH SUBJECT = 'SecureLogin Customer Passwords for Website';
GO
CREATE SYMMETRIC KEY SSN_Key_01
WITH ALGORITHM = AES_256
ENCRYPTION BY CERTIFICATE SecureLoginPasswords;
GO
Run Code Online (Sandbox Code Playgroud) 我们有一种情况,使用TRIPLE_DES. 这用于加密密码列,并由大约十个存储过程使用(使用这些与OPEN SYMMETRIC KEY SSN_Key_01 DECRYPTION BY CERTIFICATE MyCertificate01;)
我想用AES_192. 但是,如果可能,我宁愿避免编辑存储过程。
我写了以下例程:
我的问题是,对于训练有素的眼睛,这里是否有任何事情会引起警钟,特别是因为旧名称和新名称相同,并且这些名称是在存储过程中使用的?
我已经测试了代码并且它有效,但是我缺乏加密经验和今天的信息过载剂量让我非常紧张,因此请求专业知识......
-- Decrypt data
ALTER TABLE [dbo].[tbl_Users] ADD PasswordClear nvarchar(250) NULL;
GO
OPEN SYMMETRIC KEY SSN_Key_01 DECRYPTION BY CERTIFICATE MyCertificate01;
UPDATE [tbl_Users] SET PasswordClear = CONVERT(nvarchar(250), DECRYPTBYKEY(PasswordEnc))
CLOSE SYMMETRIC KEY SSN_Key_01;
GO
-- Drop old encryption
ALTER TABLE [dbo].[tbl_Users] DROP COLUMN PasswordEnc;
GO
DROP SYMMETRIC KEY SSN_Key_01;
GO
DROP CERTIFICATE [MyCertificate01];
GO
-- Create new certificate …Run Code Online (Sandbox Code Playgroud) sql-server encryption sql-server-2012 certificate symmetric-key
作为数据库点人员,我需要对表中任何位置的 SSN 号码进行加密。我们使用 PostgreSQL。我的应用程序同行要求我们使用 AES-256-GCM 加密算法。但是,我不太确定如何在 postgresql 中应用它。
经过谷歌搜索后,我可以使用这两种 AES 方法之一进行加密:
1.
UPDATE ssnTable
SET encrypted_ssn = encrypt(encrypted_ssn::bytea, 'mykey', 'aes')`
Run Code Online (Sandbox Code Playgroud)
2.
UPDATE ssnTable
SET encrypted_ssn = pgp_sym_encrypt(encrypted_ssn, 'mykey', 'compress-algo=1, cipher-algo=aes256')
Run Code Online (Sandbox Code Playgroud)
以上都没有专门使用“aes-256-gcm”算法,这正是我被要求使用的算法。关于如何在 PostgreSQL 的列上使用这个算法有什么想法吗?
在查询与存储过程加密相关的计划缓存时,我遇到了一个非常奇怪的问题。但是,查询加密计划缓存的是存储过程,而不是计划缓存本身中的查询。让我解释...
下面的过程只是在计划缓存中搜索匹配的字符串并输出查询计划(最后一列)。
ALTER PROCEDURE spQueryPlanCache @textstring nvarchar(max)
AS
BEGIN
SELECT
databases.name,
dm_exec_sql_text.text AS TSQL_Text,
dm_exec_query_stats.creation_time,
dm_exec_query_stats.execution_count,
dm_exec_query_stats.total_worker_time AS total_cpu_time,
dm_exec_query_stats.total_elapsed_time,
dm_exec_query_stats.total_logical_reads,
dm_exec_query_stats.total_physical_reads,
dm_exec_query_plan.query_plan
FROM sys.dm_exec_query_stats
CROSS APPLY sys.dm_exec_sql_text(dm_exec_query_stats.plan_handle)
CROSS APPLY sys.dm_exec_query_plan(dm_exec_query_stats.plan_handle)
INNER JOIN sys.databases
ON dm_exec_sql_text.dbid = databases.database_id
WHERE dm_exec_sql_text.text LIKE @textstring
END
Run Code Online (Sandbox Code Playgroud)
这是最后一列中输出的计划 XML 的示例:
ALTER PROCEDURE spQueryPlanCache @textstring nvarchar(max)
AS
BEGIN
SELECT
databases.name,
dm_exec_sql_text.text AS TSQL_Text,
dm_exec_query_stats.creation_time,
dm_exec_query_stats.execution_count,
dm_exec_query_stats.total_worker_time AS total_cpu_time,
dm_exec_query_stats.total_elapsed_time,
dm_exec_query_stats.total_logical_reads,
dm_exec_query_stats.total_physical_reads,
dm_exec_query_plan.query_plan
FROM sys.dm_exec_query_stats
CROSS APPLY sys.dm_exec_sql_text(dm_exec_query_stats.plan_handle)
CROSS APPLY sys.dm_exec_query_plan(dm_exec_query_stats.plan_handle)
INNER JOIN sys.databases …Run Code Online (Sandbox Code Playgroud) encryption ×10
sql-server ×8
backup ×2
certificate ×1
postgresql ×1
storage ×1
transparent-data-encryption ×1
upgrade ×1