Airflow 如何在Google cloud composer中保护sendGrid API密钥安全

Airflow 如何在Google cloud composer中保护sendGrid API密钥安全,airflow,sendgrid,google-cloud-composer,Airflow,Sendgrid,Google Cloud Composer,我有要求发送通知电子邮件,一旦谷歌云作曲家气流DAG完成。我找到了一个解决方案,并按照谷歌文档中的建议使用了sendGrid 但问题是API密钥是可见的,谁可以访问cloud composer,因为它被分配给一个环境变量。当我在本地系统python程序中使用同一个键时,它正在发送邮件,而这正是我不理解的地方。因为如果有人拥有此API密钥或有人共享了相同的API密钥,则任何人都可以使用此密钥发送邮件,这不是特定于项目的 谁能帮我一下吗,如何保护sendGrid API密钥。分析并收集相关堆栈中社区

我有要求发送通知电子邮件,一旦谷歌云作曲家气流DAG完成。我找到了一个解决方案,并按照谷歌文档中的建议使用了sendGrid

但问题是API密钥是可见的,谁可以访问cloud composer,因为它被分配给一个环境变量。当我在本地系统python程序中使用同一个键时,它正在发送邮件,而这正是我不理解的地方。因为如果有人拥有此API密钥或有人共享了相同的API密钥,则任何人都可以使用此密钥发送邮件,这不是特定于项目的


谁能帮我一下吗,如何保护sendGrid API密钥。

分析并收集相关堆栈中社区贡献者的证据,我建议您重新考虑一般方法,通过在相应的气流

  • 将API密钥保存在JSON文件中,并将其存储在Airflow环境的云中 存储桶(即
    /home/afflow/gcs/data/keyfile.json
  • 根据,通过限制对JSON文件的访问 你的安全考虑
  • 在“气流”和“连接类型”字段中创建新连接, 选择谷歌云平台选项,然后在密钥文件路径中,输入JSON密钥文件位置的本地文件路径
由于已创建气流连接,您可以通过预定义的
extra\uuuuu google\u cloud\u platform\uuuu key\u path在特定DAG代码中查询参数,在operator中引用加密的API密钥:

from airflow.contrib.hooks.gcp_api_base_hook import GoogleCloudBaseHook

gcp_hook = GoogleCloudBaseHook(gcp_conn_id="<your-conn-id>")
key_path = gcp_hook._get_field("extra__google_cloud_platform__key_path")
来自afflow.contrib.hooks.gcp_api_base_hook导入GoogleCloudBaseHook
gcp_hook=GoogleCloudBaseHook(gcp_conn_id=”“)
key\u path=gcp\u hook.\u get\u字段(“额外的\u谷歌\u云\u平台\u key\u路径”)

可以把它放进去吗?只能由管理员编辑;您可以将API密钥放在
密码
字段中,该字段用加密(在UI上不可见)。您查看过该堆栈吗?这对您的研究有帮助吗?您提供的解决方案正在运行,但是如果开发人员使用logging.info()并提供API_密钥作为消息,那么他也可以在日志中看到密钥。是否有其他可以使用的工作?