Thoughts: This is a great analysis! On point 2, I'm in favour of simplifying it to a single name instead of a fancy regex, at least in the user-editable settings.
Concerns: "Bad neighbour" behaviour is the trickiest issue. For example, right now, a user could, ignorantly or otherwise, create a URI Signing profile that contains an invalid key that would prevent the remap from being loaded. Or, they could create a very, very large number of keys so that when an invalid signature comes through, it tanks performance checking them all. Likewise, URI Signing has a trusted relationship with the signer, so a malicious or incompetent signer can produce a regex that spins the CPU trying to evaluate it. We'd need to close all these, and probably more, avenues before it would be reasonable to allow tenants to turn on or configure URI Signing. Funny jokes: Why was the Delivery Service arrested after invalidating all it's content? It had a whole bunch of dirty cache. On Fri, Feb 2, 2018 at 1:43 PM, Jeremy Mitchell <mitchell...@apache.org> wrote: > As we move in the direction of self-service, there are a few obstacles that > need to be overcome and I'd like to discuss them a bit so grab a cup of > coffee... > > When I say self-service, what I really mean is "delivery service > self-service" or the ability to manage your own delivery services (as > dictated by tenancy) and everything related to those delivery services. > "Everything" includes the following (afaik): > > 1. Create/Read/Update/Delete delivery services > 2. Manage DS regexes > 3. Manage DS SSL keys (if applicable) > 4. Manage DS URL sig keys (if applicable) > 5. Manage DS URI signing keys (if applicable) > 6. Manage DS targets (steering* only) > 7. Creating DS invalidate content jobs > 8. Manage DS / cache assignments > > If you can't do 1-7 yourself, it's not really self-service is it? #8 is > debatable. > > I'll discuss each one: > > 1. Create/Read/Update/Delete delivery services > > Ideally, you could CRUD your own delivery services but our system has some > limitations. > > A) Our CDN is not properly insulated from bad DS configurations. If a user > enters a bad value, bad things could potentially happen to a cache or worse > the whole CDN. > B) Certain DS configuration changes requires queue updates and/or snapshot > for the change to take effect. We're not ready (nor will we ever be > probably) to let normal users queue updates and/or snapshot. > > So in the interim, we're working on the ability to allow normal users to > create "delivery service requests" to facilitate creating/updating/deleting > a delivery service. These "requests" will have to be reviewed/fulfilled by > a higher level user (Ops or Admin) who can then queue/snapshot if needed. > > 2. Manage DS regexes > > Here's an explanation of this: > http://traffic-control-cdn.readthedocs.io/en/latest/admin/traffic_ops/using.html#delivery-service-regexp > > Currently, this requires the Operations role and for good reason. The > danger here involves the risk of a normal user entering a bad regex. For > example, it is my understanding that the regex in position zero needs to > always follow this format: .*\.foo\..*. > > Maybe with some better API validation we could let normal users manage DS > regexes....or maybe these end up going away in favor of something > better/easier...not sure yet... > > 3. Manage DS SSL keys > > SSL keys are only applicable where protocol > 0 (HTTPS, HTTP AND HTTPS, or > HTTP TO HTTPS) and currently, to manage them requires the Admin role. Why? > I'm not sure. Is their harm in letting normal users manage their own SSL > keys? > > 4. Manage DS URL sig keys > > URL sig keys ( > http://traffic-control-cdn.readthedocs.io/en/latest/admin/traffic_ops/using.html#generate-url-sig-keys) > are only applicable where signingAlgorithm = 'url_sig' and currently, to > manage them requires NO role apparently (only a tenancy check is > performed). This is the 1st one on the list that a "normal" user can do > currently. > > 5. Manage DS URI signing keys > > URI signing keys are only applicable where signingAlgorithm = 'uri_signing' > and currently, to manage DS URI signing keys requires the Admin role. Is it > necessary to restrict this functionality to Admins only or can we allow > normal users to mange URI signing keys for their DS's? > > 6. Manage DS targets (steering* only) > > Here's an explanation of this: > http://traffic-control-cdn.readthedocs.io/en/latest/admin/quick_howto/steering.html?highlight=steering > > Currently, to manage DS targets requires the Admin or Steering role. Is > there any harm in allowing a normal user to "steer" their delivery service > to another delivery service as long as the target delivery service falls in > their tenancy? > > 7. Creating DS invalidate content jobs > > http://traffic-control-cdn.readthedocs.io/en/latest/admin/traffic_ops/using.html?highlight=invalidate#invalidate-content > > You can currently do this for your own DS's. This is the 2nd one on the > list that a "normal" user can do currently. > > 8. Manage DS / cache assignments > > This is the debatable one. To provide true delivery service self-service > should a user have the ability to determine which caches are assigned to > their delivery service. I'm thinking NO. Currently, this action requires > the Ops role and I'm in favor of leaving it that way... > > In summary, to provide true delivery service self-service I think we need > to do a few things: > > 1. Introduce DS requests until the day in which DS configurations can be > guaranteed and queue updates/snapshot becomes a thing of the past. (this is > in progress) > 2. Revisit DS regexes or make their management more fool proof. > 3. Tweak the roles of these actions. Currently, a lot of these things are > reserved for Ops/Admin. We have to change that or full DS self-service if > not possible. I'd like to make each of these things accessible to users > with the "Portal" role with the exception of #8. > > Thoughts? Concerns? Funny jokes? > > Jeremy