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"
      }
   ]
}