This commit adds an 'untargeted' directory to hold orphaned specs that were approved but aren't being worked on. A new index.rst is added explaining the idea, and adjustments are made to other appropriate index pages. Additionally, one glanceclient spec from liberty was stuck in a non-release-name directory; it was moved to the liberty directory, which in turn was slightly reorganized to accommodate both glance and glanceclient specs. Change-Id: I074fc782eca1c3e3c9a1c504501973300741b110
4.9 KiB
Migrate glance-replicator to requests for HTTPS Support
https://blueprints.launchpad.net/glance/+spec/migrate-replicator-to-requests
As operators and users become more security conscious, it is
important to support deployments of Glance served only over HTTPS. In
its current state, glance-replicator
uses
httplib
and thus does not properly verify HTTPS
connections. This allows for various and very serious attacks to be
performed while the user of glance-replicator
attempts to
communicate with Glance.
Problem description
Many deployments currently support both HTTP and HTTPS connections to
Glance's API. As best practices evolve, it will become more common that
Glance and other OpenStack services are served only over HTTPS with
valid X.509 certificates. Currently, if an operator were to deploy
Glance and serve it using only HTTPS, glance-replicator
would still allow for a large range of attacks by an observer since it
does not verify the certificate that the server provides.
Among other things, the user's connection to Glance could easily be
intercepted by a man-in-the-middle serving a phony certificate who would
then proxy or even alter the data sent over the connection. Since the
typical user of glance-replicator
is an administrator, any
service token they have could then be intercepted and used, which is
dangerous given the privileges associated with an administrator.
Proposed change
This specification proposes that the code using httplib
in glance-replicator
be rewritten to use
requests
. requests
supports automatic
certificate verification on all HTTPS connections and allows users to
provide custom certificate bundles for self-signed certificates.
Given that an operator may choose to sign their own ceritificates for
their deployment of Glance, this specification also proposes the
addition of a command-line option to glance-replicator
to
allow the operator to specify a custom certificate bundle to use when
verifying the certificate.
Alternatives
One alternative to requests
that's already used in other
OpenStack projects is httplib2
. This library provides a
nearly identical API to httplib
and performs certificate
verifcation. The library, however, is being actively replaced by many of
these same projects by requests
. Reducing the number of
dependencies that an operator needs to install is also very
favorable.
An alternative to making the user specify their custom certificate
bundle is to provide a glance-replicator.conf
file. This
would be an entirely new file. Adding yet another configuration file may
add to confusion as to which files are necessary when Glance is deployed
as a whole.
Data model impact
None
REST API impact
None
Security impact
For deployments of Glance being served over HTTPS, this will improve the security of the user's connection.
Notifications impact
None
Other end user impact
Users who have not properly configured HTTPS may receive errors.
Since glance-replicator
previously did not generate errors,
this may be an unpleasant experience for the user. It is the position of
the author of this specification that an option to insecurely connect to
Glance is a poor choice since the errors will encourage the operators to
properly configure Glance to be served over HTTPS.
Performance Impact
None
Other deployer impact
None
Developer impact
None
Implementation
Assignee(s)
- Primary assignee:
-
icordasc
- Other contributors:
-
junhongl
Reviewers
- Core reviewer(s):
-
flaper87 flwang
- Other reviewer(s):
-
nikhil-komawar kragniz
Work Items
- Refactor
glance-replicator
to drop a some of its conventions surroundinghttplib
- Replace
httplib
withrequests
- Add option to specify a custom certificate bundle
- Add documentation to
glance-replicator
surrounding the new option and features
Dependencies
None
Testing
requests-mock
will be used to write unit tests for
glance-replicator
to ensure that proper coverage is
achieved.
Documentation Impact
glance-replicator
's man page will need to be updated
regarding the new configuration options. We should note the two current
ways of setting a custom certificate:
requests
will look forREQUESTS_CA_BUNDLE
andCURL_CA_BUNDLE
environment variables- The new
glance-replicator
option.
References
Bugs: