符合通用准则(common criteria compliance)

符合通用准则(common criteria compliance),第1张

符合通用准则(commoncriteriacompliance) 符合通用准则(commoncriteriacompliance)

通用标准是一组国际标准和规范,可用于评估信息安全产品,特别是确保这些产品符合政府同意的安全标准。通用标准的正式名称为《信息技术安全评估通用标准》。

遵循通用准则(CC)是一套确保IT产品符合预定义安全标准的方法。它规范了信息系统的安全评估。

通用指导原则为IT产品的安全功能建立了一套通用要求。它是灵活的,并且在实现所描述的需求时有很大的自由度。它允许供应商根据评估保证水平决定适当的实施(EAL)。特定的应用程序、 *** 作系统或一些列配置文件也将其称为评估目标(TOE)。这里,我们的TOE是一个SQLServer安装。

EAL是安全要求的等级,从EAL1到EAL7不等。数字越大,应用的验证过程越严格。没有必要应用更高程度的安全性。

深入的验证处理超出了DBA的范围。但是,更详细的配置需要确保满足不同EAL级别的SQLserver与既定准则一致。

微软为EAL1提供了安全配置选项。这是通过SSMS提供的服务器级选项:

右键单击实例名称并选择属性。再次选择安全性。选择启用符合通用标准。

如果使用sp_configure系统存储过程来更改设置,则只能在showadvancedoptions设置为1时更改启用的通用标准符合性。该设置在服务器重新启动后生效。

sp_configure 'show advanced options', 1; GO RECONFIGURE; GO sp_configure 'common criteria compliance enabled', 1; GO RECONFIGURE GO

commoncriteriacomplianceenabled服务器配置选项

“启用符合通用标准”选项启用通用标准所需的以下元素。

残留信息保护(RIP)

RIP要求在将内存重新分配给新资源之前,用已知的位模式覆盖内存分配。符合RIP标准有助于提高安全性;但是,覆盖内存分配会降低性能。启用“符合通用标准”选项时,将执行覆盖 *** 作。

查看登录统计信息的能力

启用“启用通用标准符合性”选项将启用登录审核。用户每次成功登录SQLServer时,系统都会提供上次成功登录时间、上次失败登录时间以及上次成功登录时间与当前登录时间之间的登录尝试次数等信息。您可以通过查询sys.dm_exec_sessions动态管理视图来查看这些登录统计信息。

授权列不应包含拒绝表

如果启用了符合通用标准选项,则表级拒绝优先于列级授权。当未启用此选项时,列级GRANT优先于表级DENY。

“启用符合通用标准”选项是一个高级选项。只有企业版和数据中心版将接受通用标准的评估和认证。

激活此选项会使SQLServer安装达到EAL1级别。为了根据一般准则评估保证级别4+(EAL4+),还有一些其他 *** 作:

1.默认跟踪必须正在运行。这是默认情况下激活的服务器端跟踪。要验证它是否已激活,请执行以下 *** 作:

SELECT * FROM fn_trace_getinfo(default);

有些行的traceid列值为1。

如果没有返回任何行,请使用以下代码激活默认跟踪:

EXEC master.dbo.sp_configure 'allow updates', 1; GO EXEC master.dbo.sp_configure 'show advanced options', 1; GO EXEC master.dbo.sp_configure 'default trace enabled', 1; GO RECONFIGURE WITH OVERRIDE; GO EXEC master.dbo.sp_configure 'show advanced options', 0; GO EXEC master.dbo.sp_configure 'allow updates', 0; GO

2.当SQL服务启动时,必须执行另一个带有特定参数的服务器端跟踪。微软提供了一个跟踪脚本。我们来拆分分析一下:

第一部分检查它是否在SQLServer2005SP1中运行。存储过程似乎不太可能无法在后续的servicepack版本下运行。我去掉了这部分,在后续版本中正确执行。

-- If the version is not SP1 then do not run the script IF SERVERPROPERTY(N'ProductVersion') <> '9.00.2047.00' BEGIN RAISERROR('You can turn on EAL1 trace only on SQL Server 2005 SP1', 20, 127) WITH LOG END USE master GO if object_id('dbo.sp_create_evaltrace','P') IS NOT NULL drop procedure dbo.sp_create_evaltrace GO

