Google Cloud KMS权限问题与加密

时间:2019-05-07 05:10:09

标签: php google-cloud-kms

我尝试使用Google Cloud KMS对文件的内容进行加密,并将加密后的数据写入密码文件。但是php脚本显示权限错误。这是我尝试过的php脚本

$cryptoKeyName = $kms->cryptoKeyName($projectId, $locationId, $keyRingId, $cryptoKeyId);
$plaintext = file_get_contents($plaintextFileName);

$response = $kms->encrypt($cryptoKeyName, $plaintext);
file_put_contents($ciphertextFileName, $response->getCiphertext());

我收到此错误

  

致命错误:未捕获到Google \ ApiCore \ ApiException:{“消息”:“对资源'projects / testproject / locations / global / keyRings / test / cryptoKeys / testkey'的权限'cloudkms.cryptoKeyVersions.useToEncrypt'被拒绝。”, “代码”:7,“状态”:“ PERMISSION_DENIED”,“详细信息”:[]}在第139行的/home/xxxxx/xxx.com/vendor/google/gax/src/ApiException.php中抛出

当我打印用户权限时,它会显示

Role: roles/cloudkms.admin Members: user:renjith@pi-digi.com Role: roles/cloudkms.cryptoKeyEncrypterDecrypter Members: user:renjith@pi-digi.com`

2 个答案:

答案 0 :(得分:1)

Cloud KMS Admin角色不包括“加密/解密”权限。您还需要向用户授予这些权限。

答案 1 :(得分:-1)

解决了该问题。这是我用于身份验证的json文件的权限问题(类似projectname-bab93421213c2.json之类的东西)。该文件应具有足够的权限。您可以在此处看到文件-console.cloud.google.com/iam-admin。我将权限从“查看器”更改为“所有者”,并且有效。