Thanks Jeff, you put it more succinctly than I was able to. I think just having these logged out in the app log would be sufficient for audit purposes.
Cheers, Derek On Tue, Oct 11, 2022 at 12:56 PM Jeff Jirsa <jji...@gmail.com> wrote: > I don't think logging which policy violation was triggered is that big of > an ask? > > "Password changed for user X, complying with policies (reuse, complexity, > entropy)" > "ERROR: Password rejected due to policy violation (reuse)" > "ERROR: Password rejected due to policy violation (complexity)" > "ERROR: Password rejected due to policy violation (entropy)" > > The success log makes it much easier for users subject to audit controls, > and the failures make it much easier to tell users what's going on for > those users who operate the database for other people. > > > > > On Tue, Oct 11, 2022 at 11:48 AM Miklosovic, Stefan < > stefan.mikloso...@netapp.com> wrote: > >> I am afraid this is way out of scope of this CEP. I think we would be the >> very first on the database scene to offer such low-level and fine-grained >> information. I am not persuaded that this is something we should be giving >> a lot of attention right now. We have "cassandra / cassandra" credentials >> combo as default, I would say that is more important to deal with right now >> than providing very detailed information about what kind of passwords >> people are using. >> >> Thank you very much for (not only your) insights. This is very important >> feedback and I am glad you participate in this thread. I will try to >> summarize where we are as it is easy to get lost in these emails. >> >> ________________________________________ >> From: Derek Chen-Becker <de...@chen-becker.org> >> Sent: Tuesday, October 11, 2022 18:59 >> To: dev@cassandra.apache.org >> Subject: Re: [Discuss] CEP-24 Password validation and generation >> >> NetApp Security WARNING: This is an external email. Do not click links or >> open attachments unless you recognize the sender and know the content is >> safe. >> >> >> >> Speaking with my operator hat on, I would want to know if there's a >> common pattern that my end users hit so that I can better educate them or >> provide tools (e.g. vaults) to help them manage the required complexity. >> >> Cheers, >> >> Derek >> >> On Tue, Oct 11, 2022 at 10:06 AM Miklosovic, Stefan < >> stefan.mikloso...@netapp.com<mailto:stefan.mikloso...@netapp.com>> wrote: >> "but we should consider logging why it was rejected." >> >> Why? What is the use case? Why is it important for you to know what >> somebody tried to create a role with password "aaaaaaaaaa" (it will not be >> shown), just mentioning that they tried to create a password with a lot of >> repeating characters? What is the added value here? >> >> I need to double check if warnings are logged as well. I'll get back to >> you. >> >> >> ________________________________________ >> From: Derek Chen-Becker <de...@chen-becker.org<mailto: >> de...@chen-becker.org>> >> Sent: Tuesday, October 11, 2022 17:47 >> To: dev@cassandra.apache.org<mailto:dev@cassandra.apache.org> >> Subject: Re: [Discuss] CEP-24 Password validation and generation >> >> NetApp Security WARNING: This is an external email. Do not click links or >> open attachments unless you recognize the sender and know the content is >> safe. >> >> >> >> I know we log that the password change attempt was made, but we should >> consider logging why it was rejected. As part of that, we may want to >> consider how we format that message to make it easy for an auditing system >> to parse. We should never log the actual password, or even a redacted >> version; apologies if it sounded like I was suggesting that. >> >> Cheers, >> >> Derek >> >> On Tue, Oct 11, 2022 at 9:36 AM Miklosovic, Stefan < >> stefan.mikloso...@netapp.com<mailto:stefan.mikloso...@netapp.com><mailto: >> stefan.mikloso...@netapp.com<mailto:stefan.mikloso...@netapp.com>>> >> wrote: >> I dont follow, sorry. What logs do you mean? What would you like to see? >> >> The auditing framework we already do have in place will log that somebody >> tried to create (or alter) a role with this and that password and it failed >> (password would be redacted). If you use "with generated password", that >> password will not be even shown in audit log. I am not completely sure if >> the warning is logged too if password is not valid (I do think that only >> CQL command itself is audit-logged). >> >> The configuration of validator is in cassandra.yaml. Folks can review >> that? >> >> I am sorry if I am missing something here, could you expand what you mean? >> >> To Josh: >> >> You are probably right but it is so easy to bypass that it is >> questionable why it is actually there. All it takes is to do "alter role >> myself with generated password" (literally), 5 times in a row and you can >> set the original one back. One positive fact is that such password, even >> same as the original one, would still have to be valid, but it just might >> be same as it was. >> >> ________________________________________ >> From: Derek Chen-Becker <de...@chen-becker.org<mailto: >> de...@chen-becker.org><mailto:de...@chen-becker.org<mailto: >> de...@chen-becker.org>>> >> Sent: Tuesday, October 11, 2022 17:14 >> To: dev@cassandra.apache.org<mailto:dev@cassandra.apache.org><mailto: >> dev@cassandra.apache.org<mailto:dev@cassandra.apache.org>> >> Subject: Re: [Discuss] CEP-24 Password validation and generation >> >> NetApp Security WARNING: This is an external email. Do not click links or >> open attachments unless you recognize the sender and know the content is >> safe. >> >> >> >> On top of what Josh said, a corresponding requirement here would be >> auditing. A password complexity and/or history policy is one piece of >> security posture, but is itself insufficient to be considered "secure". >> What kind of logs will this new policy checker emit that the folks >> responsible for security for a given cluster can parse, process, and report >> on? >> >> Cheers, >> >> Derek >> >> On Tue, Oct 11, 2022 at 9:07 AM Josh McKenzie <jmcken...@apache.org >> <mailto:jmcken...@apache.org><mailto:jmcken...@apache.org<mailto: >> jmcken...@apache.org>><mailto:jmcken...@apache.org<mailto: >> jmcken...@apache.org><mailto:jmcken...@apache.org<mailto: >> jmcken...@apache.org>>>> wrote: >> if we do that, we should also restrict the frequency how often a user can >> change the password. Lets think this through. If the depth of historical >> verification is 5 passwords, a user just has to regenerate a password 5 >> times in a row an he can use the same one >> I may be misunderstanding, but this strikes me as in the "we can only do >> so much to prevent people from doing stupid things" category. If someone's >> so hell-bent on circumventing their company's attempts at security they're >> probably much more at risk of running unidentified attachments or giving >> out credentials over the phone rather than finding clever ways to work >> around annoying password rotation rules on their db accounts right? >> >> On Mon, Oct 10, 2022, at 4:08 PM, Miklosovic, Stefan wrote: >> Hi Brad, >> >> your link about not enforcing regular password expiration for users is >> spot on. For these reasons I decided to not expand that CEP in that >> direction. Sure, technically possible, but practically questionable. I >> think that all these guides and recommendations should be looked at from >> the perspective of the system they are meant to be implemented in. >> Enforcing password to be changed in a database system is rather interesting >> take. After I briefly took a look, I do not think there is a database on >> the market which is enforcing this. On the other hand, for example, Neo4j >> forces you to change the password on the first login as the default one is >> "neo4j" for user "neo4j". This does make sense to implement for Cassandra >> as well. I do consider password "cassandra" for role "cassandra" very >> insecure and it is not forced by anybody to change it. However, it is quite >> interesting problem how to achieve that. >> >> Also, the reason I want to leave out historical verification of passwords >> in (at least the initial) implementation is that if we do that, we should >> also restrict the frequency how often a user can change the password. Lets >> think this through. If the depth of historical verification is 5 passwords, >> a user just has to regenerate a password 5 times in a row an he can use the >> same one. So implmenting this without restricting how often he can change >> his password does not make sense. We can indeed explore this further but I >> feel like the initial implementation should not deal with this for now. >> >> When it comes to section 5.1.1.2 of NIST document, as already mention at >> the bottom of the CEP, we used Appendix A of this (1) to model what the >> good password should be. Your link is way more descriptive though. >> Particularly interesting points are these: >> >> - Passwords obtained from previous breach corpuses. >> - Dictionary words. >> - Repetitive or sequential characters (e.g. ‘aaaaaa’, ‘1234abcd’). >> - Context-specific words, such as the name of the service, the username, >> and derivatives thereof. >> >> I believe that points 1), 2) and 4) can be implemented easily as checking >> the password against a dictionary. The library we want to use is able to >> check the password against a dictionary. Dictionary check can be also >> implemented as a separate ticket which would just expand the functionality >> of DefaultPasswordValidator. I do not have a problem to include dictionary >> check into the first iteration as well. >> >> Repetitive or sequential characters are already covered in the POC >> implementation. >> >> The document you linked also contains this: >> >> Verifiers SHOULD offer guidance to the subscriber, such as a >> password-strength meter [Meters], to assist the user in choosing a strong >> memorized secret. This is particularly important following the rejection of >> a memorized secret on the above list as it discourages trivial modification >> of listed (and likely very weak) memorized secrets >> >> We are already doing this, quite intelligently, by telling a user what is >> wrong with his password that it can not be used (e.g. that it does not >> contain so and so number of specific characters). The "meter" is also there >> - we have three levels - OK password, password with a warning and failed >> password. We inform a user about the strength of his password retroactively >> - we do not tell him what the password should be before he tries to set one >> however I think that is acceptable when using Cassandra and cqlsh in >> console environment. >> >> (1) https://pages.nist.gov/800-63-3/sp800-63b.html#appA >> ________________________________________ >> From: Brad <bscho...@gmail.com<mailto:bscho...@gmail.com><mailto: >> bscho...@gmail.com<mailto:bscho...@gmail.com>><mailto:bscho...@gmail.com >> <mailto:bscho...@gmail.com><mailto:bscho...@gmail.com<mailto: >> bscho...@gmail.com>>>> >> Sent: Monday, October 10, 2022 17:43 >> To: dev@cassandra.apache.org<mailto:dev@cassandra.apache.org><mailto: >> dev@cassandra.apache.org<mailto:dev@cassandra.apache.org>><mailto: >> dev@cassandra.apache.org<mailto:dev@cassandra.apache.org><mailto: >> dev@cassandra.apache.org<mailto:dev@cassandra.apache.org>>> >> Subject: Re: [Discuss] CEP-24 Password validation and generation >> >> NetApp Security WARNING: This is an external email. Do not click links or >> open attachments unless you recognize the sender and know the content is >> safe. >> >> >> >> I would suggest reviewing the guidelines in sec in 5.1.1.2 of NIST >> Special Publication 800-63B< >> https://pages.nist.gov/800-63-3/sp800-63b.html#memsecretver> and the >> NCSC Password policy: updating your approach - NCSC.GOV.UK< >> http://NCSC.GOV.UK><http://NCSC.GOV.UK><http://NCSC.GOV.UK>< >> https://www.ncsc.gov.uk/collection/passwords/updating-your-approach#PasswordGuidance:UpdatingYourApproach-Don'tenforceregularpasswordexpiry >> > >> >> Regards, >> >> Brad >> >> >> On Mon, Sep 19, 2022 at 7:27 AM Miklosovic, Stefan < >> stefan.mikloso...@netapp.com<mailto:stefan.mikloso...@netapp.com><mailto: >> stefan.mikloso...@netapp.com<mailto:stefan.mikloso...@netapp.com >> >><mailto:stefan.mikloso...@netapp.com<mailto: >> stefan.mikloso...@netapp.com><mailto:stefan.mikloso...@netapp.com<mailto: >> stefan.mikloso...@netapp.com>>><mailto:stefan.mikloso...@netapp.com >> <mailto:stefan.mikloso...@netapp.com><mailto:stefan.mikloso...@netapp.com >> <mailto:stefan.mikloso...@netapp.com>><mailto: >> stefan.mikloso...@netapp.com<mailto:stefan.mikloso...@netapp.com><mailto: >> stefan.mikloso...@netapp.com<mailto:stefan.mikloso...@netapp.com>>>>> >> wrote: >> Hi list, >> >> together with my colleague Jackson Fleming we put together CEP-24 about >> password validation and password generation in Cassandra. >> >> https://cwiki.apache.org/confluence/x/QoueDQ >> >> We are looking forward to discuss this CEP with you in depth. >> >> The outcome of this thread would be to sort out any issues / concerns you >> have so we might eventually vote and implement that in upstream if our >> contribution is found to be useful. >> >> There is a reference implementation provided we would like to build our >> solution on top. >> >> Regards >> >> Stefan Miklosovic >> >> >> >> >> -- >> +---------------------------------------------------------------+ >> | Derek Chen-Becker | >> | GPG Key available at https://keybase.io/dchenbecker and | >> | https://pgp.mit.edu/pks/lookup?search=derek%40chen-becker.org | >> | Fngrprnt: EB8A 6480 F0A3 C8EB C1E7 7F42 AFC5 AFEE 96E4 6ACC | >> +---------------------------------------------------------------+ >> >> >> >> -- >> +---------------------------------------------------------------+ >> | Derek Chen-Becker | >> | GPG Key available at https://keybase.io/dchenbecker and | >> | https://pgp.mit.edu/pks/lookup?search=derek%40chen-becker.org | >> | Fngrprnt: EB8A 6480 F0A3 C8EB C1E7 7F42 AFC5 AFEE 96E4 6ACC | >> +---------------------------------------------------------------+ >> >> >> >> -- >> +---------------------------------------------------------------+ >> | Derek Chen-Becker | >> | GPG Key available at https://keybase.io/dchenbecker and | >> | https://pgp.mit.edu/pks/lookup?search=derek%40chen-becker.org | >> | Fngrprnt: EB8A 6480 F0A3 C8EB C1E7 7F42 AFC5 AFEE 96E4 6ACC | >> +---------------------------------------------------------------+ >> >> -- +---------------------------------------------------------------+ | Derek Chen-Becker | | GPG Key available at https://keybase.io/dchenbecker and | | https://pgp.mit.edu/pks/lookup?search=derek%40chen-becker.org | | Fngrprnt: EB8A 6480 F0A3 C8EB C1E7 7F42 AFC5 AFEE 96E4 6ACC | +---------------------------------------------------------------+