讲师中心 微信公众号

工具推荐

视频效率加速
updream

一键生成高质量推广成片

立刻MV
立刻MV

低成本歌曲 MV、视频生成

AniShort
AniShort

AI短剧协同制作平台

Seko
Seko

AI短剧一键生成成片

使用不同 GCP 项目 ID 在 Cloud Function 中访问资源

秋静君_5013

秋静君_5013

发布时间:2025-10-08 10:09:33

|

900人浏览过

|

来源于php中文网

原创

使用不同 gcp 项目 id 在 cloud function 中访问资源

本文介绍了如何在 Google Cloud Function 中访问位于不同 GCP 项目中的资源,特别是当 Cloud Function 和资源(如 Secret Manager)属于不同项目时。我们将探讨如何正确地配置权限,避免使用不安全的身份验证方法,并确保 Cloud Function 能够安全地访问所需的资源。

访问跨项目资源:授权是关键

在 Google Cloud Platform (GCP) 中,Cloud Functions 通常运行在特定的服务账号下。 当 Cloud Function 需要访问位于不同项目中的资源时,关键在于授予 Cloud Function 的服务账号相应的权限。 这意味着,你无需尝试为 Cloud Function 注入多个服务账号,而是应该确保 Cloud Function 的服务账号具有访问目标资源的权限。

授权步骤详解

