NebulaGraph 3.8.0 符合等保要求的安全设置全攻略

打印 上一主题 下一主题

主题 1870|帖子 1870|积分 5610

前言

        在数字化浪潮中,数据安全愈发重要。对于利用 NebulaGraph 3.8.0 图数据库的用户而言,保障数据安满是构建可靠体系的关键环节。本日,小支童鞋就来为大家详细梳理怎样启用和设置用户认证,并实施用户权限的三权分立,以满意国家信息安全品级保护(等保)要求,让友友们的 NebulaGraph 应用更加安全可靠。

        NebulaGraph 作为一款高性能分布式图数据库,在大规模数据存储和复杂查询场景中表现卓越。但在生产环境下,若不重视安全设置,数据安全将面临巨大挑战。启用用户认证并实现用户权限三权分立,是提拔 NebulaGraph 安全性、符合等保要求的须要之举。接下来,我将一步步带领大家深入了解并实践这些关键安全步伐。
一 、身份验证

当客户端连接到 NebulaGraph 时,NebulaGraph 会创建一个会话,会话中存储连接的各种信息,如果开启了身份验证,就会将会话映射到对应的用户。
NebulaGraph 支持两种身份验证方式:本地身份验证和 LDAP 验证。
1、默认设置的风险

默认环境下,NebulaGraph 的认证功能是关闭的,这意味着任何用户都可以利用 root 用户名和恣意暗码连接到数据库。这在测试环境中可能是方便的,但在生产环境中是不安全的。如果你发现可以利用随意的暗码登录,阐明认证尚未启用。
1.1 登录

默认暗码就能登录
  1. [root@instance2 ~]# cd /opt/app/nebula-graph
  2. [root@instance2 nebula-graph]# ls
  3. bin  cluster.id  data  etc  logs  nebula-console  pids  scripts  share
  4. [root@instance2 nebula-graph]# ./nebula-console --addr 127.0.0.1 --port 9669 -u root -p nebula
  5. Welcome!
  6. (root@nebula) [(none)]>
复制代码

随意暗码也能登录
  1. [root@instance2 nebula-graph]# ./nebula-console --addr 127.0.0.1 --port 9669 -u root -p 1234
  2. Welcome!
  3. (root@nebula) [(none)]>
复制代码

2、本地身份验证

本地身份验证是指在服务器本地存储用户名、加密暗码,当用户尝试访问 NebulaGraph 时,将举行身份验证。
2.1 启用本地身份验证

   编辑设置文件nebula-graphd.conf(默认目录为/usr/local/nebula/etc/),设置如下参数:
○ --enable_authorize:是否启用身份验证,可选值:true、false。
○ Note
■ 默认环境下,身份验证功能是关闭的,用户可以利用root用户名和恣意暗码连接到 NebulaGraph。
■ 开启身份验证后,默认的 God 脚色账号为root,暗码为nebula。脚色详情请拜见内置脚色权限。
○ --failed_login_attempts:可选项,需要手动添加该参数。单个 Graph 节点允许一连输入错误暗码的次数。超过该次数时,账户会被锁定。如果有多个 Graph 节点,允许的次数为节点数 * 次数。
○ --password_lock_time_in_secs:可选项,需要手动添加该参数。多次输入错误暗码后,账户被锁定的时间。单位:秒。
  

  1. [root@instance2 nebula-graph]# ls
  2. bin  cluster.id  data  etc  logs  nebula-console  pids  scripts  share
  3. [root@instance2 nebula-graph]# cd etc/
  4. [root@instance2 etc]# ls
  5. nebula-graphd.conf             nebula-metad.conf.default     nebula-storaged.conf.production
  6. nebula-graphd.conf.default     nebula-metad.conf.production  nebula-storaged-listener.conf.production
  7. nebula-graphd.conf.production  nebula-storaged.conf
  8. nebula-metad.conf              nebula-storaged.conf.default
  9. [root@instance2 etc]# vim nebula-graphd.conf
  10. [root@instance2 etc]#
复制代码

2.2 修改后的认证参数

  1. # Enable authorization
  2. --enable_authorize=true
复制代码

