Live data from Hacker News

Zed Shaw - The ACL is Dead - CUSEC 2008

blog.cusec.net

31–40 of 55 posts

Re: Zed Shaw - The ACL is Dead - CUSEC 2008

#31

Earlier quoted context omitted.

No, but he is saying that complex things require an actual language, not a point and click UI idiots can use, so changes to rules would require a programmer. Seriously, the idea that a complex system can be built by non programmers is somewhat of a pipe dream, it always ends up being more complex than some simple code a programmer can understand.

I agree wholeheartedly with your last statement, but my point was that Zed got through the whole hour without once mentioning that this was a trade-off that was being made - and it is a pretty important one. (Also, non-programmers != idiots)

It was not a trade off being made. The point and click UI could no longer meet the requirements. That's what he was getting at saying the legalese was turing complete. The requirements the law now mandated required an actual language to to implement because the old system with ACL's can't do the job anymore.

That the new system doesn't have a point and click UI isn't a trade off, it's just a consequence. He wasn't trading a complex system for a simpler system, he was replacing a complex system that could no longer work with a simpler one that could.

And while not being a programmer doesn't mean you're an idiot, not being able to learn some simple scripting to modify rules does make you an idiot. If your job requires you to modify the rules, and you can't learn to do it, you're dumb. All intelligent people are capable of learning some simple scripting.

Re: Zed Shaw - The ACL is Dead - CUSEC 2008

#32
post #27
post #24

Earlier quoted context omitted.

Zed Shaw discusses this in several parts within the presentation; it's somewhat of a recurring theme. ACLs as they're implemented on most operating systems are wicked limited; tracking attributes and access to anything beyond simple boolean HAVE_ID or !HAVE_ID or HAVE_THIS+HAVE_THAT logic gets really ugly with an ACL. And the classic ACLs are not at all dynamic, as is pointed out in the presentation. You can't easily…

