开发者社区 问答 正文

附录:用户及 Schema 管理


在使用 RDS 的过程中,由于 superuser 不完全放开,因此我们建议您在使用数据库时遵循单独建立用户并通过 schema 管理您的私有空间。

操作步骤


[backcolor=transparent]说明: 本例中,myuser 是建立实例时创建的管理账号,newuser 是当前需要新建的账号。

  1. 建立有登录权限的用户。[backcolor=transparent]CREATE USER newuser LOGIN PASSWORD [backcolor=transparent]'password'[backcolor=transparent];
参数说明如下:
  • USER:要创建的用户名,如 [backcolor=transparent]newuser
  • password:用户名对应的密码,如 [backcolor=transparent]password

为新用户建立 schema。
  1. [backcolor=transparent]CREATE SCHEMA newuser[backcolor=transparent];
  2. [backcolor=transparent]GRANT newuser to myuser[backcolor=transparent];
  3. [backcolor=transparent]ALTER SCHEMA myuser OWNER TO newuser[backcolor=transparent];
  4. [backcolor=transparent]REVOKE newuser FROM myuser[backcolor=transparent];

[backcolor=transparent]说明:
  • 如果在进行 ALTER SCHEMA newuser OWNER TO newuser 之前没有将 newuser 加入到 myuser 角色,将会出现如下权限问题:
    1. [backcolor=transparent] ERROR[backcolor=transparent] :[backcolor=transparent]   must be member of role [backcolor=transparent] "newuser"
  • 从安全角度出发,在处理完 OWNER 的授权后,请将 newuser 移出 myuser 角色以提高安全性。
使用 newuser 登录数据库。
  1. [backcolor=transparent]psql [backcolor=transparent]-[backcolor=transparent]U newuser [backcolor=transparent]-[backcolor=transparent]h intranet4example[backcolor=transparent].[backcolor=transparent]pg[backcolor=transparent].[backcolor=transparent]rds[backcolor=transparent].[backcolor=transparent]aliyuncs[backcolor=transparent].[backcolor=transparent]com [backcolor=transparent]-[backcolor=transparent]p [backcolor=transparent]3433[backcolor=transparent] pg001
  2. [backcolor=transparent]Password[backcolor=transparent] [backcolor=transparent]for[backcolor=transparent] user newuser[backcolor=transparent]:
  3. [backcolor=transparent]psql[backcolor=transparent].[backcolor=transparent]bin [backcolor=transparent]([backcolor=transparent]9.4[backcolor=transparent].[backcolor=transparent]4[backcolor=transparent],[backcolor=transparent] server [backcolor=transparent]9.4[backcolor=transparent].[backcolor=transparent]1[backcolor=transparent])
  4. [backcolor=transparent]Type[backcolor=transparent] [backcolor=transparent]"help"[backcolor=transparent] [backcolor=transparent]for[backcolor=transparent] help[backcolor=transparent].

展开
收起
云栖大讲堂 2017-10-17 17:00:02 1619 分享 版权
阿里云 AI 助理回答

在阿里云RDS(Relational Database Service)的使用中,确实推荐采用细粒度的权限管理来增强数据库的安全性。您提供的操作步骤很好地展示了如何在PostgreSQL类型的RDS实例中创建一个具有特定权限的新用户,并通过Schema来管理这个用户的私有空间。下面是对这些步骤的一个简要解析和补充说明:

  1. 创建新用户:

    CREATE USER newuser LOGIN PASSWORD 'password';
    

    这条命令创建了一个名为newuser的新用户,并为其设置了登录密码。确保选择一个强密码以增加安全性。

  2. 为新用户建立Schema:

    CREATE SCHEMA newuser;
    GRANT USAGE ON SCHEMA newuser TO newuser;
    ALTER SCHEMA newuser OWNER TO newuser;
    

    首先创建了一个与用户名相同的Schema(逻辑命名空间),然后授权该用户可以使用此Schema,并将其设置为Schema的所有者。注意,原示例中的GRANT newuser to myuser和后续的REVOKE操作可能有些误导,实际上应首先确保新用户能访问其自己的Schema,因此使用了GRANT USAGE ON SCHEMA newuser TO newuser;

  3. 安全实践:

    • 在实际操作中,直接将新用户从管理账号(如myuser)角色移出的操作可能不是必要的,除非你有特别的权限控制需求。通常,合理地分配权限,比如只给新用户访问自己Schema的权限,就已经足够安全。
    • 确保对用户权限进行最小化分配原则,即仅赋予执行任务所需的最小权限集。
  4. 登录验证: 提供的命令展示了如何使用新创建的用户连接到RDS实例:

    psql -U newuser -h intranet4example.pg.rds.aliyuncs.com -p 3433 pg001
    

    注意:这里的intranet4example.pg.rds.aliyuncs.com、端口号3433以及数据库名pg001需要根据您的实际RDS实例信息进行替换。此外,确保您的网络配置允许从当前环境访问RDS实例。

总结来说,遵循这样的步骤可以帮助您在阿里云RDS上实现更安全、有序的数据库用户管理。记得在操作前备份重要数据,并且在生产环境中实施任何更改前,在测试环境中先行验证。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答