为 Performance Insights 配置访问策略 - Amazon Relational Database Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

为 Performance Insights 配置访问策略

要访问 Performance Insights,主体必须拥有 Amazon Identity and Access Management (IAM) 的相应权限。您可以通过以下方式授予访问权限:

  • AmazonRDSPerformanceInsightsReadOnly 托管式策略附加到权限集或角色,以访问性能详情 API 的所有只读操作。

  • AmazonRDSPerformanceInsightsFullAccess 托管式策略附加到权限集或角色,以访问性能详情 API 的所有操作。

  • 创建自定义 IAM policy 并将其附加到权限集或角色。

如果您在打开 Performance Insights 时指定了客户托管密钥,请确保账户中的用户对 KMS 密钥具有 kms:Decryptkms:GenerateDataKey 权限。

将 AmazonRDSPerformanceInsightsReadOnly 策略附加到 IAM 主体

AmazonRDSPerformanceInsightsReadOnly 是 Amazon 托管式策略,可以授予对 Amazon RDS Performance Insights API 的所有只读操作的访问权限。

如果将 AmazonRDSPerformanceInsightsReadOnly 附加到权限集或角色,接收人可以使用性能详情以及其他控制台功能。

有关更多信息,请参阅Amazon 托管式策略:AmazonRDSPerformanceInsightsReadOnly

将 AmazonRDSPerformanceInsightsFullAccess 策略附加到 IAM 主体

AmazonRDSPerformanceInsightsFullAccess 是 Amazon 托管式策略,可以授予对 Amazon RDS 性能详情 API 的所有操作的访问权限。

如果将 AmazonRDSPerformanceInsightsFullAccess 附加到权限集或角色,接收人可以使用性能详情以及其他控制台功能。

有关更多信息,请参阅Amazon 托管式策略:AmazonRDSPerformanceInsightsFullAccess

为 Performance Insights 创建自定义 IAM 策略

对于没有 AmazonRDSPerformanceInsightsReadOnlyAmazonRDSPerformanceInsightsFullAccess 策略的用户,您可以通过创建或修改用户托管式 IAM policy,来授予对性能详情的访问权限。当您将策略附加到 IAM 权限集或角色时,接收人可以使用性能详情。

创建自定义策略
  1. 通过以下网址打开 IAM 控制台:https://console.aws.amazon.com/iam/

  2. 在导航窗格中,选择 Policies (策略)

  3. 选择 Create policy (创建策略)

  4. 创建策略页面上,选择“JSON”选项卡。

  5. 复制并粘贴《Amazon 托管式策略参考指南》JSON 策略文档部分中面向 AmazonRDSPerformanceInsightsReadOnlyAmazonRDSPerformanceInsightsFullAccess 策略提供的文本。

  6. 选择Review policy(查看策略)

  7. 为策略提供名称并可以选择提供描述,然后选择创建策略

现在,可以将策略附加到权限集或角色。以下过程假设您已经有一个可用于此目的的用户。

将策略附加到用户
  1. 打开 IAM 控制台:https://console.aws.amazon.com/iam/

  2. 在导航窗格中,选择 Users

  3. 从列表中选择现有用户。

    重要

    要使用 Performance Insights,请确保除了自定义策略之外,您还有权访问 Amazon RDS。例如,AmazonRDSPerformanceInsightsReadOnly 预定义策略提供了对 Amazon RDS 的只读访问权限。有关更多信息,请参阅“使用策略管理访问”。

  4. Summary (摘要) 页上,选择 Add permissions (添加权限)

  5. 选择直接附加现有策略。对于 Search,键入策略名称的前几个字符,如下所示。

    
						选择一个策略
  6. 选择策略,然后选择 Next: Review

  7. 选择 Add permissions (添加权限)

为 Performance Insights 配置 Amazon KMS 策略

Performance Insights 使用 Amazon KMS key 加密敏感数据。通过 API 或控制台启用 Performance Insights 时,您可以执行以下任一操作:

  • 选择原定设置 Amazon 托管式密钥。

    Amazon RDS 为新的数据库实例使用 Amazon 托管式密钥。Amazon RDS 将为您的 Amazon Web Services 账户创建 Amazon 托管式密钥。您的 Amazon Web Services 账户在每个 Amazon Web Services 区域都有用于 Amazon RDS 的不同 Amazon 托管式密钥。

  • 选择客户托管密钥。

    如果您指定一个客户托管密钥,则您账户中调用 Performance Insights API 的用户需要在 KMS 密钥具有 kms:Decryptkms:GenerateDataKey 权限。您可以通过 IAM 策略配置这些权限。但是,我们建议您通过 KMS 密钥策略来管理这些权限。有关更多信息,请参阅在 Amazon KMS 中使用密钥策略

