Amazon RDS - контроль доступа к БД
Для доступа к инстансу БД Amazon RDS пользователю требуются определенные разрешения. Это настраивается с помощью AWS IAM (управление идентификацией и доступом). В этом руководстве мы увидим, как выполняется эта конфигурация.
Конфигурация состоит из двух частей.
Authentication
Контроль доступа
Он включает в себя создание имени пользователя, пароля и генерацию ключей доступа для пользователя. С помощью ключа доступа можно осуществлять программный доступ к сервису AWS RDS. Инструменты SDK и CLI используют ключи доступа для криптографического входа в систему с запросом.
Мы также можем использовать роль IAM для аутентификации пользователя. Но роль не привязана к какому-либо конкретному пользователю, скорее любой пользователь может временно взять на себя роль и выполнить требуемую задачу. После выполнения задачи роль может быть отозвана, и пользователь теряет возможность аутентификации.
После аутентификации пользователя политика, прикрепленная к этому пользователю, определяет тип задач, которые пользователь может выполнять. Ниже приведен пример политики, которая позволяет создать экземпляр БД RDS на экземпляре t2.micro для СУБД MySQL.
{
"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"
}
]
}