Cloud Composer 2中如何安全传递Secret Manager密钥至DBT profiles.yml
问题:Cloud Composer 2中dbt-airflow算子调用Secret Manager密钥文件到profiles.yml的安全实现方式
已完成Cloud Composer 2的Secret Manager后端配置,尝试两种方式将Secret Manager中的密钥文件传入dbt的profiles.yml均失败:
失败尝试1:直接通过keyfile字段传入Secret内容
keyfile字段要求传入文件路径而非JSON内容,配置示例如下:
target: dev outputs: dev: project: "myproject-dev" job_execution_timeout_seconds: 10800 job_retries: 3 location: US method: service-account priority: interactive dataset: dev threads: 20 type: bigquery maximum_bytes_billed: 150000 keyfile: "{{ env_var('DBT_ENV_SECRET_KEYFILE') }}"
失败尝试2:使用keyfile_json字段结合环境变量
先将Secret内容存入环境变量:
os.environ['DBT_ENV_SECRET_KEYFILE'] = '{{var.value.dbtdev }}'
再传入profiles.yml:
target: dev outputs: dev: project: "myproject-dev" job_execution_timeout_seconds: 10800 job_retries: 3 location: US method: service-account-json priority: interactive dataset: dev threads: 20 type: bigquery maximum_bytes_billed: 150000 keyfile_json: "{{ env_var('DBT_ENV_SECRET_KEYFILE') }}"
但因传入内容为字符串,不符合dbt要求的键值对结构,触发"无效架构"报错。
需求
希望找到更简单安全的实现方式,比如使用安全临时文件,不使用Pods,优先采用dbt-airflow或Cosmos DBT,求最佳安全方案。
内容的提问来源于stack exchange,提问作者Nora Nathalie
相关产品推荐
相关产品推荐

