【发布时间】:2020-04-29 16:04:00
【问题描述】:
我有一个使用 Apache Beam 编写的 Dataflow 作业。它看起来类似于这个模板,但它将数据从 JDBC 保存到 Cloud Storage:
我的问题是,每个人都可以在 Dataflow UI 中看到数据库凭据。于是我找到了文章
社区展示了如何加密这些数据。我做了本文中的所有操作,但我的 Dataflow 作业不想使用给定的 KMS 密钥解密凭据(当我使用 Cloud Function 运行它时)。
所以我尝试在 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).
我完全被困住了。有没有人遇到过同样的问题,可以帮忙吗?
【问题讨论】:
-
您是否已授予对 KMS 密钥的数据流访问权限?
-
@sethvargo 是的,我授予了 service-SERVICE_ID@dataflow-service-producer-prod.iam.gserviceaccount.com 的权限
标签: google-cloud-platform google-cloud-dataflow google-cloud-kms