Skip to content

Commit

Permalink
pkg/controller/cincinnati: Use InsecureEdgeTerminationPolicyNone
Browse files Browse the repository at this point in the history
We had used InsecureEdgeTerminationPolicyAllow since the route landed
in 1fdf865 (Create a route for Cincinnati service, 2020-05-01,
commit message, but from discussion in the GitHub pull request [1], it
was:

* InsecureEdgeTerminationPolicyAllow is the default termination
  policy.
* Cincinnati's docs have no preference [2].

However, we really, really want HTTPS security for cluster-version
operators making upstream requests for update recommendations.  There
are long-term plans for tightening down guards against malicious,
compromised, or man-in-the-middled update recommendation services, but
today we have yet to land even guards as basic as "upstream is lying
about the version string associated with a given release image" [3].

By removing HTTP termination [4], we force consumers to configure
their clients, including the cluster-version operator, with https://
URIs (or do something else explicit like setting up their own HTTP
termination) before they can access the policy-engine output, which
reduces the risk that they will recieve and trust compromised update
graphs.  This may be a breaking change, but:

* We're still in beta, and not yet in general-availability with
  backwards-compatability requirements.
* Folks who have configured their cluster-version operators and other
  clients with http:// upstreams should *want* to be broken.  We are
  protecting them from all sorts of compromised-upstream failure
  modes.
* The cluster-version operator, and other well-behaved clients, will
  report understandable error messages for "I tried to connect over
  HTTP and there was nobody there", which will lead users into
  auditing and fixing their upstream URIs, so recovering from the
  breakage should not be to onerous.

[1]: #30 (comment)
[2]: https://github.com/openshift/cincinnati/blame/0bb5f6f3228858f9e5d1807bd6f45f46e537cdea/docs/user/running-cincinnati.md#L87-L88
[3]: openshift/cluster-version-operator#431
[4]: https://github.com/openshift/api/blob/346618ed7d5e6396191efe6f10b2c36f1e95d8b7/route/v1/types.go#L258-L259
  • Loading branch information
wking committed Sep 15, 2020
1 parent 86d8de1 commit c0ec2fc
Show file tree
Hide file tree
Showing 2 changed files with 4 additions and 4 deletions.
6 changes: 3 additions & 3 deletions docs/disconnected-cincinnati-operator.md
Original file line number Diff line number Diff line change
Expand Up @@ -237,7 +237,7 @@ You might want to review the documentation around disconnected registries to lea
3. Check the cincinnati service
~~~sh
curl --header 'Accept:application/json' http://$(oc -n "${NAMESPACE}" get route example-name-policy-engine-route -o jsonpath='{.spec.host}')/api/upgrades_info/v1/graph\?channel=stable-4.5 | jq
curl --header 'Accept:application/json' https://$(oc -n "${NAMESPACE}" get route example-name-policy-engine-route -o jsonpath='{.spec.host}')/api/upgrades_info/v1/graph\?channel=stable-4.5 | jq
~~~
> **OUTPUT**
Expand Down Expand Up @@ -281,7 +281,7 @@ You might want to review the documentation around disconnected registries to lea
5. Patch the ClusterVersion to use our Cincinnati instance rather than the public one
~~~sh
CINCINNATI_ROUTE=$(oc -n "${NAMESPACE}" get route example-name-policy-engine-route -o jsonpath=http://'{.spec.host}'/api/upgrades_info/v1/graph)
CINCINNATI_ROUTE=$(oc -n "${NAMESPACE}" get route example-name-policy-engine-route -o jsonpath=https://'{.spec.host}'/api/upgrades_info/v1/graph)
PATCH="{\"spec\":{\"upstream\":\"${CINCINNATI_ROUTE}\"}}"
oc patch clusterversion version -p $PATCH --type merge
~~~
Expand Down Expand Up @@ -313,7 +313,7 @@ You can print the graph for a specific channel in your Cincinnati instance using
sudo dnf install -y graphviz
curl -O https://raw.githubusercontent.com/openshift/cincinnati/master/hack/graph.sh
chmod +x graph.sh
curl --header 'Accept:application/json' "http://example-name-policy-engine-${NAMESPACE}.apps.mgmt-hub.e2e.bos.redhat.com/api/upgrades_info/v1/graph?channel=stable-4.5" | ./graph.sh | dot -Tpng > graph.png
curl --header 'Accept:application/json' "https://example-name-policy-engine-${NAMESPACE}.apps.mgmt-hub.e2e.bos.redhat.com/api/upgrades_info/v1/graph?channel=stable-4.5" | ./graph.sh | dot -Tpng > graph.png
~~~
## Mirror the release images
Expand Down
2 changes: 1 addition & 1 deletion pkg/controller/cincinnati/new.go
Original file line number Diff line number Diff line change
Expand Up @@ -227,7 +227,7 @@ func (k *kubeResources) newPolicyEngineRoute(instance *cv1beta1.Cincinnati) *rou
},
TLS: &routev1.TLSConfig{
Termination: routev1.TLSTerminationEdge,
InsecureEdgeTerminationPolicy: routev1.InsecureEdgeTerminationPolicyAllow,
InsecureEdgeTerminationPolicy: routev1.InsecureEdgeTerminationPolicyNone,
},
},
}
Expand Down

0 comments on commit c0ec2fc

Please sign in to comment.