bear458加速器小熊官网入口

案例中心

如何在 Amazon RDS 上启用和优化 SQL Server 的审计 数据库博客

在 Amazon RDS for SQL Server 上启用和优化审计

文章重点

在本篇文章中,我们将介绍如何在 Amazon RDS for SQL Server 上有效且高效地设置审计,并讨论最佳实践以优化您的审计配置。SQL Server 提供了广泛的事件日志功能,以追踪从资料库到伺服器层级的各种事件,这对于合规性和资料安全至关重要。

组织通常受到法规或法律要求,必须保留资料库审计记录,以证明其在各种资料隐私和合规义务上的遵从。例如,PCIDSS 框架要求金融机构保持审计记录以确保资料安全和合规性。

在本篇文章中,我们将介绍如何在 Amazon Relational Database Service (Amazon RDS) for SQL Server 中有效和高效地设置审计。我们将探讨优化您的审计配置的最佳实践,并研究不同的使用案例。SQL Server 提供了丰富的功能来记录事件,以便追踪从资料库到伺服器层级的各种事件。

除了合规性,SQL Server 审计日志还能提供以下反应性措施:

资料完整性:审计可以帮助检查资料完整性,透过确认资料是否遭到篡改来维护资料品质。安全性:审计日志可帮助检测到对敏感资料的未经授权访问。这些资讯可以用来调查安全事件并识别系统中的潜在漏洞。可追溯性:透过保留所有活动的记录,组织可以确定是谁在什么时候进行了变更。性能优化:审计日志还提供资料库的使用情况的洞见,并帮助识别性能优化的区域。

我们可以利用内建的 SQL Server 审计机制来启用 Amazon RDS for SQL Server 的审计。Amazon RDS 允许我们配置保留期以保留日志至 DB 实例,有助于将完成的审计日志移至 Amazon Simple Storage Service (Amazon S3) 桶中。这些日志稍后可以被推送到其他 AWS 服务或第三方工具,方便消费,并且可以保留作为历史记录。

审计对于 SQL Server 的资源需求高。非最佳的审计配置可能导致性能瓶颈。因此,保持审计需求与性能之间的平衡至关重要。

解决方案概述

如果资料库用户和物件数量众多,手动配置审计可能会耗时。我们将展示如何在大型的 RDS for SQL Server 资料库系统中自动化设置审计的过程。

在本篇文章中,我们将涵盖以下几个方面:

在 Amazon RDS for SQL Server 中配置伺服器级别和资料库级别的审计步骤。理解优化审计所需的计算资源的最佳实践。如何将审计配置限制在特定的物件、操作和用户上。如何使用 TSQL 自动化建立资料库级别的审计,以降低计算资源的使用。

我们可以将 SQL Server 的审计大体分为两个级别:

伺服器级别审计:这是在实例层级进行的配置。您可以配置多个实例级别任务并创建伺服器审计规范,以审计此审计类型的操作。依赖于实例级别操作的事件和行为会在此处记录。资料库级别审计:这指定了资料库级别的审计事件。像是资料表的数据访问、更新或删除等操作,可以通过此审计类型进行捕获。

在 Amazon RDS 中,自 SQL Server 2014 起,所有版本的 SQL Server 都支持伺服器级别的审计,企业版还支持资料库级别的审计。自 SQL Server 2016 (13x) SP1 起,所有版本都支持伺服器级别和资料库级别的审计。

前置条件

请完成以下前置条件步骤:

创建 RDS for SQL Server 实例以进行审计。与 RDS 实例建立连接。如需更多资讯,请参考 创建并连接到 Microsoft SQL Server DB 实例。创建并配置带有审计选项的自定义选项组。请参见 使用选项组的指导。创建一个 AWS 身份和访问管理 (IAM) 角色,ARN 格式为 arnawsiamaccountidrole/rolename。

有关 IAM 角色和 S3 桶设置的更多信息,请参考 SQL Server 审计支持。

配置伺服器级别的审计和伺服器审计规范

要创建伺服器级别的审计,我们需要配置一个审计和审计规范。一个审计包含了引擎遵循的配置和规则,例如日志文件位置、最大文件大小等等。伺服器级别审计规范包含客户可以选择在整个实例层级审计的操作。

在创建和配置这些资源后,根据规范的操作会被审计并根据审计文件在操作系统层级进行记录。

我们还定义存储位置和其他属性,如文件大小和错误操作。

创建伺服器级别的审计

要创建您的审计,请完成以下步骤:

使用 SQL Server Management Studio (SSMS) 连接到实例。在导航窗格中展开 Security。右键单击 Audits 并选择 New Audit。在 Audit name 中输入一个名称。名称可以是任何内容,但不能以 RDS 为后缀。

在 On Audit Log Failure 中,根据需求选择一个动作。

请勿将 SQL Server 配置为在写入审计记录失败时关闭 DB 实例。

在 Audit destination 中,选择 Path,并输入以下路径以存储审计日志:DrdsdbdataSQLAudit。

启用 Amazon RDS 中的审计时,此路径不可更改。

配置最大文件大小。请在 Amazon RDS 的情况下配置 MAXFILES MAXSIZE 为 250 MB。

点击 OK 完成设置。

以上提到的限制是由于 Amazon RDS 上的当前 限制。

创建伺服器级别审计规范

在审计规范中,我们定义想要记录的事件。请完成以下步骤:

使用 SSMS 连接到实例。在导航窗格中展开 Security。右键单击 Server Audit Specifications 并选择 New Server Audit Specification。在 Name 中输入一个名称。在 Audit 中,选择您创建的审计。

