RDS Postgres DB IAM generate_db_auth_token не работает - PullRequest
0 голосов
/ 08 мая 2019

В AWS У меня есть База данных RDS Postgres .В базе данных есть пользователи, которые могут подключаться через IAM (они имеют роль IAM_USER ).Соединение устанавливается программно через Python и Boto3 , например:

Настройка клиента RDS

self.rds = boto3.client(
    'rds',
    region_name = rds_region,
    aws_access_key_id = aws_access_key_id,
    aws_secret_access_key = aws_secret_access_key,
)

Генерация токена

return self.rds.generate_db_auth_token(
    self.db_hostname,
    self.port,
    self.db_username,
    Region=self.region
)

Создается действительный токен, который позволяет входить в Postgres, когда я использую ключи AWS пользователя IAM, который в значительной степени имеет доступ ко всему в AWS.

Однако, когда я использую ключи AWS пользователя, у которого есть только AmazonRDSFullAccess и AmazonRDSDataFullAccess , создается токен, который похож на действительный, но не принимается в качестве пароля, когда япопытка войти в Postgres, например:

OperationalError: (psycopg2.OperationalError) FATAL:  PAM authentication failed for user "test_iam_user"

Этот пользователь может, насколько я могу судить, правильно обращаться ко всем моим ресурсам RDS, он просто не генерирует действительный токен.

IБуду признателен, если кто-нибудь расскажет, что такое отсутствующее разрешение (я) и / или что я делаю неправильно.

Было бы также полезно узнать лучший способ устранения проблем с разрешениями, подобных этим, в AWS.найти конкретную реrmission, который препятствует доступу.

Приветствия !!!

1 Ответ

0 голосов
/ 10 мая 2019

Мой коллега Джун решил это!

Мне не хватало следующего разрешения:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "rds-db:connect"
            ],
            "Resource": [
                "arn:aws:rds-db:eu-west-1:<aws_account_number>:dbuser:<rds_db_resource_id>/<postgres_user>"
            ]
        }
    ]
}

Как только это разрешение было добавлено пользователю IAM вместе с AmazonRDSFullAccess или AmazonRDSDataFullAccess,затем был создан действительный токен, который можно использовать в качестве пароля для входа в базу данных RDS.

...