‘壹’ sql SERVER 建好了,如何创建用户以及赋予所有权限
工具/材料:SQL Server Management Studio。
1、首先在桌面上,点击“SQL Server Management Studio”图标。
‘贰’ MSSQL数据库中有表用户表USER,已知密码“888”在表中对应的字符为“C6B9BDB9BDB9C7BCBCBDBDBC”。
数据加密是SQL Server 2005新增的数据安全特性,这对应用程序开发者来说是非常重要的改进。本文从程序开发者角度,探讨SQL Server 2005数据加密特性以及如何运用该特性保证系统的数据安全。
SQL Server 2005是微软开始实施其“可信赖计算” 计划以来的第一个主要的产品,它提供了丰富的安全特性,为企业数据提供安全保障。对开发人员来说,最关注的是如何在程序设计过程中应用这些特性来保护数据库中的数据安全。本文将从应用程序开发者角度探讨基于SQL Server 2005数据加密特性的应用。
SQL Server 2005数据加密技术
数据用数字方式存储在服务器中并非万无一失。实践证明有太多的方法可以智取SQL Server 2000认证保护,最简单的是通过使用没有口令的sa账号。尽管SQL Server 2005远比它以前的版本安全,但攻击者还是有可能获得存储的数据。因此,数据加密成为更彻底的数据保护战略,即使攻击者得以存取数据,还不得不解密,因而对数据增加了一层保护。
SQL Server 2000以前的版本没有内置数据加密功能,若要在SQL Server 2000中进行数据加密,不得不买第三家产品,然后在服务器外部作COM调用或者是在数据送服务器之前在客户端的应用中执行加密。这意味着加密的密钥或证书不得不由加密者自己负责保护,而保护密钥是数据加密中最难的事,所以即使很多应用中数据已被很强的加密过,数据保护仍然很弱。
SQL Server 2005通过将数据加密作为数据库的内在特性解决了这个问题。它除了提供多层次的密钥和丰富的加密算法外,最大的好处是用户可以选择数据服务器管理密钥。SQL Server 2005服务器支持的加密算法如下:
⑴ 对称式加密(Symmetric Key Encryption):
对称式加密方式对加密和解密使用相同的密钥。通常,这种加密方式在应用中难以实施,因为用同一种安全方式共享密钥很难。但当数据储存在SQL Server中时,这种方式很理想,你可以让服务器管理它。SQL Server 2005 提供RC4、RC2、DES 和 AES 系列加密算法。
⑵ 非对称密钥加密(Asymmetric Key Encryption):
非对称密钥加密使用一组公共/私人密钥系统,加密时使用一种密钥,解密时使用另一种密钥。公共密钥可以广泛的共享和透露。当需要用加密方式向服务器外部传送数据时,这种加密方式更方便。SQL Server 2005 支持 RSA 加密算法以及 512 位、1,024 位和 2,048 位的密钥强度。
⑶ 数字证书(Certificate):
数字证书是一种非对称密钥加密,但是,一个组织可以使用证书并通过数字签名将一组公钥和私钥与其拥有者相关联。SQL Server 2005 支持“因特网工程工作组”(IETF) X.509 版本 3 (X.509v3) 规范。一个组织可以对 SQL Server 2005 使用外部生成的证书,或者可以使用 SQL Server 2005 生成证书。
SQL Server 2005 采用多级密钥来保护它内部的密钥和数据,如下图所示:
图1 SQL Server 2005采用多级密钥保护它内部的密钥和数据
图中引出箭头的密钥或服务用于保护箭头所指的密钥。所以服务主密钥(service master key)保护数据库主密钥(database master keys),而数据库主密钥又保护证书(certificates)和非对称密钥(asymmetric keys)。而最底层的对称性密钥(symmetric keys)被证书、非对称密钥或其他的对称性密钥保护(箭头又指回它本身)。用户只需通过提供密码来保护这一系列的密钥。
图中顶层的服务主密钥,安装SQL Server 2005新实例时自动产生和安装,用户不能删除此密钥,但数据库管理员能对它进行基本的维护,如备份该密钥到一个加密文件,当其危及到安全时更新它,恢复它。
服务主密钥由DPAPI(Data Protection API)管理。DPAPI在Windows 2000 中引入,建立于Windows的Crypt32 API之上。SQL Server 2005 管理与DPAPI的接口。服务主密钥本身是对称式加密,用来加密服务器中的数据库主密钥。
数据库主密钥与服务主密钥不同,在加密数据库中数据之前,必须由数据库管理员创建数据库主密钥。通常管理员在产生该密钥时,提供一个口令,所以它用口令和服务主密钥来加密。如果有足够的权限,用户可以在需要时显式地或自动地打开该密钥。下面是产生数据库主密钥的T-SQL代码示例:
以下为引用的内容:
USE EncryptionDB
CREATE MASTER KEY
ENCRYPTION BY PASSWORD = 'UTY6%djzZ8S7RyL'
每个数据库只有一个数据库主密钥。可以用ALTER MASTR KEY语句来删除加密,更改口令或删除数据库主密钥。通常这由数据库管理员来负责做这些。
有了数据库主密钥,就可以着手加密数据。T-SQL有置于其内的加密支持。使用CREATE语句创建各种密码,ALTER语句修改他们。例如要创建对称式加密,可以通过一对函数EncryptByKey 和 DecryptByKey来完成。
数据加密技术应用解析
下面通过实例来探讨SQL Server 2005数据加密与解密技术的实现。
假设有一张Customer 表,表中有字段 customer ID、 name、 city 和各种信用卡细节。其中信用卡细节需要加密而其他数据不需要。假设User1有对称式密钥,并用该密钥登录,运行相应的代码加密数据。
⑴ 数据加密
① 产生密钥:在含有Customers 表的数据库中使用Triple DES作为加密算法,生成对称式密钥。本例中,密钥本身由已经存在在数据库中的证书保护,如图一所示,对称密码受非对称密码和存在的其他对称式密钥保护。
以下为引用的内容:
CREATE SYMMETRIC KEY User1SymmetricKeyCert
AUTHORIZATION User1
WITH ALGORITHM = TRIPLE_DES
ENCRYPTION BY CERTIFICATE User1Certificate
② 打开密钥:对称式密钥使用前必须显式打开,所以接下来打开它,重新找回密码,解密它,并放它在受保护的服务器内存中,准备使用。
以下为引用的内容:
OPEN SYMMETRIC KEY User1SymmetricKeyCert
DECRYPTION BY CERTIFICATE User1Certificate
③ 加密数据:在下面的代码中,使用正常的T-SQL INSERT语句将一行数据插入表中,id、name和city 用明文保存,信用卡类型、号码以及有潜在机密的客户注释用加密方式储存,用Triple DES加密算法加密数据。
以下为引用的内容:
INSERT INTO Customer
VALUES (4, 'John Doe', 'Fairbanks',
EncryptByKey(Key_GUID(
'User1SymmetricKeyCert'), 'Amex'),
EncryptByKey(Key_GUID(
'User1SymmetricKeyCert'),
'1234-5678-9009-8765'),
EncryptByKey(Key_GUID(
'User1SymmetricKeyCert'),
'Window shopper. Spends $5 at most.'))
加密完成后,关闭它,释放内存,以防它被误用。
CLOSE SYMMETRIC KEY User1SymmetricKeyCert
以上是整个的数据加密的操作过程。它没有混乱的密码管理,也不用调用特别的算法。储存加密数据的字段是varbinary类型数据,其长度足以储存扩展的数据(加密数据比明文需要更多的空间,有时候多很多)。
⑵ 数据解密
要解密已加密的数据,你需要重新打开对称式加密。使用DecryptByKey函数读数据,然后关闭对称式加密。结果及相应的代码如下。
以下为引用的内容:
OPEN SYMMETRIC KEY User1SymmetricKeyCert
DECRYPTION BY CERTIFICATE User1Certificate
SELECT CustID, Name, City,
CONVERT(VARCHAR, DecryptByKey(CreditCardType))
AS CardType,
CONVERT(VARCHAR, DecryptByKey(CreditCardNumber))
AS CardNumber,
CONVERT(VARCHAR, DecryptByKey(Notes))
AS Notes
FROM Customer WHERE CustID = 4
CLOSE
这个例子显示了让SQL Server 2005为你管理密钥的一种方法。但实际上,用户总是选择自己提供一个口令的方式,用RC4算法产生对称密码。代码如下:
以下为引用的内容:
CREATE SYMMETRIC KEY User2SymmetricKeyPwd
AUTHORIZATION User2
WITH ALGORITHM = RC4
ENCRYPTION BY PASSWORD = 'sdylvxF&imeG3FP'
SQL Server 2005产生一个基于用户提供的口令的密钥来加密数据。除非明确指定,否则口令不保存在SQL Server 2005中,用户必须保护好自己的口令,否则任何一个知道口令的人都可以解密数据。
如果认为对存储在数据库中的数据加密完全是浪费处理器时间和存储空间那就错了。SQL Server 2005中的数据加密是一个非凡的特性,它为客户的数据提供了一个重要的保护层。但应用时要注意,只对那些敏感机密的数据进行保护,因为加密消耗服务器处理器大量的资源,如果对一个有一千万条记录的表的每个字段都加密的话,运行一条没有Where 子句的SELECT 就可能导致服务器性能的崩溃。
‘叁’ 如何用sql语言创建一个新的登陆名和密码,并赋予全部权限,写个具体点的例子。在线等...
以下为 SQL Server 数据库的例子:
1.创建用户
-- 首先在 SQL Server 服务器级别,创建登陆帐户(create login)
1> CREATE LOGIN test_user
2> WITH PASSWORD='test',
3> DEFAULT_DATABASE=[Stock],
4> DEFAULT_LANGUAGE=[简体中文],
5> CHECK_EXPIRATION=OFF,
6> CHECK_POLICY=OFF
7> GO
-- 创建数据库用户(create user)
2> USE [Stock]
3> GO
已将数据库上下文更改为 'Stock'。
1> CREATE USER [test_user] FOR LOGIN [test_user] WITH
DEFAULT_SCHEMA=[dbo]
2> GO
2.对用户分配角色
1> -- 通过将 test_user 加入数据库角色 db_owner
2> exec sp_addrolemember 'db_owner', 'test_user'
3> go
‘肆’ sql server中怎么给数据库表中的用户密码加密
1、首先我们电脑上要安装有SQL Server,然后要准备一个MDF数据库文件。打开SQL Server。
‘伍’ SQL中数据加密的问题,高手》》》
CREATE TABLE member(membername NVARCHAR(10) NOT NULL PRIMARY KEY,password VARBINARY(MAX))
CREATE MASTER KEY ENIRYPTION BY PASSWORD='password'--->创建数据库主密钥。PASSWORD = 'password'用于对数据库中主密钥进行加密的密码
GO
CREATE CERTIFICATE CERTMY WITH SUBJECT ='testcert' 向数据库中添加证书。
CREATE SYMMETERIC KEY secretkey WITH ALGORITHM=TRIPLE_DES
ENCRYPTION BY CERTIFICATE certmy
CREATE PROC usp_insertMember
@memberid nvarchar(10)
@password nvarchar(20)
AS
OPEN SYMMETRIC KEY secertkey DECRYPTION BY CETRIFICATE
CERTMY
INSERT member values(@memberid,Encrypt By key(key_GUID('secret key),@password'))
CLOSE SYMMETRIC KEY secretkey
GO
EXEC usp_Insertmember @memberid-'adonis', @password-'1234'
SELECT*FROM member
CREATE MASTER KEY ENIRYPTION BY PASSWORD='password'--->创建数据库主密钥。PASSWORD = 'password'用于对数据库中主密钥进行加密的密码
CREATE CERTIFICATE CERTMY WITH SUBJECT ='testcert'--->向数据库中添加证书。
CREATE SYMMETERIC KEY secretkey WITH ALGORITHM=TRIPLE_DES
ENCRYPTION BY CERTIFICATE certmy--->生成对称密钥并指定其属性。
OPEN SYMMETRIC KEY secertkey DECRYPTION BY CETRIFICATE
CERTMY--->解密对称密钥并使其可供使用。
INSERT member values(@memberid,Encrypt By key(key_GUID('secret key),@password'))-----》插入成员标识号值
‘陆’ 如何创建数据库主密钥
SQL Server 中的数据库级别加密功能依赖于数据库主密钥。创建数据库时不会自动生成该密钥,必须由系统管理员创建。仅需要对每个数据库创建一次主密钥。
‘柒’ 怎么设置SQL数据库用户权限
设置SQL数据库用户权限的方法如下: 点击进入数据库级别的“安全性”、“登录名”、“新建登录名”;在“常规”选项卡中,创建登陆名,并设置默认的数据库;在“用户映射”选项卡中,勾选需要设置的数据库,并设置“架构”,点击“确认”按钮,完成创建用户的操作;在“权限”选项卡中,依次点击“添加”、“浏览”、“选择对象”;点击“确认”按钮后即可。
‘捌’ sql如何创建用户限制权限
1开启数据库管理工具SQL Server Managerment Studio,用管理员用户登录数据库管理。2展开数据库实例名下的 安全性--->登录名--->‘新建登录名’用以建立一个新的账户。3 输入用户名、密码,选择其有权限的数据库。
‘玖’ 怎么设置SQL数据库用户权限
--SQLServer:
一、操作步骤
首先进入数据库级别的【安全性】-【登录名】-【新建登录名】
(图11:其它对象类型)
‘拾’ 不能访问sql镜像服务器
不能访问sql镜像服务器是两个服务器不是在同一个域中,并且sqlserver服务不是用域用户做为启动服务的身份。解决方法:
1、创建数据库主密钥。
2、创建证书,并用主密钥加密。
3、创建端点,备份证书。
4、创建登录账号。
5、创建用户,并映射到刚才创建的登录账号。
6、使用证书授权用户,将登录账号授权访问端口。执行镜像配置步骤。