Проблема разрешения KMS в облаке Google с шифрованием - PullRequest
1 голос
/ 07 мая 2019

Я пытался зашифровать содержимое файла и записать зашифрованные данные в зашифрованный файл с помощью облачного KMS Google.Но скрипт 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());

Я получил эту ошибку

Неустранимая ошибка: Uncaught Google \ ApiCore \ ApiException: {"message": "Permission" cloudkms.cryptoKeyVersions.useToEncrypt «Запрещено для ресурса» проекты / testproject / location / global / keyRings / test / cryptoKeys / testkey '. "," code ": 7," status ":" PERMISSION_DENIED "," details ": []} брошено в / home/xxxxx/xxx.com/vendor/google/gax/src/ApiException.php в строке 139

Когда я печатаю разрешение пользователя, отображается

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

Ответы [ 2 ]

1 голос
/ 07 мая 2019

Роль Cloud KMS Admin не включает разрешение на шифрование / дешифрование. Вам также необходимо предоставить эти разрешения вашему пользователю.

0 голосов
/ 08 мая 2019

Решил проблему. Это была проблема с правами доступа к файлу json, который я использовал для аутентификации (что-то вроде projectname-bab93421213c2.json). Файл должен иметь достаточно разрешений. Вы можете увидеть файл здесь - console.cloud.google.com/iam-admin. Я изменил разрешение с «Просмотр» на «Владелец», и это сработало.

...