# 修改密码 出于安全考虑,建议 Skylab 平台在部署过程中所创建的系统用户以及平台内部用户,都需要设置符合一定强度的密码,密码需要每 90 天更换一次, 并且 5 次之内不能使用重复的密码。密码强度建议遵循如下规则: 1. 长度至少是 8 位。 2. 组成部分需要包含数字、大写字母、小写字母、特殊字符中的至少三种。 3. 不要以姓名、出生日期、部门/单位名称、设备名称作为密码的组成部分。 4. 不使用出厂默认口令。 5. 避免出现 3 位以上键盘排序密码,避免出现 3 位以上连续字母、数字、特殊字符, 如 1234 或 qwer。 6. 避免出现 3 位以上的重复字符,如 6666 或 bbbb。 7. 避免多个系统配置相同的密码。 本章梳理 Skylab 平台有哪些用户需要修改,以及修改的方法,包括 Skylab 平台软件安装时创建的操作系统用户与 Skylab 平台各软件内部用户。 ## 操作系统用户 安装过程会自动创建一些操作系统用户,这些用户可能没有密码,需要在安装部署结束后统一设置密码。这些用户包括 oushu、postgres、flink、kafka、hdfs 以及 zookeeper ### oushu 在安装 Skylab 的产品时,会自动创建名字为 oushu 的系统用户,该用户默认无密码,安装、部署完 Skylab 平台所有产品后,建议手动为此用户设置密码。 Skylab 有一些后台进程使用 oushu 用户启动,如 OushuDB 的各服务。 修改方法: 1. 所有安装有 Skylab 产品的节点。 2. 确保以root用户身份登录,或者以具有sudo权限的用户身份执行命令。 3. 执行 passwd oushu。 4. 根据系统提示,输入并确认新密码。 5. 如果在 Skylab 平台中添加机器的时候,使用的操作系统用户为 oushu:则需在修改完此系统用户密码之后,登录 Skylab 平台, 在"安装部署"产品的"节点管理"页面批量修改纳管的机器的密码为新密码(ssh 使用)。 ### postgres 在安装 Skylab 的产品时,会自动创建名字为 postgres 的系统用户,该用户默认无密码,安装、部署完 Skylab 平台所有产品后,建议手动为此用户设置密码。 Skylab 有一些后台进程使用 postgres 用户启动,如 Postgresql 与 PGPool。 修改方法: 1. 所有安装有 Postgresql 的节点。 2. 确保以 root 用户身份登录,或者以具有 sudo 权限的用户身份执行命令。 3. 执行 passwd postgres。 4. 根据系统提示,输入并确认新密码。 ### flink/kafka/hdfs/zookeeper 在安装Skylab 的 相关产品时,会自动创建名字为 flink、kafka、hdfs、zookeeper的系统用户用来启动相关进程,这些用户默认无密码,安装、部署完 Skylab 平台所有产品后,建议手动为此用户设置密码。 修改方法:同 postgres 密码修改。 ## Skylab 平台软件内用户 ###Skylab 内用户 Skylab 内用户,即 Lava 用户,通常是与其纳管的 OushuDB 内用户是同步的。可以通过登录 Skylab UI 修改。修改方式参见 [用户管理](../../user/user-management.md) 用户手册。 Skylab 的租户管理员可以登录 Skylab UI 修改本租户下的用户的密码与子租户管理员的密码。 Skylab 的用户都可以登录 Skylab UI 后修改自己的密码。 ###Postgresql 内用户 安装 Lava 各模块时,会把 Postgresql(简称 PG) 作为依赖安装,并且在 PG 内部创建用户,部署单点模式时会创建 postgres、oushu 用户,在部署高可用模式时会创建postgres、oushu、pgpool 与 repl 用户。 #### 单点模式 需要修改 postgres、oushu 用户的密码。 修改方法:在 PG 节点,用 postgres 用户登录 PG 的 PSQL 客户端 ,执行如下 SQL: ``` ALTER USER postgres WITH PASSWORD '新密码'; ALTER USER oushu WITH PASSWORD '新密码'; ``` 在 lava-server、lava-admin、db-server 的配置文件 postgres.config.xml (路径 /usr/local/oushu/conf/xxx/) 中,修改为新密码,并重启。 ``` ... oushu 新密码 ``` #### 高可用模式 在高可用模式下,涉及的 PG 用户有 postgres(PG 自带初始化用户)、oushu(Lava 各后端模块所用)、pgpool(PGPool 所用用户) 与 repl(PG 主备同步用户)。 1. 停止所有节点的 PGPool。在 PGPool 某节点使用 postgres 用户执行如下命令。 ``` export LD_LIBRARY_PATH=/usr/pgsql-14/lib;export PATH=/usr/pgsql-14/bin:$PATH; pcp_stop_pgpool -h hostname -p 9898 -U pgpool -m f -s c ``` 2. 修改 PG 用户密码与 PG Master 节点配置文件。在 PG Master 节点,执行: ``` sudo lava postgres-edit oushu 新密码 true sudo lava postgres-edit postgres 新密码 true sudo lava postgres-edit pgpool 新密码 true sudo lava postgres-edit repl 新密码 true ``` 3. 修改 PG Standby 节点配置文件。在所有 PG Standby 节点,执行: ``` sudo lava postgres-edit oushu 新密码 false sudo lava postgres-edit postgres 新密码 false sudo lava postgres-edit pgpool 新密码 false sudo lava postgres-edit repl 新密码 false ``` 4. 停止所有 Standby 节点。在每一个从节点执行(使用 postgres 用户): ``` export LD_LIBRARY_PATH=/usr/pgsql-14/lib;export PATH=/usr/pgsql-14/bin:$PATH; pg_ctl -D /usr/pgdata/ stop ``` 5. 重启 PG Master 节点。 在 Master 节点执行(使用 postgres 用户): ``` export LD_LIBRARY_PATH=/usr/pgsql-14/lib;export PATH=/usr/pgsql-14/bin:$PATH; pg_ctl -D /usr/pgdata/ restart ``` 6. 在所有节点启动 PGPool。使用 postgres 用户执行: ``` /bin/pgpool -f /etc/pgpool.conf -n -D > /tmp/pgpool.log 2>&1 & ``` 7. 启动 PG 所有 Standby 节点。使用 postgres 用户执行: ``` export LD_LIBRARY_PATH=/usr/pgsql-14/lib;export PATH=/usr/pgsql-14/bin:$PATH; pcp_recovery_node -h hostname -p 9898 -U pgpool -n node_id ``` 其中 hostname 为任意一安装了 PGPool 的节点,node_id 为 "show pool_nodes;" 命令返回的 PGPool 的 node_id。 8. 修改 Lava 配置文件。在所有 Lava 节点的 lava-server、lava-admin、db-server、wasp 的配置文件 postgres.config.xml (路径 /usr/local/oushu/conf/xxx/) 中,修改为新密码,并重启。 ``` ... oushu 新密码 ``` 9. 如果安装了Flow、DataEnd,也需要修改相应的配置文件中的 PG 链接信息,并重启相应的服务。 具体文件分别是 "/usr/local/oushu/conf/flow/jdbc.properties" ,"/usr/local/oushu/conf/lavaflow/jdbc.properties" 。 ###OushuDB 内用户 如果 OushuDB 中的用户是 Skylab 用户同步过来的(DB 内名字模式 myuser_u_tenantcode,Skylab 中的用户名字没有 _u_tenantcode 后缀),需要通过 Skylab UI 的"用户管理"页面修改密码。 如果 OushuDB 中的用户不是 Skylab 同步过来的(DB 内名字非 myuser_u_tenantcode 模式),则需要通过 psql 、worksheet 等 SQL 客户端执行如下 SQL 修改密码。 ``` ALTER USER myuser WITH PASSWORD '新密码'; ``` 如果修改了 OushuDB 内部用户的密码,并且在 Skylab 的"数据源"模块(或外部的数据源)中使用此用户名、密码定义了数据源,需要同时修改相应数据源的用户名、密码的配置。 ###HDFS 内用户 HDFS 无论 Simple 认证模式还是 Kerberos 认证模式,都无需修改密码。 1. 在 Simple 认证模式下不进行密码认证(也无法在 Simple 模式下为用户设置密码),所有用户均可访问 HDFS,登陆用户为当前客户端操作系统用户,并根据对应的文件系统权限做控制访问。 2. 在 Kerberos 认证模式下也无需进行密码修改,HDFS 登陆用户将会以 KDC Principal 认证用户为准,通过定期更新票据的方式代替更新密码,访问密码更新后无需更改其他相关组件。 ###Zookeeper 内用户 Zookeeper 在非 digest 模式下,无需修改密码。 1. Zookeeper 默认部署配置及使用无需进行密码配置及修改,任何用户均可访问 Zookeeper,并在 Zookeeper 文件系统中通过 `getAcl /` 命令查看指定路径下所有用户的读写权限。 2. Zookeeper 可在 `digest`模式下配置用户及修改用户密码,如以下命令将把 `/path/to/node` 上的 ACL 设置为 `user` 用户的新密码 `newpassword`,并且仍然保持 `crdwa` 权限。 ``` setAcl /path/to/node digest:user:newpassword:crdwa ``` 具体的,oushu-hadoop 仅需要 `/hadoop-ha` 路径的读写权限进行功能实现,即: ``` setAcl /hadoop-ha digest:user:newpassword:crdwa ``` 在 Zookeeper 更新指定用户密码后,需要同步更新 HDFS、Kafka、Flink的相关配置,并重启服务,否则服务将无法连接 Zookeeper。 修改HDFS `hdfs-site.xml` 配置文件,更新以下内容并重启 ZKFC 服务 ``` hdfs.zookeeper.property.auth @/path/to/zk-auth.txt ``` `/path/to/zk-auth.txt` 文件的内容为 `digest:zkfcUser:zkfcPasswd`,其中,`zkfcUser` 对应修改密码的用户,`zkfcPasswd` 对应修改的密码 修改 Kafka 的 server.properties 配置文件,并重启 Kafka 服务。 ``` zookeeper.username=zkfcUser zookeeper.password=zkfcPasswd ``` 修改 Flink 的 flink-conf.yaml 配置文件,并重启 Flink 服务。 ``` high-availability.zookeeper.client.acl: "digest:zkfcPasswd:zkfcPasswd" ``` 3. Zookeeper 在 Kerberos 认证模式下也无需进行密码修改,zookeeper 登陆用户将会以 kdc principal 认证用户为准,通过定期更新票据的方式代替更新密码。