Darren Reed wrote:
> Nicolas Williams wrote:
>> On Wed, Sep 24, 2008 at 12:14:33PM +0200, Darren Reed wrote:
>>  
>>>    Below are the properties, their possible values and correspoding 
>>> semantics:
>>>
>>>    policy
>>>
>>>     "none" policy mode - no access restriction. For a global policy, 
>>> this
>>>     mode allows all incoming traffic. For a service policy, this mode
>>>     allows all incoming traffic to its service.
>>>
>>>     "deny" policy mode: more restrictive than "none". This mode allows
>>>     incoming traffic from all sources except those specified in the
>>>     "apply_to" property.
>>>
>>>     "allow" policy mode: most restrictive mode. This mode blocks 
>>> incoming
>>>     traffic from all sources except those specified in the "apply_to"
>>>     property.
>>>     
>>
>> I find this confusing or likely to be confusing.
>>
>> How about:
>>
>>     "any"    -> allow all incoming
>>     "blacklist" -> allow all incoming where source not on blacklist
>>     "whitelist" -> allow incoming only from sources listed in whitelist
>>     "none"    -> disallow all incoming
>>
>> instead of "none," "deny" and "allow"?
>>
>> Or, better yet, why not replace "policy"/"apply_to" with "blacklist"/
>> "whitelist"?
>>   
> 
> This is bikeshed'ing...and you've forgotten grey...or it gray and not grey?
> 
> IMHO, I prefer to see relevant policy words that are in common use 
> elsewhere
> in the industry for control words.  Nowhere else in [Open]Solaris do we 
> have
> the concept of "white" and "black" (that I'm aware of), so it would seem
> extremely inappropriate to introduce that new concept here.
> 
> 
>>>    apply_to
>>>        A multi-value property listing network entities to enforce the
>>>     chosen policy mode. Entities listed in apply_to property will be 
>>> denied
>>>     if policy is "deny" and allowed if policy is "allow". The syntax for
>>>     possible values are:
>>>
>>>     host:        host:IP            "host:192.168.84.14"
>>>     subnet:        network:IP/netmask    "network:129.168.1.5/24"
>>>     interface:    if:interface_name    "if:e1000g0"
>>>     
>>
>> Why do we need 'host'/'subnet' when we have CIDR notation?  And if
>> there's no hostnames then we don't need 'if' for interface names either.
>>   
> 
> I'd rather it be possible to be explicit in nature about the nature of 
> what an object
> is, when it comes to security, so that you are in a better position to 
> try and catch
> simple mistakes.
> 
> For example, if someone put in "host:192.168.84.14/24", because they did a
> copy paste from somewhere else, what does that mean? Isn't it better to say
> "ok, they wanted a host, gave me a CIDR so I'll give them an error" than to
> just accept it and try to guess that the user wanted a network instead 
> of a host,
> possibly creating a security exposure?
> 

We chose to use URIs here to avoid potential parsing issues and have an 
extensible configuration store. For example, to add support for ippool 
and IPv6, we probably can have

ippool:
ippool6:
host6:
network6:

> 
>>>    exceptions
>>>
>>>     A multi-value property listing network entities to be excluded 
>>> from the
>>>     "apply_to" list. For example, when deny policy is applied to a 
>>> subnet,
>>>     exceptions can be made to some hosts in that subnet by specifying 
>>> them
>>>     in the "exceptions" property. This property has the same value 
>>> syntax
>>>     as "apply_to" property.
>>>     
>>
>> Why not just have '!' notation in apply_to instead of this exceptions
>> property?
>>   
> 
> Thinking of it in terms of usability, it would seem better (to me), to 
> have a list of
> things you allow and a list of exceptions to that list, rather than a 
> combined list
> that you need to sift through to work out what's what.
> 

I actually think "!" notation is pretty neat but have similar usability 
concern.

-tony

Reply via email to