设置和启用增强监控 - Amazon Relational Database Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

设置和启用增强监控

要使用增强监控,您必须创建 IAM 角色,然后启用增强监控。

为增强监控创建 IAM 角色

增强监测需要代表您执行操作的权限来向 CloudWatch Logs发送操作系统指标信息。您使用 Amazon Identity and Access Management(IAM)角色授予增强监控权限。您可以在启用增强监控时创建此角色,也可以事先创建该角色。

在启用增强监控时创建 IAM 角色

在 RDS 控制台中启用增强监控后,Amazon RDS 可以为您创建所需的 IAM 角色。该角色命名为 rds-monitoring-role。RDS 将此角色用于指定的数据库实例、只读副本或多可用区数据库集群。

在启用增强监控时创建 IAM 角色的方法

  1. 打开和关闭增强监控中的步骤操作。

  2. 在选择角色的步骤中,将监视角色设置为默认值

在启用增强监控之前创建 IAM 角色

您可以在启用增强监控之前创建所需的角色。在启用增强监控时,请指定新角色的名称。如果使用 Amazon CLI 或 RDS API 启用增强监测,则必须创建此必需角色。

必须向启用增强监控的用户授予 PassRole 权限。有关更多信息,请参阅 IAM 用户指南授予向 Amazon 服务传递角色的用户权限中的示例 2。

为 Amazon RDS 增强监控创建 IAM 角色

  1. 通过以下网址打开 IAM 控制台https://console.aws.amazon.com

  2. 在导航窗格中,选择 Roles (角色)

  3. 选择 Create role (创建角色)

  4. 选择 Amazon service(Amazon Web Services 服务)选项卡,然后从服务列表中选择 RDS

  5. 选择 RDS - Enhanced Monitoring (RDS - 增强监测),然后选择 Next: Permissions (下一步: 权限)

  6. 确保附加的权限策略页面显示 AmazonRDSEnhancedMonitoringRole,然后选择 Next: Tags (下一步: 标签)

  7. 添加标签页面上,选择 Next: Review (下一步: 审核)

  8. 对于角色名称,为您的角色输入一个名称。例如,输入 emaccess

    您角色的可信实体是 Amazon 服务 monitoring.rds.amazonaws.com

  9. 选择 Create role (创建角色)

打开和关闭增强监控

您可以使用 Amazon Web Services Management Console、Amazon CLI 或者 RDS API 打开和关闭增强监控。您可以选择要在其上启用增强监控的 RDS 实例。您可以为每个数据库实例上的指标收集设置不同的粒度。

您可以在创建数据库实例、多可用区数据库集群或只读副本,或者在修改数据库实例或多可用区数据库集群时打开增强监控。如果修改数据库实例以打开增强监控,您不需要重启数据库实例,更改也会生效。

Databases(数据库)页面执行以下某种操作时,您可以在 RDS 控制台中打开增强监控:

  • 创建数据库实例或多可用区数据库集群 - 选择 Create database(创建数据库)。

  • Create a read replica(创建只读副本):选择 Actions(操作),然后选择 Create read replica(创建只读副本)。

  • 修改数据库实例或多可用区数据库集群 – 选择 Modify(修改)。

在 RDS 控制台中打开或关闭增强监控

  1. 滚动到 Additional configuration(其他配置)。

  2. Monitoring(监控)中选择 Enable Enhanced Monitoring(启用增强监控),为数据库实例或只读副本启用增强监控。要关闭增强监控,请选择 Disable Enhanced Monitoring(禁用增强监控)。

  3. Monitoring Role 属性设置为您创建的 IAM 角色以允许 Amazon RDS 代表您与 Amazon CloudWatch Logs 通信,或选择 Default 让 RDS 为您创建一个名为 rds-monitoring-role 的角色。

  4. 粒度属性设置成两次为数据库实例或只读副本收集指标之间的间隔,以秒为单位。Granularity 属性可以设置为以下值之一:1510153060

    RDS 控制台最快每 5 秒刷新一次。如果您在 RDS 控制台中将粒度设置为 1 秒,仍然会看到指标每 5 秒更新一次。使用 CloudWatch Logs 可以获得 1 秒的指标更新。

要使用 Amazon CLI 打开增强监控,请在以下命令中将 --monitoring-interval 选项设置为 0 以外的值,并将 --monitoring-role-arn 选项设置为您在 为增强监控创建 IAM 角色 中创建的角色。

--monitoring-interval 选项指定收集增强监控指标的时间点之间的间隔,以秒为单位。选项的有效值为 015101530、和 60

要使用 Amazon CLI 关闭增强监控,请在这些命令中将 --monitoring-interval 选项设置为 0

以下示例将打开数据库实例的增强监控:

对于 Linux、macOS 或 Unix:

aws rds modify-db-instance \ --db-instance-identifier mydbinstance \ --monitoring-interval 30 \ --monitoring-role-arn arn:aws:iam::123456789012:role/emaccess

对于 Windows:

aws rds modify-db-instance ^ --db-instance-identifier mydbinstance ^ --monitoring-interval 30 ^ --monitoring-role-arn arn:aws:iam::123456789012:role/emaccess

以下示例将打开多可用区数据库集群的增强监控:

对于 Linux、macOS 或 Unix:

aws rds modify-db-cluster \ --db-cluster-identifier mydbcluster \ --monitoring-interval 30 \ --monitoring-role-arn arn:aws:iam::123456789012:role/emaccess

对于 Windows:

aws rds modify-db-cluster ^ --db-cluster-identifier mydbcluster ^ --monitoring-interval 30 ^ --monitoring-role-arn arn:aws:iam::123456789012:role/emaccess

要使用 RDS API 打开增强监控,请将 MonitoringInterval 参数设置为 0 以外的值,并将 MonitoringRoleArn 参数设置为您在 为增强监控创建 IAM 角色 中创建的角色。在以下操作中设置这些参数:

MonitoringInterval 参数指定收集增强监控指标的时间点之间的间隔,以秒为单位。有效值为 01510153060

要使用 RDS API 关闭增强监控,请将 MonitoringInterval 设置为 0

防范混淆代理问题

混淆代理问题是一个安全性问题,即不具有操作执行权限的实体可能会迫使具有更高权限的实体执行该操作。在 Amazon 中,跨服务模拟可能会导致混淆代理问题。一个服务(呼叫服务) 调用另一项服务(所谓的服务)时,可能会发生跨服务模拟。可以操纵调用服务,使用其权限以在其他情况下该服务不应有访问权限的方式对另一个客户的资源进行操作。为防止这种情况,Amazon 提供可帮助您保护所有服务的数据的工具,而这些服务中的服务委托人有权限访问账户中的资源。有关更多信息,请参阅混淆代理问题

要限制 Amazon RDS 授予另一项服务对资源的访问权限,建议在增强监控角色的信任策略中使用 aws:SourceArnaws:SourceAccount 全局条件上下文键。如果使用两个全局条件上下文键,则这两个键必须使用相同的账户 ID。

防范混淆代理问题最有效的方法是使用 aws:SourceArn 全局条件上下文键和资源的完整 ARN。对于 Amazon RDS,请将 aws:SourceArn 设置为 arn:aws:rds:Region:my-account-id:db/dbname

以下示例在信任策略中使用 aws:SourceArnaws:SourceAccount 全局条件上下文键来防范混淆代理问题。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "rds.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringLike": { "aws:SourceArn": "arn:aws:rds:Region:my-account-id:db:dbname" }, "StringEquals": { "aws:SourceAccount": "my-account-id" } } } ] }