本页面简要介绍了 AlloyDB Auth Proxy。借助此连接器,您可以建立到 AlloyDB 数据库的经过授权且加密的连接。
如需有关使用 Auth Proxy 的分步指南,请参阅使用 AlloyDB Auth 代理连接。
概览
与直接将客户端连接到 AlloyDB 数据库相比,Auth Proxy 具有以下优势:
基于 IAM 的连接授权 (AuthZ):Auth 代理使用 IAM 正文的凭据和权限来授权连接到 AlloyDB 实例。
安全加密通信:Auth 代理会在客户端和 AlloyDB 实例之间使用 256 位 AES 加密自动创建、使用和维护 TLS 1.3 连接,以验证客户端和服务器身份并加密数据流量。
如需详细了解如何连接到 AlloyDB 实例,请参阅连接概览。
AlloyDB Auth 代理的工作原理
AlloyDB Auth 代理的工作原理是在本地环境中运行本地客户端。您的应用通过数据库使用的标准数据库协议与 AlloyDB Auth 代理进行通信。
AlloyDB Auth 代理使用安全隧道(TLS 1.3、256 位 AES 加密)与服务器上运行的代理配套进程进行通信。通过 AlloyDB Auth Proxy 建立的每个连接都会创建一个与 AlloyDB 实例的连接。
应用连接到 AlloyDB Auth Proxy 时,它会检查其与目标 AlloyDB 实例之间的现有连接是否可用。如果连接不存在,则它会调用 AlloyDB Admin API 来获取临时 SSL 证书并使用它来连接到 AlloyDB。临时 SSL 证书会在 24 小时后过期。AlloyDB Auth 代理会在证书过期之前刷新这些证书。
虽然 AlloyDB Auth 代理可以监听任何端口,但它只会在端口 5433 上创建到 AlloyDB 实例的传出或出站流量连接。由于 AlloyDB Auth 代理通过域名 alloydb.googleapis.com
调用 API,而该域名没有固定 IP 地址,因此必须在端口 443 上允许所有出站流量 TCP 连接。如果您的客户端机器具有出站防火墙政策,请确保它允许与 AlloyDB 实例 IP 上的端口 5433 的传出连接。
AlloyDB Auth 代理如何授权 IAM 正文
如需授权客户端连接到 AlloyDB 实例,Auth 代理客户端会使用客户端上的 IAM 正文凭据进行身份验证,然后验证 IAM 正文是否具有 Cloud AlloyDB Client (roles/alloydb.client
) 和 Service Usage Consumer (roles/serviceusage.serviceUsageConsumer
) IAM 角色。 Google Cloud
如需在客户端上查找 IAM 凭据,Auth Proxy 客户端会检查以下各项,并使用找到的第一项尝试对 Google Cloud进行身份验证:
由 --credentials-file 标志提供的凭据
使用服务账号创建和下载关联的 JSON 密钥文件,并在启动 Auth 代理客户端时将--credentials-file
标志设置为该文件的路径。该服务账号必须具有 AlloyDB 实例的 Cloud AlloyDB Client (roles/alloydb.client
) 和 Service Usage Consumer (roles/serviceusage.serviceUsageConsumer
) IAM 角色。要在命令行中使用此选项,请调用
alloydb-auth-proxy
命令,并将--credentials-file
标志设置为 JSON 凭据文件的路径和文件名。该路径可以是绝对路径,也可以是相对于当前工作目录的路径。由 --token 标志提供的凭据
创建访问令牌,然后调用
alloydb-auth-proxy
命令,并将--token
标志设置为 OAuth 2.0 访问令牌。由环境变量提供的凭据
此选项与使用
--credentials-file
标志类似,只是指定您在GOOGLE_APPLICATION_CREDENTIALS
环境变量中设置的 JSON 凭据文件,而不是使用--credentials-file
标志。来自经过身份验证的 Google Cloud CLI 客户端的凭据
如果您已安装 gcloud CLI 并已使用您的个人账号进行身份验证,则 Auth 代理客户端可以使用相同的账号凭据。该方法特别适用于启动和运行开发环境。
如果未为
gcloud auth login
选择任何账号,则 Auth Proxy 客户端将检查是否为gcloud auth application-default login
选择了一个账号。与 Compute Engine 实例关联的凭据
如果您要从 Compute Engine 实例连接到 AlloyDB,则 Auth Proxy 客户端可使用与 Compute Engine 实例关联的服务账号。如果服务账号具有 AlloyDB 实例的 Cloud AlloyDB Client (
roles/alloydb.client
) 和 Service Usage Consumer (roles/serviceusage.serviceUsageConsumer
) IAM 角色,Auth Proxy 客户端会成功进行身份验证。如果 Compute Engine 实例与 AlloyDB 实例位于同一项目中,则 Compute Engine 实例的默认服务账号具有可验证 AlloyDB 身份的必要权限。如果这两个实例属于不同的项目,则您必须将 Compute Engine 实例的服务账号添加到 AlloyDB 实例所属的项目中。
环境的默认服务账号
如果 Auth Proxy 客户端在先前介绍的任何位置都找不到凭据,则其将遵循以服务账号身份进行身份验证中记录的逻辑。某些环境(例如 Compute Engine、App Engine 等)会提供一个默认服务账号,您的应用默认情况下可以使用该账号进行身份验证。如果您使用默认服务账号,则该账号必须具有 Cloud AlloyDB Client (roles/alloydb.client
) 和 Service Usage Consumer (roles/serviceusage.serviceUsageConsumer
) IAM 角色。如需详细了解 Google Cloud 的身份验证方法,请参阅身份验证概览。