
在 Google Cloud Functions 中访问不同项目中的资源,关键在于理解服务账户及其权限管理。Cloud Functions 本身拥有一个服务账户,该账户代表了 Cloud Functions 的身份。你需要授予这个服务账户访问其他项目资源的权限,而不是尝试为 Cloud Functions 分配多个身份。
核心概念:服务账户和权限
服务账户是一种特殊的 Google 账户,由应用程序而非个人使用。Cloud Functions 默认使用一个服务账户,其名称格式通常为:PROJECT_ID@appspot.gserviceaccount.com。 你可以通过 Google Cloud Console 查看和修改 Cloud Functions 使用的服务账户。
权限控制的核心在于授予 Cloud Functions 服务账户访问其他项目资源的权限。例如,如果你的 Cloud Functions 位于项目 com-project-common 中,需要访问项目 com-project-data 中的 Secret Manager 密钥,则需要执行以下步骤:
找到 Cloud Functions 的服务账户: 在 Google Cloud Console 中,找到你的 Cloud Function,并查看其服务账户。
在 com-project-data 项目中授予权限: 在 com-project-data 项目的 IAM (Identity and Access Management) 页面,添加 Cloud Functions 的服务账户,并授予其访问 Secret Manager 密钥的权限。 例如,可以授予 "Secret Manager Secret Accessor" 角色。
具体步骤示例:访问 Secret Manager 密钥
假设 Cloud Functions 位于项目 com-project-common,需要访问项目 com-project-data 中名为 my-secret 的 Secret Manager 密钥。
获取 Cloud Functions 的服务账户: 假设 Cloud Functions 的服务账户为 com-project-common@appspot.gserviceaccount.com。
在 com-project-data 项目中授予权限:
现在,Cloud Functions 就可以访问 com-project-data 项目中的 my-secret 密钥了。
代码示例:使用 Python 访问 Secret Manager 密钥
from google.cloud import secretmanager
def access_secret_version(project_id, secret_id, version_id="latest"):
"""
Access the payload for the given secret version if one exists.
"""
client = secretmanager.SecretManagerServiceClient()
name = f"projects/{project_id}/secrets/{secret_id}/versions/{version_id}"
response = client.access_secret_version(name=name)
payload = response.payload.data.decode("UTF-8")
return payload
def main(request):
project_id = "com-project-data" # 密钥所在的 Project ID
secret_id = "my-secret" # 密钥的名称
secret_value = access_secret_version(project_id, secret_id)
return f"Secret value: {secret_value}"注意事项:
总结:
通过正确配置 Cloud Functions 的服务账户权限,可以安全地访问位于不同 GCP 项目中的资源。 避免使用不安全的身份验证方式,例如服务账户密钥文件。 遵循最小权限原则,并仔细选择合适的 IAM 角色。 通过 Secret Manager 安全地管理敏感信息。 理解并应用这些原则,可以构建安全、可维护的 Google Cloud Functions 应用程序。
以上就是使用 Google Cloud Functions 访问不同项目中的资源的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号