Amazon RDS – 数据库访问控制
Amazon RDS – 数据库访问控制
要访问 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"
}
]
}