Kenneth Fisher explains the public role in SQL Server:
A common misunderstanding is that the CONNECT permission lets you do more than just connect to a database. It doesn’t. Connection only. So how come there are some things that everyone can do once they are connected to a database? Well, it’s the public role. Everyone is a member and that can’t be changed. In fact, you can’t even disable it. Oh, and I should point out that every database has one.
So what does that mean? If you have a table that you want everyone to have read access to you could grant the permission in public.
I never use the public role for anything, and so it’s a benign role. I strongly dislike database security tools which flag the public role as a risk, mostly because I made the mistake once of believing the tool and had to start granting things like CONNECT
to each new login.