AWS Redshift User Management#

Keywords: AWS, Amazon, Redshift, User Management, Group, Grant, Revoke, Permission.

Overview#

Redshift 的应用层是基于 Postgres 修改而来, 也有着丰富的 User / User Group 的权限管理功能.

Redshift 的权限管理模型和 IAM 很类似, 都分为 Principal, Resource, Action. 简单来说就是 谁, 能对什么东西, 做什么. 而 User 则是一个具体的账号密码 (如果用 IAM Role 权限管理则不需要密码). Group 则是一个包含多个 User 的集合, group 本身可以被授予权限, 所有被加入到 group 中的用户都会自动获得 group 所有的权限. 这个和 IAM User Group 是类似的. 也是推荐的管理方式.

Note

AWS 推荐的用户管理方式:

  1. 所有的 User 被创建后不要直接用 GRANT 给任何权限.

  2. 创建几个 User Group, 给 User Group 一些权限. 例如 Power User, Developer, Analyst, Business

  3. 用把 User 放入到 Group 中的形式给 User 权限.

User Management 有什么用?#

Important Concepts#

  • User: Single User

  • Group: Group of Users

  • Schema: Group of Tables

  • Privileges: list of operation allowed to operate, such as SELECT, INSERT, UPDATE, DELETE

Important SQL Commands:

Redshift 中的 User 和 IAM Role 如何配合使用#

如果你启用了 IAM Access. 那么你可以用 IAM User / Role 来调用 boto3.redshift_client.get_credentials 来获取一个用户名和密码. 这个用户名一般是 IamUser:your_name 或是 IamRole:role_name 的格式. 实际上 Redshift 会临时创建/更新一个 User, 并且设定一个 session timeout 的时间. 所以本质上如果你要用数据库内的 User / Group Access management 的功能对 IAM User / Role, 只需要对 IAM User 和 Role 相对应的 User 进行管理即可.