3、重启 NebulaGraph 服务

  1. [root@instance2 nebula-graph]# cd scripts/
  2. [root@instance2 scripts]# ls
  3. meta-transfer-tools.sh  nebula-metad.service  nebula-storaged-listener.service  utils.sh
  4. nebula-graphd.service   nebula.service        nebula-storaged.service
  5. [root@instance2 scripts]# bash nebula.service restart all
  6. [INFO] Stopping nebula-metad...
  7. [INFO] Done
  8. [INFO] Starting nebula-metad...
  9. [INFO] Done
  10. [INFO] Stopping nebula-graphd...
  11. [INFO] Done
  12. [INFO] Starting nebula-graphd...
  13. [INFO] Done
  14. [INFO] Stopping nebula-storaged...
  15. [INFO] Done
  16. [INFO] Starting nebula-storaged...
  17. [INFO] Done
  18. [root@instance2 scripts]#
复制代码

4、登录进入 Nebula Console

  1. [root@instance2 nebula-graph]# ls
  2. bin  cluster.id  data  etc  logs  nebula-console  pids  scripts  share
  3. [root@instance2 nebula-graph]# ./nebula-console --addr 127.0.0.1 --port 9669 -u root -p nebula
  4. Welcome!
  5. (root@nebula) [(none)]>
复制代码

5、查看用户列表(SHOW USERS)

  1. (root@nebula) [(none)]> show users;
  2. +---------+
  3. | Account |
  4. +---------+
  5. | "root"  |
  6. +---------+
  7. Got 1 rows (time spent 1.987ms/3.031978ms)
  8. Mon, 13 Jan 2025 17:02:53 CST
  9. (root@nebula) [(none)]>
复制代码

6、修改root用户暗码(ALTER USER)

一旦启用了认证,你应该立即修改 root 用户的默认暗码。
执行ALTER USER语句可以修改用户暗码,修改时不需要提供旧暗码。当前仅 God 脚色用户(即root用户)能够执行ALTER USER语句。
  1. (root@nebula) [(none)]>
  2. (root@nebula) [(none)]> ALTER USER root WITH PASSWORD 'Nebula2024';
  3. Execution succeeded (time spent 1.651ms/2.240427ms)
  4. Tue, 14 Jan 2025 14:24:27 CST
  5. (root@nebula) [(none)]>
复制代码

7、退出登录,再次登录

  1. (root@nebula) [(none)]> exit
  2. Bye root!
  3. Tue, 14 Jan 2025 14:25:02 CST
  4. [root@instance2 nebula-graph]# ./nebula-console --addr 127.0.0.1 --port 9669 -u root -p nebula
  5. 2025/01/14 14:25:36 Fail to create a new session from connection pool
  6. Error:
  7. failed to authenticate, error code: -1001, error msg: Invalid password
  8. [root@instance2 nebula-graph]# ./nebula-console --addr 127.0.0.1 --port 9669 -u root -p 1234
  9. 2025/01/14 14:25:46 Fail to create a new session from connection pool
  10. Error:
  11. failed to authenticate, error code: -1001, error msg: Invalid password
  12. [root@instance2 nebula-graph]#
复制代码

默认暗码报错了,已经无法登录。
8、验证更改后的暗码登录:

尝试用新的凭据重新连接到 Nebula Graph,确认暗码更改已见效。
  1. [root@instance2 nebula-graph]#
  2. [root@instance2 nebula-graph]# ./nebula-console --addr 127.0.0.1 --port 9669 -u root -p Nebula2024
  3. Welcome!
  4. (root@nebula) [(none)]>
复制代码

修改后的暗码测试可以登录
二、创建用户

1、创建用户(CREATE USER)

   执行CREATE USER语句可以创建新的 NebulaGraph 用户。当前仅 God 脚色用户(即root用户)能够执行CREATE USER语句。
● 语法
CREATE USER [IF NOT EXISTS] <user_name> [WITH PASSWORD ‘’];
○ IF NOT EXISTS:检测待创建的用户名是否存在,只有不存在时,才会创建新用户。
○ user_name:待创建的用户名。
○ password:用户名对应的暗码。
执行GRANT ROLE语句可以将指定图空间的内置脚色权限授予用户。当前仅 God 脚色用户和 Admin 脚色用户能够执行GRANT ROLE语句。脚色权限的阐明,请拜见内置脚色权限。nebula> GRANT ROLE admin ON biao_test TO admin;
God 初始最高权限脚色,拥有全部利用的权限
Admin 对权限内的图空间拥有 Schema 和 data 的读写权限
DBA 对权限内的图空间拥有 Schema 和 data 的读写权限。
User 对权限内的图空间拥有 Schema 的只读权限。
Guest 对权限内的图空间拥有 Schema 和 data 的只读权限。
  2、查看用户