第二部分根据注册表确定\LOG目录的位置。如果不行,就手动设置@Tracefile参数。然后设置sp_trace_create的参数。这里重要的数字是第二个参数6。这是一个选项参数。6表示选项2和选项4被激活:2表示当跟踪文件增加到100M时,会生成一个新文件进行回收;4表示如果跟踪失败,关闭SQL服务。如果只需要一个跟踪文件,那么将通过设置选项4来禁用回收。这在CC中是可以接受的,但是当跟踪失败时必须停止服务。循环文件的大小也是可配置的。

CREATE PROCEDURE sp_create_evaltrace -- Create the trace AS -- Declare local variables declare @rc int declare @on bit declare @instanceroot nvarchar(256) declare @scriptname nvarchar(50) declare @tracefile nvarchar(256) declare @maxfilesize bigint declare @filecount int declare @traceid int set @maxfilesize =100 set @filecount =100 -- Trace file name set @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 OUTPUT IF @instanceroot = '' OR @instanceroot = NULL BEGIN -- Exit the procedure raiserror ('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 trace exec @rc = sp_trace_create @traceid OUTPUT, 6, @tracefile, @maxfilesize, NULL , @filecount IF (@rc != 0) begin return (1) end

第三部分包含跟踪和捕获的事件,这些事件在注释中进行了描述。

-- Add Trace Events set @on = 1 -- Audit Login exec sp_trace_setevent @TraceID, 14, 1, @on -- TextData exec sp_trace_setevent @TraceID, 14, 11, @on -- LoginName exec sp_trace_setevent @TraceID, 14, 14, @on -- StartTime exec sp_trace_setevent @TraceID, 14, 21, @on -- EventSubClass exec sp_trace_setevent @TraceID, 14, 23, @on -- Success exec sp_trace_setevent @TraceID, 14, 64, @on – SessionLoginName

只是从描述上看,意思不是很清楚。下面详细描述一下。注意GDR事件类的范围。类似的语言用于后续课程。

AuditSchemaObjectGDR事件类-每当MicrosoftSQLServer中的任何用户对架构对象权限发出GRANT、REVOKE或DENY命令时,都会发生AuditSchemaObjectGDR事件类。

AuditDatabaseScopeGDR事件类-每当MicrosoftSQLServer中的用户发出GRANT、REVOKE或DENYfor语句权限(仅用于数据库 *** 作,如授予数据库权限)时,就会发生AuditDatabaseScopeGDR事件类。

审计数据库对象GDR事件类——如果对数据库对象(如程序集和模式)发出GRANT、REVOKE或DENY命令,将会出现审计数据库对象GDR事件类。

AuditscopeGDR事件类-当发出GRANT、REVOKE或DENY命令以获取服务器范围的权限(例如,创建登录名)时,会生成auditscopeGDR事件类。

审核服务器对象GDR事件类-每当MicrosoftSQLServer中的任何用户发出授予、撤销或拒绝服务器对象权限的命令时,都会出现审核服务器对象GDR事件类。

AuditLogin事件类-auditlogin事件类指示用户已成功登录到MicrosoftSQLServer。此类中的事件由新连接或连接池中重用的连接触发。

AuditLogout事件类AuditLogout事件类指示用户已从MicrosoftSQLServer注销。此类中的事件由新连接或连接池中重用的连接触发。

AuditLoginFailed事件类-auditloginFailed事件类表示用户尝试登录MicrosoftSQLServer但失败。此类中的事件由新连接或连接池中重用的连接触发。

AuditLoginChangeProperty事件类-当使用sp_defaultdb存储过程、sp_defaultlanguage存储过程或ALTERLOGIN语句修改登录名的属性时,将发生AuditLoginChangeProperty事件类。

AuditLoginChangePassword事件类-每当用户更改其MicrosoftSQLServer登录密码时,都会发生AuditLoginChangePassword事件类。

AuditAddLogintoServerRole事件类-每当在固定服务器角色中添加或删除登录时,都会发生AuditAddLogintoServerRole事件类。此事件类用于sp_addsrvrolemember和sp_dropsrvrolemember存储过程。

审计向数据库角色添加成员事件类-在数据库角色中添加或删除登录名时,会发生审计向数据库角色添加成员事件类。此事件类与sp_addrolemember、sp_changegroup和sp_droprolemember存储过程一起使用。

AuditAppRoleChangePassword事件类-每当更改应用程序角色的密码时,都会发生AuditAppRoleChangePassword事件类。

AuditDatabaseObjectAccess事件类-当访问数据库对象(如模式)时,会发生AuditDatabaseObjectAccess事件类。

审计模式对象访问事件类-当使用对象权限(如SELECT)时,将发生审计模式对象访问事件类。

AuditBackup/Restore事件类-每当发出备份或还原命令时,都会发生AuditBackup/Restore事件类。

AuditDBCC事件类-每当发出DBCC命令时,就会发生auditDBCC事件类。

审核更改审核事件类-无论何时修改审核跟踪,都会发生审核更改审核事件类。

AuditDatabaseManagement事件类-创建、更改或删除数据库时会发生AuditDatabaseManagement事件类。

AuditDatabaseObjectManagement事件类-当对数据库对象(如模式)执行CREATE、ALTER或DROP语句时,会发生AuditDatabaseObjectManagement事件类。

AuditSchema对象管理事件类-创建、更改或删除服务器对象时,会出现auditschema对象管理事件类。

Auditprincipalimpersonation事件类-当服务器范围内存在模拟时(如executeas

auditdatabaseprincipalimpersonation事件类-auditdatabaseprincipalimpersonation事件类在数据库范围内显示为模拟(例如,executeas:或SETUSER)。

审核服务器对象取得所有权事件类-当服务器范围内的对象更改其所有者时,会发生审核服务器对象取得所有权事件类。

auditdatabaseobjecttakeownership事件类-当数据库范围内的对象所有者发生更改时,会发生auditdatabaseobjecttakeownership事件类。

AuditSchemaObjectTakeOwnership事件类-当检查架构对象(如表、过程或函数)所有者的权限时,会发生AuditSchemaObjectTakeOwnership事件类。当使用ALTERAUTHORIZATION语句指定对象的所有者时,会发生这种情况。

AuditChangeDatabaseOwner事件类-当您使用ALTERAUTHORIZATION语句更改数据库的所有者时,将发生AuditChangeDatabaseOwner事件类,并将检查该 *** 作所需的权限。

审核服务器 *** 作事件类-当执行安全审核 *** 作(如更改设置、资源、外部访问或授权)时,会发生审核服务器 *** 作事件类。

AuditServerAlterTrace事件类-对于检查AlterTrace权限的所有语句,都会发生auditserverALTERTRACE事件类。用于检查ALTERTRACE的语句包括用于创建或配置跟踪或设置跟踪筛选器的语句。

Audit服务器对象管理事件类-对服务器对象执行创建、变更或删除 *** 作时,会出现Audit服务器对象管理事件类。

审核服务器主体管理事件类-当创建、更改或删除服务器主体时,会发生审核服务器主体管理事件类。

AuditDatabaseOperation事件类-当数据库中发生各种 *** 作(如检查点 *** 作或订阅查询通知)时,会发生AuditDatabaseOperation事件类。

存储过程中的最后一部分是执行这个跟踪。最后,在存储过程之外,当SQL服务启动时,该存储过程被标记为自动执行。通过跟踪sp_trace_setstatus设置startup。

-- Set the trace status to start exec sp_trace_setstatus @TraceID, 1 print 'INFO: Successfully created the trace with ID ' + CAST (@traceid AS varchar(10)) return (0) GO declare @rc int -- Set the proc for autostart exec @rc = sp_procoption 'dbo.sp_create_evaltrace', 'startup', 'on' IF @rc != 0 BEGIN print 'ERROR: sp_procoption returned ' + CAST(@rc AS NVARCHAR(10)) print 'ERROR: Could not set sp_create_evaltrace for autostart' END -- start the eval trace exec dbo.sp_create_evaltrace GO

Sp_trace_setstatus参数说明:

0:停止跟踪。

1:开始跟踪

2:关闭跟踪并将其从服务器中删除

因为我们希望在启动时运行存储过程,所以必须激活“扫描启动过程”选项。默认情况下,该选项是关闭的,但是当存储过程被标记为在启动时执行时,该选项将被激活。因此,一旦执行了最后一行代码,该选项将被激活。您也可以通过SSMS下的服务器属性-高级来修改它。

完成上述步骤后,停止并重新启动SQL服务。当服务再次启动时,您将看到在上面第二部分代码的目录中生成了一个跟踪文件。至此,CC的部署已经完成。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/783925.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-04
下一篇 2022-05-04

发表评论

登录后才能评论

评论列表(0条)

保存