James Meickle created AIRFLOW-3228:
--------------------------------------

             Summary: Airflow leaks Kubernetes credentials on exceptions
                 Key: AIRFLOW-3228
                 URL: https://issues.apache.org/jira/browse/AIRFLOW-3228
             Project: Apache Airflow
          Issue Type: Bug
          Components: kubernetes
    Affects Versions: 1.10.0
            Reporter: James Meickle


I have a Kubernetes integration with Airflow using service account tokens, 
which are equivalent to passwords in risk/scope. We had an issue where one of 
our tokens had an appended newline, rendering it invalid. This led to the 
header leaking into the logs:

{{[2018-10-17 20:30:44,355] {{models.py:1736}} ERROR - Invalid header value 
b'Bearer MY_KUBERNETES_TOKEN_HERE'
Traceback (most recent call last):
  File 
"/home/airflow/virtualenvs/airflow/lib/python3.5/site-packages/airflow/models.py",
 line 1633, in _run_raw_task
    result = task_copy.execute(context=context)
  File 
"/home/airflow/src/plugins/moneytree/moneytree/operators/qbernetes_operators.py",
 line 331, in execute
    get_logs=self.get_logs)
  File 
"/home/airflow/virtualenvs/airflow/lib/python3.5/site-packages/airflow/contrib/kubernetes/pod_launcher.py",
 line 71, in run_pod
    resp = self.run_pod_async(pod)
  File 
"/home/airflow/virtualenvs/airflow/lib/python3.5/site-packages/airflow/contrib/kubernetes/pod_launcher.py",
 line 55, in run_pod_async
    resp = self._client.create_namespaced_pod(body=req, namespace=pod.namespace)
  File 
"/home/airflow/virtualenvs/airflow/lib/python3.5/site-packages/kubernetes/client/apis/core_v1_api.py",
 line 6057, in create_namespaced_pod
    (data) = self.create_namespaced_pod_with_http_info(namespace, body, 
**kwargs)
  File 
"/home/airflow/virtualenvs/airflow/lib/python3.5/site-packages/kubernetes/client/apis/core_v1_api.py",
 line 6142, in create_namespaced_pod_with_http_info
    collection_formats=collection_formats)
  File 
"/home/airflow/virtualenvs/airflow/lib/python3.5/site-packages/kubernetes/client/api_client.py",
 line 321, in call_api
    _return_http_data_only, collection_formats, _preload_content, 
_request_timeout)
  File 
"/home/airflow/virtualenvs/airflow/lib/python3.5/site-packages/kubernetes/client/api_client.py",
 line 155, in __call_api
    _request_timeout=_request_timeout)
  File 
"/home/airflow/virtualenvs/airflow/lib/python3.5/site-packages/kubernetes/client/api_client.py",
 line 364, in request
    body=body)
  File 
"/home/airflow/virtualenvs/airflow/lib/python3.5/site-packages/kubernetes/client/rest.py",
 line 266, in POST
    body=body)
  File 
"/home/airflow/virtualenvs/airflow/lib/python3.5/site-packages/kubernetes/client/rest.py",
 line 166, in request
    headers=headers)
  File 
"/home/airflow/virtualenvs/airflow/lib/python3.5/site-packages/urllib3/request.py",
 line 72, in request
    **urlopen_kw)
  File 
"/home/airflow/virtualenvs/airflow/lib/python3.5/site-packages/urllib3/request.py",
 line 150, in request_encode_body
    return self.urlopen(method, url, **extra_kw)
  File 
"/home/airflow/virtualenvs/airflow/lib/python3.5/site-packages/urllib3/poolmanager.py",
 line 322, in urlopen
    response = conn.urlopen(method, u.request_uri, **kw)
  File 
"/home/airflow/virtualenvs/airflow/lib/python3.5/site-packages/urllib3/connectionpool.py",
 line 600, in urlopen
    chunked=chunked)
  File 
"/home/airflow/virtualenvs/airflow/lib/python3.5/site-packages/urllib3/connectionpool.py",
 line 354, in _make_request
    conn.request(method, url, **httplib_request_kw)
  File "/usr/lib/python3.5/http/client.py", line 1106, in request
    self._send_request(method, url, body, headers)
  File "/usr/lib/python3.5/http/client.py", line 1146, in _send_request
    self.putheader(hdr, value)
  File "/usr/lib/python3.5/http/client.py", line 1083, in putheader
    raise ValueError('Invalid header value %r' % (values[i],))
ValueError: Invalid header value b'Bearer MY_KUBERNETES_TOKEN_HERE'}}

We should catch these errors and re-raise them without the secret value, since 
this isn't suitable for a production application.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to