Представления#

Представления парольных политик#

  • 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;