среда/архитектура
dbc-server (Frontend, интеграция KeyCloak)-создает/обновляет пользователей, назначает роли высокого уровня, отправляет события через Rabbitmq. Подключите, прекращайте сеансы и т. Д.
Postgresql Одиночный кластер (многие базы данных: hazna, click, ...).
Цель: единственный логический пользователь (KeyCloak имени пользователя) может присутствовать/использоваться в нескольких базах данных, но должен иметь различные привилегии для DataBase. Пример: в базе данных HAZNA пользователь должен быть владельцем (полные привилегии по этому DB/Schema), в то время как в базе данных клика одним и тем же пользователем должен быть Project_cru (без удаления).
Сводка задачи
Postgres Роли являются кластерами-глобальными. Я использовал глобальные роли (например, Project_owner, Project_cru). Я также предоставил привилегии по публичной схеме (по умолчанию) или по нескольким схемам. В результате, когда я назначаю Project_owner пользователю (или грант Project_owner Privileges на публике), этот пользователь эффективно становится владельцем в других базах данных-даже когда я явно не намеревался, чтобы для этих баз данных. Ожидайте
alice предоставлена hazna_owner (или project_owner только для hazna) ⇒ полные привилегии только в hazna.
alice предоставлен Clic Db.
Что на самом деле происходит
Использование глобальной ролевой проекты_ундер + предоставление этой ролевой привилегии на общественных (или на нескольких DB/схеме) заставляет Алису действовать как владелец и в других DBS. Роли/привилегии, по-видимому, являются «глобальными» с точки зрения приложения, поэтому DB-специфическая изоляция теряется.
Соответствующий код Java (агент)
Я прикрепляю точный метод, который выполняет Create/Enectable/Disable/Password Sync-вот где Grants/Revokes выполняются:
root (my-nection). /> PostgreSQL Роли являются кластерными глобальными. Грантовая роль пользователю-это картирование в кластере. Привилегии предоставляются на объектах (схема/таблицы) внутри каждой базы данных. Если вы предоставили Project_Owner Privileges на публике во многих DBS, а Алиса предоставлена Project_Owner, у нее будут эти привилегии повсюду, где существуют эти гранты схемы. Я попытался добавить фильтрацию current_database (), но это не работает для ролевого членства. < /P>
Что я попробовал /считал < /p>
Роли префикса на базу данных (например, hazna_owner, click_owner)-работает, но создает много ролей и управления. Схемы click_data, назначить привилегии глобальным ролям на схему) - работает только в том случае, если я не предоставляю привилегии общественности. Если я непреднамеренно предоставлен на публике, утечка привилегий. Это централизует картирование, но требует дополнительного хранилища данных и логики синхронизации. DB B)-Каков рекомендуемый, безопасный подход с производством с наименее оперативной болью? Держите таблицу отображения и позвольте агенту запустить грант/отображение на отображение? Пример надежного SQL -запроса, чтобы получить роли, которые имеют привилегии в данной схеме/базе данных? (Я думал, что has_schema_privilege (C.RolName ,: Schema_Name, 'Использование') или HAS_TABLE_PRIVILEGE, является ли это правильным/заслуживающим доверия?) Создание и гранты (сценарии /схема миграции), чтобы избежать ручных ошибок? has_schema_privilege) для реализации рекомендуемого подхода.
ловушки, чтобы избежать (публичные схемы, привилегии по умолчанию, именование ролей, риски безопасности).
Подробнее здесь: https://stackoverflow.com/questions/797 ... s-privileg
PostgreSQL: тот же пользователь должен иметь разные роли в отношении базы данных, но роли/привилегии применяются во всем ⇐ JAVA
Программисты JAVA общаются здесь
1758790088
Anonymous
среда/архитектура
dbc-server (Frontend, интеграция KeyCloak)-создает/обновляет пользователей, назначает роли высокого уровня, отправляет события через Rabbitmq. Подключите, прекращайте сеансы и т. Д.
Postgresql Одиночный кластер (многие базы данных: hazna, click, ...).
Цель: единственный логический пользователь (KeyCloak имени пользователя) может присутствовать/использоваться в нескольких базах данных, но должен иметь различные привилегии для DataBase. Пример: в базе данных HAZNA пользователь должен быть владельцем (полные привилегии по этому DB/Schema), в то время как в базе данных клика одним и тем же пользователем должен быть Project_cru (без удаления).
Сводка задачи
Postgres Роли являются кластерами-глобальными. Я использовал глобальные роли (например, Project_owner, Project_cru). Я также предоставил привилегии по публичной схеме (по умолчанию) или по нескольким схемам. В результате, когда я назначаю Project_owner пользователю (или грант Project_owner Privileges на публике), этот пользователь эффективно становится владельцем в других базах данных-даже когда я явно не намеревался, чтобы для этих баз данных. Ожидайте
alice предоставлена hazna_owner (или project_owner только для hazna) ⇒ полные привилегии только в hazna.
alice предоставлен Clic Db.
Что на самом деле происходит
Использование глобальной ролевой проекты_ундер + предоставление этой ролевой привилегии на общественных (или на нескольких DB/схеме) заставляет Алису действовать как владелец и в других DBS. Роли/привилегии, по-видимому, являются «глобальными» с точки зрения приложения, поэтому DB-специфическая изоляция теряется.
Соответствующий код Java (агент)
Я прикрепляю точный метод, который выполняет Create/Enectable/Disable/Password Sync-вот где Grants/Revokes выполняются:
root (my-nection). /> PostgreSQL Роли являются кластерными глобальными. Грантовая роль пользователю-это картирование в кластере. Привилегии предоставляются на объектах (схема/таблицы) внутри каждой базы данных. Если вы предоставили Project_Owner Privileges на публике во многих DBS, а Алиса предоставлена Project_Owner, у нее будут эти привилегии повсюду, где существуют эти гранты схемы. Я попытался добавить фильтрацию current_database (), но это не работает для ролевого членства. < /P>
Что я попробовал /считал < /p>
Роли префикса на базу данных (например, hazna_owner, click_owner)-работает, но создает много ролей и управления. Схемы click_data, назначить привилегии глобальным ролям на схему) - работает только в том случае, если я не предоставляю привилегии общественности. Если я непреднамеренно предоставлен на публике, утечка привилегий. Это централизует картирование, но требует дополнительного хранилища данных и логики синхронизации. DB B)-Каков рекомендуемый, безопасный подход с производством с наименее оперативной болью? Держите таблицу отображения и позвольте агенту запустить грант/отображение на отображение? Пример надежного SQL -запроса, чтобы получить роли, которые имеют привилегии в данной схеме/базе данных? (Я думал, что has_schema_privilege (C.RolName ,: Schema_Name, 'Использование') или HAS_TABLE_PRIVILEGE, является ли это правильным/заслуживающим доверия?) Создание и гранты (сценарии /схема миграции), чтобы избежать ручных ошибок? has_schema_privilege) для реализации рекомендуемого подхода.
ловушки, чтобы избежать (публичные схемы, привилегии по умолчанию, именование ролей, риски безопасности).
Подробнее здесь: [url]https://stackoverflow.com/questions/79774499/postgresql-same-user-must-have-different-roles-per-database-but-roles-privileg[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия