符合通用准则(commoncriteriacompliance)通用标准是一组国际准则和规范说明,它们能用来评估信息安全产品,特别是保证这些产品符合政府部署商定的安全标准。通
符合通用准则(common criteria compliance)
通用标准是一组国际准则和规范说明,它们能用来评估信息安全产品,特别是保证这些产品符合政府部署商定的安全标准。通用标准的正式称谓是“信息技术安全评估通用标准”。
符合通用准则(通常简称cc)是一套方法,确保it产品符合预定义的安全标准。它让信息系统的安全评估标准化。
通用准则建立了一套it产品安全功能的通用需求。它是灵活的,描述的需求的实施有大量的自由度。它让供应商决定适当的实施,依据评估保证级别evaluation assurance level(eal)。一个特定的应用程序、操作系统,或者一些列配置文件也参照它作为评估目标target of evaluation(toe)。这里,我们的toe就是一个sql server安装。
eal是安全需求的等级,范围从eal1到eal7。越高的数字应用了更严格的验证处理。应用更高的安全度不是必须的。
深入验证处理已经超出了dba的范畴。然而,更多详细的配置需要确保对于符合不同eal等级sql server与建立的指导原则保持一致。
微软提供了安全配置选项给eal1。这是一个服务器级别的选项,通过ssms可用:
右键点击实例名,然后选择properties。再选择security。选择enable common criteria compliance。
如果使用 sp_configure 系统存储过程来更改设置,则仅当 show advanced options 设置为 1 时才可以更改 common criteria compliance enabled。 该设置在服务器重新启动后生效。
sp_configure 'show advanced options', 1;goreconfigure;gosp_configure 'common criteria compliance enabled', 1;goreconfigurego
common criteria compliance enabled 服务器配置选项
common criteria compliance enabled 选项可启用通用准则所需的下列元素。
残留信息保护 (rip)
rip 要求将内存重新分配给新资源之前,用已知的位模式覆盖内存分配。 满足 rip 标准有助于提高安全性;然而,覆盖内存分配会使性能降低。 启用 common criteria compliance enabled 选项之后,将执行覆盖操作。
查看登录统计信息的能力
启用 common criteria compliance enabled 选项之后,将启用登录审核。 用户每次成功登录到 sql server 时,系统都会提供有关上一次成功登录的时间、上一次登录失败的时间以及上一次成功登录时间和当前登录时间之间尝试登录的次数的信息。 可以通过查询 sys.dm_exec_sessions 动态管理视图来查看这些登录统计信息。
grant 列不应覆盖 deny 表
启用 common criteria compliance enabled 选项之后,表级 deny 将优先于列级 grant。 未启用该选项时,列级 grant 则优先于表级 deny。
common criteria compliance enabled 选项是高级选项。 仅对 enterprise edition 和 datacenter edition 对通用准则进行评估和认证。
激活该选项使得sql server安装达到了eal1等级。为了符合通用准则评估保证级别 4+ (eal4+),还有一些其他操作:
1. 默认跟踪(default trace)必须正在运行。这是一个默认被激活的服务端跟踪。为了验证它被激活,执行如下:
select * from fn_trace_getinfo(default);
出现了一些traceid列值为1的行。
如果没有行返回,用如下代码激活默认跟踪:
exec master.dbo.sp_configure 'allow updates', 1;goexec master.dbo.sp_configure 'show advanced options', 1;goexec master.dbo.sp_configure 'default trace enabled', 1;goreconfigure with override;goexec master.dbo.sp_configure 'show advanced options', 0;goexec master.dbo.sp_configure 'allow updates', 0;go
2. 另一个有特定参数的服务端跟踪必须在sql服务启动时执行。微软已经提供了这个跟踪的脚本。下面来拆分开来分析下:
第一部分检查是否运行在sql server 2005 sp1。存储过程不能运行在后续的服务包版本下,好像不大可能。我移除了这个部分,并且执行正确的在后续版本。
-- if the version is not sp1 then do not run the scriptif serverproperty(n'productversion') '9.00.2047.00'beginraiserror('you can turn on eal1 trace only on sql server 2005 sp1', 20, 127) with logenduse mastergoif object_id('dbo.sp_create_evaltrace','p') is not nulldrop procedure dbo.sp_create_evaltracego
第二部分基于注册表决定\log目录的位置。如果不起作用,只须手动设置@tracefile参数。然后设置sp_trace_create的参数。这里重要的数字是第二个参数6。这是选项参数。6表示选项2和选项4被激活:2表示跟踪文件增加到100m时生成一个新文件循环利用;4表示如果跟踪失败就关闭sql服务。如果只需要单个跟踪文件,那么循环利用将会被禁用通过设置选项4。在cc里这是可接受的,但是在跟踪失败时服务必须停止。循环文件的大小也是可配置的。
create procedure sp_create_evaltrace-- create the traceas-- declare local variablesdeclare @rc intdeclare @on bitdeclare @instanceroot nvarchar(256)declare @scriptname nvarchar(50)declare @tracefile nvarchar(256)declare @maxfilesize bigintdeclare @filecount intdeclare @traceid intset @maxfilesize =100set @filecount =100-- trace file nameset @scriptname = 'cc_trace_' + replace(replace(convert( varchar(50), getdate(),126), ':', ''), '.','')-- get the instance specific log directory-- get the instance specific root directory.set @instanceroot = ''exec master.dbo.xp_instance_regread n'hkey_local_machine', n'software\microsoft\mssqlserver\setup', n'sqlpath', @instanceroot outputif @instanceroot = '' or @instanceroot = nullbegin-- exit the procedureraiserror ('could not obtain the instance root directory using xp_instance_regread.', 18,127)return(1)end-- prepare the trace file.if substring(@instanceroot, len(@instanceroot)-1, 1) != '\'set @instanceroot = @instanceroot + '\'set @tracefile = @instanceroot + 'log\'+ @scriptname-- create the traceexec @rc = sp_trace_create @traceid output, 6, @tracefile, @maxfilesize, null , @filecountif (@rc != 0)beginreturn (1)end
第三部分包含被跟踪捕获的事件,在注释中有所描述。