要访问Amazon RDS数据库实例,用户需要特定权限.这是使用AWS IAM(身份和访问管理)配置的.在本教程中,我们将了解如何完成此配置.
配置涉及两个部分.
身份验证
访问控制
身份验证
它涉及创建用户名,密码并为用户生成访问密钥.借助访问密钥,可以对AWS RDS服务进行编程访问. SDK和CLI工具使用访问密钥以加密方式登录请求.
我们可以使用IAM角色对用户进行身份验证.但该角色未附加到任何特定用户,而是任何用户都可以临时承担该角色并完成所需任务.任务结束后,可以撤消角色,并且用户将失去身份验证功能.
访问控制
用户通过身份验证后,将生效附加到该用户确定了您可以进行的任务类型.下面是一个策略示例,它允许在数据库引擎MySQL的t2.micro实例上创建RDS数据库实例.
{ "Version": "2018-09-11", "Statement": [ { "Sid": "AllowCreateDBInstanceOnly", "Effect": "Allow", "Action": [ "rds:CreateDBInstance" ], "Resource": [ "arn:aws:rds:*:123456789012:db:test*", "arn:aws:rds:*:123456789012:og:default*", "arn:aws:rds:*:123456789012:pg:default*", "arn:aws:rds:*:123456789012:subgrp:default" ], "Condition": { "StringEquals": { "rds:DatabaseEngine": "mysql", "rds:DatabaseClass": "db.t2.micro" } } } ]}
对任何RDS资源的操作
在下面的示例中,我们看到一个策略允许对任何RDS资源进行任何描述操作. *符号用于表示任何资源.
{ "Version":"2012-10-17", "Statement":[ { "Sid":"AllowRDSDescribe", "Effect":"Allow", "Action":"rds:Describe*", "Resource":"*" } ]}
禁止删除数据库实例
以下政策禁止用户删除特定数据库实例.
{ "Version":"2012-10-17", "Statement":[ { "Sid":"DenyDelete1", "Effect":"Deny", "Action":"rds:DeleteDBInstance", "Resource":"arn:aws:rds:us-west-2:123456789012:db:my-mysql-instance" } ]}