假设你的 Cloud Function 运行在项目 com-project-common 中,并且需要访问位于项目 com-project-data 中的 Secret Manager。你需要执行以下步骤:

  1. 找到 Cloud Function 的服务账号: Cloud Function 的服务账号通常具有以下格式:PROJECT_ID@appspot.gserviceaccount.com 或 PROJECT_NUMBER-compute@developer.gserviceaccount.com,其中 PROJECT_ID 是 com-project-common。 你可以在 Cloud Function 的详细信息页面找到它的服务账号。

  2. 在目标项目(com-project-data)中授予权限: 在 com-project-data 项目中,找到 Secret Manager 服务,并授予 Cloud Function 的服务账号访问权限。 这通常涉及到将 Cloud Function 的服务账号添加到具有 Secret Manager Secret Accessor 角色的成员列表中。 具体操作步骤如下:

    python-testing-patterns
    python-testing-patterns

    使用 pytest、fixtures、mock 和测试驱动开发实现全面的测试策略。用于编写 Python 测试、搭建测试套件或实施测试最佳实践。

    下载
    • 进入 com-project-data 项目的 IAM & Admin 页面。
    • 点击 "GRANT ACCESS"。
    • 在 "New principals" 字段中,输入 Cloud Function 的服务账号。
    • 在 "Select a role" 字段中,选择 "Secret Manager Secret Accessor"。
    • 点击 "Save"。
  3. 代码示例(Python):

    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.
        The version defaults to 'latest' if not specified.
        """
    
        # Create the Secret Manager client.
        client = secretmanager.SecretManagerServiceClient()
    
        # Build the resource name of the secret version.
        name = f"projects/{project_id}/secrets/{secret_id}/versions/{version_id}"
    
        # Access the secret version.
        response = client.access_secret_version(name=name)
    
        payload = response.payload.data.decode("UTF-8")
        return payload
    
    def your_cloud_function(request):
        project_id = "com-project-data" # 目标项目 ID
        secret_id = "your-secret-id"    # Secret ID
        secret_value = access_secret_version(project_id, secret_id)
        print(f"Secret value: {secret_value}")
        return "Function executed successfully!"

    注意: 确保你的 Cloud Function 具有访问 Secret Manager 的权限。 如果你的 Cloud Function 位于与 Secret Manager 不同的项目中,请按照上述步骤授予其服务账号访问权限。 在代码中,明确指定 Secret 所在的 project_id。

避免不安全的做法

强烈建议避免使用服务账号密钥文件进行身份验证。 这种方法存在安全风险,因为它将敏感凭据存储在代码或配置文件中。 最佳实践是使用 Cloud Function 的内置服务账号,并按照上述步骤授予其访问权限。

总结

通过正确配置 IAM 权限,你可以安全地允许 Cloud Function 访问位于不同 GCP 项目中的资源。 避免使用服务账号密钥文件,并始终遵循最小权限原则,只授予 Cloud Function 访问其所需资源的权限。 这种方法可以提高安全性,并简化跨项目资源访问的管理。

热门AI工具

更多
小橡皮AI

一款AI工具,主要用于小橡皮一键去AI味,将机器味重的内容改得更有活人感,防止因为 AI 内容被平台打上 AI 标签,以及限流,适合需要提升相关任务效率的用户。

火山引擎

火山引擎是一款面向企业的云计算与AI服务平台。

咔片AIPPT

一款在线AI演示文稿制作工具,可根据主题和内容需求辅助生成PPT结构与页面,提高演示材料制作效率。

讯飞绘文

讯飞绘文是一款由科大讯飞推出的一站式 AIGC 内容运营平台。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

二狗PPT
二狗PPT Hot

一款AI演示文稿工具,主要用于专为中式职场打造的AI PPT生成工具,适合需要提升相关任务效率的用户。

Atoms
Atoms Hot

Atoms是一款AI智能体工具,第一支自动构建真实业务的 AI 团队。

相关专题

更多
function是什么
function是什么

function是函数的意思,是一段具有特定功能的可重复使用的代码块,是程序的基本组成单元之一,可以接受输入参数,执行特定的操作,并返回结果。本专题为大家提供function是什么的相关的文章、下载、课程内容,供大家免费下载体验。

3700

2023.08.04

js函数function用法
js函数function用法

js函数function用法有:1、声明函数;2、调用函数;3、函数参数;4、函数返回值;5、匿名函数;6、函数作为参数;7、函数作用域;8、递归函数。本专题提供js函数function用法的相关文章内容,大家可以免费阅读。

614

2023.10.07

vb中怎么连接access数据库
vb中怎么连接access数据库

vb中连接access数据库的步骤包括引用必要的命名空间、创建连接字符串、创建连接对象、打开连接、执行SQL语句和关闭连接。本专题为大家提供连接access数据库相关的文章、下载、课程内容,供大家免费下载体验。

3127

2023.10.09

vb连接access数据库的方法
vb连接access数据库的方法

vb连接access数据库方法:1、使用ADO连接,首先导入System.Data.OleDb模块,然后定义一个连接字符串,接着创建一个OleDbConnection对象并使用Open() 方法打开连接;2、使用DAO连接,首先导入 Microsoft.Jet.OLEDB模块,然后定义一个连接字符串,接着创建一个JetConnection对象并使用Open()方法打开连接即可。

3013

2023.10.16

asp连接access数据库的方法
asp连接access数据库的方法

连接的方法:1、使用ADO连接数据库;2、使用DSN连接数据库;3、使用连接字符串连接数据库。想了解更详细的asp连接access数据库的方法,可以阅读本专题下面的文章。

3253

2023.10.18

access和trunk端口的区别
access和trunk端口的区别

access和trunk端口的区别是Access端口用于连接终端设备,提供单个VLAN的接入,而Trunk端口用于连接交换机之间,提供多个VLAN的传输;Access端口只传输属于指定VLAN的数据,而Trunk端口可以传输多个VLAN的数据,并使用VLAN标签进行区分。想了解更多access和trunk端口相关内容,可以阅读本专题下面的文章。

448

2023.10.31

access怎么导入数据
access怎么导入数据

access导入数据步骤:1. 选择数据源 2. 选择要导入的文件 3. 指定导入选项 4. 选择导入目标 5. 预览数据 6. 导入数据即可。想了解更多access的相关内容,可以阅读本专题下面的文章。

5265

2024.04.10

access数据库用途
access数据库用途

access数据库是一种关系型数据库管理系统,主要用途包括:数据存储和管理;数据查询和检索;报告和表单设计;应用程序开发。想了解更多access数据库的相关内容,可以阅读本专题下面的文章。

11928

2024.04.10

Go-Zero API开发使用教程
Go-Zero API开发使用教程

本专题聚焦Go-Zero的API开发,拆解.api描述文件的语法结构、路由与分组定义、参数绑定与校验规则,说明统一响应体、JWT鉴权、跨域与接口文档生成的落地方式,并给出网关聚合与接口测试的实践建议。

40

2026.11.12

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn