Bugzilla will be upgraded to version 5.0. The upgrade date is tentatively scheduled for 2 December 2018, pending final testing and feedback.
Bug 883866 - [RFE]: Access control for QMF functionality should be improved
[RFE]: Access control for QMF functionality should be improved
Status: CLOSED ERRATA
Product: Red Hat Enterprise MRG
Classification: Red Hat
Component: qpid-cpp (Show other bugs)
2.2
All Linux
medium Severity medium
: 3.1
: ---
Assigned To: Pavel Moravec
Zdenek Kraus
: Documentation, FutureFeature, Patch, Triaged
Depends On:
Blocks: 785156
  Show dependency treegraph
 
Reported: 2012-12-05 08:16 EST by Pavel Moravec
Modified: 2015-04-14 09:46 EDT (History)
10 users (show)

See Also:
Fixed In Version: qpid-cpp-0.30-2
Doc Type: Enhancement
Doc Text:
Some QMF methods bypassed ACL authorization, allowing content in any queue to be manipulated by any user that was authorized to invoke QMF methods. Missing ACL actions together with their parameters have been added that permit or deny users the ability to purge, move, redirect and reroute messages from a queue.
Story Points: ---
Clone Of:
Environment:
[Release Notes]
Last Closed: 2015-04-14 09:46:22 EDT
Type: Bug
Regression: ---
Mount Type: ---
Documentation: ---
CRM:
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---


Attachments (Terms of Use)
patch proposal (inital draft) (14.99 KB, patch)
2014-05-27 08:11 EDT, Pavel Moravec
no flags Details | Diff
Patch proposal (21.51 KB, patch)
2014-06-04 06:27 EDT, Pavel Moravec
no flags Details | Diff


External Trackers
Tracker ID Priority Status Summary Last Updated
Red Hat Product Errata RHEA-2015:0805 normal SHIPPED_LIVE Red Hat Enterprise MRG Messaging 3.1 Release 2015-04-14 13:45:54 EDT
Apache JIRA QPID-5817 None None None Never

  None (edit)
Comment 2 Pavel Moravec 2012-12-05 08:24:59 EST
qpid already has some support for QMF methods&queries authorization. Many (or maybe all?) QMF methods call:

qpid/management/Manageable.cpp:

bool Manageable::AuthorizeMethod(uint32_t, Args&, const std::string&)
{
    return true;
}


I suppose this is required:
- ensure the method is called by invoking any QMF method/query
- call ACL stuff from the AuthorizeMethod
- enhance ACLs according to QMF methods and its arguments
Comment 8 Pavel Moravec 2014-05-27 08:11:41 EDT
Created attachment 899491 [details]
patch proposal (inital draft)

Initial version of patch for the same.

What misses there:
- on ACL denial, provide better text than "Forbidden" (raise framing::UnauthorizedAccessException).
- add some automated tests

example acl file:

acl deny all purge queue name=q
acl deny all move queue name=q queuename=w
acl deny all redirect queue name=q queuename=w
acl deny all reroute queue name=q exchangename=amq.fanout
acl deny all delete queue name=q
acl allow all all


Chuck, would you be ok with this proposal, including naming? Thanks.
Comment 9 Chuck Rolke 2014-05-27 15:48:50 EDT
The code looks good to me; the names are ok.

The only thing it needs is a few tests added to qpid/cpp/src/tests/acl.py.
Comment 10 Pavel Moravec 2014-06-04 06:27:15 EDT
Created attachment 902128 [details]
Patch proposal

Patch proposal, including automated tests enhancement.

Automated tests depend on QPID-5797 / commit https://svn.apache.org/r1599221 (trivial change in qpid-tools). Fix in broker does _not_ depend on QPID-5797.

/me to post a patch for relevant 1101533 as well and send both to upstream for a review.
Comment 11 Pavel Moravec 2014-06-15 03:17:30 EDT
Upstream review request: https://reviews.apache.org/r/22606/
Comment 12 Pavel Moravec 2014-06-18 03:43:09 EDT
Committed as r1603364.
Comment 18 Zdenek Kraus 2014-12-17 11:31:49 EST
The QMF methods mentioned by Comment 8 was tested on RHEL6 i686 and x86_64 with following packages:

qpid-java-client-0.30-3
qpid-cpp-client-devel-docs-0.30-4
qpid-cpp-client-devel-0.30-4
qpid-tools-0.30-3
qpid-cpp-server-linearstore-0.30-4
qpid-jca-0.22-2
qpid-jca-xarecovery-0.22-2
python-qpid-0.30-2
qpid-java-example-0.30-3
qpid-cpp-server-xml-0.30-4
qpid-proton-c-0.7-4
qpid-java-common-0.30-3
qpid-cpp-client-0.30-4
python-qpid-qmf-0.30-2
qpid-cpp-server-devel-0.30-4
qpid-cpp-debuginfo-0.30-4
qpid-qmf-0.30-2
qpid-cpp-server-0.30-4


ACL rules for above mentioned QMF methods works as expected, except following issues:
Bug 1173534
Bug 1173543

->VERIFIED
Comment 23 errata-xmlrpc 2015-04-14 09:46:22 EDT
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://rhn.redhat.com/errata/RHEA-2015-0805.html

Note You need to log in before you can comment on or make changes to this bug.