首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >顶点AI管道的秘密管理器

顶点AI管道的秘密管理器
EN

Stack Overflow用户
提问于 2022-03-16 14:21:53
回答 3查看 433关注 0票数 0

我正在GCP中工作,用kubeflow创建一个顶点AI管道,现在是我更安全地存储API密钥的时候了。我对GCP非常陌生,对环境也不熟悉,所以我一直在努力学习一些教程,但遇到了一些障碍。我想将我的秘密存储在秘密管理器中,然后从我编写的管道中访问它们。我没有问题创建秘密并在GUI中查看它们,但是当涉及到编译我的管道时,我得到了错误:google.api_core.exceptions.PermissionDenied: 403 Permission denied on resource project...

因此,运行我的管道的帐户似乎无法访问我创建的秘密。那么,我的问题是,如何检查哪个帐户正在运行管道,以便授予它访问权限?还是这里真的有另一个潜在的问题?

试图访问秘密的代码:

代码语言:javascript
复制
 client = secretmanager.SecretManagerServiceClient()
 secret_name = "secret_name"
 request = {'name': f"path/{secret_name}/versions/latest"}
 response = client.access_secret_version(request)
 secret_string = response.payload.data.decode("UTF-8")

编辑:我可以补充说,我一直在玩很多帐户权限,但我最好的猜测是,在顶点AI>Workbench>the笔记本下找到的帐户,我正在使用的笔记本details>Service帐户是一个需要许可。这不是吗?

EN

回答 3

Stack Overflow用户

发布于 2022-09-13 07:22:56

在我的例子中,问题在于我没有像此页那样使用自定义服务帐户。

注意:如果您希望您的自定义培训代码获得带有OAuth范围的https://www.googleapis.com/auth/cloud-platform 2.0访问令牌,则必须使用自定义服务帐户进行培训。不能授予此级别对顶点AI自定义代码服务代理的访问权限。

由于秘密管理器客户端需要上述访问令牌,因此需要首先创建自己的自定义服务帐户。创建一个服务帐户(附带适当的权限,即Secret Manager Secret Accessor)之后,您可以将服务帐户附加到需要它的作业。

代码语言:javascript
复制
 @component(
     packages_to_install=['google-cloud-secret-manager']
 )
 def print_secret_op(project_id: str, secret_id: str, version_id: str) -> str:
     from google.cloud import secretmanager

     secret_client = secretmanager.SecretManagerServiceClient()
     secret_name = f'projects/{project_id}/secrets/{secret_id}/versions/{version_id}'
     response = secret_client.access_secret_version(request={"name": secret_name})
     payload = response.payload.data.decode("UTF-8")
     answer = "The secret is: {}".format(payload)
     print(answer)
     return answer


print_secret_job = create_custom_training_job_from_component(
    print_secret_op,
    service_account="your-service-account-email",
)
票数 1
EN

Stack Overflow用户

发布于 2022-03-16 18:34:44

运行命令gcloud auth list可能会帮助您确定所使用的帐户。此外,您还可以对在项目中创建的帐户进行故障排除,并通过遵循此文档查看帐户所具有的角色。

若要使用管道使用秘密管理器访问机密,需要授予具有秘密管理器权限的运行管道的服务帐户。您可以看到如何使用为顶点AI管道配置Google项目的粒度权限部分配置服务帐户。

在对正在运行管道的服务帐户设置秘密管理器权限后,您可以访问秘密。

此外,您还可以检查这个文档,看看如何使用kubeflow管道访问机密。

票数 0
EN

Stack Overflow用户

发布于 2022-06-04 02:36:39

可能原因

顶点管道组件中的错误google.api_core.exceptions.PermissionDenied: 403 Permission denied通常是因为您没有将项目指定给GCP客户端库实例。

代码语言:javascript
复制
client = secretmanager.SecretManagerServiceClient()  # <---- NO project specified

这是在在代码中访问Google服务中解释的。

出现此问题是因为顶点AI不直接在Google项目中运行您的代码。相反,顶点AI在Google管理的几个单独项目中运行您的代码。顶点AI将这些项目专门用于与您的项目相关的操作。因此,不要试图在培训或预测代码中从环境中推断项目ID;显式地指定项目ID。

因为您没有将项目ID指定到SecretManagerServiceClient,所以它试图连接到谷歌管理的顶点AI项目的秘密管理器服务,这当然不允许您访问它。

修复

在代码中访问Google服务中的示例所示,在实例化GCP服务客户端时,将项目ID指定为project参数。

代码语言:javascript
复制
import os

from google.cloud import bigquery

project_number = os.environ["CLOUD_ML_PROJECT_ID"]

client = bigquery.Client(project=project_number)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71498754

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档