AlloyDB Auth Proxy 简介

本页面简要介绍了 AlloyDB Auth Proxy,这是一种连接器,可让您与 AlloyDB 数据库建立经过授权的加密连接。

如需了解使用 Auth Proxy 的分步指南,请参阅使用 AlloyDB Auth Proxy 连接

使用 AlloyDB Auth Proxy 的优势

与直接将客户端连接到 AlloyDB 数据库相比,Auth Proxy 具有以下优势:

  • 基于 IAM 的连接授权 (AuthZ):Auth Proxy 使用 Identity and Access Management (IAM) 主账号的凭据和权限来授权连接到 AlloyDB 实例。

  • 安全的加密通信:Auth Proxy 会自动使用 256 位 AES 加密在客户端和 AlloyDB 实例之间创建、使用和维护 TLS 1.3 连接,以验证客户端和服务器身份并加密数据流量。

如需详细了解如何连接到 AlloyDB 实例,请参阅连接概览

AlloyDB Auth Proxy 的工作原理

AlloyDB Auth Proxy 的工作原理是在本地环境中运行本地客户端。您的应用通过数据库使用的标准数据库协议与 AlloyDB Auth Proxy 进行通信。

AlloyDB Auth Proxy 使用安全隧道 (TLS 1.3、256 位 AES 加密) 与服务器上运行的配套进程进行通信。通过 AlloyDB Auth Proxy 建立的每个连接都会创建一个与 AlloyDB 实例的连接。

应用连接到 AlloyDB Auth Proxy 时,它会检查其与目标 AlloyDB 实例之间的现有连接是否可用。如果连接不存在,则它会调用 AlloyDB Admin API 来获取临时 SSL 证书并使用它来连接到 AlloyDB。临时 SSL 证书在 24 小时后过期。AlloyDB Auth Proxy 会在证书过期之前刷新这些证书。

AlloyDB Auth Proxy 使用 HTTPS 通过域名 alloydb.googleapis.com 调用 API。因此,防火墙必须允许客户端机器通过端口 443 (HTTPS) 发出的所有出站 TCP 连接。

虽然 AlloyDB Auth Proxy 可以监听任何端口,但它只会在端口 5433 上创建与 AlloyDB 实例的传出或出站连接。如果您的客户端机器具有出站防火墙政策,请确保它允许与 AlloyDB 实例 IP 上的端口 5433 建立传出连接。

AlloyDB Auth Proxy 如何授权 IAM 主账号

如需授权客户端连接到 AlloyDB 实例,Auth Proxy 客户端会使用客户端上的 IAM 主账号凭据向 Google Cloud 进行身份验证,然后验证 IAM 主账号是否具有 Cloud AlloyDB Client (roles/alloydb.client) 和 Service Usage Consumer (roles/serviceusage.serviceUsageConsumer) IAM 角色。

如需在客户端上找到 IAM 凭据,Auth Proxy 客户端会检查是否存在以下各项,并使用找到的第一项尝试向 Google Cloud进行身份验证:

  1. 由 --credentials-file 标志提供的凭据

    使用服务账号创建和下载关联的 JSON 密钥文件,并在启动 Auth Proxy 客户端时将 --credentials-file 标志设置为该文件的路径。该服务账号必须具有 AlloyDB 实例的 Cloud AlloyDB Client (roles/alloydb.client) 和 Service Usage Consumer (roles/serviceusage.serviceUsageConsumer) IAM 角色。

    要在命令行中使用此选项,请调用 alloydb-auth-proxy 命令,并将 --credentials-file 标志设置为 JSON 凭据文件的路径和文件名。该路径可以是绝对路径,也可以是相对于当前工作目录的路径。

  2. 由 --token 标志提供的凭据

    创建访问令牌,然后调用 alloydb-auth-proxy 命令,并将 --token 标志设置为 OAuth 2.0 访问令牌。

  3. 由环境变量提供的凭据

    此选项与使用 --credentials-file 标志类似,只是指定您在 GOOGLE_APPLICATION_CREDENTIALS 环境变量中设置的 JSON 凭据文件,而不是使用 --credentials-file 标志。

  4. 来自经过身份验证的 Google Cloud CLI 客户端的凭据

    如果您安装了 gcloud CLI 并已使用您的个人账号进行身份验证,则 Auth Proxy 客户端可以使用相同的账号凭据(前提是您启用了 --gcloud-auth 标志)。该方法特别适用于启动和运行开发环境。

    如果未为 gcloud auth login 选择任何账号,Auth Proxy 客户端会检查是否为 gcloud auth application-default login 选择了一个账号。这是在您未启用 --gcloud-auth 标志时的默认行为。

  5. 与 Compute Engine 实例关联的凭据

    如果您要从 Compute Engine 实例连接到 AlloyDB,则 Auth Proxy 客户端可以使用与 Compute Engine 实例关联的服务账号。如果服务账号具有 AlloyDB 实例的 Cloud AlloyDB Client (roles/alloydb.client) 和 Service Usage Consumer (roles/serviceusage.serviceUsageConsumer) Identity and Access Management (IAM) 角色,则 Auth Proxy 客户端会成功进行身份验证。

    如果 Compute Engine 实例与 AlloyDB 实例位于同一项目中,则 Compute Engine 实例的默认服务账号具有可对 AlloyDB 进行身份验证的必要权限。如果这两个实例属于不同的项目,则您必须将 Compute Engine 实例的服务账号添加到 AlloyDB 实例所属的项目中。

  6. 环境的默认服务账号

    如果 Auth Proxy 客户端在先前介绍的任何位置都找不到凭据,则其将遵循以服务账号身份进行身份验证中记录的逻辑。某些环境(例如 Compute Engine、App Engine 等)会提供一个默认服务账号,您的应用默认情况下可以使用该账号进行身份验证。如果您使用默认服务账号,则该账号必须具有 Cloud AlloyDB Client (roles/alloydb.client) 和 Service Usage Consumer (roles/serviceusage.serviceUsageConsumer) IAM 角色。

    如需详细了解 Google Cloud 的身份验证方法,请参阅身份验证概览

后续步骤