Я хочу зашифровать / расшифровать некоторые конфиденциальные данные в проекте Google Cloud с несколькими службами AppEngine. Я включил Cloud KMS API и через IAM добавил роль «Cloud KMS CryptoKey Encrypter / Decrypter» в учетную запись службы App Engine ({projectId}@appspot.gserviceaccount.com
).
Затем я создал кольцо (my-ring
) и ключ внутри кольца (my-key
), принимающий политику ротации по умолчанию (90 дней). Таким образом, у меня есть ключ, такой как "projects / {my-project-id} / location / europe-west3 / keyRings / my-ring / cryptoKeys / my-key"
Я скачал учетную запись службы приложений json учетные данные, чтобы я мог отладить код локально. GOOGLE_APPLICATION_CREDENTIALS
переменные окружения указывают на загруженный файл.
Когда я пытаюсь зашифровать сообщение, я получаю следующую ошибку: {"error": "invalid_grant", "error_description": "Invalid grant: account not found"}} 1011 *
My 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
}
Я не знаю, что я делаю неправильно.