通过安全方法的 Apache Airflow Ldap 身份验证

Apache Airflow Ldap Authentication Via Secure Method

我们使用apacheairflow 但我们想使用 ldap 身份验证 正如我看到配置文件想要 AUTH_LDAP_BIND_PASSWORD = "**********" 我们不能这样写密码。 因为这种方法不安全。 如何在此行隐藏 ldap 绑定密码,我们对此一无所知,也许有人可以帮助我?

这种方法通常通过管道或 bash 脚本进行,我们所做的是

  1. 我们将密码导出为变量,
  2. 模板化并生成值文件,
  3. 使用 helm 安装,
  4. 删除 values.yaml 文件

您可以将密码导出到脚本中,例如 export LDAP_PASSWORD=$(cat ./ldappassword)

现在你可以把values.yaml.j2中的webserver_config写成

   webserver:
     webserverConfig: |
     #... the other values
     AUTH_LDAP_BIND_PASSWORD = "{{ LDAP_PASSWORD }}"

请注意。这需要安装 j2cli 并且 values.yaml 文件的扩展名是 .j2

现在您可以通过调用

来替换这些模板

j2 ./values.yaml.j2 > ./values.yaml

此命令用相应的环境变量替换 **{{ variables }}** 下的模板。

执行此命令后,您可以通过以下方式安装气流 helm upgrade --install $RELEASE_NAME apache/airflow -n $NAMESPACE -f values.yaml 然后删除模板化的 values.yaml.

还有一种方法。 为密码创建 Kubernetes Secret

  1. kubectl create secret generic ldap-secret --from-file=ldap-password="ldappassword" -n $NAMESPACE

  2. 通过values.yaml

    在网络服务器中挂载kubernetes secret
webserver:
  extraVolumes: 
    - name: ldap
      secret:
        secretName: ldap-secret
  extraVolumeMounts:
    - name: ldap
      mountPath: /usr/local/airflow/ldappassword
      readOnly: true
  1. values.yaml 中也参考 webserver_config 中的此卷。
webserver:
  webserverConfig: |
    # ... your other ldap values
    
    with open('/usr/local/airflow/ldappassword/ldap-password','r') as fp:
      x = fp.read()

    AUTH_LDAP_BIND_PASSWORD = x