为 Audit Action Type、Object Class、Object Schema、Object Name 和 Principal 选择适当的值进行审计。

可以捕获多个事件,根据您的审计需求选择事件。在本篇中,我们将讨论一些可以记录的审计行动类型。

bear加速器小熊点击 OK 完成设置。

配置资料库级别审计规范

资料库审计规范收集资料库级别的审计操作。您可以将审计行动组或审计事件添加到资料库审计规范中。

您可以利用伺服器级别的审计配置来创建资料库级别的审计规范。请完成以下步骤:

如何在 Amazon RDS 上启用和优化 SQL Server 的审计 数据库博客使用 SSMS 连接到实例。在导航窗格中展开 Security。右键单击 Database Audit Specifications 并选择 New Database Audit Specification。在 Name 中输入一个名称。在 Audit 中,选择您创建的审计。

为 Audit Action Type、Object Class、Object Schema、Object Name 和 Principal 选择适当的值以进行审计。

点击 OK 完成设置。

审计最佳实践

SQL Server 提供了多种操作和事件以供日志记录。以下是一些常用的审计操作类型,这些操作在审计中经常被利用。伺服器级别审计适用于整个实例,而资料库审计规范则映射到单个资料库。每个 RDS for SQL Server 的伺服器级别审计最多可以映射一个资料库级别审计规范和一个伺服器审计规范。

伺服器级别审计规范资料库级别审计规范SERVEROPERATIONGROUP 当安全审计操作如修改设置、资源、外部访问或授权被使用时,会引发此事件。SELECT / UPDATE / EXECUTE / INSERT / DELETE 当 SQL Server 引擎发出 DML 时,这些事件将被引发。FAILEDLOGINGROUP 表示某个使用者试图登入 SQL Server 但失败。这类事件通常由新连接或重用的连接引发。DATABASEOWNERSHIPCHANGEGROUP 当您使用 ALTER AUTHORIZATION 语句更改资料库所有者时,会引发此事件。并且选择执行此操作所需的权限。这个事件会在伺服器上任何资料库的所有权变更时引发。SUCCESSFULLOGINGROUP 表示某个使用者成功登入 SQL Server。这类事件通常由新连接或重用的连接引发。DATABASEPERMISSIONCHANGEGROUP 每当有任何使用者为一个语句授予GRANT、撤销REVOKE或拒绝DENY权限时,这个事件会被引发这适用于仅限资料库事件,例如在一个资料库上授予权限。

审计应谨慎配置,尤其对于涉及大量用户活动的实例。在大多数情况下,尤其是拥有大量资料库物件的情况下,轻易就会导致将所有事物都进行审计。然而,这可能会导致性能瓶颈。为了充分利用计算资源并减少日志记录,请考虑以下最佳实践:

确定您需要审计的事件类型,如登录、登录失败或对资料的失败访问。优先考虑对您业务最重要的事件。确保仅在感兴趣的资料库上配置审计。过滤是优化审计的关键。配置您的审计以仅捕获来自相关用户的事件。根据应用程序使用案例选择事件类型,如 INSERT、UPDATE、DELETE 或 SELECT。您应只审计对您的使用案例至关重要的事件。筛选相关物件。例如,若要在 PII 资料上启用审计,您可能希望基于以 Customer 为关键字开头的资料表名称过滤审计事件。或者,您可以要求跳过所有表名以 TEMP、BACKUP 或 ARCHIVE 为关键字开头的物件。应监控自由存储、CPU 和记忆体,分别使用 FreeStorage、CPUUtilization 和 FreeableMemory Amazon CloudWatch 指标。

示范

在本节中,我们将执行以下步骤以示范不同的审计实施方法。

创建一个示范资料库

自动化用户基础的日志

自动化物件特定的日志

自动化操作特定的日志

第二、第三和第四点的脚本各自创建了单独的存储过程,以满足审计用例和业务需求,并需根据业务和审计要求进行修改和执行。

创建示范资料库

在 RDS 实例上运行以下脚本,以创建一个包含资料表和用户的示范资料库,接下来我们将利用此资料库示范审计自动化。

sql 创建资料库CREATE DATABASE sampledbGO

使用示范资料库USE sampledbGO

如果过程存在则删除IF OBJECTID(Createsampledatabasewithusrs P) IS NOT NULLDROP PROCEDURE CreatesampledatabasewithusrsGO

创建存储过程CREATE PROCEDURE CreatesampledatabasewithusrsASBEGIN DECLARE @i INT = 1 DECLARE @tablename NVARCHAR(50) DECLARE @username NVARCHAR(50) DECLARE @sql NVARCHAR(MAX)

 创建客户资料表WHILE @i lt= 3BEGIN    SET @tablename = CONCAT(customer CAST(@i AS NVARCHAR

AWS上的生成AI网络最佳实践由 Hernn Terrizzano 和 Marcos Boaglio 撰写于2024年8月12日,发布于 高级(300)、亚马逊机器学习、亚马逊SageMaker、亚马逊SageMaker HyperPod、亚马逊简单存储服务(S3)、亚马逊VPC、AWS大数据、AW...

扩展您的关系型数据库以支持SaaS:第一部分:常见的扩展模式文章重点在SaaS软件即服务业务增长的过程中,维护租户体验是一个主要挑战,这包括确保随着租户数量的增加,性能和响应时间依然处于可接受的范围。SaaS提供商通常使用Amazon RDS和Amazon Aurora等关系型数据库,随着业务发展的...