Docker合成后是否可以删除Docker合成文件?

oaxa6hgo  于 2023-03-17  发布在  Docker
关注(0)|答案(1)|浏览(195)

大家好,我担心在多克部署气流会有安全隐患.
在Docker合成文件中,您可以为Fernet设置加密密钥。我担心的是,此密钥在此Docker合成文件中是硬编码的。因此,我的问题是,是否可以删除Docker合成文件,但仍然能够停止并运行服务。
最好将这个env.变量包含在一个Dockerfile中并创建一个新的映像?这样是否更安全?
谢谢你的协助

version: '3'
x-airflow-common:
  &airflow-common
  # In order to add custom dependencies or upgrade provider packages you can use your extended image.
  # Comment the image line, place your Dockerfile in the directory where you placed the docker-compose.yaml
  # and uncomment the "build" line below, Then run `docker-compose build` to build the images.
  image: ${AIRFLOW_IMAGE_NAME:-apache/airflow:2.5.1}
  # build: .
  environment:
    &airflow-common-env
    AIRFLOW__CORE__EXECUTOR: CeleryExecutor
    AIRFLOW__DATABASE__SQL_ALCHEMY_CONN: postgresql+psycopg2://airflow:airflow@postgres/airflow
    # For backward compatibility, with Airflow <2.3
    AIRFLOW__CORE__SQL_ALCHEMY_CONN: postgresql+psycopg2://airflow:airflow@postgres/airflow
    AIRFLOW__CELERY__RESULT_BACKEND: db+postgresql://airflow:airflow@postgres/airflow
    AIRFLOW__CELERY__BROKER_URL: redis://:@redis:6379/0
    AIRFLOW__CORE__FERNET_KEY: ''

我已经成功地设置了Fernet密钥及其在airflow内部的工作,因为变量是加密的,到目前为止我没有任何运行时错误。
我正在寻找最佳安全做法

rryofs0p

rryofs0p1#

您 * 可以 * 删除docker-compose.yml文件,容器将保持运行,但如果发生任何更改(包括合成文件中的其他容器之一),您将很难重新创建容器。
这里最直接的方法是将凭据设置为主机上的环境变量,然后要求Compose将其传递给容器:

environment:
    # Some safe values specific to this Compose setup
    AIRFLOW__CORE__SQL_ALCHEMY_CONN: postgresql+psycopg2://airflow:airflow@postgres/airflow
    AIRFLOW__CELERY__RESULT_BACKEND: db+postgresql://airflow:airflow@postgres/airflow
    AIRFLOW__CELERY__BROKER_URL: redis://:@redis:6379/0

    # But pass this one through from the host (note, no value here)
    AIRFLOW__CORE__FERNET_KEY:
export AIRFLOW__CORE__FERNET_KEY=$(dd if=/dev/random bs=40 count=1 | base64)
docker-compose up -d

绝对不要把这个秘密放在你的Dockerfile中,它不仅会是纯文本的,而且会被保存在你的图片中,任何人只要得到一个图片的副本,就可以轻易地把它拿回来。

相关问题