谷歌云KMS应用程序引擎加密不工作



我想用几个AppEngine服务加密/解密谷歌云项目中的一些敏感数据。我启用了云KMS API,并通过IAM将"云KMS加密密钥加密器/解密器"角色添加到应用程序引擎服务帐户({projectId}@appspot.gserviceaccount.com(。

然后,我创建了一个环(my-ring(和环内的一个密钥(my-key(,接受默认的轮换策略(90天(。所以我有一个密钥,比如"projects/{my project-id}/locations/europe-west3/keyRings/my-ring/cryptoKeys/my key">

我下载了应用程序服务帐户json凭据,这样我就可以在本地调试代码。GOOGLE_APPLICATION_CREDENTIALS环境变量指向下载的文件。

当我尝试加密消息时,我会收到以下错误:{"error":"invalid_grant","errordescription":"无效授权:找不到帐户"}

我的Go代码如下:

func encrypt(plainText []byte) (string, error) {
ctx := context.Background()
client, err := kms.NewKeyManagementClient(ctx)
if err != nil {
return "", err
}
req := &kmspb.EncryptRequest{Name: variables.EncryptionKey, Plaintext: plainText}
result, err := client.Encrypt(ctx, req)
if err != nil {
fmt.Println(fmt.Errorf("encryption error %s", err))
return "", err
}
return base64.URLEncoding.EncodeToString(result.Ciphertext), nil
}

我不知道我做错了什么。

除了GOOGLE_APPLICATION_CREDENTIALS指向另一个项目的帐户之外,一切都很好。只是我的错

最新更新