Add code to check s3:GetBucketLocation against bucket policy.
Fixes: http://tracker.ceph.com/issues/21582
Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=1493934
Signed-off-by: Adam C. Emerson <aemerson@redhat.com>
int RGWGetBucketLocation::verify_permission()
{
- if (false == s->auth.identity->is_owner_of(s->bucket_owner.get_id())) {
- return -EACCES;
+ if (s->iam_policy) {
+ if (s->iam_policy->eval(s->env, *s->auth.identity,
+ rgw::IAM::s3GetBucketLocation,
+ 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;
}
int RGWCreateBucket::verify_permission()