Storing Passwords with Python Keyring

I'm using keyring library to store passwords in my python app.

import keyring
keyring.set_password('My namespace', username, password)
keyring.get_password('My namespace', username)

And this works very well.

I assume that passwords are safe in keyring, they are encrypted. But, since I can get them by username, what prevents other apps to do the same?

Isn't that a security risk, or am I missing something?

1 Answer

The keyring library uses the standard keyring of your desktop environment, e.g. the GNOME keyring. This keyring is unlocked as soon as you log in, meaning: yes, any other application run by you has access to the password you store with your application, but -- and this is the idea of a keyring -- other users and their applications have not.

Quoting “gnome-keyring Security Philosophy”:

An example of security theater is giving the illusion that somehow one application running in a security context (such as your user session) can keep information from another application running in the same security context.

Note that the username in the set_password/get_password functions is not related to the name of the user running the application (i.e. the user whose keyring is used) but may be for example an email address, a database username, etc.

5

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

David Miller

David Miller

Executive Financial & Market Analyst

David Miller brings 15 years of experience in global economics, personal finance strategy, and market dynamics. He specializes in turning complex economic trends into actionable insights for everyday readers.

Share this article
Twitter Facebook Pinterest