NebulaGraph 3.8.0 符合等保要求的安全设置全攻略
前言在数字化浪潮中,数据安全愈发重要。对于利用 NebulaGraph 3.8.0 图数据库的用户而言,保障数据安满是构建可靠体系的关键环节。本日,小支童鞋就来为大家详细梳理怎样启用和设置用户认证,并实施用户权限的三权分立,以满意国家信息安全品级保护(等保)要求,让友友们的 NebulaGraph 应用更加安全可靠。https://i-blog.csdnimg.cn/direct/eb70c562b8e84f80ad5f467ddd34faae.png
NebulaGraph 作为一款高性能分布式图数据库,在大规模数据存储和复杂查询场景中表现卓越。但在生产环境下,若不重视安全设置,数据安全将面临巨大挑战。启用用户认证并实现用户权限三权分立,是提拔 NebulaGraph 安全性、符合等保要求的须要之举。接下来,我将一步步带领大家深入了解并实践这些关键安全步伐。
一 、身份验证
当客户端连接到 NebulaGraph 时,NebulaGraph 会创建一个会话,会话中存储连接的各种信息,如果开启了身份验证,就会将会话映射到对应的用户。
NebulaGraph 支持两种身份验证方式:本地身份验证和 LDAP 验证。
1、默认设置的风险
默认环境下,NebulaGraph 的认证功能是关闭的,这意味着任何用户都可以利用 root 用户名和恣意暗码连接到数据库。这在测试环境中可能是方便的,但在生产环境中是不安全的。如果你发现可以利用随意的暗码登录,阐明认证尚未启用。
1.1 登录
默认暗码就能登录
# cd /opt/app/nebula-graph
# ls
bincluster.iddataetclogsnebula-consolepidsscriptsshare
# ./nebula-console --addr 127.0.0.1 --port 9669 -u root -p nebula
Welcome!
(root@nebula) [(none)]>
https://i-blog.csdnimg.cn/img_convert/b03ec9be4f9381c79e86e930ea0bc271.png
随意暗码也能登录
# ./nebula-console --addr 127.0.0.1 --port 9669 -u root -p 1234
Welcome!
(root@nebula) [(none)]>
https://i-blog.csdnimg.cn/img_convert/8f23796fb9ae8ffaf2d4e9eb73c21045.png
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:可选项,需要手动添加该参数。多次输入错误暗码后,账户被锁定的时间。单位:秒。
https://i-blog.csdnimg.cn/img_convert/56e56464ef4ee39bc173c3bb87c5e839.png
# ls
bincluster.iddataetclogsnebula-consolepidsscriptsshare
# cd etc/
# ls
nebula-graphd.conf nebula-metad.conf.default nebula-storaged.conf.production
nebula-graphd.conf.default nebula-metad.conf.productionnebula-storaged-listener.conf.production
nebula-graphd.conf.productionnebula-storaged.conf
nebula-metad.conf nebula-storaged.conf.default
# vim nebula-graphd.conf
#
https://i-blog.csdnimg.cn/img_convert/0375ebe98eb6a8cd34122aece4803945.png
2.2 修改后的认证参数
# Enable authorization
--enable_authorize=true
https://i-blog.csdnimg.cn/img_convert/16c87a5b48ba1b41d9774695c377e813.png
3、重启 NebulaGraph 服务
# cd scripts/
# ls
meta-transfer-tools.shnebula-metad.servicenebula-storaged-listener.serviceutils.sh
nebula-graphd.service nebula.service nebula-storaged.service
# bash nebula.service restart all
Stopping nebula-metad...
Done
Starting nebula-metad...
Done
Stopping nebula-graphd...
Done
Starting nebula-graphd...
Done
Stopping nebula-storaged...
Done
Starting nebula-storaged...
Done
#
https://i-blog.csdnimg.cn/img_convert/5a52061b5ce7ecc92093a6d6d9b420bb.png
4、登录进入 Nebula Console
# ls
bincluster.iddataetclogsnebula-consolepidsscriptsshare
# ./nebula-console --addr 127.0.0.1 --port 9669 -u root -p nebula
Welcome!
(root@nebula) [(none)]>
https://i-blog.csdnimg.cn/img_convert/0ae8e56cd69cfe7be9e8d6ec2e8baf11.png
5、查看用户列表(SHOW USERS)
(root@nebula) [(none)]> show users;
+---------+
| Account |
+---------+
| "root"|
+---------+
Got 1 rows (time spent 1.987ms/3.031978ms)
Mon, 13 Jan 2025 17:02:53 CST
(root@nebula) [(none)]>
https://i-blog.csdnimg.cn/img_convert/824f6b5f8f387825bc41735316e041ca.png
6、修改root用户暗码(ALTER USER)
一旦启用了认证,你应该立即修改 root 用户的默认暗码。
执行ALTER USER语句可以修改用户暗码,修改时不需要提供旧暗码。当前仅 God 脚色用户(即root用户)能够执行ALTER USER语句。
(root@nebula) [(none)]>
(root@nebula) [(none)]> ALTER USER root WITH PASSWORD 'Nebula2024';
Execution succeeded (time spent 1.651ms/2.240427ms)
Tue, 14 Jan 2025 14:24:27 CST
(root@nebula) [(none)]>
https://i-blog.csdnimg.cn/img_convert/880b6b853ff95abbb6994743ef6003ba.png
7、退出登录,再次登录
(root@nebula) [(none)]> exit
Bye root!
Tue, 14 Jan 2025 14:25:02 CST
# ./nebula-console --addr 127.0.0.1 --port 9669 -u root -p nebula
2025/01/14 14:25:36 Fail to create a new session from connection pool
Error:
failed to authenticate, error code: -1001, error msg: Invalid password
# ./nebula-console --addr 127.0.0.1 --port 9669 -u root -p 1234
2025/01/14 14:25:46 Fail to create a new session from connection pool
Error:
failed to authenticate, error code: -1001, error msg: Invalid password
#
https://i-blog.csdnimg.cn/img_convert/0480c97d23e2b3dbf7a772bf22746d17.png
默认暗码报错了,已经无法登录。
8、验证更改后的暗码登录:
尝试用新的凭据重新连接到 Nebula Graph,确认暗码更改已见效。
#
# ./nebula-console --addr 127.0.0.1 --port 9669 -u root -p Nebula2024
Welcome!
(root@nebula) [(none)]>
https://i-blog.csdnimg.cn/img_convert/b7069384902c13546b9e4557b71bb03d.png
修改后的暗码测试可以登录
二、创建用户
1、创建用户(CREATE USER)
执行CREATE USER语句可以创建新的 NebulaGraph 用户。当前仅 God 脚色用户(即root用户)能够执行CREATE USER语句。
● 语法
CREATE USER <user_name> ;
○ 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、查看用户
创建用户前我们先查看有那些用户;
(root@nebula) [(none)]> show users;
+---------+
| Account |
+---------+
| "root"|
+---------+
Got 1 rows (time spent 1.666ms/2.577728ms)
Tue, 14 Jan 2025 14:29:14 CST
(root@nebula) [(none)]>
https://i-blog.csdnimg.cn/img_convert/65f7d3f4046cb0596984abfe587d30df.png
查看后,目前只有Root用户
3、创建利用员:operator
(root@nebula) [(none)]> CREATE USER operator WITH PASSWORD 'Nebula2023';
Execution succeeded (time spent 1.614ms/2.128208ms)
Tue, 14 Jan 2025 15:37:00 CST
(root@nebula) [(none)]>
https://i-blog.csdnimg.cn/img_convert/4024236cb316197b7394fbec9c5c25cd.png
4、创建审计管理员:sysaudit
(root@nebula) [(none)]> CREATE USER sysaudit WITH PASSWORD 'Nebula2024';
Execution succeeded (time spent 1.741ms/2.349151ms)
Tue, 14 Jan 2025 15:37:52 CST
(root@nebula) [(none)]>
https://i-blog.csdnimg.cn/img_convert/6c4e4231f93b1e0772eb962029f99407.png
5、创建安全管理员:sysadmin
(root@nebula) [(none)]> CREATE USER sysadmin WITH PASSWORD 'Nebula2025';
Execution succeeded (time spent 1.743ms/2.32076ms)
Tue, 14 Jan 2025 15:38:14 CST
(root@nebula) [(none)]>
https://i-blog.csdnimg.cn/img_convert/fa4e96ca18ec1bad2e3991160d615893.png
6、再次查看用户列表(SHOW USERS)
(root@nebula) [(none)]> show users;
+------------+
| Account |
+------------+
| "root" |
| "operator" |
| "sysaudit" |
| "sysadmin" |
+------------+
Got 4 rows (time spent 1.589ms/2.312696ms)
Tue, 14 Jan 2025 15:38:42 CST
(root@nebula) [(none)]>
https://i-blog.csdnimg.cn/img_convert/4e9df878dab7d897aa13562b5bd74d07.png
三、管理用户
1、创建示例空间
创建用户授权前,我们先创建示例空间;
(root@nebula) [(none)]> CREATE SPACE IF NOT EXISTS space1 (vid_type=FIXED_STRING(30));
Execution succeeded (time spent 1.542ms/2.076204ms)
Tue, 14 Jan 2025 14:39:50 CST
(root@nebula) [(none)]> CREATE SPACE IF NOT EXISTS space2 (vid_type=FIXED_STRING(30));
Execution succeeded (time spent 1.165ms/1.730596ms)
Tue, 14 Jan 2025 14:40:02 CST
(root@nebula) [(none)]>
https://i-blog.csdnimg.cn/img_convert/e82ec4e7ed9b3a8e4f61bb8c8bfae7a8.png
2、查看空间 SHOW SPACES;
(root@nebula) [(none)]> SHOW SPACES;
+----------+
| Name |
+----------+
| "space1" |
| "space2" |
+----------+
Got 2 rows (time spent 1.452ms/2.197014ms)
Tue, 14 Jan 2025 14:40:45 CST
(root@nebula) [(none)]>
https://i-blog.csdnimg.cn/img_convert/d05eebed16028130e7670d5b52e127f4.png
3、授权用户(GRANT ROLE)
执行GRANT ROLE语句可以将指定图空间的内置脚色权限授予用户。当前仅 God 脚色用户和 Admin 脚色用户能够执行GRANT ROLE语句。脚色权限的阐明,请拜见内置脚色权限。nebula> GRANT ROLE admin ON biao_test TO admin;
3.1 sysaudit用户授权空间1 为USER脚色
(root@nebula) [(none)]>
(root@nebula) [(none)]> GRANT ROLE USER ON space1 TO sysaudit;
Execution succeeded (time spent 1.773ms/2.34586ms)
Tue, 14 Jan 2025 14:42:19 CST
(root@nebula) [(none)]>
https://i-blog.csdnimg.cn/img_convert/156c2abb4673b39cd68b7121026c73d5.png
User 对权限内的图空间拥有 Schema 的只读权限。
3.2 sysadmin用户授权空间2 为ADMIN脚色
(root@nebula) [(none)]> GRANT ROLE ADMIN ON space2 TO sysadmin;
Execution succeeded (time spent 1.422ms/2.008812ms)
Tue, 14 Jan 2025 14:43:28 CST
(root@nebula) [(none)]>
https://i-blog.csdnimg.cn/img_convert/d8b53b9b2d4261af427a87cedf70d68e.png
Admin 对权限内的图空间拥有 Schema 和 data 的读写权限
4、测试 sysadmin 安全管理员 ADMIN脚色授权空间1和空间2
# ./nebula-console --addr 127.0.0.1 --port 9669 -u sysadmin -p Nebula2025
Welcome!
(sysadmin@nebula) [(none)]> SHOW SPACES;
+----------+
| Name |
+----------+
| "space2" |
+----------+
Got 1 rows (time spent 1.606ms/2.585068ms)
Tue, 14 Jan 2025 14:45:13 CST
(sysadmin@nebula) [(none)]>
https://i-blog.csdnimg.cn/img_convert/ca1d55c0e49ccb0c6568f4c2f029164c.png
sysadmin 安全管理员能看到,并读写空间2
5、测试 sysaudit 审计管理员 USER脚色授权空间1和空间2
# ./nebula-console --addr 127.0.0.1 --port 9669 -u sysaudit -p Nebula2024
Welcome!
(sysaudit@nebula) [(none)]> SHOW SPACES;
+----------+
| Name |
+----------+
| "space1" |
+----------+
Got 1 rows (time spent 1.329ms/2.212657ms)
Tue, 14 Jan 2025 14:46:42 CST
(sysaudit@nebula) [(none)]>
https://i-blog.csdnimg.cn/img_convert/0c34e326d69ec2b2aea01fffdcd4c08a.png
sysaudit 审计管理员 只能看到读空间1,不能写空间1
6、删除用户(DROP USER)
执行DROP USER语句可以删除用户。当前仅 God 脚色用
(root@nebula) [(none)]> DROP USER sysadmin;
Execution succeeded (time spent 2.054ms/2.764438ms)
Tue, 14 Jan 2025 14:54:08 CST
(root@nebula) [(none)]> DROP USER sysaudit;
Execution succeeded (time spent 1.642ms/2.261796ms)
Tue, 14 Jan 2025 14:54:15 CST
https://i-blog.csdnimg.cn/img_convert/f220783a0b60674a581ecafbfe50d262.png
7、查看用户列表(SHOW USERS)
(root@nebula) [(none)]> show users;
+---------+
| Account |
+---------+
| "root"|
+---------+
Got 1 rows (time spent 1.264ms/1.875929ms)
Tue, 14 Jan 2025 14:54:24 CST
(root@nebula) [(none)]>
https://i-blog.csdnimg.cn/img_convert/580efc9bca9100f736db2fd60f19dac2.png
四、用户默认暗码登录报错-故障清除
可以接纳临时禁用认证以重置暗码
如果无法通过现有凭证登录到 Nebula Console,可以考虑暂时禁用认证来重置 root 暗码。请注意,这会带来安全风险,仅应在受控环境中举行,并尽快恢复认证功能。
1. 编辑设置文件:再次打开 nebula-graphd.conf 文件,并将 --enable_authorize 设置为 false。
2. 重启服务:重启全部相关的 Nebula Graph 服务。
3. 进入 Nebula Console:利用默认凭证(如 root 和空字符串)登录。
4. 修改暗码:执行以下下令更改 root 用户的暗码。
ALTER USER 'root' WITH PASSWORD 'Nebula2024';
5. 恢复认证:再次编辑设置文件,将 --enable_authorize 设置回 true,并重启服务。
总结
通过上述步骤,友友们已经乐成启用了 NebulaGraph 3.8.0 的用户认证机制,并增强了体系的安全性。确保定期查察用户列表和权限,遵照最小权限原则,只为用户分配他们实际需要的权限。希望这篇指南能帮助友友们在生产环境中更好地管理和保护你的 NebulaGraph 数据库。
参考文献身份验证 - NebulaGraph Database 手册Documentation for NebulaGraph Databasehttps://csdnimg.cn/release/blog_editor_html/release2.3.8/ckeditor/plugins/CsdnLink/icons/icon-default.png?t=P1C7https://docs.nebula-graph.com.cn/3.8.0/7.data-security/1.authentication/1.authentication/
如果友友们有任何题目或需要更多帮助,请查阅官方文档或接洽 NebulaGraph 的支持团队。
希望这篇征文能够清楚地指导读者完成 NebulaGraph 3.8.0 的用户认证设置,仅供参考。如果有更多详细的题目或需要进一步的帮助,请随时告知。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]