2015-10-08 188 views
0

我创建(在Python中)应该使用Redis数据库的桌面应用程序。该应用将连接到本地数据库,我需要受保护的访问Redis。我知道我可以在/etc/redis/redis.conf中设置密码插入requirepass pswd行,但是这个配置文件可以被未经授权的用户读取。在这种情况下确保安全的方法是什么?我知道在远程服务器上使用Redis可以解决这个问题,但如果只有本地数据库呢?安全地存储Redis密码

+0

拒绝组“用户”的读访问权限(或任何默认用户组在linux_中)? – Markus

回答

0

你真的不能真正安全地存储密码......你可以做各种事情来试图隐藏它......但最终没有办法安全地存储在python中的东西,使访问真正受到保护......一些事情可以做,是向上突破密码进入部分......并运用一些改造

p1="Hello" 
p2="world15" 

mypassword = hashlib.sha1(p1+p2).digest() 

print mypassword #use whatever prints here as your redis password if you cannot change the password redis is using you can use other simillar techniques to obscure the password 

后,你可以把它编译成一个PYC或者其打包成二进制...但真的,如果有人想它,他们可以找到它

我认为有一个新的PEP提出处理安全令牌......但我不知道什么时候或如果他们会实施它

+0

我有一个Redis数据库的密码问题,而不是在python中存储密码。我可以将密码作为输入参数提供给应用程序。如果每个人都可以在conf文件中检查它,redis中的密码是什么意思? – trivelt

+0

我试过了。 'Redis.conf'默认具有chmod 644。当我设置chmod 640时,未经授权的用户无法读取文件(没关系),但redis无法重新启动: 'sudo /etc/init.d/redis-server restart'给出'致命错误,无法打开配置文件'等/ redis的/ redis.conf''。 – trivelt

+0

@trivelt哦,那很愚蠢。这是什么原因? – rugk

0

您可以保护redis配置文件,就像Linux上的任何其他文件一样。在这里我正在Debian上测试它,所以我使用它们包中的默认值(redis用户名,...)。

  1. 所以刚进入目录:cd /etc/redis
  2. 如果你ls -l这里应该类似于此:
    -rw-r--r-- 1 root root 10K Mon 01 12:30 redis.conf
  3. 所以你看到文件的所有者是root。您还会看到root拥有r/w访问权限,这是可以的,并且用户组具有r访问权限,这是您希望用于redis的权限。 所以拿出Redis的使用用户的用户组(在Debian每个用户has its own group),并将其设置为组文件: sudo chown root:redis redis.conf
  4. 最后,所有其他用户仍具有读取权限。只是禁止他们读访问:sudo chmod 640 redis.conf

到底你redis.conf文件应该是这样的:
-rw-r----- 1 root redis 10K Mon 01 12:30 redis.conf

您现在可以重新启动Redis的(sudo service redis-server restart),一切都应该工作。