Как включить SSL в Apache Airflow?

Я использую Airflow 1.7.0 с LocalExecutor, и документация предполагает, что для включения SSL нам нужно передать путь сертификата и ключа и изменить порт на 443, как показано ниже.

[webserver]
web_server_ssl_cert = <path to cert>
web_server_ssl_key = <path to key>

# Optionally, set the server to listen on the standard SSL port.
web_server_port = 443
base_url = http://<hostname or IP>:443

Я создал сертификат и ключ, сгенерированные с помощью OpenSSL. Детали, предоставленные при создании сертификата/ключа, тоже верны. Однако пользовательский интерфейс Airflow по-прежнему использует http, а не https.

Любые указатели помогут!

Благодарю вас!


person Chetan J    schedule 19.12.2017    source источник


Ответы (3)


Решено в этом вопросе Как включить SSL на веб-сервере Airflow? и ответить https://stackoverflow.com/a/56760375/512111.

Вкратце: сгенерируйте ключ, пару crt с

openssl req \
       -newkey rsa:2048 -nodes -keyout domain.key \
       -x509 -days 365 -out airflow.crt

и установите в airflow.cfg как

web_server_ssl_cert = /path/to/airflow.crt
web_server_ssl_key = /path/to/airflow.key

Оставьте порт веб-сервера без изменений. Перезапустите веб-сервер воздушного потока, перейдите к https://hostname:port и вуаля.

person j08lue    schedule 13.09.2019

Airflow 1.7.0 не поддерживает SSL. Я только что проверил код веб-сервера airflow 1.7.0. Код приведен ниже. Эта функция просто запускает приложение flask/gunicorn по HTTP с хостом и портом. Если вы предоставите сертификат и укажете порт как 443, приложение просто запустится на http://<host>:443. Он не принимает ключ SSL и сертификат. Функция веб-сервера Airflow 1.7.0 приведена ниже.

Функция SSL доступна в последней версии Apache Airflow. Пожалуйста, используйте последнюю версию для поддержки SSL.

def webserver(args):
    print(settings.HEADER)
    from airflow.www.app import cached_app
    app = cached_app(configuration)
    workers = args.workers or configuration.get('webserver', 'workers')
    if args.debug:
        print(
            "Starting the web server on port {0} and host {1}.".format(
                args.port, args.hostname))
        app.run(debug=True, port=args.port, host=args.hostname)
    else:
        print(
            'Running the Gunicorn server with {workers} {args.workerclass}'
            'workers on host {args.hostname} and port '
            '{args.port}...'.format(**locals()))

        sp = subprocess.Popen([
            'gunicorn', '-w', str(args.workers), '-k', str(args.workerclass),
            '-t', '120', '-b', args.hostname + ':' + str(args.port),
            'airflow.www.app:cached_app()'])
        sp.wait()
person Amal G Jose    schedule 18.01.2018

Перейдите в AIRFLOW_HOME -> airflow.cfg. Он имеет раздел с именем [webserver], под которым есть два свойства конфигурации, как показано ниже: web_server_ssl_cert = web_server_ssl_key = если нет значения, как указано выше, означает, что веб-сервер Airflow работает на http (без сертификата).

Чтобы включить SSL, используйте сертификат .p12 (который вы должны заказать) и используйте openssl для извлечения сертификата и закрытого ключа из файла .p12. openssl в основном поставляется с Linux, поэтому вы можете напрямую запускать его на терминале Linux.

Шаг 1: извлеките сертификат с помощью следующей команды: openssl pkcs12 –in /path/cert.p12 -nokeys -clcerts –out /path/mycert.crt

Шаг 2. Извлеките ключ с помощью следующей команды: openssl pkcs12 –in /path/cert.p12 -nocerts –out /path/mykey.key

Шаг 3. После создания сертификата и ключа обновите airflow.cfg для web_server_ssl_cert и web_server_ssl_key. Перезапустите веб-сервер Airflow. Готово. Просмотрите пользовательский интерфейс Airflow с https.

person Manish Kumar Pandey    schedule 01.01.2020