Postgres FM - User management

Episode Date: October 3, 2025

Nik and Michael discuss user management in Postgres — how roles work, making administration easier, setting passwords, and avoiding them being logged. Here are some links to things they me...ntioned:Roles https://www.postgresql.org/docs/current/user-manag.html Privileges https://www.postgresql.org/docs/current/ddl-priv.htmlALTER DEFAULT PRIVILEGES https://www.postgresql.org/docs/current/sql-alterdefaultprivileges.htmlGRANT https://www.postgresql.org/docs/current/sql-grant.htmlREASSIGN OWNED https://www.postgresql.org/docs/current/sql-reassign-owned.htmlALTER ROLE (including SET) https://www.postgresql.org/docs/current/sql-alterrole.html CREATE ROLE https://www.postgresql.org/docs/current/sql-createrole.htmlHave I Been Pwned https://haveibeenpwned.comPwned Passwords API https://haveibeenpwned.com/API/v3#PwnedPasswordsCrunchy Data PostgreSQL Security Technical Implementation Guide (STIG) https://www.crunchydata.com/blog/announcing-the-crunchy-data-postgresql-stigOur episode on auditing https://postgres.fm/episodes/auditing~~~What did you like or not like? What should we discuss next time? Let us know via a YouTube comment, on social media, or by commenting on our Google doc!~~~Postgres FM is produced by:Michael Christofides, founder of pgMustardNikolay Samokhvalov, founder of Postgres.aiWith credit to:Jessie Draws for the elephant artwork

