Google Cloud KMS App Engine Encrypt не работает

Я хочу зашифровать / расшифровать некоторые конфиденциальные данные в проекте 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} / locations / europe-west3 / keyRings / my-ring / cryptoKeys / my-key"

Я загрузил учетные данные json для учетной записи службы приложений, чтобы отлаживать код локально. GOOGLE_APPLICATION_CREDENTIALS переменные среды указывают на загруженный файл.

Когда я пытаюсь зашифровать сообщение, я получаю следующую ошибку: {"error": "invalid_grant", "error_description": "Invalid grant: account not found"}

Мой код 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

}

Я не знаю, что делаю не так.


person Daní    schedule 27.04.2020    source источник
comment
Причин может быть много: blog.timekit.io/   -  person sethvargo    schedule 27.04.2020


Ответы (1)


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

person Daní    schedule 27.04.2020