我想为 AWS (PostGreSQL) 中的所有 RDS 实例创建一个只读帐户。我首先创建了一个 IAM 组并附加了 AmazonRDSReadOnlyAccess 策略。我创建了一个新的 IAM 用户并将他放入此组中。我无法使用此新的只读用户连接到我们的数据库(使用我们的管理员帐户测试成功)。我现在意识到数据库本身没有只读用户。这引出了我三个问题:
- 当我可以在数据库内创建只读 DB 用户时,为我们的 RDS 实例创建只读 IAM 用户是否有意义?
- 当我通过命令行访问数据库时,例如 psql --host=servername --port=portnumber --username=username --password --dbname=databasename。据我了解,这是数据库用户的名称,那么创建单独的 RDS IAM 只读用户有什么意义吗?
- 如果我有一个 RDS 的只读 IAM 用户,那么如果其他人为他们创建了 DB 写入帐户,他们是否仍然具有写入权限?
答案1
IAM 用户和 DB 用户 100% 分离。彼此互不影响,各自服务于不同的目的。
IAM 用户
这些用户使用 AWS API 读取/更改/删除服务器。他们无法访问或以其他方式对数据库通过psql
应用程序。
IAM 用户可以执行以下操作:
- 创建 RDS 实例
- 从 RDS 实例读取信息
- 删除 RDS 实例
- 创建和恢复快照
- 修改 RDS 选项和参数
以上所有操作均使用 AWS SDKs 和 CLI 完成。
数据库用户
这些用户读取/更改/删除数据库中的数据。他们无法管理或以其他方式对 RDS 实例执行任何操作。
DB 用户可以执行以下操作:
- 选择数据
- 插入数据
- 更新数据
- 删除数据
- 创建数据库
- 管理其他数据库用户
以上所有内容均使用psql
例如完成。