审计Amazon DocumentDB - Amazon DocumentDB
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

审计Amazon DocumentDB

使用 Amazon DocumentDB (with Amazon DocumentDB (with MongoDB),您可以审核在集群中执行的事件。记录的事件的示例包括成功和失败的身份验证尝试、删除数据库中的集合或创建索引。默认情况下,在 Amazon DocumentDB 上禁用审核,并要求您选择使用该功能。

启用审核后,Amazon DocumentDB 会将数据定义语言 (DDL)、数据处理语言 (DML)、身份验证、授权和用户管理事件记录到 Amazon。 CloudWatch 日志。启用审核后,Amazon DocumentDB 会将集群的审核记录(JSON 文档)导出到 Amazon CloudWatch 日志。你可以使用亚马逊 CloudWatch 分析、监控和存档您的 Amazon DocumentDB 审核事件的日志。

尽管 Amazon DocumentDB 不对启用审核额外收费,但您需要为使用 CloudWatch 日志。了解有关的信息 CloudWatch 日志,请参阅亚马逊 CloudWatch 定价.

Amazon DocumentDB 审计功能与使用监控的服务资源使用情况有明显的不同Amazon CloudTrail. CloudTrail 记录使用执行的操作Amazon Command Line Interface(Amazon CLI) 或Amazon Web Services Management Console在集群、实例、参数组和快照等资源上。审计Amazon资源与 CloudTrail 默认处于启用状态,并且无法禁用。Amazon DocumentDB 审核功能是一种可选功能。它记录在集群中对对象(例如数据库、集合、索引和用户)采取的操作。

支持的事件

Amazon DocumentDB 审计支持以下事件类别:

  • 数据定义语言 (DDL)-包括数据库管理操作、连接、用户管理和授权。

  • 数据操纵语言读取事件(DML 读取)-包括find()以及各种聚合运算符、算术运算符、布尔运算符和其他读取查询运算符。

  • 数据操纵语言写入事件(DML 写入)-包括insert(), update(), delete(),bulkWrite()运营商

事件类型如下所示。

Event type 类别 描述
authCheck Authorization 未经授权的执行操作的尝试。
authenticate 连接 对新连接进行的成功或失败的身份验证尝试。
createDatabase DDL 创建新数据库。
createCollection DDL 在数据库中创建新集合。
createIndex DDL 在集合中创建新索引。
dropCollection DDL 删除数据库中的集合。
dropDatabase DDL 删除数据库。
dropIndex DDL 删除集合中的索引。
modifyChangeStreams DDL 创建变更流。
renameCollection DDL 重命名数据库中的集合。
createRole 管理角色 创建角色。
dropAllRolesFromDatabase 管理角色 删除数据库中的所有角色。
dropRole 管理角色 丢掉一个角色。
grantPrivilegesToRole 管理角色 向授予权限。
grantRolesToRole 管理角色 向授予用户定义角色。
revokePrivilegesFromRole 管理角色 撤消角色的权限。
revokeRolesFromRole 管理角色 撤消用户定义角色。
updateRole 管理角色 更新角色。
createUser 用户管理 创建新用户。
dropAllUsersFromDatabase 用户管理 删除数据库中的所有用户。
dropUser 用户管理 删除现有用户。
grantRolesToUser 用户管理 向用户授予角色。
revokeRolesFromUser 用户管理 撤销用户的角色。
updateUser UserManagement 更新现有用户。
insert DML 写入 将一个或多个文档插入到集合中。
delete DML 写入 从集合中删除一个或多个文档。
update DML 写入 修改集合中的一个或多个现有文档。
bulkWrite DML 写入 使用执行顺序控件执行多个写入操作。
count DML 已读 返回与集合或视图的 find () 查询相匹配的文档计数。
countDocuments DML 已读 返回与集合或视图的查询相匹配的文档计数。
find DML 已读 选择集合或视图中的文档,并将光标返回到所选文档。
findAndModify DML 读取和 DML 写入 修改并返回单个文档。
findOneAndDelete DML 读取和 DML 写入 根据筛选条件和排序标准删除单个文档,返回已删除的文档。
findOneAndReplace DML 读取和 DML 写入 根据指定的筛选器替换单个文档。
findOneAndUpdate DML 读取和 DML 写入 根据筛选条件和排序条件更新单个文档。
aggregate DML 读取和 DML 写入 支持聚合管道中的 API。
distinct DML 已读 在单个集合或视图中查找指定字段的不同值,并在数组中返回结果。
注意

此时不审计 TTL 删除事件。

启用审核

在集群上启用审核是一个两步过程。请确保完成这两个步骤,否则审计日志不会发送到 CloudWatch 日志。

第 1 步 启用 audit_logs 集群参数

要启用审计,您需要修改audit_logs参数组中的参数。audit_logs是要记录的事件列表,以逗号分隔。事件必须以小写形式指定,列表元素之间不应有空格。

您可以设置以下参数组值:

描述
ddl 设置此选项将启用对 DDL 事件的审计,例如 createDatabase、dropDatabase、createCollection、dropCollection、createIndex、authCheck、身份验证、createUser、dropUser Us grantRolesTo用户, revokeRolesFrom用户、updateUser 和 dropAllUsersFromDatabase
dml_read 设置此选项将启用对 DML 读取事件的审计,例如查找、排序计数、distinct、分组、项目、展开、GeoNear、GeoIntersects、GeoIntersects、GeoWithin 和其他 MongoDB 读取查询运算符。
dml_write 设置此项将启用对 DML 写入事件的审计,例如 insert ()、update ()、delete () 和 BulkWrite ()
all 设置此项将启用对数据库事件的审计,例如读取查询、写入查询、数据库操作和管理员操作。
none 设置此项将禁用审计
enabled(传统) 这是一个等同于 “ddl” 的传统参数设置。设置此选项将启用对 DDL 事件的审计,例如 createDatabase、dropDatabase、createCollection、dropCollection、createIndex、authCheck、身份验证、createUser、dropUser Us grantRolesTo用户, revokeRolesFrom用户、updateUser 和 dropAllUsersFromDatabase. 我们不建议使用该设置,因为它是传统设置。
disabled (传统) 这是一个等同于 “none” 的传统参数设置。我们不建议使用该设置,因为它是传统设置。

您也可以组合使用上面提到的值。

描述
ddl, dml_read 设置此项将启用 DDL 事件和 DML 读取事件的辅助功能。
ddl, dml_write 设置此项将启用 DDL 事件和 DML 写入的辅助功能
dml_read, dml_write 设置此项将启用所有 DML 事件的审计
注意

您无法修改默认参数组。

有关更多信息,请参阅下列内容:

第 2 步 启用Amazon CloudWatch 导出日志

当的值audit_logs集群参数是enabled,您还必须使将日志导出到亚马逊 CloudWatch. 如果省略上述步骤中的任何一个,就不会将审核日志发送到 CloudWatch.

创建集群时,执行 point-in-time-restore,或者恢复快照,您可以启用 CloudWatch 执行以下步骤。

使用 Amazon Web Services Management Console

启用Amazon DocumentDB 将日志导出到 CloudWatch 使用控制台,请参阅以下主题:

使用 Amazon CLI

在创建新集群时启用审计日志

以下代码创建集群sample-cluster并启用 CloudWatch 审核日志。

对于 Linux、macOS 或 Unix:

aws docdb create-db-cluster \ --db-cluster-identifier sample-cluster \ --port 27017 \ --engine docdb \ --master-username master-username \ --master-user-password password \ --db-subnet-group-name default \ --enable-cloudwatch-logs-exports audit

对于 Windows:

aws docdb create-db-cluster ^ --db-cluster-identifier sample-cluster ^ --port 27017 ^ --engine docdb ^ --master-username master-username ^ --master-user-password password ^ --db-subnet-group-name default ^ --enable-cloudwatch-logs-exports audit

在修改现有集群时启用审计日志

以下代码修改集群sample-cluster并启用 CloudWatch 审核日志。

对于 Linux、macOS 或 Unix:

aws docdb modify-db-cluster \ --db-cluster-identifier sample-cluster \ --cloudwatch-logs-export-configuration '{"EnableLogTypes":["audit"]}'

对于 Windows:

aws docdb modify-db-cluster ^ --db-cluster-identifier sample-cluster ^ --cloudwatch-logs-export-configuration '{"EnableLogTypes":["audit"]}'

这些操作的输出将类似于下文(JSON 格式)。

{ "DBCluster": { "HostedZoneId": "ZNKXH85TT8WVW", "StorageEncrypted": false, "DBClusterParameterGroup": "default.docdb4.0", "MasterUsername": "<user-name>", "BackupRetentionPeriod": 1, "Port": 27017, "VpcSecurityGroups": [ { "Status": "active", "VpcSecurityGroupId": "sg-77186e0d" } ], "DBClusterArn": "arn:aws:rds:us-east-1:900083794985:cluster:sample-cluster", "Status": "creating", "Engine": "docdb", "EngineVersion": "4.0.0", "MultiAZ": false, "AvailabilityZones": [ "us-east-1a", "us-east-1c", "us-east-1f" ], "DBSubnetGroup": "default", "DBClusterMembers": [], "ReaderEndpoint": "sample-cluster.cluster-ro-corcjozrlsfc.us-east-1.docdb.amazonaws.com", "EnabledCloudwatchLogsExports": [ "audit" ], "PreferredMaintenanceWindow": "wed:03:08-wed:03:38", "AssociatedRoles": [], "ClusterCreateTime": "2019-02-13T16:35:04.756Z", "DbClusterResourceId": "cluster-YOS52CUXGDTNKDQ7DH72I4LED4", "Endpoint": "sample-cluster.cluster-corcjozrlsfc.us-east-1.docdb.amazonaws.com", "PreferredBackupWindow": "07:16-07:46", "DBClusterIdentifier": "sample-cluster" } }

禁用审核

您可以禁用审核功能 CloudWatch 日志导出和禁用audit_logs参数。

禁用 CloudWatch 导出日志

您可以使用 Amazon Web Services Management Console或 Amazon CLI 禁止导出审核日志。

使用 Amazon Web Services Management Console

以下过程使用Amazon Web Services Management Console禁用Amazon DocumentDB 将日志导出到 CloudWatch.

禁用审计日志

  1. 登录到Amazon Web Services Management Console,然后打开亚马逊 DocumentDB 控制台https://console.aws.amazon.com/docdb.

  2. 在导航窗格中,选择 Clusters。然后,选择要禁用导出日志的集群名称左侧的按钮。

  3. 选择 Actions (操作),然后选择 Modify (修改)

  4. 向下滚动到 Log exports (日志导出) 部分并选择 Disabled (已禁用)

  5. 选择 Continue(继续)。

  6. 检查更改,然后选择何时将该更改应用到集群。

    • Apply during the next scheduled maintenance window (在下一个计划的维护时段内应用)

    • Apply immediately (立即应用)

  7. 选择修改集群

使用 Amazon CLI

以下代码修改集群sample-cluster并禁用 CloudWatch 审核日志。

对于 Linux、macOS 或 Unix:

aws docdb modify-db-cluster \ --db-cluster-identifier sample-cluster \ --cloudwatch-logs-export-configuration '{"DisableLogTypes":["audit"]}'

对于 Windows:

aws docdb modify-db-cluster ^ --db-cluster-identifier sample-cluster ^ --cloudwatch-logs-export-configuration '{"DisableLogTypes":["audit"]}'

此操作的输出将类似于下文(JSON 格式)。

{ "DBCluster": { "DBClusterParameterGroup": "default.docdb4.0", "HostedZoneId": "ZNKXH85TT8WVW", "MasterUsername": "<user-name>", "Status": "available", "Engine": "docdb", "Port": 27017, "AvailabilityZones": [ "us-east-1a", "us-east-1c", "us-east-1f" ], "EarliestRestorableTime": "2019-02-13T16:35:50.387Z", "DBSubnetGroup": "default", "LatestRestorableTime": "2019-02-13T16:35:50.387Z", "DBClusterArn": "arn:aws:rds:us-east-1:900083794985:cluster:sample-cluster2", "Endpoint": "sample-cluster2.cluster-corcjozrlsfc.us-east-1.docdb.amazonaws.com", "ReaderEndpoint": "sample-cluster2.cluster-ro-corcjozrlsfc.us-east-1.docdb.amazonaws.com", "BackupRetentionPeriod": 1, "EngineVersion": "4.0.0", "MultiAZ": false, "ClusterCreateTime": "2019-02-13T16:35:04.756Z", "DBClusterIdentifier": "sample-cluster2", "AssociatedRoles": [], "PreferredBackupWindow": "07:16-07:46", "DbClusterResourceId": "cluster-YOS52CUXGDTNKDQ7DH72I4LED4", "StorageEncrypted": false, "PreferredMaintenanceWindow": "wed:03:08-wed:03:38", "DBClusterMembers": [], "VpcSecurityGroups": [ { "Status": "active", "VpcSecurityGroupId": "sg-77186e0d" } ] } }

禁用 audit_logs 参数

要禁用集群的 audit_logs 参数,您可以修改集群,使其使用 audit_logs 参数值为 disabled 的参数组。或者,您可以修改集群的参数组中的 audit_logs 参数值,使其为 disabled

有关更多信息,请参阅以下主题:

访问审计事件

使用以下步骤访问您在Amazon 上的审核事件 CloudWatch.

  1. 打开 CloudWatch 控制台位于https://console.aws.amazon.com/cloudwatch/.

  2. 请确保您与您的 Amazon DocumentDB 集群位于同一区域。

  3. 在导航窗格中,选择日志

  4. 要查找集群的审核日志,请从列表中找到并选择 /aws/docdb/yourClusterName/audit

    此时,每个实例名称的下方将显示该实例的审计事件。