From: Adam C. Emerson Date: Thu, 28 Sep 2017 17:54:32 +0000 (-0400) Subject: rgw: Check bucket Website operations in policy X-Git-Tag: v12.2.2~102^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=f9850d2148b396032634f7ffa18ae458bd208195;p=ceph.git rgw: Check bucket Website operations in policy Add code to check s3:GetBucketWebsite and s3:PutBucketWebsite operations against bucket policy. Fixes: http://tracker.ceph.com/issues/21597 Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=1493896 Signed-off-by: Adam C. Emerson (cherry picked from commit ceed535957ac186e241fcff26b103cf7efa959b1) --- diff --git a/src/rgw/rgw_op.cc b/src/rgw/rgw_op.cc index f7e5caf67f51..48e15b97aa5d 100644 --- a/src/rgw/rgw_op.cc +++ b/src/rgw/rgw_op.cc @@ -2081,10 +2081,17 @@ void RGWSetBucketVersioning::execute() int RGWGetBucketWebsite::verify_permission() { - if (s->user->user_id.compare(s->bucket_owner.get_id()) != 0) - return -EACCES; + if (s->iam_policy) { + if (s->iam_policy->eval(s->env, *s->auth.identity, + rgw::IAM::s3GetBucketWebsite, + ARN(s->bucket)) == Effect::Allow) { + return 0; + } + } else if (s->auth.identity->is_owner_of(s->bucket_owner.get_id())) { + return 0; + } - return 0; + return -EACCES; } void RGWGetBucketWebsite::pre_exec() @@ -2101,10 +2108,17 @@ void RGWGetBucketWebsite::execute() int RGWSetBucketWebsite::verify_permission() { - if (s->user->user_id.compare(s->bucket_owner.get_id()) != 0) - return -EACCES; + if (s->iam_policy) { + if (s->iam_policy->eval(s->env, *s->auth.identity, + rgw::IAM::s3PutBucketWebsite, + ARN(s->bucket)) == Effect::Allow) { + return 0; + } + } else if (s->auth.identity->is_owner_of(s->bucket_owner.get_id())) { + return 0; + } - return 0; + return -EACCES; } void RGWSetBucketWebsite::pre_exec()