Я подключаюсь из контейнерного приложения asp. net core 3.1, выполняющего ядро EF с первым кодом, к экземпляру Amazon Aurora с совместимостью PostgreSQL и wi sh для выполнения поворота учетных данных базы данных. Я настроил роль, представляющую владельца базы данных, и роль, представляющую текущие действительные учетные данные для входа, срок действия которых мы истечем и заменим новыми учетными данными.
Я последовал предложению из этого сообщения в блоге: http://davidhollenberger.com/2017/03/16/postgres-credential-rotation/, что по сути:
create role db_owner nologin;
create role foo_a with encrypted password ...;
grant db_owner to foo_a;
alter role foo_a set role db_owner;
Я понимаю, что когда foo_a входит в postgres, их роль по умолчанию устанавливается в db_owner. Если я захожу в базу данных, используя psql
, похоже, это работает последовательно.
Однако в EF Core при подключении с использованием учетных данных базы данных foo_a
, переносящих базу данных в новую схему, владелец объекта новых объектов отображается как foo_a
.
Пример:
List of relations
Schema | Name | Type | Owner
--------+------+-------+----------------------------------------
public | test | table | foo_a
Я ожидал, что владельцем будет db_owner
, поскольку foo_a
всегда должен входить в систему как db_owner
.
Могу ли я что-то сделать из EF Core или при настройке базы данных postgresql, которая позволит нам установить владельца по умолчанию для всех объектов, созданных пользователем, для группы ролей, представляющей нашего владельца базы данных? Я не хочу sh делать эти временные учетные записи своего рода "суперпользователем" для экземпляра, поскольку у нас есть несколько арендаторов в нашем экземпляре базы данных, вместо этого я sh должен иметь нечто похожее на роль "dbo", которая имеет владелец базы данных и временные пользователи всегда будут подключаться как роль 'dbo'.