修改密码#

出于安全考虑,建议 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. 根据系统提示,输入并确认新密码。

Skylab 平台软件内用户#

###Skylab 内用户

Skylab 内用户,即 Lava 用户,通常是与其纳管的 OushuDB 内用户是同步的。可以通过登录 Skylab UI 修改。修改方式参见 用户管理 用户手册。

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/) 中,修改为新密码,并重启。

<?xml version="1.0" encoding="utf-8"?>
<postgres>
    ...
    <user>oushu</user>
    <password>新密码</password>

高可用模式#

在高可用模式下,涉及的 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
  1. 修改 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
  1. 修改 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
  1. 停止所有 Standby 节点。在每一个从节点执行(使用 postgres 用户):

export LD_LIBRARY_PATH=/usr/pgsql-14/lib;export PATH=/usr/pgsql-14/bin:$PATH;
pg_ctl -D /usr/pgdata/ stop
  1. 重启 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
  1. 在所有节点启动 PGPool。使用 postgres 用户执行:

/bin/pgpool -f /etc/pgpool.conf -n -D > /tmp/pgpool.log 2>&1 &
  1. 启动 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。

  1. 修改 Lava 配置文件。在所有 Lava 节点的 lava-server、lava-admin、db-server、wasp 的配置文件 postgres.config.xml (路径 /usr/local/oushu/conf/xxx/) 中,修改为新密码,并重启。

<?xml version="1.0" encoding="utf-8"?>
<postgres>
    ...
    <user>oushu</user>
    <password>新密码</password>
  1. 如果安装了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 服务

        <property>
            <name>hdfs.zookeeper.property.auth</name>
            <value>@/path/to/zk-auth.txt</value>
        </property>
    

    /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 认证用户为准,通过定期更新票据的方式代替更新密码。