创建用户前我们先查看有那些用户;
  1. (root@nebula) [(none)]> show users;
  2. +---------+
  3. | Account |
  4. +---------+
  5. | "root"  |
  6. +---------+
  7. Got 1 rows (time spent 1.666ms/2.577728ms)
  8. Tue, 14 Jan 2025 14:29:14 CST
  9. (root@nebula) [(none)]>
复制代码

查看后,目前只有Root用户
3、创建利用员:operator

  1. (root@nebula) [(none)]> CREATE USER operator WITH PASSWORD 'Nebula2023';
  2. Execution succeeded (time spent 1.614ms/2.128208ms)
  3. Tue, 14 Jan 2025 15:37:00 CST
  4. (root@nebula) [(none)]>
复制代码

4、创建审计管理员:sysaudit

  1. (root@nebula) [(none)]> CREATE USER sysaudit WITH PASSWORD 'Nebula2024';
  2. Execution succeeded (time spent 1.741ms/2.349151ms)
  3. Tue, 14 Jan 2025 15:37:52 CST
  4. (root@nebula) [(none)]>
复制代码

5、创建安全管理员:sysadmin

  1. (root@nebula) [(none)]> CREATE USER sysadmin WITH PASSWORD 'Nebula2025';
  2. Execution succeeded (time spent 1.743ms/2.32076ms)
  3. Tue, 14 Jan 2025 15:38:14 CST
  4. (root@nebula) [(none)]>
复制代码

6、再次查看用户列表(SHOW USERS)

  1. (root@nebula) [(none)]> show users;
  2. +------------+
  3. | Account    |
  4. +------------+
  5. | "root"     |
  6. | "operator" |
  7. | "sysaudit" |
  8. | "sysadmin" |
  9. +------------+
  10. Got 4 rows (time spent 1.589ms/2.312696ms)
  11. Tue, 14 Jan 2025 15:38:42 CST
  12. (root@nebula) [(none)]>
复制代码

三、管理用户

1、创建示例空间

创建用户授权前,我们先创建示例空间;
  1. (root@nebula) [(none)]> CREATE SPACE IF NOT EXISTS space1 (vid_type=FIXED_STRING(30));
  2. Execution succeeded (time spent 1.542ms/2.076204ms)
  3. Tue, 14 Jan 2025 14:39:50 CST
  4. (root@nebula) [(none)]> CREATE SPACE IF NOT EXISTS space2 (vid_type=FIXED_STRING(30));
  5. Execution succeeded (time spent 1.165ms/1.730596ms)
  6. Tue, 14 Jan 2025 14:40:02 CST
  7. (root@nebula) [(none)]>
复制代码

2、查看空间 SHOW SPACES;

  1. (root@nebula) [(none)]> SHOW SPACES;
  2. +----------+
  3. | Name     |
  4. +----------+
  5. | "space1" |
  6. | "space2" |
  7. +----------+
  8. Got 2 rows (time spent 1.452ms/2.197014ms)
  9. Tue, 14 Jan 2025 14:40:45 CST
  10. (root@nebula) [(none)]>
复制代码

3、授权用户(GRANT ROLE)

执行GRANT ROLE语句可以将指定图空间的内置脚色权限授予用户。当前仅 God 脚色用户和 Admin 脚色用户能够执行GRANT ROLE语句。脚色权限的阐明,请拜见内置脚色权限。nebula> GRANT ROLE admin ON biao_test TO admin;
3.1 sysaudit用户授权空间1 为USER脚色

  1. (root@nebula) [(none)]>
  2. (root@nebula) [(none)]> GRANT ROLE USER ON space1 TO sysaudit;
  3. Execution succeeded (time spent 1.773ms/2.34586ms)
  4. Tue, 14 Jan 2025 14:42:19 CST
  5. (root@nebula) [(none)]>
复制代码

User 对权限内的图空间拥有 Schema 的只读权限。
3.2 sysadmin用户授权空间2 为ADMIN脚色

  1. (root@nebula) [(none)]> GRANT ROLE ADMIN ON space2 TO sysadmin;
  2. Execution succeeded (time spent 1.422ms/2.008812ms)
  3. Tue, 14 Jan 2025 14:43:28 CST
  4. (root@nebula) [(none)]>