Transcript
Discussion (0)
Starting point is 00:00:00 Hello, and welcome to Postgres FM, a weekly show about all things PostgreSQL. I am Michael, founder of PG-Must, and as usual, I'm joined by Nick, founder of Postgres AI. Hey, Nick, how's it going? Hi, Michael, everything is all right. My favorite topic today. I was actually going to bring up an old joke and say it's the most boring one yet. But your idea now? Yeah, it's my idea.
Starting point is 00:00:22 It's like cold plungers. Sometimes you need to do it to feel then. Once you finish with recording, I will feel much better. yeah well and also you mentioned some things to me no spoilers but i think you've got some ways of making this interesting so i'm looking forward to those who knows let's see i wanted to talk about some kind of simple things of course i'm pretty sure there are many people who know the topic much better than me but i i just wanted to raise some questions we currently have in posgues and so on yeah me too so user management where do you want to start you like
Starting point is 00:01:00 I think it might even be interesting to think about the concept of roles in Postgres because it's not, I've come from background of different databases and Postgres was a little bit different. When I came across it, I didn't really understand it until reading the docs exactly how things work. First thing, if you run self-managed Postgres, first thing you confuse is operational system user and database user, right? Yeah.
Starting point is 00:01:26 Second thing, you confuse users versus roles, because in other database systems, they are distinguished in PostGrist, they are kind of the same thing. Third thing, groups as well. Oh, yes, exactly. Yeah. Yeah. There are no groups, basically, in PostGurzegos, although they're, like, directly, there are no separate concept. But let's answer all these. Like, a personal system user is a personal system user, and PostGis user is PostGis user.
Starting point is 00:01:56 Sometimes there is coincidence and they both are named Postgres, for example, in Ubuntu. And to make things more complex, if you just, if you locally connect using PSQL, and you don't specify uppercase U option, in this case your current OS user will be used. So it's okay. But we need to distinguish. these things are very different right just just yeah coincidence makes things
Starting point is 00:02:32 like I know like people who created it they thought like let's make things simple yeah but confusion which comes of it if I for example needed to decide right now I would probably not do this
Starting point is 00:02:48 you know like just to avoid confusion because the cost of confusion is much bigger than convenience convenience you have. Yeah, I think it's one of those, I think it's one of those things that depends who you're trying to optimize for. Are we trying to optimize for a developer at university learning computer science for the first time just trying to get set up on a local machine and get up and running easily?
Starting point is 00:03:12 I think, for example, in the Stack Overflow survey they do each year, like there are several questions that all, if you, if you optimized for that and that alone, you're, you're, you're score highly in certain things but sometimes you would make some design decisions if you are optimizing for that user that wouldn't be good for people trying to set it up a company in a more secure manner with lots of different users that have different needs and maybe behind a firewall like that in a way that's very very different to that individual user trying to get set up for a little hobby project or just to learn about databases so I think
Starting point is 00:03:53 think it's really hard to make a system that's optimal for both and I'm not sure I think probably we're at the stage where Postgres should be optimizing more for the secure case but I could understand if it chose to go more along the lines of make it easy to get started yeah good points and anyway I just learned like taught myself to use to distinguish yeah when in my language I just try to mention explicitly OS user, DB users of people who are listening and understand very quickly what I'm trying to say. And this, I think, is a good mitigation of this, to avoid confusion, just OS user, DB, that's it. Although if you say role, people also maybe won't think about OS user because we don't use role there at all, right? So this is another way you can, but still,
Starting point is 00:04:52 like if you say user probably is the visitor yeah and second confusion and i think of third confusion is similar here right so users are enrolls it's the same in posgues and and groups also like basically the same so it's just one single database object basically right and and you can you can create a role or user michael and then granted to user user or role nick right so i will get all permissions you have and in this case this will make you like virtually uh database group michael right so this like it's very flexible but also be confusing especially for those who came from other database management systems for sure i pulled out a good line from the docs which says any role can act as a user as a group or both which i thought was a nice succinct way of saying
Starting point is 00:05:50 the groups can still act as users individually, but they can also be groups of permissions. And you, yeah, Nick and Michael could both be, both be DBA in the DBA's group, but also in the, in like, have other memberships to other groups and makes it easier to manage permissions that way, right? Yeah, good. So, yeah, these are kind of basic things. And I wanted to discuss, like, like, I never heard anyone saying Posgis is having so beautiful privileges system. Somehow it's like I've heard opposite a lot of times, a lot of times, especially from guys who manage operational system and they need to manage postgues, like sysadmins and then later
Starting point is 00:06:33 SRIs, they always complain, always. And when they start complaining, I don't listen. I just say, have you learned about default privileges? Cool, yeah. Yeah, this is the first thing you need to remember. there are default privileges and you say you can you can say you can alter them and say like these default privileges that should be always assigned right this makes things easier much easier because if you have a lot of database objects like you think oh how like i'm going to
Starting point is 00:07:06 create new role user group how am i going to like or tomorrow developers will create new the table and who will take care of handling permissions privileges right so so default privileges help right and still like still common mistakes are forgetting some interesting privileges like the connection to database or usage for schema and use it's impossible to avoid these mistakes impossible like last week as i remember we spent 15 minutes trying to understand why it's not working our monitoring was not working and then we realized okay it's not it's not not monitoring but something was wrong and we realized that it was not a usual setup and we just forgot about usage permission to some schema that's it's interesting it's always going to happen always
Starting point is 00:08:07 so here my advice don't blame yourself like it's common yeah that's it and read the read the error messages did you get a good message back no oh yeah interesting lack of permissions that's it like you cannot okay yeah you cannot read from some table but it won't say it won't tell you that it's because of lack of permissions for skin so it's it's tricky sometimes you need to like brainstorm like ideas and then you find it yeah it was a view i think yeah so these are kind of common roadblocks you can experience right yeah so you've you've kind of
Starting point is 00:08:48 start you've gone down the what roles have permissions to read and write to different tables for example of views or schemers but we also have the challenge of ownership that's also tied in with users and is that worth touching on a little bit yeah owner too owner owned by you remember the sequences can be owned by table but it's a very completely different thing but every object can have owner in terms of role right yeah so there are two ownership things but this is all there's some specific thing for sequences it's very very specific for sequences yeah so objects can belong to and here I like when people start complaining I ask same thing I ask have you learned about alter
Starting point is 00:09:40 like passing all ownership from one user to another like grant blah blah on the buy or something like this there is such ability i don't remember syntax but you can say i have a lot of stuff i'm going to quit this company you know and i give it to you yeah is it something like reassigned owned by yeah something like that yeah yeah so it's like i like these massive operations obviously folks who developed them suffered enough so they developed it and this is great to have
Starting point is 00:10:15 massive operations. It helps you. So I think actually I made a mistake in this sequence of things to mention. First thing I would mention is that separating
Starting point is 00:10:32 roles, like separating pieces of application, kinds of workload, to multiple roles and groups and so on. And having some approach, it's good, much better than having just single super user and that's it. Yeah. Yeah.
Starting point is 00:10:50 Or just single application user and that's it. Because in many aspects, so we should separate because this gives us control and also troubleshooting capabilities. Because, you know, business admins has a use name or use ID. I don't remember exactly. It tracks workload separately for each user, which is good.
Starting point is 00:11:12 Yeah, true. So it's useful for troubleshooting, but also I think it helps protect you from yourself sometimes. If you know you're only should be reading data, connecting as a read-only user helps you feel safe. And that's true at the application level as well, right? if it shouldn't be creating objects, if it should just be doing normal kind of crud operations, being a normal application user makes sense. But if you want,
Starting point is 00:11:44 if maybe you're doing migrations or creating objects as we were just talking about, having an application admin role separately from an application user role makes a lot of sense. In terms of security, right? Well, I was, yeah, so security I think is part of, it, but I think also just protection from yourself, like, from mistakes as well, right?
Starting point is 00:12:06 If an application user shouldn't be created, like, yeah, probably mostly security, but I think there's also an element of not allowing read-only users to drop data, like, by mistake. Yeah, so it's typical divide and conquer approach. So you divide and you have better control and visibility, like transparency of what's happening. And now I'm talking about this, and speaking of transparency, observability-wise, I think it makes sense, actually, to extend query analysis we discussed so many times and have in monitoring. I know guys who are developing our monitoring, they are watching this podcast, listening to it. So I think it's a good idea, actually, to have separate graphs
Starting point is 00:12:52 aggregated by user from PIGS statements and also by database. So just like another kinds of aggregation pgis assessments offers why not using them right so like i i never saw such graphs implemented maybe there are some in some monitoring systems but i think it's quite useful and you can understand for example how much time that database time is spent every second my favorite seconds per second per each user right so and this helps you understand like oh if you if your application and parts of workloads are split between multiple users you can track and see which user generates more load at any given moment, right? Or maybe more I.O. in terms of hits and reads.
Starting point is 00:13:39 Yeah. Wafferpool or generating a lot of temporary files. So it's like all the metrics are here and this is just dimension you can use to aggregate and see who to blame, which part of application to blame or workload to blame, right? Yeah, that's a good point actually. And since you mentioned temporary files, that is one use case I've seen from the performance side for roles, is you can set, for example, work mem at the role level, so you could give. This I wanted to touch.
Starting point is 00:14:13 Yes. Okay. Yeah. Yeah. I don't know if you remember. I once confessed that I put some big system down. No, I don't remember. Yeah, yeah, there was a story when I, like.
Starting point is 00:14:27 it was a big loss in terms of income for it was e-commerce and yeah i just haven't noticed that the users had user level settings and it was not workman workman is a good idea i think but it was uh logging settings uh oh oh i think i'm looking mid-duration statement uh so yeah so some something like i don't i don't remember exactly but uh i just thought oh it's it's great like let's change some level of verbosity and then I didn't recognize that main user which is used for application, it was a single main user at that time. It has specific settings, so colliding to my change, we had observer effect and everything went down. So this increases complexity every time you have it. We also had a case, for example, when we decided to, you know,
Starting point is 00:15:22 in PigeBouncer, you can configure it in terms of pool sizes and combination of database and user you can allocate number of connections maximum number of connections and so on and if you start splitting like your quotas you for example have max connections 500 right big sewer almost 200 course for example 360 course and you have like 600 max connections which is very very saying not far from max connections cool you are not allowing a lot of idle connections and then you think okay i'm going to split and have boundaries of quarters for for each user and at that case we ended up getting rid of it after a year or two of trying to use it because it just amplifies complexity like everywhere you need to think about like oh this is
Starting point is 00:16:14 this but we have users so this is good very sharp fine-tuning method and in case of workman i think you're right it's better to increase workman for specific like reporting roles then globally. But if you go in this direction too far, it's similar to tuning tables, auto vacuum tuning per table. I don't like it because in growing organization, when we need to change things all the time,
Starting point is 00:16:45 complexity of configuration, it bites back very badly after a few months. Everyone already forgot about this. And you have so complex fine-tuned system. I would first consider, like, global changes wherever it's possible. Maybe WorkMem is kind of some exclusion, but connections and all the settings, it's better to have common rules for everyone, you know, because per role, it's like exclusions from global rule, right?
Starting point is 00:17:18 And harder to look up, right? Like, easy to forget. I think you make such a good point here. Even WorkMem, you might be able to get away with it without, setting it at the role level. Like, could you set it for each reporting query? If you're only run a very few number of reporting queries,
Starting point is 00:17:35 you could set it just in the session, for example. With caveats again around pullers, but yeah. Yeah, actually PigeBon is one thing, but create role itself, create user and PostGOS itself, has also connection limit option.
Starting point is 00:17:51 And this is the way where you can like, maybe if in some cases it's good. Like we know these users should be very limited. We know they're abusers. Connection limit three. That's it. So that's it. But in general, I don't like too many local rules because complexity grows a lot. I wanted to emphasize once again for like importance of separation of roles not only for application parts or workload parts, but also for humans. Especially in the I time we live in like some humans can be sometimes bots, like AI, LLMs also. Sometimes they are actually humans.
Starting point is 00:18:34 And if everyone shares just one role, especially if it's a super user, well, that's dangerous, right? And we cannot understand who is, like, even, not only about like who is like can put us down, but for example, during incidents, it's harder to trace who is connected. We can do it using process ID and then go and check at OS level. But sometimes if they are root there, then we need to trace, trace, trace, it's like it's a lot. Sometimes it's already as we don't have access to OS. And so if everyone is connected using one role,
Starting point is 00:19:12 we cannot understand like who is doing what. That's like complicates troubleshooting a lot. So separation here again is very, very, very good practice. Yeah. plus all the security implications right like you never you never want to think about what if someone that has super user access leaves the company all of a sudden like there's all sorts of um there's all sorts of risks to the more the more people that have that let's say it's password like username password just the more threat like yeah it's and if it's one user for all password
Starting point is 00:19:54 rotation becomes like terrible and and i know cases right so and yes and you know there is it's interesting that create role this is probably for guys who want to create their first patch or something and maybe it's a good idea to think uh as a good proposal for what posgis lacks so there is uh you know there is create role has expiration you can specify one role i didn't know that Yeah, some valetantile or something like this. So you can specify when I never used it. I just think this is good actually. So you can have temporary access.
Starting point is 00:20:32 But I would rather prefer seeing exploration for password only. So rotation. Yeah, rotation will become mandatory. And maybe with some warning, which will start popping up in logs and to client messages like one month before, for example. Yeah, I'm not such a big fan. I haven't really thought it through for databases, but I'm not a fan of password rotation policies
Starting point is 00:21:00 for, like, individual web apps that you log into, for example. I just don't think it adds much, but yeah. Yeah, why do you think so? So I think the root issue is password rebutt. use. So, like, I think the main thing you're protecting yourself from is a different service getting hacked and they're not storing passwords hashed, like maybe plain text passwords or maybe a weak hash an algorithm and it gets cracked. And then people try and use the same password and lots of different services and they happen to get lucky with your service. And if you rotate
Starting point is 00:21:42 passwords, then they have to do that within a set period of time. Otherwise, you have to have set a new password. So it has some, I think there has some protection there, but I'd much rather focus on just educating people to use unique passwords so you don't have that vector. But imagine, okay, imagine there's this, there's an organization, many, many, many people working, like new people come, some people leave the company. And there is some passwords shared among them. And it, it haven't been changed for years yeah is it a good idea or okay okay one user it has every user have their own password but some users work at company many years they created a lot of automation and so on and maybe some of there are service roles right like for automation and some of them also
Starting point is 00:22:37 like already propagated to many pieces of code i don't know like passwords should not be stored in code, right? Of course. But there are several pieces of automation sharing the same password and it was not changed for years. It doesn't feel safe. And I'm not a security expert. I just know sometimes there is a policy for password rotation, token rotation, expiration, and so there is such policy. But Posgis Lexis. So it should be managed outside of Postgres and enforced outside. It's also a bit of a pain to do. Like, it's, in terms of like applicating, well, back to zero downtime, right? Like we have to, if we want to rotate it, yeah.
Starting point is 00:23:22 Yes. I think like usually you will end up having new role, but then it won't work everywhere because of ownership as well. So exactly like thinking through, okay, maybe not only expiration, but maybe some workflow when, for example, two passwords temporarily allowed for some time and then you're going to like, like, can still use the same role because you have a lot of notes, application notes, and some other things which are constantly working with this database, right? So you need some overlapping
Starting point is 00:23:57 for both passwords, for example. Or another thing, actually, maybe we will agree both here. It would be good to say, I don't, like, simple passwords are not allowed. Yes. Yes. I completely agree Or there is Maybe I'm missing something No
Starting point is 00:24:18 The only thing I know of in this area Is quite a cool service by a guy An Australian guy called Troy Hunt I might have mentioned it in the past He runs a website Called Have I Been Poned But he also runs a service I know this website actually
Starting point is 00:24:33 Yeah Yeah it's great So that website is You can put your email address in And the website will tell you Are you in any dumps of email address password combos from it creates one more dump every time and it always say yes basically answers always yes yeah but you can see which services for example yeah well
Starting point is 00:24:56 and the another service he runs is basically all of those passwords so you so if somebody if like one of your users sets a password you can send you can hash it send it off to his service and say is this one in the leak they database and all of the simple passwords are like every single simple password you can ever imagine is in there plus any that have been leaked so you can not only stop people setting simple passwords but you can also stop them setting ones that have already been leaked so it's well at least publicly known and leaked so that's a cool service but obviously it's a web service that's why people before auto-generated passwords lately like just just not rely on the users anymore
Starting point is 00:25:41 at all, just always auto-generate, that's it. Do you mean, like, using a password manager, or do you mean, like... In general, instead of, like, you build some system, and instead of saying, like, you will generate it, you will provide a password, no, just auto-generated. But again, there is no, for example, feature to ask user to change it. There are some things, usually some systems have, but database system doesn't, right? so there is like you need some layer here above but posgues could have some some of these things it recently got another thing which we discussed last week right the the way to use uh oof how to
Starting point is 00:26:23 pronounce it oh yeah oh i say oath but i actually don't know if i've heard anyone say it yeah yeah so so yeah that's interesting but there are but more like fundamental things that could be also implement just this opportunity here okay anyway we agree we both agree that simple passwords are bad and postguists could check them when role is created or or password changed using alter role right yeah maybe and we could implement like everybody on their own could implement their own kind of like interface and function functional I think it's possible with event triggers maybe right I don't know. Actually, I don't know.
Starting point is 00:27:04 I was actually thinking just a little simple web app, but yeah. Well, on top of Postgres, of course, but inside Postgres, I think if it was a feature, it would be good to have it implemented in a way that it could be customized. You provide a function, which just returns true or false. That's it. It would be good. And then you have some policy to be defined. Speaking of passwords and leaking passwords, of course, we know.
Starting point is 00:27:32 like plaintext passwords is bad, right? Encrypted. They should be encrypted and stored in hash. And many, many years MD5 was
Starting point is 00:27:46 the choice, right? And in PGHB, Confugure, like, no trust, no plaintext, just MD5, right? But since PostG10, we have Scram, which is like, salted. Well, MD5 actually was
Starting point is 00:28:02 also sold it with username you know this right so we always could create when you say create user you could specify not the plain text password in the ddl comment but you could concatenate password your actual password you want to have and username and then calculate MD5 of it and then have prefix MD5 and provide all this instead of password and this will work properly yes so this protects you from password, like just leaking password, right? Because, for example, we always say log statement should be DDL. So we see what's happening, right? But if it's DDL, then every create user or alter user changing password, it leaks that value. And it means anybody with access to the logs. Yeah. In a big organization, we have log collecting system and so on.
Starting point is 00:28:59 usually there are some mechanisms to remove PII and so on but this is not just PII it's like it's very very very dangerous PII right and yeah so actually so plain text is absolutely no like as an algorithm to store passwords because also it will go to dumps well regular dump don't dump users and rows right but PJ dump all does which is dump all does I'm not sure if it works on RDS or others, but in self-manage, definitely it works and it will dump everything, including this. Okay. So this is good idea to have like this like hash instead of password to provide it. And even if it goes to logs, it's already like not the raw value, which is much better, right? And Scram adds even better protection because still MD5, you can, you can basically
Starting point is 00:29:59 you find collisions with irregular hardware these days, right? So Scrum is much better and much more stronger encrypted and so on. But still, like, when I see people use, like, even if Scrum is configured everything. Creating user is a problem because it goes to logs, especially if it's MD5, people still use plain text and create user. And if log statement is DDL, it will go with plain text to logs. and to avoid that, how can we avoid that? Well, changing log statement is not a good idea
Starting point is 00:30:35 because you will miss the fact. I would prefer seeing that which this user was created but do not see password. Yeah. And I actually expected PG audit would do this, but no. It also looks. Oh, interesting. Yeah.
Starting point is 00:30:49 And I know like PGO audit was developed by Crunchy. Crunchy in terms of security is great. By the way, there is a document. Maybe we mentioned, I don't remember. this document created We did a whole episode on auditing so it came up then. So there was a public document developed I think
Starting point is 00:31:05 during their like contract with US military right so it was great huge list of checks you should do to improve security. And I checked a crunchy bridge I was thinking okay like how do they do it? Well they're logged twice
Starting point is 00:31:24 and if you create a role using plain text password it's log twice as plain text. So that's disappointing actually, and PG audit will log it as plain text as well. Why? Because it logs the statement as like
Starting point is 00:31:39 context. This is a problem. PG audit says the role was created, but then it also logs context and context exposes password if it was not hash value but plain text. And I just recalled we did it like a couple of weeks ago. We were curious.
Starting point is 00:31:57 and it was needed for some work. And I recalled many, many, many years ago, I created basic, like, PLPG-Skilled scripts, which will auto-generate password. You just specify length and it will auto-generate. It will be printed but not locked. Yeah, so it's quite easy. Like, you just do anonymous do block.
Starting point is 00:32:24 And that's it. Or you can wrap it inside function, right? In case of context, the function name will be mentioned, right? But not the body of it. Yeah, I'm missing something. How come it avoids being logged? So if you, for example, wrap it inside PLPrecrow scale function, its name will be logged, but not the body.
Starting point is 00:32:48 Oh. That's it. So you just create PLPG scale function, create or alter user. and work through it and even if you will do plain text like for simplicity convenience it won't go to logs well it will
Starting point is 00:33:07 because again like again combining idea in my case the password is auto-generated and just print it out so you can start using it what about other like let's say it takes for some reason you hit some lock or something
Starting point is 00:33:22 it takes more than 50 milliseconds or whatever you've set statement time not like log statement to if it's in a function it won't get logged there either it might would it no it wouldn't because it wouldn't be in the query nice yeah yeah so function name will will be locked password is already inside
Starting point is 00:33:43 it's printed to you but it's not great yeah not logged in anywhere great yeah but it's it's like you this is um it should be like kind of code style or something and you need to enforce it yourself. Database won't enforce it. This is what I think.
Starting point is 00:34:01 There's a gap here we could feel just improving PostGus itself, just to have some protection that good practices are followed. Right? Right now, it's just on shoulders of who manages PostGGGGGUS. I actually can't think of any good reason to log the actual password in plain text ever. Exactly. Like what, yeah, we might be. but that could just be
Starting point is 00:34:27 simple change, yeah, yeah, yeah, yeah. Just mask it, yeah. Why? It doesn't matter, is it a hash or just password itself, just mask it? Star, star, star, star. No, it doesn't matter. Yeah.
Starting point is 00:34:42 Exactly. One more thing, I think, is like, kind of interesting. I learned recently. I haven't checked myself, but I rely on what my team tells me. You know, we develop components for self-driving.
Starting point is 00:34:56 Vosgues right yeah and one of them is to deal with index health which we discussed many times yeah so we needed to be able to recreate indexes and we started with DB link which was not good because password is always there when you connect you need to specify password I recall the old trick I learned like many years ago but then I recently saw it's actually described in documentation of DB link connect function you can use you can use PostgreavesfdW server, and on top of it, you can use DBLink.
Starting point is 00:35:32 In this case, DBLink Connect will not need to have password because password is defined in the DW, right? So in user mapping, actually. In a foreign server, you define just like IP address and give you the name, but then you define user mapping. There you need to provide password. So the thing is that if you create a dump, this thing will be dumped like user mapping will be dumped right and password is there right so also like
Starting point is 00:36:03 kind of like things which should be maybe understood better and maybe adjusted so huh yeah it's it's already better i mean you like your code doesn't need to specify password it's just one definition that's it but if you work with dumps too much this is a place where password can be leaked and you probably don't expect it also. I think people don't expect password to be leaked in dumps. So, yeah, these are interesting things about passwords and user management. Right now we should make efforts to be protected. This is the key.
Starting point is 00:36:40 And also, like, let me complain a little bit. The problem is if we, like, people often call us to check things, we come. And it's actually not easy to understand, like, kind of like what's happening with, for example, user management and passwords. We can see the list of roles and so on. But to understand the risks and the problems, we need to talk to people right now. So the automated solutions to perform security audit, they are usually quite weak, unfortunately, because of it's not easy.
Starting point is 00:37:16 It's not easy to understand that, for example, passwords is going to be leaked next week because of something. Yeah. Yeah. On kind of password protection front, I actually, I don't think we mentioned it last week, but I spotted in the release notes that MD5 is actually being deprecated as part of 18. Yeah. So not removed yet, but you get deprecation warnings now if you're in Postgres 18, if you try and... It took eight years. Scamb was added in Postgres 10, so it's 10 or eight or nine years, if we're depending on how you count so yeah progress good good news good yeah yeah so everyone should
Starting point is 00:37:59 be using scram and think about things we just discussed and it will be much better but but right now right now there are many dangers in terms of security unfortunately and i think it's also job for managed platform to improve things right and i think they do they do i saw many things and they recognize this problem. Yeah, I think they just take a lot of this out of, like they handle that stuff. If you've got a good provider that's hot
Starting point is 00:38:28 on security stuff, then you're probably, at least got the absolute basics. Certificates and TLS. Yeah, good point. Yeah, also important. Slightly outside the scope of user management, but definitely security 101, right?
Starting point is 00:38:44 Adjacent topic, yeah. Yeah, yeah. Another time. Right. So yeah, these are things I wanted to touch a little bit. What else? That's it? I think that's good. Yeah. Thanks so much, Nikola. Catch you next week. Thank you. Bye-bye.

There aren't comments yet for this episode. Click on any sentence in the transcript to leave a comment.