以下示例显示了如何将语句添加到 KMS 密钥策略。这些语句可以访问 Performance Insights。您可能需要更改一些限制,这取决于您使用 KMS 密钥的方式。在将语句添加到您的策略之前,请删除所有注释。

{ "Version" : "2012-10-17", "Id" : "your-policy", "Statement" : [ { //This represents a statement that currently exists in your policy. } ...., //Starting here, add new statement to your policy for Performance Insights. //We recommend that you add one new statement for every RDS instance { "Sid" : "Allow viewing RDS Performance Insights", "Effect": "Allow", "Principal": { "AWS": [ //One or more principals allowed to access Performance Insights "arn:aws:iam::444455556666:role/Role1" ] }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "*", "Condition" : { "StringEquals" : { //Restrict access to only RDS APIs (including Performance Insights). //Replace region with your Amazon Region. //For example, specify us-west-2. "kms:ViaService" : "rds.region.amazonaws.com" }, "ForAnyValue:StringEquals": { //Restrict access to only data encrypted by Performance Insights. "kms:EncryptionContext:aws:pi:service": "rds", "kms:EncryptionContext:service": "pi", //Restrict access to a specific RDS instance. //The value is a DbiResourceId. "kms:EncryptionContext:aws:rds:db-id": "db-AAAAABBBBBCCCCDDDDDEEEEE" } } }

性能详情如何使用 Amazon KMS 客户自主管理型密钥

性能详情使用客户自主管理型密钥加密敏感数据。当您开启性能详情时,可以通过 API 提供 Amazon KMS 密钥。性能详情对此密钥创建 KMS 权限。它使用密钥并执行必要的操作来处理敏感数据。敏感数据包括用户、数据库、应用程序和 SQL 查询文本等字段。性能详情可确保数据在静态和动态时都保持加密状态。

性能详情 IAM 如何使用 Amazon KMS

IAM 提供针对特定 API 的权限。性能详情具有以下公有 API,您可以使用 IAM policy 对其进行限制:

  • DescribeDimensionKeys

  • GetDimensionKeyDetails

  • GetResourceMetadata

  • GetResourceMetrics

  • ListAvailableResourceDimensions

  • ListAvailableResourceMetrics

您可以使用以下 API 请求来获取敏感数据。

  • DescribeDimensionKeys

  • GetDimensionKeyDetails

  • GetResourceMetrics

当您使用 API 获取敏感数据时,性能详情会利用调用方的凭证。此检查可确保敏感数据的访问权限仅限于有权访问 KMS 密钥的用户。

调用这些 API 时,您需要通过 IAM policy 调用 API 的权限,以及通过 Amazon KMS 密钥策略调用 kms:decrypt 操作的权限。

GetResourceMetrics API 可以返回敏感和非敏感数据。请求参数决定响应是否应包含敏感数据。当请求的筛选条件或分组依据参数中包含敏感维度时,API 会返回敏感数据。

有关可以与 GetResourceMetrics API 一起使用的维度的更多信息,请参阅 DimensionGroup

例 示例

以下示例请求 db.user 组的敏感数据:

POST / HTTP/1.1 Host: <Hostname> Accept-Encoding: identity X-Amz-Target: PerformanceInsightsv20180227.GetResourceMetrics Content-Type: application/x-amz-json-1.1 User-Agent: <UserAgentString> X-Amz-Date: <Date> Authorization: AWS4-HMAC-SHA256 Credential=<Credential>, SignedHeaders=<Headers>, Signature=<Signature> Content-Length: <PayloadSizeBytes> { "ServiceType": "RDS", "Identifier": "db-ABC1DEFGHIJKL2MNOPQRSTUV3W", "MetricQueries": [ { "Metric": "db.load.avg", "GroupBy": { "Group": "db.user", "Limit": 2 } } ], "StartTime": 1693872000, "EndTime": 1694044800, "PeriodInSeconds": 86400 }

以下示例请求 db.load.avg 指标的非敏感数据:

POST / HTTP/1.1 Host: <Hostname> Accept-Encoding: identity X-Amz-Target: PerformanceInsightsv20180227.GetResourceMetrics Content-Type: application/x-amz-json-1.1 User-Agent: <UserAgentString> X-Amz-Date: <Date> Authorization: AWS4-HMAC-SHA256 Credential=<Credential>, SignedHeaders=<Headers>, Signature=<Signature> Content-Length: <PayloadSizeBytes> { "ServiceType": "RDS", "Identifier": "db-ABC1DEFGHIJKL2MNOPQRSTUV3W", "MetricQueries": [ { "Metric": "db.load.avg" } ], "StartTime": 1693872000, "EndTime": 1694044800, "PeriodInSeconds": 86400 }