本指南介绍了如何使用 Google Workspace Client-side Encryption API 进行加密和解密。
您必须将用户使用的所有身份提供方 (IdP) 服务列入许可名单 共享加密文件通常情况下,您可以在账号中找到所需的 IdP 详细信息, 公开的 .well-known 文件;否则,请与组织的 Google Workspace 管理员可查看其 IdP 详细信息。
加密数据
当 Google Workspace 用户请求保存或存储客户端加密数据时
(CSE) 数据,Google Workspace 会发送 wrap
向 KACLS 端点网址发送请求以进行加密。除了可选的
安全检查(例如基于边界和 JWT 声明的检查),您的 KACLS 必须
请执行以下步骤:
验证发出请求的用户。
- 验证身份验证令牌, 和授权令牌。
- 通过以下方式检查授权令牌和身份验证令牌是否属于同一用户: 匹配电子邮件声明时不区分大小写。
- 当身份验证令牌包含可选的
google_email
声明时, 必须将其与授权令牌中的电子邮件声明进行比较 使用不区分大小写的方法。请勿在 用于此比较的身份验证令牌。 - 在身份验证令牌缺少可选
google_email
声明,身份验证令牌中的电子邮件声明 与授权令牌中的电子邮件声明进行比较, 方法即可。 - 在 Google 为未
与 Google 账号相关联,则必须提供
email_type
版权主张。 这是“访客访问”功能的重要组成部分,可提供有价值的 KACLS 对外部数据实施额外的安全措施 用户。- 下面列举了一些示例来说明 KACLS 如何使用这些信息:
- 为了施加额外的日志记录要求,
- 将身份验证令牌颁发者限制为专用访客 IdP。
- 要求对身份验证令牌的额外声明。
- 如果客户尚未配置访客访问权限,那么所有请求
其中
email_type
设置为google-visitor
,customer-idp
可以 已被拒绝。email_type
为google
或未设置的请求 您应继续接受email_type
。
- 检查授权令牌中的
role
声明是否为“writer”或 “upgrader”。 - 检查授权令牌中的
kacls_url
声明是否与 当前 KACLS 网址。通过这项检查, 由内部人员或恶意域配置的中间人服务器 管理员。 - 使用身份验证和授权执行边界检查 声明。
使用经过身份验证的加密算法加密以下部分:
- 数据加密密钥 (DEK)
- 授权令牌中的
resource_name
和perimeter_id
值 - 任何其他敏感数据
记录操作,包括发起该操作的用户、
resource_name
和 请求中传递的原因。返回一个不透明的二进制对象,该对象将由 Google Workspace 与一起存储 并在后续的所有密钥解封过程中按原样发送 操作。或者,提供结构化错误回复。
- 该二进制对象应包含已加密 DEK 的唯一副本, 实现特定数据可以存储在其中。
解密数据
当 Google Workspace 用户请求打开客户端加密 (CSE) 数据时,
Google Workspace 发送 unwrap
请求
您的 KACLS 端点网址以进行解密。除了可选的安全措施
例如边界和 JWT 声明检查,您的 KACLS 必须执行
执行下列步骤:
验证发出请求的用户。
- 验证身份验证令牌, 和授权令牌。
- 通过以下方式检查授权令牌和身份验证令牌是否属于同一用户: 匹配电子邮件声明时不区分大小写。
- 当身份验证令牌包含可选的
google_email
声明时, 必须将其与授权令牌中的电子邮件声明进行比较 使用不区分大小写的方法。请勿在 用于此比较的身份验证令牌。 - 在身份验证令牌缺少可选
google_email
声明,身份验证令牌中的电子邮件声明 与授权令牌中的电子邮件声明进行比较, 方法即可。 - 在 Google 为未
与 Google 账号相关联,则必须提供
email_type
版权主张。 这是“访客访问”功能的重要组成部分,可提供有价值的 KACLS 对外部数据实施额外的安全措施 用户。- 下面列举了一些示例来说明 KACLS 如何使用这些信息:
- 为了施加额外的日志记录要求,
- 将身份验证令牌颁发者限制为专用访客 IdP。
- 要求对身份验证令牌的额外声明。
- 如果客户尚未配置访客访问权限,那么所有请求
其中
email_type
设置为google-visitor
,customer-idp
可以 已被拒绝。email_type
为google
或未设置的请求 您应继续接受email_type
。
- 检查授权令牌中的
role
声明是否为“读取者”或 “writer”。 - 检查授权令牌中的
kacls_url
声明是否与 当前 KACLS 网址。这样才能检测到潜在的中间人 由内部人员或恶意网域管理员配置的服务器。
使用经过身份验证的加密算法解密以下部分:
- 数据加密密钥 (DEK)
- 授权令牌中的
resource_name
和perimeter_id
值 - 任何其他敏感数据
检查授权令牌和解密后的 blob 中的
resource_name
匹配。使用身份验证和授权声明执行边界检查。
记录操作,包括发起该操作的用户、
resource_name
和 请求中传递的原因。返回解封装的 DEK 或结构化错误回复。