Thanks -- I did watch the presentation ( http://news.ycombinator.com/item?id=420974 ) and I get how ACLs could be heavyweight and inflexible -- what I'm looking for are some concrete examples of how else people do it. For example, does Ruby on Rails offer some framework for dealing with this? Or is it a 'just do it' kind of thing? Maybe it's not as complicated as I'm imagining it could be, and that's the point. But s…

His comment about it turning into 500 lines of code isn't an exaggeration, most likely. The truth is that it's so simple that one can hardly understand why anyone uses ACLs after you've implemented something like this. You create a series of functions that define the attributes you are interested in, there's some lightweight context maintenance, then in the core of the system (the "500 lines") you simply tie all the pieces together in accordance with the business rules. It's so simple it almost boggles the mind. Bog-standard refactoring will get you there in nothing flat, and of course you have full Turing-complete language constructs at your disposal.

One hint: Write the code in a functional style, i.e., Haskell style. Pass in the full context to the permission function. For instance, if you have a time-sensitive function, don't have the time-sensitive function call the system clock; have it extract the time from the context your provided. If you call the system clock, you'll never be able to write the tests you're going to need to write. Similarly for many things, like direct LDAP access or whatnot. The internal permission code needs to be a pure function. Fortunately, that doesn't make it any harder to write, even in an OO-based language.

If you want to get really slick because your context has multiple expensive operations like direct LDAP access (although this is a bad idea if you're going to be calling this frequently), you can even create two context implementations, one for testing that simply returns provided values and one that lazily goes out and gets LDAP data or whatever if you need it. Best of all worlds that way.

Re: Zed Shaw - The ACL is Dead - CUSEC 2008

#33
post #12

Earlier quoted context omitted.

It's in Factor, right? Is the source available?

http://www.zedshaw.com/conferences/cusec2008.factor

I can't seem to figure out how to run this... I downloaded the OS X distribution, opened it, selected "Run..." from the File menu, and selected the cusec2008.factor file. Now what?

Re: Zed Shaw - The ACL is Dead - CUSEC 2008

#35
post #3

Notes from lunchtime viewing of first 40 min ------------------------------------ ~9:29: "law is actually kind of a turing complete language" Law is fuzzy; ACLs are fuzzy. ACLs can't handle real law because they're not Turing complete. ~11:20: had a business manager learn Ruby, had him implement poorly specified/tough features --> result: he modified/eliminated requirement ~12:20: a bunch of if statements are easier…

on "steak and strippers...." - well I think there is a fundamental misunderstanding - ALL input products (not just software based) is sold this way to large corporations. Everyone has an agenda. Also - its not just big enterprisey things - rails is so common in the enterprise these days due to the "steak and strippers...." work done by companies like thoughtworks. There is always wheeling and dealing, even with grass…

I wonder what is the other side of "steak and strippers, baby!"? Why is it that management doesn't trust us? He says a little about it: "You guys have got to stop lying...talking on IRC all day..." I wonder if it's all because of dopplegangers, or the techie dark side?

A part of it is because we're different. But a part of it must be bad as well. We're all only human, after all.

Re: Zed Shaw - The ACL is Dead - CUSEC 2008

#36

Earlier quoted context omitted.

on "steak and strippers...." - well I think there is a fundamental misunderstanding - ALL input products (not just software based) is sold this way to large corporations. Everyone has an agenda. Also - its not just big enterprisey things - rails is so common in the enterprise these days due to the "steak and strippers...." work done by companies like thoughtworks. There is always wheeling and dealing, even with grass…

I wonder what is the other side of "steak and strippers, baby!"? Why is it that management doesn't trust us? He says a little about it: "You guys have got to stop lying...talking on IRC all day..." I wonder if it's all because of dopplegangers, or the techie dark side? A part of it is because we're different. But a part of it must be bad as well. We're all only human, after all.

Well its pretty clear to those outside the industry as well as in it that this is totally a fashion industry - we behave like spoiled prima donnas at times. Can you blame them? Zed only makes this more obvious to them - they wouldn't look much deeper into what he says anyway.

Re: Zed Shaw - The ACL is Dead - CUSEC 2008

#37
post #3

Notes from lunchtime viewing of first 40 min ------------------------------------ ~9:29: "law is actually kind of a turing complete language" Law is fuzzy; ACLs are fuzzy. ACLs can't handle real law because they're not Turing complete. ~11:20: had a business manager learn Ruby, had him implement poorly specified/tough features --> result: he modified/eliminated requirement ~12:20: a bunch of if statements are easier…

Thanks for posting this; the part at 40:00 actually motivated me to view the rest, which I recommend to anybody working in a corporate job. Hopefully this summary does justice to the remainder (but IMO it's worth watching): 40:00 Essentially he says you're not defined by your job. Your outside projects represent your self-expression and the corporation doesn't get a piece of that. 42:00: Most companies treat programm…

Well I think his audience is "corporate programmer" types isn't it? cause what he says is just confusing to the rest of us.

Re: Zed Shaw - The ACL is Dead - CUSEC 2008

#38

Zed is going to become important. It's easy to write, but it's not easy to look good on video, as well as have good video timing. He's not perfect, but he's good. If he sticks to his rant-personality, he will sooner or later become on of the stars of the internet.

Personally I don't see who can compete even now. Zed's blog is the only blog RSS feed I have in my reader. Nobody else has earned the privilege so far. Everything else in my reader is corporate stuff like HN or arstechnica.

Re: Zed Shaw - The ACL is Dead - CUSEC 2008

#39
post #32
post #27

Earlier quoted context omitted.

Thanks -- I did watch the presentation ( http://news.ycombinator.com/item?id=420974 ) and I get how ACLs could be heavyweight and inflexible -- what I'm looking for are some concrete examples of how else people do it. For example, does Ruby on Rails offer some framework for dealing with this? Or is it a 'just do it' kind of thing? Maybe it's not as complicated as I'm imagining it could be, and that's the point. But s…

His comment about it turning into 500 lines of code isn't an exaggeration, most likely. The truth is that it's so simple that one can hardly understand why anyone uses ACLs after you've implemented something like this. You create a series of functions that define the attributes you are interested in, there's some lightweight context maintenance, then in the core of the system (the "500 lines") you simply tie all the…

[deleted]

Re: Zed Shaw - The ACL is Dead - CUSEC 2008

#40
post #32
post #27

Earlier quoted context omitted.

Thanks -- I did watch the presentation ( http://news.ycombinator.com/item?id=420974 ) and I get how ACLs could be heavyweight and inflexible -- what I'm looking for are some concrete examples of how else people do it. For example, does Ruby on Rails offer some framework for dealing with this? Or is it a 'just do it' kind of thing? Maybe it's not as complicated as I'm imagining it could be, and that's the point. But s…

His comment about it turning into 500 lines of code isn't an exaggeration, most likely. The truth is that it's so simple that one can hardly understand why anyone uses ACLs after you've implemented something like this. You create a series of functions that define the attributes you are interested in, there's some lightweight context maintenance, then in the core of the system (the "500 lines") you simply tie all the…

Thanks. Nice to have a sketch of the thing's structure. It's a finite state machine, where the 'attributes' are the states, and the code is the transition rule.

Test harnesses for this -- hm.

Post reply on HN