*(if the malicious actor can steal the file they can also read the key from memory)*
As far as I know it's a lot easier for a program to get access to all the files in a system (specially on Windows) than to dump the memory, as there are memory barriers protected by the OS (and address randomization) that limits the addresses a program has access. Sure there are read/write controls for files as well, but not as restrictive as memory barriers. PS: Sorry for not using the fancy colors and reply marks, I am on my phone. On Thu, Jun 6, 2019, 10:01 richard coleman <rcoleman.ascen...@gmail.com> wrote: > Dave, > > Thank you for getting back to me. > > On Thu, Jun 6, 2019 at 5:01 AM Dave Page <dp...@pgadmin.org> wrote: > >> >> >> On Wed, Jun 5, 2019 at 7:29 PM richard coleman < >> rcoleman.ascen...@gmail.com> wrote: >> >>> >>> All passwords are stored in files of one sort or another. Hopefully >>>> those files are effectively encrypted (assuming of course that you had even >>>> had pgAdmin4 save your passwords to begin with). >>>> >>> >> Sure, in pgAdmin 4 they are (unlike pgAdmin 3 which used PostgreSQL's >> .pgpass files which are plain text). However, the problem is that unless >> the key to encrypt/decrypt those passwords is stored externally (e.g. in >> the users brain, or on a Ubikey or similar), it is also in a file. >> Then it becomes one more thing for users to forget/write down/reuse >> something they already know. >> > > >> >> >>> Now you may have a VPN, but you also may use the same password for >>>> different things, or other people might use servers that are less hard to >>>> reach. >>>> The same sort of people who use the same password for a number of >>>> things are just going to use that self same password as their *master >>>> password* in pgAdmin4. >>>> >>> >> Sure - however, I'm not ever going to make the default security in >> pgAdmin cater to people who do stupid things like that, or just assume that >> people are already doing stupid things so we shouldn't bother. We will >> always strive to be secure by default, within the bounds of reasonable user >> experience. >> The only thing you *might* be securing are saved passwords, *if* the >> user has saved any. By locking up the *entire* application behind the >> master password, you are just encouraging bad behavior for little to no >> gain. >> >>> How? pgAdmin has no way of doing that over what is essentially a web >>>> application - and even if it did, allowing a remotely accessible >>>> application (particularly one in which external programs can be configured >>>> and executed by users) to modify it's own configuration is a *really* bad >>>> idea. >>>> Well for a start Edge uses Microsoft's user credentials as a master >>>> password. Any number of applications can access files in a *protected >>>> area *and prompt for a sudo/administrator credential. >>>> >>> >> We could do that too. Assuming users were happy to setup a Kerberos >> infrastructure. Otherwise, we'd need to rely on browser password saving >> which isn't always reliable. The browser intentionally doesn't allow us to >> access locally held credentials as that would be massively insecure. >> >> >>> As for the choice to make pgAdmin4 a python version of phpPgAdmin, >>>> there's been a lot of discussion, most of it not very favorable. I >>>> guess you can chalk this up to one more reason converting pgAdmin from an >>>> application to a *web app* was probably not the best idea. >>>> >>> >> Funny that, whilst there certainly have been people who didn't like the >> change, the *vast* majority of feedback I receive has been positive since >> we ironed out the very early performance issues. Downloads are up massively >> as well, and that's before you count the Docker distro that didn't exist >> with pgAdmin 3, which has been over 5M pulls for quite some time now (I >> don't know the banding of Dockers numbers - I assume it'll go to 10M+ at >> some point). >> Are you really basing *popularity* on a comparison to pgAdmin3, the same >> version that isn't supported, and has one Windows only fork that supports >> postgreSQL 10? If people want a gui to administer postgreSQL 11+, the most >> promoted one is pgAdmin4. If pgAdmin3 supported postgreSQL 11+ most people >> would still be using it. >> Regardless, I'm happy with the change, and I'm happy in the knowledge >> that most users seem to agree. Those that don't are welcome to use the LTS >> version of pgAdmin 3 if they prefer, or other tools. It's a free world (for >> the most part) - people can and should use what they find most productive >> and useful for them. I will carry on working on and providing (for free) >> the tools that interest me. >> Just go back through the emails on this list alone and read the many >> emails of people writing; pgAdmin3 *did* this, why doesn't pgAdmin4? >> They are not even talking about *new* features, just simple feature >> parity. The most recent one that comes to mind is the decision to *hide* the >> explain results behind a "[". >> >>> >>>>> So basically what we have is a *major* UI change (users are literally >>>>> locked out of the application) caused by upgrading a minor version level >>>>> (4.7 to 4.8) with no simple way to revert the behavior all for a dubious >>>>> increase in security. >>>>> >>>> >>>> I don't wish to be rude, but it's clear you don't fully appreciate the >>>> possible risks here - and I really don't agree that being asked for a >>>> password once when the application starts (not an instance of the UI, but >>>> the server itself, which may support a number of concurrent or intermittent >>>> sessions) is a major UI change. Not that I'd recommend it, but you could >>>> have an extremely short password that you type and then press enter. You >>>> could even ask your browser to save that password if you're less concerned >>>> about security, and then we're talking about *a single mouse click* at the >>>> start of your day, or if you're like me, start of your week. >>>> So you don't deny that 4.8 radically changed it's behavior, without >>>> warning, from 4.7. You then seek to minimize the impact this has on people >>>> by undermining the reason for implementing it in the first place. Let's see >>>> if I am understanding your argument: >>>> >>> >> You're obviously not. I don't deny there is a minor change in workflow, >> which can be trivially disabled (hopefully more since now I've improved the >> docs based on your feedback). >> > Trivially disabled would have been a Preference Option, or a button on the > "Master Password" dialog that lets the user choose "I don't want to use > one". > >> >>> - You *must *force end users to start using a master password >>> because they just *don't understand* the security risks of not using >>> one. >>> >>> Nope. I said (intended respectfully), that I didn't believe you >> understood the attack vectors we were discussing. That is absolutely *not* >> the same as saying "users" don't understand in general. >> > I understand the attack vector just fine. You don't think the the default > encryption pgAdmin4 uses to store saved passwords is sufficient should some > malicious actor manage to steal that file. I just don't believe that your > proposed solution provides that much more security (if the malicious actor > can steal the file they can also read the key from memory). If you > *truly* wanted a secure solution, you would prompt the end user for the > master password for every connection that has a saved password, when it was > connecting. That way you would be minimizing the time the master key was > in memory. The only benefit to the end user would be they could remember > *one* master password instead of *many *(presumably very convoluted) > individual passwords. > >> >>> - In order to force the issue, you lock most of the functionality >>> behind the "Master Password" dialog box until they either scour the >>> internet looking for a way to turn off this *feature* or submit and >>> enter a master password. >>> >>> As noted twice now, I've updated the documentation based on your >> feedback. >> > Improved documentation is always appreciated. What you haven't said is > that you'll free up the majority of the functionality that *doesn't* rely > on a "Master Password", from that dialog. > >> >>> - When someone complains about this heavy handed behavior your >>> *solution* is to >>> - use an *extremely short *password >>> - have* your browser* store your password >>> >>> Nope again. I specifically said that I didn't recommend doing that, I >> was just pointing out that you could if you chose to. >> > Which defeats the *entire* reason behind this change. > >> >>> - point out that you keep pgAdmin4 running for days or weeks at a >>> time, so it's *no big deal * >>> >>> Sure. Even if I were restarting a couple of times a day, I don't believe >> entering a password each time is a major inconvenience. It would be such an >> insanely miniscule amount of typing/clicking compared to everything else I >> do in a day that I couldn't begin to count it. >> I guess that would depend on the number of passwords you have to remember. >> Think about it; I've probably spent an hour or so in total on this >> discussion so far. Even if I took 5 seconds to enter the password (It's >> probably way less than that), that's 720 times I could have entered that >> password. >> Assuming you could remember it. Most people end up reusing the *same* >> password, >> not because they are stupid, but because they have way too many to remember >> already. >> >>> So, the users *must *use a master password, because *security. *If >>> you find it too burdensome then just use it in a very *insecure* way. >>> >>> How about; >>> >>> Don't spring major changes like this on users during a *minor* update >>> >>> >> A major update for pgAdmin is one that radically changes the entire >> application design or architecture. Minor updates constantly add both small >> and large features. >> I think *most* people would agree that locking users out of the entire >> application on a minor upgrade is a *major* change. >> >>> Make it opt-*in* not opt-*out* >>> >>> >> Not going to happen. >> Why? Is it because, given the choice, most users don't have the *high* >> security >> need that would make having to remember another password worth the effort. >> >> >>> Make if very *easy* for users to turn this feature on or off >>> >>> >> Docs have been improved, but it's not going to become a preference for >> reasons already discussed (at least not without a complete overhaul of the >> preferences system to allow admins to lock users out of certain changes). >> You wouldn't have to if it was opt-*in*. Administrators would have the >> technical know-how, and the appropriate permissions to modify config files >> manually, *should* they feel the need for that level of security. >> >>> Protect the absolute *minimum* with this feature, not the entire >>> application. >>> >>> >> It could be improved to only prompt for the password the first time a >> user tries to connect to a server with a saved password. I suspect that >> would only make a difference for a very small number of people though, as >> most will either save all or none of their passwords (and the latter group >> might have password saving disabled in the application config anyway). >> It should only prompt for a password when the user is connecting using a >> saved connection that has a saved password. If the user wants to create >> another connection, or use one that doesn't have a saved password, it >> shouldn't matter. >> >>> >>> Hardly a major inconvenience. >>>> >>>> And as for your comment about letting pgAdmin run for days/weeks >>> on your machine, congratulations. When I leave pgAdmin running for more >>> than a couple of hours it becomes unresponsive. Not the UI, that works >>> just fine, but running any queries will take forever (as in they will >>> literally never finish, just grey out the query tool window). For example >>> SELECT * FROM <table> LIMIT 1; will never finish, but as soon as I shut >>> down the server (pgAdmin4 not the database server) and restart it will >>> complete instantaneously. So I need to restart pgAdmin4 the *server* many >>> times a day. >>> >> >> Have you logged an issue about that with logs etc? If that is what >> happens for you, then I'd certainly like to resolve that. >> >> >>> I really do hope you'll reconsider this ill-implemented *feature.* >>> >> >> I've already reconsidered it - I always reconsider things when we get >> user feedback. In this case though, I don't agree with your arguments. The >> extra security adds a trivial overhead to user workflow, and those that >> don't want it can disable it completely with a couple of minutes of effort, >> all whilst allowing sysadmins to enforce the use of the feature if they >> want. >> For most people the *extra security* isn't worth the effort. As >> implemented it provides a modest to non existent increase in security while >> inconveniencing users and encouraging poor security hygiene. The only >> reason most people will grudgingly submit is because there is no easy way >> to turn it off (and no, adding magic strings to user created files in >> random locations is *not* easy, no matter how good the documentation >> is). They'll just reuse a password they already use, or hit <space> or 'a' >> as their password. >> I've said my piece on the topic now - on to other subjects. >> > > I hope that they are handled *better* than this *feature.* > >> >> >>> >>> rik. >>> >>>> Yes, I think I have been quite restrained in my assessment. >>>>> >>>>> Thanks, >>>>> >>>>> rik. >>>>> >>>>> >>>>> >>>>> On Wed, Jun 5, 2019 at 10:59 AM Dave Page <dp...@pgadmin.org> wrote: >>>>> >>>>>> Richard, >>>>>> >>>>>> On Wed, Jun 5, 2019 at 3:22 PM richard coleman < >>>>>> rcoleman.ascen...@gmail.com> wrote: >>>>>> >>>>>>> Dave, >>>>>>> >>>>>>> And where would *that* be? pgAdmin4 the executable and the shared >>>>>>> library is located in /usr/bin/. There are *no* entries in /etc/ >>>>>>> for pgAdmin4. There is a pgadmin4.db in /home/u/.pgadmin/ but *no* >>>>>>> config >>>>>>> files of any kind there either. >>>>>>> >>>>>> >>>>>> I have no idea, I don't use Ubuntu or any of it's derivatives and >>>>>> don't know where it installs. Have you tried searching for config.py? >>>>>> That >>>>>> is *not* optional, and must exist. >>>>>> >>>>>> >>>>>>> So it's looking like the only way to actually *use *the current >>>>>>> version of pgAdmin4 is to create an undocumented file (the help page >>>>>>> says >>>>>>> you can use config.py as a reference, but guess what? That file doesn't >>>>>>> exist either.) in an unknown location, and manually add the magic >>>>>>> string; >>>>>>> >>>>>>> "*MASTER_PASSWORD_REQUIRED=False"* >>>>>>> >>>>>>> >>>>>> I think that's a little hyperbolic don't you? It works as intended, >>>>>> with no changes required if you set the password and re-enter it when you >>>>>> restart pgAdmin. You only need to modify anything if you want to change >>>>>> the >>>>>> behaviour. >>>>>> >>>>>> And to be clear; if config.py is not present on your system, then >>>>>> there is no way pgAdmin will even start, let alone work. >>>>>> >>>>>> >>>>>>> >>>>>>> I get *why* you added this feature, but I think it was implemented >>>>>>> *completely >>>>>>> backwards*. Instead of making *every* end user jump through these >>>>>>> ridiculous hoops just to *continue* to use pgAdmin4 as they had >>>>>>> been up to this point, a better option would be to allow security >>>>>>> conscious >>>>>>> sys admins to add the configuration: >>>>>>> >>>>>>> "*MASTER_PASSWORD_REQUIRED=True"* >>>>>>> >>>>>>> to a non-user writable configuration file. In that way the vast >>>>>>> majority of people running pgAdmin4 can continue to do so and the few >>>>>>> that >>>>>>> wanted/needed the added security could do so as well. >>>>>>> >>>>>> >>>>>> That is not how security works. Without the master password feature, >>>>>> there are possible attack vectors in which a stored password could be >>>>>> accessed by third parties. We aim for secure by default; if you don't >>>>>> care >>>>>> about the risk, then you can actively choose to run in a less secure way. >>>>>> >>>>>> >>>>>>> >>>>>>> >>>>>>> So, now I'm using dBeaver as I *can't* disable the Master Password >>>>>>> dialog box and pgAdmin4 won't let me *do* anything. >>>>>>> >>>>>>> Any other thoughts? Anyone? >>>>>>> >>>>>>> Thanks, >>>>>>> >>>>>>> rik. >>>>>>> >>>>>>> On Wed, Jun 5, 2019 at 10:03 AM Dave Page <dp...@pgadmin.org> wrote: >>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> On Wed, Jun 5, 2019 at 2:44 PM richard coleman < >>>>>>>> rcoleman.ascen...@gmail.com> wrote: >>>>>>>> >>>>>>>>> Dave, >>>>>>>>> >>>>>>>>> Sorry, but after an e*xhaustive* search of the several terabytes >>>>>>>>> on my machine, there is *no* config_local.py file. Do you have >>>>>>>>> any idea where it's supposed to be located? >>>>>>>>> >>>>>>>> >>>>>>>> You need to create it if it doesn't exist, in the same directory as >>>>>>>> pgAdmin's config.py. >>>>>>>> >>>>>>>> >>>>>>>>> >>>>>>>>> Thanks, >>>>>>>>> >>>>>>>>> rik. >>>>>>>>> >>>>>>>>> On Wed, Jun 5, 2019 at 9:30 AM Dave Page <dp...@pgadmin.org> >>>>>>>>> wrote: >>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> On Wed, Jun 5, 2019 at 1:16 PM richard coleman < >>>>>>>>>> rcoleman.ascen...@gmail.com> wrote: >>>>>>>>>> >>>>>>>>>>> Cherio, >>>>>>>>>>> >>>>>>>>>>> I am sorry to inform you, but there is *no* mention of >>>>>>>>>>> "config_local.py" >>>>>>>>>>> on that page, nor any indication of where I would find it. >>>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> https://www.pgadmin.org/docs/pgadmin4/4.x/desktop_deployment.html#configuration >>>>>>>>>> >>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> rik. >>>>>>>>>>> >>>>>>>>>>> On Tue, Jun 4, 2019 at 5:06 PM Cherio <che...@gmail.com> wrote: >>>>>>>>>>> >>>>>>>>>>>> Put "MASTER_PASSWORD_REQUIRED = False" line into your >>>>>>>>>>>> "lib/python?.?/site-packages/pgadmin4/config_local.py". This is in >>>>>>>>>>>> the >>>>>>>>>>>> docs: >>>>>>>>>>>> https://www.pgadmin.org/docs/pgadmin4/dev/master_password.html >>>>>>>>>>>> >>>>>>>>>>>> On Tue, Jun 4, 2019 at 4:41 PM richard coleman < >>>>>>>>>>>> rcoleman.ascen...@gmail.com> wrote: >>>>>>>>>>>> >>>>>>>>>>>>> To whomever, >>>>>>>>>>>>> >>>>>>>>>>>>> Running a newly update pgAdmin 4 version 4.8 on my Kubuntu >>>>>>>>>>>>> box. There are a couple of glaring issues. >>>>>>>>>>>>> >>>>>>>>>>>>> First: It keeps prompting to; "Set Master Password" >>>>>>>>>>>>> I don't want to set another password that I'll just end up >>>>>>>>>>>>> forgetting. >>>>>>>>>>>>> >>>>>>>>>>>>> Second: When I click the "?" button on that dialog box it >>>>>>>>>>>>> takes me to this page: >>>>>>>>>>>>> "http://127.0.0.1:33681/help/help/master_password.html" >>>>>>>>>>>>> Which returns "404 Not Found" >>>>>>>>>>>>> >>>>>>>>>>>>> Hopefully there is a simple solution to these issues. >>>>>>>>>>>>> >>>>>>>>>>>>> Thanks, >>>>>>>>>>>>> >>>>>>>>>>>>> rik. >>>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>> >>>>>>>>>> -- >>>>>>>>>> Dave Page >>>>>>>>>> Blog: http://pgsnake.blogspot.com >>>>>>>>>> Twitter: @pgsnake >>>>>>>>>> >>>>>>>>>> EnterpriseDB UK: http://www.enterprisedb.com >>>>>>>>>> The Enterprise PostgreSQL Company >>>>>>>>>> >>>>>>>>> >>>>>>>> >>>>>>>> -- >>>>>>>> Dave Page >>>>>>>> Blog: http://pgsnake.blogspot.com >>>>>>>> Twitter: @pgsnake >>>>>>>> >>>>>>>> EnterpriseDB UK: http://www.enterprisedb.com >>>>>>>> The Enterprise PostgreSQL Company >>>>>>>> >>>>>>> >>>>>> >>>>>> -- >>>>>> Dave Page >>>>>> Blog: http://pgsnake.blogspot.com >>>>>> Twitter: @pgsnake >>>>>> >>>>>> EnterpriseDB UK: http://www.enterprisedb.com >>>>>> The Enterprise PostgreSQL Company >>>>>> >>>>> >>>> >>>> -- >>>> Dave Page >>>> Blog: http://pgsnake.blogspot.com >>>> Twitter: @pgsnake >>>> >>>> EnterpriseDB UK: http://www.enterprisedb.com >>>> The Enterprise PostgreSQL Company >>>> >>> >> >> -- >> Dave Page >> Blog: http://pgsnake.blogspot.com >> Twitter: @pgsnake >> >> EnterpriseDB UK: http://www.enterprisedb.com >> The Enterprise PostgreSQL Company >> >