更改性能详情的 AWS KMS 策略 - Amazon Relational Database Service

更改性能详情的 AWS KMS 策略

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

  • 选择默认 AWS 托管式密钥。

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

  • 选择客户托管密钥。

    如果您指定一个客户托管密钥,则您账户中调用 Performance Insights API 的用户需要在 KMS 密钥具有 kms:Decryptkms:GenerateDataKey 权限。您可以通过 IAM policy 配置这些权限。但是,我们建议您通过 KMS 密钥策略来管理这些权限。有关更多信息,请参阅《AWS Key Management Service 开发人员指南》中的在 AWS 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 AWS 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" } } }

Performance Insights 如何使用 AWS KMS 客户托管密钥

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

Performance Insights IAM 如何使用 AWS KMS

IAM 提供针对特定 API 的权限。Performance Insights 具有以下公有 API,您可以使用 IAM 策略对其进行限制:

  • DescribeDimensionKeys

  • GetDimensionKeyDetails

  • GetResourceMetadata

  • GetResourceMetrics

  • ListAvailableResourceDimensions

  • ListAvailableResourceMetrics

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

  • DescribeDimensionKeys

  • GetDimensionKeyDetails

  • GetResourceMetrics

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

调用这些 API 时,您需要通过 IAM 策略调用 API 的权限,以及通过 AWS 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 }