我在Trainer应用程序中使用以下代码,该应用程序在Cloud ML引擎中运行:

credentials, project = google.auth.default(scopes=['https://www.googleapis.com/auth/cloudkms'])
kms_client = googleapiclient.discovery.build('cloudkms', 'v1', credentials=credentials)

我收到以下错误:

      File "/root/.local/lib/python2.7/site-packages/trainer/kms.py", line 110, in decrypt
    kms_client = googleapiclient.discovery.build('cloudkms', 'v1', credentials=credentials)
  File "/usr/local/lib/python2.7/dist-packages/oauth2client/util.py", line 135, in positional_wrapper
    return wrapped(*args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/googleapiclient/discovery.py", line 210, in build
    credentials=credentials)
  File "/usr/local/lib/python2.7/dist-packages/oauth2client/util.py", line 135, in positional_wrapper
    return wrapped(*args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/googleapiclient/discovery.py", line 341, in build_from_document
    http = credentials.authorize(http)
AttributeError: 'Credentials' object has no attribute 'authorize'

我可以从安装了Google Cloud SDK的本地计算机上运行相同的代码,而不会出现任何问题。 如果我在这里缺少什么,请告诉我。

#1楼 票数:0

您介意尝试按此处指定的oauth2client.client.GoogleCredentials吗?

然后通过credentials = GoogleCredentials.get_application_default()获取凭据

尽管可以使用create_scoped方法显式地执行此操作,但build()方法将为给定服务注入适当的范围。

我不完全确定这对您有用,但这是朝正确方向迈出的一步。

使用ADC肯定可以工作...但是最终您可能希望以服务帐户身份运行,以更好地审计密钥访问记录。

  ask by Fayaz Ahmed translate from so

未解决问题?本站智能推荐:

2回复

NoClassDefFoundError:com/google/cloud/kms/v1/KeyManagementServiceClient

我是第一次在这里写作,所以如果我应该在问题中添加更多内容,我深表歉意。 我正在使用 java 创建一个应用程序,并尝试在 Google Cloud 上创建 KeyManagementServiceClient 连接。 该程序构建正确,但是当我运行以下函数时,我收到与 com/google/cloud
1回复

(gcloud.kms.encrypt) 无法读取纯文本文件

我想用gcloud命令行工具加密一个密钥文件。 我正在运行的命令是: 但我不断收到错误 文件 /Users/macuser/Desktop/test/keys/testkey.json.decrypted 存在。 我尝试使用绝对路径和相对路径,带引号和不带引号,但我一直收到相同的
1回复

通过Python客户端在Google KMS中创建密钥时,是否可以指定名称?

在此处的文档中,您无法在Python客户端中为键指定名称(名称为“仅输出”)。 但是,您可以使用CLI工具指定密钥名称(此处为KEY_NAME)ala gcloud kms keys create KEY_NAME --location LOCATION --keyring KEYRING_N
1回复

将cloudsql数据导出到云存储时是否可以进行客户端加密

我正在尝试将数据导出到云存储桶。 我试图理解: 如果我可以使用客户管理或客户提供的加密密钥来利用客户端加密。 我在gcloud sql export sql命令中没有看到任何选项来提供文档中提到的密钥 [https://cloud.google.com/storage/docs/encrypti
2回复

如何在 GCP 钥匙串中存储 CloudSQL 客户端 SSL 证书

我不确定在 Google Cloud 密钥链中存储 CloudSQL ssl 证书时使用哪些选项,我的导入作业失败。 哪些是客户端 SSL 证书的正确加密选项? 结果就是这些错误
1回复

从 KMS 获取 GCP 部署的机密

我想使用 Deployment Manager 在 GCP 中部署 Cloud VPN 隧道 我为此使用 Python 设置了一个部署脚本,并且我不希望在我的配置中以纯文本形式提供 VPN 隧道的共享秘密。 所以我尝试包含通过KMS加密的机密,然后在 python 脚本中调用 KMS 以获取纯文本
1回复

Cloud Function 使用 KMS 密钥解密的权限被拒绝

我有一个 Python 云函数,它使用 KMS 密钥来解密环境中其他服务的一些身份验证令牌,如https://dev.to/googlecloud/using-secrets-in-google-cloud-functions-5aem 每当我运行我的函数时,我都会收到 403 Permissio
1回复

谷歌云 KMS/HSM 证书

我使用 Google Cloud KMS 来存储签名密钥(使用 HSM 选项)。 我需要从 KMS HSM 下载或创建 X509(仅限公共)签名者证书。 在此阶段,我只能访问公钥,并且由于潜在的复杂性,我不愿意尝试从头开始构建证书。 作为记录,我使用 C# Visual Studio 2019 作为