[ 
https://issues.apache.org/jira/browse/QPID-4947?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14041154#comment-14041154
 ] 

Chuck Rolke commented on QPID-4947:
-----------------------------------

h1. Address specification
{noformat}
  <address-spec> ::= <address> ["-"<address>]
  <address>      ::= <addr>["/"<int>"]         (int >0, <128)
  <addr>         ::= <hostname> | <domainname> |
                     <literal IPv4> |
                  "["<literal IPv6>"]"
{noformat}
Users may construct a broad range of host addresses and ranges.

h1. ACL command
{noformat}
  acl allow|deny create connection address=<address-spec>|* [user=<user-spec>]
{noformat}
h1. Two different limit checks.
The two forms of the command are used at two different places in the connection 
creation process.

h2. No user name
The command without a user name spec are used at the socket level to stop the 
socket accept. This is a highly efficient way to block a node or set of nodes 
from any connection attempt.

This is a new point at which connections will be blocked and mechanisms to 
implement it must be added.

The use case for this check is a simple and efficient black list or white list 
of allowed client host addresses.

h2. With user name
The command with a user name spec is used much later in the connection process: 
the socket is accepted and the AMQP protocol runs far enough to  determine the 
authenticated user name.

ACL is already called from the connection process to count connections and 
possibly to block connections if a user has too many open. This test will be a 
new limit to block a user at the same place that counted connections are 
rejected.

The use case for this check is to limit the hosts from which a user is allowed 
to connect. For example

h3. Example with specified user name
Company example.com administers a broker. Some customers from CompanyA and 
others from CompanyB have user accounts on the system. The broker ACL may be 
configured with the following limits:
{noformat}
  acl allow create connection address=corp.example.com user=admin*
  acl allow create connection address=10.0.0.0/8       user=admin*
  acl allow create connection address=192.168.0.0/16   user=admin*
  acl allow create connection address=[fc00::]/7       user=admin*
  acl deny  create connection address=*                user=admin*
  
  acl allow create connection address=companya.com user=companyA*
  acl deny  create connection address=*            user=companyA*
  
  acl allow create connection address=companyb.com user=companyB*
  acl deny  create connection address=*            user=companyB*
{noformat}
Now admin users may log in ony from systems on the corporate network or local 
subnet; companyA users must create connections from companya.com; and companyB 
users must log in from companyb.com.

> C++ Broker could use ACL to restrict hosts from which a user may connect
> ------------------------------------------------------------------------
>
>                 Key: QPID-4947
>                 URL: https://issues.apache.org/jira/browse/QPID-4947
>             Project: Qpid
>          Issue Type: Improvement
>          Components: C++ Broker
>    Affects Versions: 0.20
>            Reporter: Chuck Rolke
>
> Currently users can connect to the broker from anywhere. This feature would 
> add administrative restrictions to allow or deny connections from individual 
> hosts or subnets.



--
This message was sent by Atlassian JIRA
(v6.2#6252)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to