复制代码

Admin 对权限内的图空间拥有 Schema 和 data 的读写权限
4、测试 sysadmin 安全管理员 ADMIN脚色授权空间1和空间2

  1. [root@instance2 nebula-graph]# ./nebula-console --addr 127.0.0.1 --port 9669 -u sysadmin -p Nebula2025
  2. Welcome!
  3. (sysadmin@nebula) [(none)]> SHOW SPACES;
  4. +----------+
  5. | Name     |
  6. +----------+
  7. | "space2" |
  8. +----------+
  9. Got 1 rows (time spent 1.606ms/2.585068ms)
  10. Tue, 14 Jan 2025 14:45:13 CST
  11. (sysadmin@nebula) [(none)]>
复制代码

sysadmin 安全管理员能看到,并读写空间2
5、测试 sysaudit 审计管理员 USER脚色授权空间1和空间2

  1. [root@instance2 nebula-graph]# ./nebula-console --addr 127.0.0.1 --port 9669 -u sysaudit -p Nebula2024
  2. Welcome!
  3. (sysaudit@nebula) [(none)]> SHOW SPACES;
  4. +----------+
  5. | Name     |
  6. +----------+
  7. | "space1" |
  8. +----------+
  9. Got 1 rows (time spent 1.329ms/2.212657ms)
  10. Tue, 14 Jan 2025 14:46:42 CST
  11. (sysaudit@nebula) [(none)]>
复制代码

sysaudit 审计管理员 只能看到读空间1,不能写空间1
6、删除用户(DROP USER)

执行DROP USER语句可以删除用户。当前仅 God 脚色用
  1. (root@nebula) [(none)]> DROP USER sysadmin;
  2. Execution succeeded (time spent 2.054ms/2.764438ms)
  3. Tue, 14 Jan 2025 14:54:08 CST
  4. (root@nebula) [(none)]> DROP USER sysaudit;
  5. Execution succeeded (time spent 1.642ms/2.261796ms)
  6. Tue, 14 Jan 2025 14:54:15 CST
复制代码

7、查看用户列表(SHOW USERS)

  1. (root@nebula) [(none)]> show users;
  2. +---------+
  3. | Account |
  4. +---------+
  5. | "root"  |
  6. +---------+
  7. Got 1 rows (time spent 1.264ms/1.875929ms)
  8. Tue, 14 Jan 2025 14:54:24 CST
  9. (root@nebula) [(none)]>
复制代码

四、用户默认暗码登录报错-故障清除

可以接纳临时禁用认证以重置暗码
如果无法通过现有凭证登录到 Nebula Console,可以考虑暂时禁用认证来重置 root 暗码。请注意,这会带来安全风险,仅应在受控环境中举行,并尽快恢复认证功能。
1. 编辑设置文件:再次打开 nebula-graphd.conf 文件,并将 --enable_authorize 设置为 false。
2. 重启服务:重启全部相关的 Nebula Graph 服务。
3. 进入 Nebula Console:利用默认凭证(如 root 和空字符串)登录。
4. 修改暗码:执行以下下令更改 root 用户的暗码。

  1. ALTER USER 'root' WITH PASSWORD 'Nebula2024';
复制代码
5. 恢复认证:再次编辑设置文件,将 --enable_authorize 设置回 true,并重启服务。
总结

        通过上述步骤,友友们已经乐成启用了 NebulaGraph 3.8.0 的用户认证机制,并增强了体系的安全性。确保定期查察用户列表和权限,遵照最小权限原则,只为用户分配他们实际需要的权限。希望这篇指南能帮助友友们在生产环境中更好地管理和保护你的 NebulaGraph 数据库。
参考文献身份验证 - NebulaGraph Database 手册Documentation for NebulaGraph Database
https://docs.nebula-graph.com.cn/3.8.0/7.data-security/1.authentication/1.authentication/
如果友友们有任何题目或需要更多帮助,请查阅官方文档或接洽 NebulaGraph 的支持团队。
希望这篇征文能够清楚地指导读者完成 NebulaGraph 3.8.0 的用户认证设置,仅供参考。如果有更多详细的题目或需要进一步的帮助,请随时告知。


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

美食家大橙子

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表