У меня есть задание Dataflow, написанное с использованием Apache Beam. Он похож на этот шаблон, но сохраняет данные из JDB C в облачное хранилище:
https://github.com/GoogleCloudPlatform/DataflowTemplates/blob/master/src/main/java/com/google/cloud/teleport/templates/JdbcToBigQuery.java
Моя проблема была в том, что все могли видеть базу данных учетные данные в интерфейсе Dataflow. Поэтому я нашел статью
https://medium.com/google-cloud/using-google-cloud-key-management-service-with-dataflow-templates-71924f0f841f
, где сообщество показывает, как зашифровать эти данные. Я сделал все, как в этой статье, но мое задание Dataflow не хочет расшифровывать учетные данные с указанным ключом KMS (когда я запускаю его с помощью функции Cloud).
Поэтому я попытался запустить его в Cloud Shell
gcloud dataflow jobs run JOB_NAME \
--region=us-west1 \
--gcs-location=TEMPLATE_LOCATION \
--dataflow-kms-key=projects/PROJECT_ID/locations/us-west1/keyRings/KEY_RING/cryptoKeys/KEY_NAME \
--parameters=...,KMSEncryptionKey=projects/PROJECT_ID/locations/us-west1/keyRings/KEY_RING/cryptoKeys/KEY_NAME,...
Но у меня ошибка
Error message from worker: java.lang.RuntimeException: org.apache.beam.sdk.util.UserCodeException: com.google.api.gax.rpc.PermissionDeniedException: io.grpc.StatusRuntimeException: PERMISSION_DENIED: Permission 'cloudkms.cryptoKeyVersions.useToDecrypt' denied on resource 'projects/PROJECT_ID/locations/us-west1/keyRings/KEY_RING/cryptoKeys/KEY_NAME' (or it may not exist).
Я застрял полностью. Кто-нибудь имел такую же проблему и мог бы помочь?