command line explicit password record security

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介:
在命令行中使用密码的话, 有几个坏处, 
1. 因为命令会记录到命令历史中, 所以使用history就能看到命令行中的密码.
2. 如果使用了远程syslog或其他类似的操作日志收集工具的话, 这些包含了密码的命令最终还会记录到远程, 所以泄密的风险范围再次扩大.
3. ~/.psql_history
4. pg_stat_statements插件中也会记录SQL,
postgres=# \d pg_stat_statements 
          View "public.pg_stat_statements"
       Column        |       Type       | Modifiers 
---------------------+------------------+-----------
 userid              | oid              | 
 dbid                | oid              | 
 queryid             | bigint           | 
 query               | text             | 
 calls               | bigint           | 
 total_time          | double precision | 
 rows                | bigint           | 
 shared_blks_hit     | bigint           | 
 shared_blks_read    | bigint           | 
 shared_blks_dirtied | bigint           | 
 shared_blks_written | bigint           | 
 local_blks_hit      | bigint           | 
 local_blks_read     | bigint           | 
 local_blks_dirtied  | bigint           | 
 local_blks_written  | bigint           | 
 temp_blks_read      | bigint           | 
 temp_blks_written   | bigint           | 
 blk_read_time       | double precision | 
 blk_write_time      | double precision | 

建议在创建用户,修改用户密码后,调用pg_stat_statements_reset()来清除这里记录的SQL。
或者配置pg_stat_statements.track_utility=off,就不会跟踪记录DDL语句了。

5. pg_stat_statements对应的文件。
postgres@digoal-> pwd
/data01/pg_root_1921/pg_stat_tmp
postgres@digoal-> ll
total 28K
-rw------- 1 postgres postgres 2.5K Sep 24 16:00 db_0.stat
-rw------- 1 postgres postgres 9.6K Sep 24 16:00 db_151898.stat
-rw------- 1 postgres postgres  607 Sep 24 16:00 global.stat
-rw------- 1 postgres postgres 6.4K Sep 24 14:48 pgss_query_texts.stat
停库后记录在这里
postgres@digoal-> cd ../pg_stat

这个也非常不靠谱哦。也是泄露渠道之一。
建议设置参数pg_stat_statements.save=off,但是对于9.4这个版本,它依旧会写文件,只是在关闭和启动时会去清理这个文件,具体可以看代码,9.1的版本是不会写文件的。所以建议加上 pg_stat_statements.track_utility=off。

在数据库的使用过程中同样存在类似问题.
例如在psql客户端中创建用户时, 输入的密码, 可能被记录到几个地方.
1. 如果开启了ddl记录, 那么这条SQL会记录到数据库的日志中, 例如csvlog.
2. 如果开启了psql的命令行记录如readline , 会记录到~/.psql_history文件中.
3. 如果开启了会话审计的话, 这些命令同样会记录到会话审计日志(例如通常使用的堡垒机)
不安全的做法 :
digoal=# create role digoal login encrypted password 'test';  
CREATE ROLE

审计日志记录的是明文
2014-06-03 09:39:23.505 CST,"postgres","digoal",27036,"[local]",538d2706.699c,5,"idle",2014-06-03 09:38:14 CST,2/189,0,LOG,00000,"statement: create role digoal login encrypted password 'test';",,,,,,,,"exec_simple_query, postgres.c:1051","psql.bin"


安全的做法 : 
postgres@db-172-16-3-150-> createuser -S -l -P digoal
Enter password for new role: 
Enter it again: 

那么在审计日志中记录的是MD5
2014-06-03 09:42:46.137 CST,"postgres","postgres",27173,"[local]",538d2816.6a25,3,"idle",2014-06-03 09:42:46 CST,2/210,0,LOG,00000,"
statement: CREATE ROLE digoal PASSWORD 'md59bb83593ae914b642e56dfa03e77b0de' NOSUPERUSER NOCREATEDB NOCREATEROLE INHERIT LOGIN;
",,,,,,,,"exec_simple_query, postgres.c:1051","createuser"

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
6月前
|
关系型数据库 MySQL 数据安全/隐私保护
问题:ERROR 1819 (HY000) Your password does not satisfy the current policy requirements
问题:ERROR 1819 (HY000) Your password does not satisfy the current policy requirements
46 0
|
7月前
|
安全 关系型数据库 MySQL
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements问题处理
【5月更文挑战第8天】ERROR 1819 (HY000): Your password does not satisfy the current policy requirements问题处理
581 2
|
7月前
|
安全 关系型数据库 MySQL
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
66 2
|
Java
解决Command line is too long. Shorten command line for ServiceStarter or also for Application报错
解决Command line is too long. Shorten command line for ServiceStarter or also for Application报错
372 0
|
安全 关系型数据库 MySQL
mysqldump: [Warning] Using a password on the command line interface can be insecure.
mysqldump: [Warning] Using a password on the command line interface can be insecure.
mysqldump: [Warning] Using a password on the command line interface can be insecure.
|
应用服务中间件 Android开发
a configuration error occurred during startup. place verify the preference field whth the prompt:TomcatJDK name:
a configuration error occurred during startup. place verify the preference field whth the prompt:TomcatJDK name:
141 0
a configuration error occurred during startup. place verify the preference field whth the prompt:TomcatJDK name:
|
关系型数据库 MySQL 数据安全/隐私保护
|
SQL 数据库管理 关系型数据库
SP2-0618: Cannot find the Session Identifier. Check PLUSTRACE role is enabled
测试环境:OEL6.5+Oracle 11g R2在进行执行计划测试的时候,遇到一个小问题。在用普通用户执行下面这条命令的时候,普通用户名为hhu,已经赋予了create session和resource权限。
1132 1