数据保护是指,在数据传输(传入和传出 API Gateway 时)和处于静态(存储在 中时)期间保护数据AWS
Amazon API Gateway 中的静态数据加密
如果选择为 REST API 启用缓存,则可以启用缓存加密。要了解更多信息,请参阅“API Gateway 中针对 REST API 的缓存设置”。
有关数据保护的更多信息,请参阅AWS安全性博客上的AWS责任共担模式和 GDPR
证书私有密钥的加密和解密
当您为私有 API 创建自定义域名后,系统会使用别名为 aws/acm 的 AWS 托管式 KMS 密钥,对您的 ACM 证书和私有密钥进行加密。您可以在 AWS KMS 控制台的 AWS 托管式密钥下,查看具有此别名的密钥 ID。
API Gateway 不会直接访问您的 ACM 资源,而是使用 AWS TLS Connection Manager 保护及访问证书的私有密钥。如果您使用 ACM 证书为私有 API 创建 API Gateway 自定义域名,API Gateway 会将您的证书与 AWS TLS Connection Manager 关联。方法为在 AWS KMS 中针对前缀为 aws/acm 的 AWS 托管密钥创建授权。授权是一种策略工具,允许 TLS Connection Manager 在加密操作中使用 KMS 密钥。授权允许被授权主体(TLS Connection Manager)对 KMS 密钥调用指定授权操作,以解密证书的私有密钥。然后,TLS Connection Manager 使用证书和解密(明文)的私有密钥,与 API Gateway 服务的客户端建立安全连接(SSL/TLS 会话)。当证书与私有 API 的 API Gateway 自定义域名取消关联时,该授权就会停用。
如果要删除对 KMS 密钥的访问,建议使用 AWS Management Console或 AWS CLI 中的 update-service
命令,从服务中替换或删除证书。
API Gateway 的加密上下文
加密上下文是一组可选的键值对,其中包含有关私有密钥用途的上下文信息。AWS KMS 将加密上下文绑定到加密数据,并将其用作附加验证数据,以支持经过身份验证的加密。
当您的 TLS 密钥与 API Gateway 和 TLS Connection Manager 一起使用时,API Gateway 服务的名称将包含在用于静态加密密钥的加密上下文中。您可以通过查看 CloudTrail 日志中的加密上下文(如下一节所示),或者查看 ACM 控制台中的关联资源选项卡,验证您的证书和私有密钥用于哪个 API Gateway 自定义域名。
要解密数据,在请求中包含相同的加密上下文。API Gateway 在所有 AWS 加密操作中使用同一个加密上下文,其中密钥为 aws:apigateway:arn
,值为 API Gateway PrivateDomainName
资源的 Amazon 资源名称(ARN)。
下面的示例显示操作输出中的加密上下文,例如 CreateGrant
:
"constraints": {
"encryptionContextEquals": {
"aws:acm:arn": "arn:aws:acm:us-west-2:859412291086:certificate/9177097a-f0ae-4be1-93b1-19f911ea4f88",
"aws:apigateway:arn": "arn:aws:apigateway:us-west-2:859412291086:/domainnames/denytest-part1.pdx.sahig.people.aws.dev+cbaeumzjhg"
}
},
"operations": [
"Decrypt"
],
"granteePrincipal": "tlsconnectionmanager.amazonaws.com"
Amazon API Gateway 中的传输中数据加密
通过 Amazon API Gateway 创建的 API 只公开 HTTPS 端点。API Gateway 不支持未加密的(HTTP)端点。
API Gateway 管理原定设置 execute-api
端点的证书。如果您配置自定义域名,请为该域名指定证书。作为最佳实践,请勿固定证书。
为了获得更高的安全性,您可以选择要为您的 API Gateway 自定义域实施的最低传输层安全性 (TLS) 协议版本。WebSocket API 和 HTTP API 仅支持 TLS 1.2。要了解更多信息,请参阅“选择针对 API Gateway 中 REST API 自定义域的安全策略”。
您还可以在账户中使用自定义 SSL 证书设置 Amazon CloudFront 分配,并将其用于区域 API。然后,您可以根据您的安全性和合规性要求,为具有 TLS 1.1 或更高版本的 CloudFront 分配配置安全策略。
有关数据保护的更多信息,请参阅 保护 API Gateway 中的 REST API 以及AWS安全性博客上的AWS责任共担模式和 GDPR