В 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, который препятствует доступу.
Приветствия !!!