Представления
Представления парольных политик
pp_password_detailed
— для мониторинга состояния ролей;pp_password
— для просмо тра кеша парольных политик.
Примечание:
В случае обращения к выводу
view
при отключенных парольных политиках (password_policies_enable = 'off'
) вернется пустая таблица, а также будет выведено предупреждение (WARNING
).
pp_password_detailed
Представление для мониторинга состояния ролей.
Название поля | Описание | Пример вывода | Источник |
---|---|---|---|
roleid | ID пользователя | user1 | Данные пользователя, хранящиеся в кеше |
fail_counter | Счетчик неудачных аутентификаций | 6 | Данные пользователя, хранящиеся в кеше |
last_fail_time | Метка времени последней неудачной аутентификации | 2020-09-15, 12:01:25.740155+03 | Данные пользователя, хранящиеся в кеше |
grace_success_counter | Счетчик входов после истечения времени жизни пароля | 0 | Данные пользователя, хранящиеся в кеше |
last_success_time | Метка времени последней удачн ой аутентификации | Данные пользователя, хранящиеся в кеше | |
create_time | Метка времени создания пароля | 2020-09-15, 12:00:52.848626+03 | Данные пользователя, хранящиеся в таблице pg_pp_password |
unblock_expiry_time | Метка времени разблокировки | Данные пользователя, хранящиеся в кеше | |
istransportpassword | Является ли данный пароль транспортным | f | |
is_auth_available | Доступна ли аутентификация | f | check_policy_for_max_age && check_policy_for_lockout && check_policy_for_inactivity_check && check_policy_for_password_check && check_lockout && check_inactivity && check_password_age |
is_blocked | Заблокирован ли пользователь | t | !(check_lockout && check_inactivity && check_password_age) |
check_policy_for_max_age | Проверка значений политики для проверки времени жизни пароля | t | Результат функций проверки политик перед самой проверкой. Сначала проверяется, что все необходимые политики заданы (не NULL ), затем начинается проверка пользователя на блок по количеству неудачных аутентификаций (lockout ). Возможна ошибка, если включена настройкаdeny_default (запрет использования настроек из файла postgresql.conf ), а политика не задана или задана не полностью |
check_policy_for_max_age_text | Проверка значений политики для проверки времени жизни пароля (текстовый вывод) | OK | Результат функций проверки политик перед непосредственно проверкой |
check_policy_for_lockout | Проверка значений политики для блокировки по количеству неудачных аутентификаций | t | Результат функций проверки политик перед непосредственно проверкой |
check_policy_for_lockout_text | Проверка значений политики для блокировки по количеству неудачных аутентификаций (текстовый вывод) | OK | Результат функций проверки политик перед непосредственно проверкой |
check_policy_for_inactivity_check | Проверка значений политики для проверки блока по времени неактивности | t | Результат функций проверки политик перед непосредственно проверкой |
check_policy_for_inactivity_check_text | Проверка значений политики для проверки блока по времени неактивности (текстовый вывод) | OK | Результат функций проверки политик перед непосредственно проверкой |
check_policy_for_password_check | Проверка значений политики для проверки нового пароля | t | Результат функций проверки политик перед непосредственно проверкой |
check_policy_for_password_check_text | Проверка значений политики для проверки нового пароля (текстовый вывод) | OK | Результат функций проверки политик перед непосредственно проверкой |
check_lockout | Проверка блока по количеству неудачных аутентификаций | f | Результат проверок аутентификации (что увидит пользователь, если попробует войти с правильными данными аутентификации) |
check_lockout_text | Проверка блока по количеству неудачных аутентификаций (текстовый вывод) | Role wasn't unblocked. Role was blocked with 6 fail authentification attempts. Last fail at 15.09.2020 12:01:25 | Результат проверок аутентификации |
check_inactivity | Проверка блока по неактивности | t | Результат проверок аутентификации |
check_inactivity_text | Проверка блока по неактивности (текстовый вывод) | OK. Last success authentification time is undefined. | Результат проверок аутентификации |
check_password_age | Проверка блока по времени жизни пароля | t | Результат проверок аутентификации |
check_password_age_text | Проверка блока по времени жизни пароля (текстовый вывод) | Max password age check passed. Password will expire in 39 days | Результат проверок аутентификации |
check_policy_for_transport_password | Проверка значений политики для проверки транспортного пароля | t | Результат проверки транспортного пароля |
check_policy_for_transport_password_text | Проверка значений политики для проверки транспортного пароля (текстовый вывод) | OK | Результат проверки транспортного пароля |
check_transport_password_life_time | Проверка времени жизни транспортного пароля | t | Результат проверки транспортного пароля |
check_transport_password_life_time_text | Проверка времени жизни транспортного пароля (текстовый вывод) | OK. Transport password is not expired. | Результат проверки транспортного пароля |
DDL
View "pg_catalog.pp_password_detailed"
Column | Type | Collation | Nullable | Default | Storage | Description
------------------------------------------+--------------------------+-----------+----------+---------+----------+-------------
roloid | regrole | | | | plain |
failcounter | integer | | | | plain |
lastfailtime | timestamp with time zone | | | | plain |
gracesuccesscounter | integer | | | | plain |
lastsuccesstime | timestamp with time zone | | | | plain |
createtime | timestamp with time zone | | | | plain |
unblockexpirytime | timestamp with time zone | | | | plain |
istransportpassword | boolean | | | | plain |
is_auth_available | boolean | | | | plain |
is_blocked | boolean | | | | plain |
check_policy_for_max_age | boolean | | | | plain |
check_policy_for_max_age_text | text | | | | extended |
check_policy_for_lockout | boolean | | | | plain |
check_policy_for_lockout_text | text | | | | extended |
check_policy_for_inactivity_check | boolean | | | | plain |
check_policy_for_inactivity_check_text | text | | | | extended |
check_policy_for_password_check | boolean | | | | plain |
check_policy_for_password_check_text | text | | | | extended |
check_lockout | boolean | | | | plain |
check_lockout_text | text | | | | extended |
check_inactivity | boolean | | | | plain |
check_inactivity_text | text | | | | extended |
check_password_age | boolean | | | | plain |
check_password_age_text | text | | | | extended |
check_policy_for_transport_password | boolean | | | | plain |
check_policy_for_transport_password_text | text | | | | extended |
check_transport_password_life_time | boolean | | | | plain |
check_transport_password_life_time_text | text | | | | extended |
View definition:
SELECT pp.roleid AS roloid,
pp.fail_counter AS failcounter,
pp.last_fail_time AS lastfailtime,
pp.grace_success_counter AS gracesuccesscounter,
pp.last_success_time AS lastsuccesstime,
pp.create_time AS createtime,
pp.unblock_expiry_time AS unblockexpirytime,
pp.is_transport_password AS istransportpassword,
pp.is_auth_available,
pp.is_blocked,
pp.check_policy_for_max_age,
pp.check_policy_for_max_age_text,
pp.check_policy_for_lockout,
pp.check_policy_for_lockout_text,
pp.check_policy_for_inactivity_check,
pp.check_policy_for_inactivity_check_text,
pp.check_policy_for_password_check,
pp.check_policy_for_password_check_text,
pp.check_lockout,
pp.check_lockout_text,
pp.check_inactivity,
pp.check_inactivity_text,
pp.check_password_age,
pp.check_password_age_text,
pp.check_policy_for_transport_password,
pp.check_policy_for_transport_password_text,
pp.check_transport_password_life_time,
pp.check_transport_password_life_time_text
FROM pp_check_role_all() pp(roleid, fail_counter, last_fail_time, grace_success_counter, last_success_time, create_time, unblock_expiry_time, is_transport_password, is_aut
h_available, is_blocked, check_policy_for_max_age, check_policy_for_max_age_text, check_policy_for_lockout, check_policy_for_lockout_text, check_policy_for_inactivity_check,
check_policy_for_inactivity_check_text, check_policy_for_password_check, check_policy_for_password_check_text, check_lockout, check_lockout_text, check_inactivity, check_inac
tivity_text, check_password_age, check_password_age_text, check_policy_for_transport_password, check_policy_for_transport_password_text, check_transport_password_life_time, c
heck_transport_password_life_time_text);
pp_password
Представление для просмотра кеша парольных политик.
Название поля | Описание | Пример вывода | Источник |
---|---|---|---|
roleid | ID пользователя | user1 | Данные пользователя, хранящиеся в кеше |
fail_counter | Счетчик неудачных аутентификаций | 6 | Данные пользователя, хранящиеся в кеше |
last_fail_time | Временная метка последней неудачной аутентификации | 2020-09-15, 12:01:25.740155+03 | Данные пользователя, хранящиеся в кеше |
grace_success_counter | Счетчик входов после истечения времени жизни пароля | 0 | Данные пользователя, хранящиеся в кеше |
last_success_time | Временная метка последней удачной аутентификации | Данные пользователя, хранящиеся в кеше | |
create_time | Метка времени создания пароля | 2020-09-15, 12:00:52.848626+03 | Данные пользователя, хранящиеся в таблице pg_pp_password |
unblock_expiry_time | Метка времени разблокировки | Данные пользователя, хранящиеся в кеше | |
istransportpassword | Является ли данный пароль транспортным | f |
DDL
View "pg_catalog.pp_password"
Column | Type | Collation | Nullable | Default | Storage | Description
---------------------+--------------------------+-----------+----------+---------+---------+-------------
roloid | regrole | | | | plain |
failcounter | integer | | | | plain |
lastfailtime | timestamp with time zone | | | | plain |
gracesuccesscounter | integer | | | | plain |
lastsuccesstime | timestamp with time zone | | | | plain |
createtime | timestamp with time zone | | | | plain |
unblockexpirytime | timestamp with time zone | | | | plain |
istransportpassword | boolean | | | | plain |
View definition:
SELECT pp.roleid AS roloid,
pp.fail_counter AS failcounter,
pp.last_fail_time AS lastfailtime,
pp.grace_success_counter AS gracesuccesscounter,
pp.last_success_time AS lastsuccesstime,
pp.create_time AS createtime,
pp.unblock_expiry_time AS unblockexpirytime,
pp.is_transport_password AS istransportpassword
FROM get_password_policy_profile() pp(roleid, fail_counter, last_fail_time, grace_success_counter, last_success_time, create_time, unblock_expiry_time, is_transport_password);
Представления обфускации данных
Представления предоставляемые функциональностью:
Объект | Аргументы, атрибуты | Возвращаемое значение | Описание |
---|---|---|---|
anon.pg_identifiers | - | attrelid::oid , attnum::integer , relname::name , attname::name , format_type::text , col_description::text , indirect_identifier::boolean , priority::integer | Список автоматически созданных правил маскировки, при использовании функции anon.detect() |
anon.pg_masked_roles | - | rolname::name , rolsuper::boolean , rolinherit::boolean , rolcreaterole::boolean , rolcreatedb::boolean , rolcanlogin::boolean , rolreplication::boolean , rolconnlimit::integer , rolpassword::text , rolvaliduntil::timestamp with time zone , rolbypassrls::boolean , rolconfig::text[] , oid::oid , grace_period::interval , grace_period_source::text , grace_time_left::interval , rolprevpassword::text , hasmask::boolean | Список ролей экземпляра, дополненный признаком маскирования роли |
anon.pg_masking_rules | - | attrelid::oid , attnum::integer , relnamespace::regnamespace , relname::name , attname::name , format_type::text , col_description::text , masking_function::text , masking_value::text , priority::integer , masking_filter::text , trusted_schema::boolean | Список правил маскировки |
anon.pg_masks | - | attrelid::oid , attnum::integer , relnamespace::regnamespace , relname::name , attname::name , format_type::text , col_description::text , masking_function::text , masking_value::text , priority::integer , masking_filter::text , trusted_schema::boolean | Список правил маскировки (deprecated ) |
anon.pg_identifiers
DDL
View "anon.pg_identifiers"
Column | Type | Collation | Nullable | Default | Storage | Description
---------------------+---------+-----------+----------+---------+----------+-------------
attrelid | oid | | | | plain |
attnum | integer | | | | plain |
relname | name | | | | plain |
attname | name | | | | plain |
format_type | text | | | | extended |
col_description | text | C | | | extended |
indirect_identifier | boolean | | | | plain |
priority | integer | | | | plain |
View definition:
WITH const AS (
SELECT '%(quasi|indirect) identifier%'::text AS pattern_indirect_identifier
)
SELECT sl.objoid AS attrelid,
sl.objsubid AS attnum,
c.relname,
a.attname,
format_type(a.atttypid, a.atttypmod) AS format_type,
sl.label AS col_description,
lower(sl.label) ~ similar_to_escape(k.pattern_indirect_identifier, '#'::text) AS indirect_identifier,
100 AS priority
FROM const k,
pg_seclabel sl
JOIN pg_class c ON sl.classoid = c.tableoid AND sl.objoid = c.oid
JOIN pg_attribute a ON a.attrelid = c.oid AND sl.objsubid = a.attnum
WHERE a.attnum > 0 AND NOT a.attisdropped AND lower(sl.label) ~ similar_to_escape(k.pattern_indirect_identifier, '#'::text) AND sl.provider = current_setting('anon.k_anonymity_provider'::text);
anon.pg_masked_roles
DDL
View "anon.pg_masked_roles"
Column | Type | Collation | Nullable | Default | Storage | Description
---------------------+--------------------------+-----------+----------+---------+----------+-------------
rolname | name | | | | plain |
rolsuper | boolean | | | | plain |
rolinherit | boolean | | | | plain |
rolcreaterole | boolean | | | | plain |
rolcreatedb | boolean | | | | plain |
rolcanlogin | boolean | | | | plain |
rolreplication | boolean | | | | plain |
rolconnlimit | integer | | | | plain |
rolpassword | text | | | | extended |
rolvaliduntil | timestamp with time zone | | | | plain |
rolbypassrls | boolean | | | | plain |
rolconfig | text[] | C | | | extended |
oid | oid | | | | plain |
grace_period | interval | | | | plain |
grace_period_source | text | | | | extended |
grace_time_left | interval | | | | plain |
rolprevpassword | text | | | | extended |
hasmask | boolean | | | | plain |
View definition:
SELECT r.rolname,
r.rolsuper,
r.rolinherit,
r.rolcreaterole,
r.rolcreatedb,
r.rolcanlogin,
r.rolreplication,
r.rolconnlimit,
r.rolpassword,
r.rolvaliduntil,
r.rolbypassrls,
r.rolconfig,
r.oid,
r.grace_period,
r.grace_period_source,
r.grace_time_left,
r.rolprevpassword,
anon.hasmask(r.oid::regrole) AS hasmask
FROM pg_roles r;
anon.pg_masking_rules
DDL
View "anon.pg_masking_rules"
Column | Type | Collation | Nullable | Default | Storage | Description
------------------+--------------+-----------+----------+---------+----------+-------------
attrelid | oid | | | | plain |
attnum | integer | | | | plain |
relnamespace | regnamespace | | | | plain |
relname | name | | | | plain |
attname | name | | | | plain |
format_type | text | | | | extended |
col_description | text | C | | | extended |
masking_function | text | C | | | extended |
masking_value | text | C | | | extended |
priority | integer | | | | plain |
masking_filter | text | C | | | extended |
trusted_schema | boolean | | | | plain |
View definition:
WITH const AS (
SELECT '%MASKED +WITH +FUNCTION +#"%#(%#)#"%'::text AS pattern_mask_column_function,
'MASKED +WITH +VALUE +#"%#" ?'::text AS pattern_mask_column_value
), rules_from_default AS (
SELECT c.oid AS attrelid,
a.attnum,
c.relnamespace::regnamespace AS relnamespace,
c.relname,
a.attname,
format_type(a.atttypid, a.atttypmod) AS format_type,
NULL::text AS col_description,
NULL::text AS masking_function,
anon.masking_value_for_column(c.oid, a.attnum::integer, 'anon'::text) AS masking_value,
0 AS priority
FROM pg_class c
JOIN pg_namespace n ON n.oid = c.relnamespace
JOIN pg_attribute a ON a.attrelid = c.oid
LEFT JOIN pg_attrdef d ON a.attrelid = d.adrelid AND a.attnum = d.adnum
WHERE a.attnum > 0 AND (n.nspname <> ALL (ARRAY['information_schema'::name, 'pg_catalog'::name, 'pg_toast'::name, 'anon'::name])) AND NOT a.attisdropped AND current_setting('anon.privacy_by_default'::text)::boolean
), rules_from_seclabels AS (
SELECT sl.objoid AS attrelid,
sl.objsubid AS attnum,
c.relnamespace::regnamespace AS relnamespace,
c.relname,
a.attname,
format_type(a.atttypid, a.atttypmod) AS format_type,
sl.label AS col_description,
TRIM(BOTH FROM SUBSTRING(sl.label SIMILAR k.pattern_mask_column_function ESCAPE '#'::text)) AS masking_function,
TRIM(BOTH FROM SUBSTRING(sl.label SIMILAR k.pattern_mask_column_value ESCAPE '#'::text)) AS masking_value,
100 AS priority
FROM const k,
pg_seclabel sl
JOIN pg_class c ON sl.classoid = c.tableoid AND sl.objoid = c.oid
JOIN pg_attribute a ON a.attrelid = c.oid AND sl.objsubid = a.attnum
WHERE a.attnum > 0 AND NOT a.attisdropped AND (sl.label ~ similar_to_escape(k.pattern_mask_column_function, '#'::text) OR sl.label ~ similar_to_escape(k.pattern_mask_column_value, '#'::text)) AND sl.provider = 'anon'::text
), rules_from_all AS (
SELECT rules_from_default.attrelid,
rules_from_default.attnum,
rules_from_default.relnamespace,
rules_from_default.relname,
rules_from_default.attname,
rules_from_default.format_type,
rules_from_default.col_description,
rules_from_default.masking_function,
rules_from_default.masking_value,
rules_from_default.priority
FROM rules_from_default
UNION
SELECT rules_from_seclabels.attrelid,
rules_from_seclabels.attnum,
rules_from_seclabels.relnamespace,
rules_from_seclabels.relname,
rules_from_seclabels.attname,
rules_from_seclabels.format_type,
rules_from_seclabels.col_description,
rules_from_seclabels.masking_function,
rules_from_seclabels.masking_value,
rules_from_seclabels.priority
FROM rules_from_seclabels
)
SELECT DISTINCT ON (rules_from_all.attrelid, rules_from_all.attnum) rules_from_all.attrelid,
rules_from_all.attnum,
rules_from_all.relnamespace,
rules_from_all.relname,
rules_from_all.attname,
rules_from_all.format_type,
rules_from_all.col_description,
rules_from_all.masking_function,
rules_from_all.masking_value,
rules_from_all.priority,
COALESCE(rules_from_all.masking_function, rules_from_all.masking_value) AS masking_filter,
( SELECT count(sl.label) > 0 AND bool_and(sl.label = 'TRUSTED'::text)
FROM pg_seclabel sl,
anon.get_function_schema(rules_from_all.masking_function) f(schema)
WHERE f.schema <> ''::text AND sl.objoid = f.schema::regnamespace::oid) AS trusted_schema
FROM rules_from_all
ORDER BY rules_from_all.attrelid, rules_from_all.attnum, rules_from_all.priority DESC;
anon.pg_masks
DDL
View "anon.pg_masks"
Column | Type | Collation | Nullable | Default | Storage | Description
------------------+--------------+-----------+----------+---------+----------+-------------
attrelid | oid | | | | plain |
attnum | integer | | | | plain |
relnamespace | regnamespace | | | | plain |
relname | name | | | | plain |
attname | name | | | | plain |
format_type | text | | | | extended |
col_description | text | C | | | extended |
masking_function | text | C | | | extended |
masking_value | text | C | | | extended |
priority | integer | | | | plain |
masking_filter | text | C | | | extended |
trusted_schema | boolean | | | | plain |
View definition:
SELECT pg_masking_rules.attrelid,
pg_masking_rules.attnum,
pg_masking_rules.relnamespace,
pg_masking_rules.relname,
pg_masking_rules.attname,
pg_masking_rules.format_type,
pg_masking_rules.col_description,
pg_masking_rules.masking_function,
pg_masking_rules.masking_value,
pg_masking_rules.priority,
pg_masking_rules.masking_filter,
pg_masking_rules.trusted_schema
FROM anon.pg_masking_rules;