From: "Daniel P. Berrangé" <berrange@redhat.com>
To: Markus Armbruster <armbru@redhat.com>
Cc: qemu-devel@nongnu.org, kwolf@redhat.com, jcody@redhat.com,
qemu-block@nongnu.org, mreitz@redhat.com
Subject: Re: [Qemu-devel] [PATCH 18/18] rbd: New parameter key-secret
Date: Tue, 12 Jun 2018 14:20:41 +0100 [thread overview]
Message-ID: <20180612132041.GH24690@redhat.com> (raw)
In-Reply-To: <20180612125821.4229-19-armbru@redhat.com>
On Tue, Jun 12, 2018 at 02:58:21PM +0200, Markus Armbruster wrote:
> Legacy -drive supports "password-secret" parameter that isn't
> available with -blockdev / blockdev-add. That's because we backed out
> our first try to provide it there due to interface design doubts, in
> commit 577d8c9a811, v2.9.0.
>
> This is the second try. It brings back the parameter, except it's
> named "key-secret" now.
>
> Let's review our reasons for backing out the first try, as stated in
> the commit message:
>
> * BlockdevOptionsRbd member @password-secret isn't actually a
> password, it's a key generated by Ceph.
I thought about that when I first added password-secret, but felt
that it is still effectively acting as a password to authenticate
to the server, and calling it password-secret made it clearer that
it was related to the authentication phase, and not for example,
disk encryption.
>
> Addressed by the rename.
>
> * We're not sure where member @password-secret belongs (see the
> previous commit).
>
> See previous commit.
>
> * How @password-secret interacts with settings from a configuration
> file specified with @conf is undocumented.
>
> Not actually true, the documentation for @conf says "Values in the
> configuration file will be overridden by options specified via QAPI",
> and we've tested this.
>
> Signed-off-by: Markus Armbruster <armbru@redhat.com>
> ---
> block/rbd.c | 41 +++++++++++++++++++++++++----------------
> qapi/block-core.json | 6 ++++++
> 2 files changed, 31 insertions(+), 16 deletions(-)
>
> diff --git a/block/rbd.c b/block/rbd.c
> index ea0575d068..f2c6965418 100644
> --- a/block/rbd.c
> +++ b/block/rbd.c
> @@ -239,24 +239,25 @@ static void qemu_rbd_refresh_limits(BlockDriverState *bs, Error **errp)
> }
>
>
> -static int qemu_rbd_set_auth(rados_t cluster, const char *secretid,
> - BlockdevOptionsRbd *opts,
> +static int qemu_rbd_set_auth(rados_t cluster, BlockdevOptionsRbd *opts,
> Error **errp)
> {
> - char *acr;
> + char *key, *acr;
> int r;
> GString *accu;
> RbdAuthModeList *auth;
>
> - if (secretid) {
> - gchar *secret = qcrypto_secret_lookup_as_base64(secretid,
> - errp);
> - if (!secret) {
> - return -1;
> + if (opts->key_secret) {
> + key = qcrypto_secret_lookup_as_base64(opts->key_secret, errp);
> + if (!key) {
> + return -EIO;
> + }
> + r = rados_conf_set(cluster, "key", key);
> + g_free(key);
> + if (r < 0) {
> + error_setg_errno(errp, -r, "Could not set 'key'");
> + return r;
> }
> -
> - rados_conf_set(cluster, "key", secret);
> - g_free(secret);
> }
>
> if (opts->has_auth_client_required) {
> @@ -367,9 +368,7 @@ static QemuOptsList runtime_opts = {
> },
> };
>
> -/* FIXME Deprecate and remove keypairs or make it available in QMP.
> - * password_secret should eventually be configurable in opts->location. Support
> - * for it in .bdrv_open will make it work here as well. */
> +/* FIXME Deprecate and remove keypairs or make it available in QMP. */
> static int qemu_rbd_do_create(BlockdevCreateOptions *options,
> const char *keypairs, const char *password_secret,
> Error **errp)
> @@ -575,6 +574,16 @@ static int qemu_rbd_connect(rados_t *cluster, rados_ioctx_t *io_ctx,
> Error *local_err = NULL;
> int r;
>
> + if (secretid) {
> + if (opts->key_secret) {
> + error_setg(errp,
> + "Legacy 'password-secret' clashes with 'key-secret'");
> + return -EINVAL;
> + }
> + opts->key_secret = g_strdup(secretid);
> + opts->has_key_secret = true;
> + }
> +
> mon_host = qemu_rbd_mon_host(opts, &local_err);
> if (local_err) {
> error_propagate(errp, local_err);
> @@ -607,8 +616,8 @@ static int qemu_rbd_connect(rados_t *cluster, rados_ioctx_t *io_ctx,
> }
> }
>
> - if (qemu_rbd_set_auth(*cluster, secretid, opts, errp) < 0) {
> - r = -EIO;
> + r = qemu_rbd_set_auth(*cluster, opts, errp);
> + if (r < 0) {
> goto failed_shutdown;
> }
>
> diff --git a/qapi/block-core.json b/qapi/block-core.json
> index 841d196a21..3eb536de5b 100644
> --- a/qapi/block-core.json
> +++ b/qapi/block-core.json
> @@ -3120,6 +3120,11 @@
> # This maps to Ceph configuration option
> # "auth_client_required". (Since 3.0)
> #
> +# @key-secret: ID of a QCryptoSecret object providing a key
> +# for cephx authentication.
> +# This maps to Ceph configuration option
> +# "key". (Since 3.0)
> +#
> # @server: Monitor host address and port. This maps
> # to the "mon_host" Ceph option.
> #
> @@ -3132,6 +3137,7 @@
> '*snapshot': 'str',
> '*user': 'str',
> '*auth-client-required': ['RbdAuthMode'],
> + '*key-secret': 'str',
> '*server': ['InetSocketAddressBase'] } }
>
> ##
> --
> 2.17.1
>
>
Regards,
Daniel
--
|: https://berrange.com -o- https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org -o- https://fstop138.berrange.com :|
|: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|
next prev parent reply other threads:[~2018-06-12 13:21 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-06-12 12:58 [Qemu-devel] [PATCH 00/18] block: Configuration fixes and rbd authentication Markus Armbruster
2018-06-12 12:58 ` [Qemu-devel] [PATCH 01/18] rbd: Drop deprecated -drive parameter "filename" Markus Armbruster
2018-06-12 12:58 ` [Qemu-devel] [PATCH 02/18] iscsi: " Markus Armbruster
2018-06-12 12:58 ` [Qemu-devel] [PATCH 03/18] block: Add block-specific QDict header Markus Armbruster
2018-06-12 15:02 ` Kevin Wolf
2018-06-12 16:40 ` Markus Armbruster
2018-06-12 12:58 ` [Qemu-devel] [PATCH 04/18] qobject: Move block-specific qdict code to block-qdict.c Markus Armbruster
2018-06-12 12:58 ` [Qemu-devel] [PATCH 05/18] block: Fix -blockdev for certain non-string scalars Markus Armbruster
2018-06-12 12:58 ` [Qemu-devel] [PATCH 06/18] block: Fix -drive " Markus Armbruster
2018-06-12 12:58 ` [Qemu-devel] [PATCH 07/18] block: Clean up a misuse of qobject_to() in .bdrv_co_create_opts() Markus Armbruster
2018-06-12 12:58 ` [Qemu-devel] [PATCH 08/18] block: Factor out qobject_input_visitor_new_flat_confused() Markus Armbruster
2018-06-12 12:58 ` [Qemu-devel] [PATCH 09/18] block: Make remaining uses of qobject input visitor more robust Markus Armbruster
2018-06-12 12:58 ` [Qemu-devel] [PATCH 10/18] block-qdict: Simplify qdict_flatten_qdict() Markus Armbruster
2018-06-12 12:58 ` [Qemu-devel] [PATCH 11/18] block-qdict: Tweak qdict_flatten_qdict(), qdict_flatten_qlist() Markus Armbruster
2018-06-12 12:58 ` [Qemu-devel] [PATCH 12/18] block-qdict: Clean up qdict_crumple() a bit Markus Armbruster
2018-06-12 15:39 ` Kevin Wolf
2018-06-13 15:23 ` Markus Armbruster
2018-06-14 8:40 ` Kevin Wolf
2018-06-14 8:46 ` Daniel P. Berrangé
2018-06-14 13:11 ` Markus Armbruster
2018-06-14 11:52 ` Markus Armbruster
2018-06-14 13:26 ` Kevin Wolf
2018-06-12 12:58 ` [Qemu-devel] [PATCH 13/18] block-qdict: Simplify qdict_is_list() some Markus Armbruster
2018-06-12 12:58 ` [Qemu-devel] [PATCH 14/18] check-block-qdict: Rename qdict_flatten()'s variables for clarity Markus Armbruster
2018-06-12 12:58 ` [Qemu-devel] [PATCH 15/18] check-block-qdict: Cover flattening of empty lists and dictionaries Markus Armbruster
2018-06-12 12:58 ` [Qemu-devel] [PATCH 16/18] block: Fix -blockdev / blockdev-add for empty objects and arrays Markus Armbruster
2018-06-12 12:58 ` [Qemu-devel] [PATCH 17/18] rbd: New parameter auth-client-required Markus Armbruster
2018-06-12 12:58 ` [Qemu-devel] [PATCH 18/18] rbd: New parameter key-secret Markus Armbruster
2018-06-12 13:20 ` Daniel P. Berrangé [this message]
2018-06-12 16:42 ` Markus Armbruster
2018-06-12 15:04 ` [Qemu-devel] [PATCH 00/18] block: Configuration fixes and rbd authentication Kevin Wolf
2018-06-12 16:41 ` Kevin Wolf
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20180612132041.GH24690@redhat.com \
--to=berrange@redhat.com \
--cc=armbru@redhat.com \
--cc=jcody@redhat.com \
--cc=kwolf@redhat.com \
--cc=mreitz@redhat.com \
--cc=qemu-block@nongnu.org \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).