Google Cloud Composer 获取默认服务帐户私钥

Google Cloud Composer get default service account private key

我正在使用 pymongo(来自气流挂钩)连接到一个 mongo 实例,该实例使用 google 公里作为密钥来实现 FLE(字段级加密)。我们有一个具有服务帐户文件的虚拟机,这就是我们配置它的方式

hook = MongoHook(self.source_conn_id)
creds = json.load(open(self.gcs_service_account_keypath))
kms_providers = {
  "gcp": {
  "email": creds['client_email'],
  "privateKey": creds['private_key'].replace(
    '-----BEGIN PRIVATE KEY-----\n', '').replace(
    '\n-----END PRIVATE KEY-----\n', '')
  }
            }
  auto_encryption_opts = AutoEncryptionOpts(
  kms_providers, key_vault_namespace=self.mongo_key_vault_namespace, bypass_auto_encryption=True)
  hook.extras = {'auto_encryption_opts': auto_encryption_opts }

现在我正尝试在 Cloud Composer 中做同样的事情,但我找不到如何从 Cloud Composer 中的默认服务帐户访问私钥。我可以导出服务帐户密钥,将其添加到秘密管理器并像那样访问它,但这似乎不是一个好主意。 我有什么办法可以访问它吗?

您可以按照这些 steps. Instead of using secret manager, you can put the private key in the GCS bucket associated to your environment and put it in your data folder: gs://bucket-name/data to make it accessible. For more information of utilization of Cloud storage bucket associated to your Cloud composer environment, you can refer to this documentation.

生成服务帐户密钥

服务帐户私钥分为三种类型。 Google 管理、用户管理和用户提供(导入)。

您无法直接从计算服务访问私钥,因为元数据服务器不提供对私钥的访问 - 仅提供从私钥创建的令牌。

标准建议是使用 IAM API 来签名 blobs/JWTs。

您的另一种选择是使用用户管理,在其中下载服务帐户 JSON 密钥文件并将该文件提供给您的应用程序或从 Secret Manager 或类似服务中作为机密加载。