更改数据库洞察的 AWS KMS 策略
数据库洞察使用 AWS KMS key 加密敏感数据。通过 API 或控制台启用数据库洞察时,您可以执行以下任一操作:
-
选择默认 AWS 托管式密钥。
Amazon RDS 为新的数据库实例使用 AWS 托管式密钥。Amazon RDS 将为您的 AWS 账户创建 AWS 托管式密钥。您的 AWS 账户在每个 AWS 区域都有用于 Amazon RDS 的不同 AWS 托管式密钥。
-
选择客户托管密钥。
如果您指定客户自主管理型密钥,则您账户中调用数据库洞察 API 的用户需要对 KMS 密钥具有
kms:Decrypt和kms:GenerateDataKey权限。您可以通过 IAM policy 配置这些权限。但是,我们建议您通过 KMS 密钥策略来管理这些权限。有关更多信息,请参阅《AWS Key Management Service 开发人员指南》中的在 AWS KMS 中使用密钥策略。
例
以下示例显示了如何将语句添加到 KMS 密钥策略。这些语句允许访问数据库洞察。您可能需要更改一些限制,这取决于您使用 KMS 密钥的方式。在将语句添加到您的策略之前,请删除所有注释。
数据库洞察如何使用 AWS KMS 客户自主管理型密钥
数据库洞察使用客户自主管理型密钥加密敏感数据。当您开启数据库洞察时,可以通过 API 提供 AWS KMS 密钥。数据库洞察对此密钥创建 AWS KMS 权限。它使用密钥并执行必要的操作来处理敏感数据。敏感数据包括用户、数据库、应用程序和 SQL 查询文本等字段。数据库洞察可确保数据在静态和传输过程中保持加密状态。
数据库洞察 IAM 如何与 AWS KMS 配合使用
IAM 提供针对特定 API 的权限。数据库洞察具有以下公有 API,您可以使用 IAM 策略对其进行限制:
DescribeDimensionKeysGetDimensionKeyDetailsGetResourceMetadataGetResourceMetricsListAvailableResourceDimensionsListAvailableResourceMetrics
您可以使用以下 API 请求来获取敏感数据。
DescribeDimensionKeysGetDimensionKeyDetailsGetResourceMetrics
当您使用 API 获取敏感数据时,数据库洞察会利用调用方的凭证。此检查可确保敏感数据的访问权限仅限于有权访问 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 }