无法更新 us-central1 中的加密密钥

Posted

技术标签:

【中文标题】无法更新 us-central1 中的加密密钥【英文标题】:Can't update cryptokey in us-central1 【发布时间】:2020-04-24 08:10:00 【问题描述】:

由于某种原因,我似乎无法更新 us-central1 区域中的密钥。我的 IAM 具有更新和列表角色,我使用以下代码:

import google.cloud.kms as kms

self.client = kms.KeyManagementServiceClient()
name = 'client-1'
key_path = self.client.crypto_key_path(config.PROJECT, config.KMS_LOCATION, config.KMS_RING, name)

update_mask = 'paths': ['rotation_period', 'next_rotation_time']
self.client.update_crypto_key(
        'name': key_path,
        'rotation_period': 'seconds': 0,
        'next_rotation_time': 'seconds': 0
    , update_mask)

它给了我以下错误:

google.api_core.exceptions.NotFound: 404 请求涉及位置 “us-central1”,但被发送到“全球”位置。 Cloud KMS 是 在“us-central1”中不可用或请求被错误路由。

奇怪的是,列表和 get 工作正常。我还看到了一个解决方案,他们更改了客户端的传输参数,但我似乎找不到正确的地址。

提前致谢!

【问题讨论】:

谢谢,我们正在研究这个。 【参考方案1】:

这是一个错误,我们正在 https://github.com/googleapis/gapic-generator/issues/3066 跟踪它

同时,该错误的原因是当第一个参数是dict 时,UpdateCryptoKey 无法正确计算区域。如果是resources_pb2.CryptoKey,它可以正常工作。举个例子:

import google.cloud.kms as kms
from google.cloud.kms_v1.proto import resources_pb2

client = kms.KeyManagementServiceClient()

ck = resources_pb2.CryptoKey()
ck.name = 'projects/proj/locations/us-central1/keyRings/kr/cryptoKeys/key'
ck.next_rotation_time.GetCurrentTime()

update_mask = 'paths': ['next_rotation_time']
client.update_crypto_key(ck, update_mask)

希望这能让您在我们修复此问题时解决此问题。给您带来的不便深表歉意,感谢您的耐心等待!

【讨论】:

感谢它按预期工作。我可以补充一下,加密密钥版本也会发生这种情况。

以上是关于无法更新 us-central1 中的加密密钥的主要内容,如果未能解决你的问题,请参考以下文章

AES 加密在 iOS 13.4 上无法正常工作

始终加密:无法使用密钥存储提供程序解密列加密密钥:“MSSQL_CERTIFICATE_STORE”

报表服务器无法验证加密数据的完整性

HTTPS中的对称密钥加密,公开密钥加密,数字证书

无法将 PFX 导入 Microsoft 示例密钥存储提供程序(加密提供程序开发工具包)

在NTFS分区上加密的文件夹在重装后无法访问(无法去掉加密)