Учебники

Amazon RDS — контроль доступа к БД

Для доступа к экземпляру Amazon RDS DB пользователю необходимы определенные разрешения. Это настраивается с помощью AWS IAM (управление удостоверениями и доступом). В этом уроке мы увидим, как это делается.

Конфигурация состоит из двух частей.

  • Аутентификация

  • Контроль доступа

Аутентификация

Контроль доступа

Аутентификация

Это включает в себя создание имени пользователя, пароля и генерацию ключей доступа для пользователя. С помощью клавиши доступа можно сделать программный доступ к сервису AWS RDS. Инструменты SDK и CLI используют ключи доступа для криптографического входа с запросом.

Мы также можем использовать роль IAM для аутентификации пользователя. Но роль не привязана к какому-либо конкретному пользователю, скорее любой пользователь может временно взять на себя роль и выполнить требуемую задачу. После завершения задачи роль может быть отозвана, и пользователь теряет возможность аутентификации.

Контроль доступа

После аутентификации пользователя политика, прикрепленная к этому пользователю, определяет тип задач, которые может выполнять пользователь. Ниже приведен пример политики, которая позволяет создавать экземпляр RDS DB на экземпляре t2.micro для DB Engine 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":"*"
      }
   ]
}

Запретить удаление экземпляра БД

Приведенная ниже политика запрещает пользователю удалять конкретный экземпляр БД.