diff options
author | Prasanna Kumar Kalever <prasanna.kalever@redhat.com> | 2015-08-21 00:08:23 +0530 |
---|---|---|
committer | Raghavendra G <rgowdapp@redhat.com> | 2015-10-13 09:05:37 -0700 |
commit | b8ba012da0cf276329025e30b36f43624548f7f1 (patch) | |
tree | e84232d67a63f56e01fa638ee063bf48e9b788c5 /xlators/protocol/server/src/server-handshake.c | |
parent | 1a1b00fcd0ec199d19652d8fceb9465cc4edf189 (diff) |
server/protocol: option for dynamic authorization of client permissions
problem:
assuming gluster volume is already mounted (for gfapi: say client transport
connection has already established), now if somebody change the volume
permissions say *.allow | *.reject for a client, gluster should allow/terminate
the client connection based on the fresh set of volume options immediately,
but in existing scenario neither we have any option to set this behaviour nor
we take any action until and unless we remount the volume manually
solution:
Introduce 'dynamic-auth' option (default: on).
If 'dynamic-auth' is 'on' gluster will perform dynamic authentication to
allow/terminate client transport connection immediately in response to
*.allow | *.reject volume set options, thus if volume permissions have changed
for a particular client (say client is added to auth.reject list), his
transport connection to gluster volume will be terminated immediately.
Backport of:
> Change-Id: I6243a6db41bf1e0babbf050a8e4f8620732e00d8
> BUG: 1245380
> Signed-off-by: Prasanna Kumar Kalever <prasanna.kalever@redhat.com>
> Reviewed-on: http://review.gluster.org/12229
> Tested-by: NetBSD Build System <jenkins@build.gluster.org>
> Reviewed-by: Raghavendra G <rgowdapp@redhat.com>
> (cherry picked from commit 84e90b756566bc211535a8627ed16d4231110ade)
Change-Id: If7e5c9be912412ea388391ef406ee2c8bedb26b8
BUG: 1271065
Signed-off-by: Prasanna Kumar Kalever <prasanna.kalever@redhat.com>
Reviewed-on: http://review.gluster.org/12343
Tested-by: NetBSD Build System <jenkins@build.gluster.org>
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Raghavendra G <rgowdapp@redhat.com>
Diffstat (limited to 'xlators/protocol/server/src/server-handshake.c')
-rw-r--r-- | xlators/protocol/server/src/server-handshake.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/xlators/protocol/server/src/server-handshake.c b/xlators/protocol/server/src/server-handshake.c index 89e0c1a0e13..af079798804 100644 --- a/xlators/protocol/server/src/server-handshake.c +++ b/xlators/protocol/server/src/server-handshake.c @@ -603,6 +603,8 @@ server_setvolume (rpcsvc_request_t *req) conf->auth_modules); if (ret == AUTH_ACCEPT) { + /* Store options received from client side */ + req->trans->clnt_options = dict_ref(params); gf_msg (this->name, GF_LOG_INFO, 0, PS_MSG_CLIENT_ACCEPTED, "accepted client from %s (version: %s)", |