Re: [Isms] pre11 comments
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Isms] pre11 comments



>>>>> On Wed, 2 Jul 2008 18:45:11 +0800, "David Harrington" <ietfdbh at comcast.net> said:

DH> I think the TSM should do a 1:1 translation from tmSecurityName to
DH> securityName, and vice-versa.  I am not sure we need a securityName
DH> mapping table for TSM.

DH> The mapping happens at the transport model from the transport-specific
DH> principal to the tmSecurityName. That mapping is obviously
DH> necessary.

The current state of affairs, with a unique SM based security name per
security model lets the VACM carefully distinguish which securityName
gets authorization based on which model it comes from.  Thus:

  securityName:wes model:USM

can be given greater or lower access than:

  securityName:wes model:KSM

This may be necessary because local policy dictates that kerberos (KSM
in the above example) is considered "more secure" than the USM model
for some reason or another.  The wes/USM may not be given access to some
critical infrastructure that the wes/KSM model is given.


Fast forward to the new TSM model.  Now we have only a single model to
distinguish ourselves with and regardless of whether SSH or TLS is used
under the hood, we have no selection criteria to use within the VACM to
grant preferred access to TLS users over SSH users.  But we may trust
one protocol over another for one reason or another (possibly because we
suddenly found a bug in the implementation of one protocol that suddenly
renders it less secure so we'd rather lower the allowed access level to
read-only until the implementation is fixed but the other protocol is
still just fine so it can stay at read-write).


The VACM *only* has the securityModel and securityName at it's disposal
to make the distinction between how to grant authorization to a given
remote entity (ok, it also has context and level information, but that
doesn't help).


This all means that *if* we want to allow separate authorization levels
for different secure transports (and I'll argue that we do want to) we
either need to:

  - use different securityModel numbers per transport, which the WG has
    already decided not to do (although it could be revisited I suppose
    and could be done with a careful IANA controlled mapping of TM
    domain numbers to security models all which in the end "mean" TSM).

  - say it's up to the user to ensure duplication doesn't happen.  But
    if we want to make use of existing infrastructure, you're now
    imposing something on the user base they may not have had to deal
    with because right now SSH and TLS may have colliding user names but
    it's not a problem because one is authorizing shell access and the
    other a web database and authorization rights are already different).

  - OR: (*) Provide a mapping system so that identical user names
    from different security protocols can be mapped to different
    internal securityNames for things like authorization checks.

The questions so far:

  - Do we want to provide different authorization checks per security
    transport?  I think most will agree this would be good.

  - Do we want to require identity mapping capability so that identity X
    on transport SSH can be different than identity X on TLS.  I
    personally think this would be good to have.

  - Do we want to provide a standardized mapping for mapping X/TLS and
    X/SSH to (eg) securityName's X and Y...  I'd argue yes, since
    without a standardized mapping system then there will be
    inconsistency.

So, *if* we want to do a mapping where should it go?  There are really 3
choices:

  - Put it in the TSM document.  The TSM could map between incoming
    securityNames offered by the transport and use that combined with
    the transportDomain to map to a value the application should use.
    This makes the TSM a bit more aware of the transport protocol that
    is in use, but it already had access to the transportDomain in the
    tmStateReference anyway so it's really nothing new.

  - Put it in the TM document and have a common mapping table, indexed
    in a similar way.  The TM would use pass this into the rest of the
    engine.  This gives more consistency in the value passed around the
    engine, which is probably a plus.

  - Have each TM implementation to provide a mapping table.  This would
    mean that if SSH wanted to play nice with the above discussed model,
    it would have to add a mapping table from a local SSH specific
    identity name to a SNMPv3 specific securityName.  It would be up to
    the TM document to say whether each TM implementation MAY, SHOULD or
    MUST provide such a mapping.

I don't like the idea of the third choice because it's too much
duplication.  The other two require a single table, indexed by
transportDomain and tmSecurityName, and it works for all instantiations
of a TM regardless of whether they're standardized or not.

I do think such a mapping is needed because security needs to differ and
the cost is not high.  In the real world, security changes too and it's
much cheaper to put in such a mapping now so that authorization can be
changed in the field in an emergency situation without disabling the
entire protocol when it may still be safe to do some level of
"monitoring" even if config isn't safe (e.g.).  Right now, with only a
single transport in the works, this problem isn't as apparent and this
is simply good future planning.

-- 
Wes Hardaker
Sparta, Inc.
_______________________________________________
Isms mailing list
Isms at ietf.org
https://www.ietf.org/mailman/listinfo/isms



Note: Messages sent to this list are the opinions of the senders and do not imply endorsement by the IETF.