Google Cloud KMS App Engine Шифрование не работает - PullRequest
0 голосов
/ 27 апреля 2020

Я хочу зашифровать / расшифровать некоторые конфиденциальные данные в проекте 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

}

Я не знаю, что я делаю неправильно.

1 Ответ

1 голос
/ 27 апреля 2020

Все было хорошо, за исключением того, что GOOGLE_APPLICATION_CREDENTIALS указывал на учетную запись другого проекта c. Это была моя вина

...