/
Настройка динамичСской RLS

Настройка динамичСской RLS

  • Если для Π½Π°Π±ΠΎΡ€Π° Π΄Π°Π½Π½Ρ‹Ρ… Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π° Π½ΠΈ ΠΎΠ΄Π½Π° RLS-Ρ€ΠΎΠ»ΡŒ, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ всС Π΄Π°Π½Π½Ρ‹Π΅ этого Π½Π°Π±ΠΎΡ€Π°. Если ΠΆΠ΅ для Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π½Π°Π±ΠΎΡ€Π° создана хотя Π±Ρ‹ ΠΎΠ΄Π½Π° RLS-Ρ€ΠΎΠ»ΡŒ, Ρ‚ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚ сообщСниС ΠΎΠ± ошибкС, Ссли Π΅ΠΌΡƒ Π½Π΅ присвоСна никакая RLS-Ρ€ΠΎΠ»ΡŒ.

  • ΠŸΠ΅Ρ€Π΅Π΄ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ настроСк Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΈ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΌΠ°ΠΏΠΏΠ΅Ρ€ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠ².

ΠŸΡ€ΠΈ использовании динамичСской ΠΌΠΎΠ΄Π΅Π»ΠΈ RLS Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π² Keycloak, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ значСния этих Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² Π»ΠΈΠ±ΠΎ ΠΏΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, Π»ΠΈΠ±ΠΎ Π² качСствС массива ΠΏΡ€ΠΈ создании ΠΏΡ€Π°Π²ΠΈΠ» доступа. Для использования ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ примСняСтся функция USERATTRIBUTE, Π° ΠΏΡ€ΠΈ нСобходимости использования Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² примСняСтся функция USERATTRIBUTEASARRAY (см. Π½ΠΈΠΆΠ΅).

Для создания ΠΏΡ€Π°Π²ΠΈΠ» доступа ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ DAX-выраТСния. НиТС прСдставлСн список ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для этой Ρ†Π΅Π»ΠΈ:

НазваниС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

ОписаниС

НазваниС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

ОписаниС

IN

DAX-функция. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ наличия значСния Π² Π·Π°Π΄Π°Π½Π½ΠΎΠΌ спискС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. НапримСр: <Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅> IN {<Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅>, <Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅>, ...}

AND

DAX-функция. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Π»ΠΈ всС условия, ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹Π΅ Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ². Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ TRUE, Ссли всС условия истинны, ΠΈ FALSE, Ссли хотя Π±Ρ‹ ΠΎΠ΄Π½ΠΎ ΠΈΠ· условий Π»ΠΎΠΆΠ½ΠΎ.

НапримСр: AND(<логичСскоС_Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅1>, <логичСскоС_Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅2>)

Π’Π°ΠΊΠΆΠ΅ поддСрТиваСтся логичСский ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ && .

OR

DAX-функция. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… условий ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ TRUE, Ссли хотя Π±Ρ‹ ΠΎΠ΄Π½ΠΎ ΠΈΠ· условий истинно.

НапримСр: OR(<логичСскоС_Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅1>, <логичСскоС_Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅2>)

Π’Π°ΠΊΠΆΠ΅ поддСрТиваСтся логичСский ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ || .

USERATTRIBUTE

ΠŸΡ€ΠΈΠΌΠ΅Π½ΡΠ΅Ρ‚ΡΡ ΠΏΡ€ΠΈ использовании ΠΎΠ΄Π½ΠΎΠ³ΠΎ значСния ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°. Данная функция создана ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ для настройки ΠΏΡ€Π°Π²ΠΈΠ» доступа Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ Visiology.

USERATTRIBUTEASARRAY

ΠŸΡ€ΠΈΠΌΠ΅Π½ΡΠ΅Ρ‚ΡΡ ΠΏΡ€ΠΈ использовании Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°. Данная функция создана ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ для настройки ΠΏΡ€Π°Π²ΠΈΠ» доступа Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ Visiology.

НиТС ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ описаниС процСсса создания ΠΏΡ€Π°Π²ΠΈΠ» доступа с использованиСм этих Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΡ€Π°Π²ΠΈΠ» доступа с использованиСм Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ USERATTRIBUTE

Для настройки Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ шаги:

  1. ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ Keycloak, ввСдя ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ адрСс Π² адрСсной строкС Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°:
    <domain>/v3/keycloak
    Π³Π΄Π΅ <domain> – адрСс вашСго сСрвСра.

  2. ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ консоль администратора ΠΈ Π² Π±ΠΎΠΊΠΎΠ²ΠΎΠΉ ΠΏΠ°Π½Π΅Π»ΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Users:

    keycloak-users.png

  3. Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π±ΡƒΠ΄ΡƒΡ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒΡΡ RLS-Ρ€ΠΎΠ»ΠΈ. Π’ нашСм ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ это Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ivanov:

    user.png

  4. Π’ ΠΎΡ‚ΠΊΡ€Ρ‹Π²ΡˆΠ΅ΠΌΡΡ ΠΎΠΊΠ½Π΅ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π½Π° Π²ΠΊΠ»Π°Π΄ΠΊΡƒ Attributes ΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Add an attribute, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚:

    attribute.png

  5. Π’ ΠΏΠΎΠ»Π΅ Key ΡƒΠΊΠ°ΠΆΠΈΡ‚Π΅ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ City, Π° Π² ΠΏΠΎΠ»Π΅ Value ΡƒΠΊΠ°ΠΆΠΈΡ‚Π΅ Π΅Π³ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π’ нашСм ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ это Π±ΡƒΠ΄Π΅Ρ‚ Π³ΠΎΡ€ΠΎΠ΄ Москва:

    city.png

    ΠšΠ»ΡŽΡ‡ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½Π° Π»Π°Ρ‚ΠΈΠ½ΠΈΡ†Π΅.

  6. НаТмитС Save для сохранСния ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ.

  7. ΠŸΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π² Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡƒΡŽ Ρ€Π°Π±ΠΎΡ‡ΡƒΡŽ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ ΠΈ ΠΎΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ Π½Π°Π±ΠΎΡ€ Π΄Π°Π½Π½Ρ‹Ρ…, для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ€ΠΎΠ»ΠΈ бСзопасности. Π’ нашСм ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ это Π±ΡƒΠ΄Π΅Ρ‚ ΠŸΡ€ΠΎΠ΄Π°ΠΆΠΈ:

    select-dataset.png
  8. Π’ ΠΎΡ‚ΠΊΡ€Ρ‹Π²ΡˆΠ΅ΠΌΡΡ ΠΎΠΊΠ½Π΅ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Π”Π°Π½Π½Ρ‹Π΅ > Π ΠΎΠ»ΠΈ бСзопасности:

    menu.png
  9. Π’ появившСмся ΠΎΠΊΠ½Π΅ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ ΠΊΠ½ΠΎΠΏΠΊΡƒ с крСстиком для создания Ρ€ΠΎΠ»ΠΈ:

    create.png

    Β 

  10. ΠŸΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΡƒΠΉΡ‚Π΅ ΡΠΎΠ·Π΄Π°Π½Π½ΡƒΡŽ Ρ€ΠΎΠ»ΡŒ. ΠœΡ‹ ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π»ΠΈ Π² Москва:

    moscow.png
  11. Для назначСния Ρ€ΠΎΠ»ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ ΠΊΠ½ΠΎΠΏΠΊΡƒ справа ΠΎΡ‚ названия Ρ€ΠΎΠ»ΠΈ:

    click-button2.png

    Β 

  12. Π’ строкС поиска Π½Π°Ρ‡Π½ΠΈΡ‚Π΅ Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ имя ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ (Π² нашСм случаС ivanov):

    find-user.png

    Β 

  13. Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Π½Π°ΠΉΠ΄Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ ΠΠ°Π·Π½Π°Ρ‡ΠΈΡ‚ΡŒ. ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π° созданная Ρ€ΠΎΠ»ΡŒ, ΠΎ Ρ‡Ρ‘ΠΌ систСма ΠΏΡ€ΠΎΠΈΠ½Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅Ρ‚ вас:

    assign-user.png

    Β 

  14. ΠšΠ»ΠΈΠΊΠ½ΠΈΡ‚Π΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ созданной Ρ€ΠΎΠ»ΠΈ Π² Π»Π΅Π²ΠΎΠΉ сторонС Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°. ΠžΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡΡ список Ρ‚Π°Π±Π»ΠΈΡ† Π½Π°Π±ΠΎΡ€Π° Π΄Π°Π½Π½Ρ‹Ρ…, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅:

    table-list2.png

  15. Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ, для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ. Π’ нашСм ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ это Π“ΠΎΡ€ΠΎΠ΄Π°:

    cities.png

    Β 

  16. Π’ ΠΏΠΎΠ»Π΅ справа ΠΎΡ‚ списка Ρ‚Π°Π±Π»ΠΈΡ† Π²Π²Π΅Π΄ΠΈΡ‚Π΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ DAX Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π° Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹. Π’ нашСм ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Иванов, Ρƒ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π² Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ области Π€ΠΈΠ»ΠΈΠ°Π»Ρ‹ CreativeElectronix Ρ€ΠΎΠ»ΡŒ Π—Ρ€ΠΈΡ‚Π΅Π»ΡŒ, ΠΌΠΎΠ³ ΠΏΡ€ΠΎΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅ Π΄Π°Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ относятся ΠΊ Π³ΠΎΡ€ΠΎΠ΄Ρƒ Москва. Для этого ΠΌΡ‹ Π²Π²Π΅Π΄Π΅ΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅:
    'Π“ΠΎΡ€ΠΎΠ΄Π°' [City] = USERATTRIBUTE ("Москва")

    formula.png


    Π”Π°Π½Π½Ρ‹ΠΉ запрос Π²Π΅Ρ€Π½Ρ‘Ρ‚ всС строки ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π“ΠΎΡ€ΠΎΠ΄Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… столбСц City содСрТит Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Москва.

  17. НаТмитС Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ DAX Π² ΠΏΡ€Π°Π²ΠΎΠΌ Π½ΠΈΠΆΠ½Π΅ΠΌ ΡƒΠ³Π»Ρƒ.

Ѐункция USERATTRIBUTE Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ с массивами, содСрТащими ΠΎΠ΄ΠΈΠ½ элСмСнт (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Country = ["ΠšΠΈΡ‚Π°ΠΉ"]). Если массив содСрТит Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ элСмСнта, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ USERATTRIBUTEASARRAY (см. Π½ΠΈΠΆΠ΅).

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Π½Π°Π±ΠΎΡ€ΠΎΠΌ Π΄Π°Π½Π½Ρ‹Ρ… ΠŸΡ€ΠΎΠ΄Π°ΠΆΠΈ, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Иванов Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ доступ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊ Ρ‚Π΅ΠΌ Π΄Π°Π½Π½Ρ‹ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ относятся ΠΊ Π³ΠΎΡ€ΠΎΠ΄Ρƒ МосквС:

dynamic-final.png

Β 

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΡ€Π°Π²ΠΈΠ» доступа с использованиСм Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ USERATTRIBUTEASARRAY

Для настройки Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ шаги:

  1. ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ Keycloak, ввСдя ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ адрСс Π² адрСсной строкС Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°:
    <domain>/v3/keycloak
    Π³Π΄Π΅ <domain> – адрСс вашСго сСрвСра.

  2. ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ консоль администратора ΠΈ Π² Π±ΠΎΠΊΠΎΠ²ΠΎΠΉ ΠΏΠ°Π½Π΅Π»ΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Users:

    keycloak-users.png

  3. Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π±ΡƒΠ΄ΡƒΡ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒΡΡ RLS-Ρ€ΠΎΠ»ΠΈ. Π’ нашСм ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ это ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ivanov:

    user.png

  4. Π’ ΠΎΡ‚ΠΊΡ€Ρ‹Π²ΡˆΠ΅ΠΌΡΡ ΠΎΠΊΠ½Π΅ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π½Π° Π²ΠΊΠ»Π°Π΄ΠΊΡƒ Attributes ΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Add an attribute, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚:

    attribute.png

  5. Π’ ΠΏΠΎΠ»Π΅ Key ΡƒΠΊΠ°ΠΆΠΈΡ‚Π΅ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Countries, Π° Π² ΠΏΠΎΠ»Π΅ Value ΡƒΠΊΠ°ΠΆΠΈΡ‚Π΅ Π΅Π³ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π’ нашСм ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ это Россия:

    dynamic-attribute.png

  6. Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π΅Ρ‰Π΅ нСсколько Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² с Ρ‚Π°ΠΊΠΈΠΌ ΠΆΠ΅ ΠΊΠ»ΡŽΡ‡ΠΎΠΌ. НаличиС Π΅Π΄ΠΈΠ½ΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π° ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ Π½ΠΈΠΌ ΠΊΠ°ΠΊ ΠΊ массиву ΠΏΡ€ΠΈ создании ΠΏΡ€Π°Π²ΠΈΠ» доступа. Π’ нашСм ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΠšΠΈΡ‚Π°ΠΉ ΠΈ ΠšΡƒΠ±Π°:

    dynamic-attributes.png
  7. НаТмитС Save для сохранСния ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ.

  8. ΠŸΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π² Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡƒΡŽ Ρ€Π°Π±ΠΎΡ‡ΡƒΡŽ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ ΠΈ ΠΎΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ Π½Π°Π±ΠΎΡ€ Π΄Π°Π½Π½Ρ‹Ρ…, для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ€ΠΎΠ»ΠΈ бСзопасности. Π’ нашСм ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ это ΠŸΡ€ΠΎΠ΄Π°ΠΆΠΈ:

    select-dataset.png
  9. Π’ ΠΎΡ‚ΠΊΡ€Ρ‹Π²ΡˆΠ΅ΠΌΡΡ ΠΎΠΊΠ½Π΅ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Π”Π°Π½Π½Ρ‹Π΅ > Π ΠΎΠ»ΠΈ бСзопасности:

    menu.png
  10. Π’ появившСмся ΠΎΠΊΠ½Π΅ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ ΠΊΠ½ΠΎΠΏΠΊΡƒ с крСстиком для создания Ρ€ΠΎΠ»ΠΈ:

    create.png

    Β 

  11. ΠŸΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΡƒΠΉΡ‚Π΅ ΡΠΎΠ·Π΄Π°Π½Π½ΡƒΡŽ Ρ€ΠΎΠ»ΡŒ. ΠœΡ‹ ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π»ΠΈ Π΅Ρ‘ Π² ДоступныС страны:

    new-name.png
  12. Для назначСния Ρ€ΠΎΠ»ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ ΠΊΠ½ΠΎΠΏΠΊΡƒ справа ΠΎΡ‚ названия Ρ€ΠΎΠ»ΠΈ:

    assign-role.png
  13. Π’ строкС поиска Π½Π°Ρ‡Π½ΠΈΡ‚Π΅ Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ имя ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ (Π² нашСм случаС ivanov):

    select-user.png
  14. Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Π½Π°ΠΉΠ΄Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ ΠΠ°Π·Π½Π°Ρ‡ΠΈΡ‚ΡŒ. ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π° созданная Ρ€ΠΎΠ»ΡŒ, ΠΎ Ρ‡Ρ‘ΠΌ систСма ΠΏΡ€ΠΎΠΈΠ½Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅Ρ‚ вас:

    assign-user.png

    Β 

  15. ΠšΠ»ΠΈΠΊΠ½ΠΈΡ‚Π΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ созданной Ρ€ΠΎΠ»ΠΈ Π² Π»Π΅Π²ΠΎΠΉ сторонС Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°. ΠžΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡΡ список Ρ‚Π°Π±Π»ΠΈΡ† Π½Π°Π±ΠΎΡ€Π° Π΄Π°Π½Π½Ρ‹Ρ…, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅:

    table-list3.png

  16. Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ, для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ. Π’ нашСм ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ это Π“ΠΎΡ€ΠΎΠ΄Π°:

    table.png

  17. Π’ ΠΏΠΎΠ»Π΅ справа ΠΎΡ‚ списка Ρ‚Π°Π±Π»ΠΈΡ† Π²Π²Π΅Π΄ΠΈΡ‚Π΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ DAX Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π° Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹. Π’ нашСм ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Иванов, Ρƒ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π² Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ области Π€ΠΈΠ»ΠΈΠ°Π»Ρ‹ CreativeElectronix Ρ€ΠΎΠ»ΡŒ Π—Ρ€ΠΈΡ‚Π΅Π»ΡŒ, ΠΌΠΎΠ³ ΠΏΡ€ΠΎΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅ Π΄Π°Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ относятся ΠΊ странам Россия, ΠšΠΈΡ‚Π°ΠΉ ΠΈ ΠšΡƒΠ±Π°. Для этого ΠΌΡ‹ Π²Π²Π΅Π΄Π΅ΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅:
    'Π“ΠΎΡ€ΠΎΠ΄Π°' [Country] IN USERATTRIBUTEASARRAY ("Countries")

    formula2.png


    Π”Π°Π½Π½Ρ‹ΠΉ запрос Π²Π΅Ρ€Π½Ρ‘Ρ‚ всС строки ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π“ΠΎΡ€ΠΎΠ΄Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… столбСц Country содСрТит значСния, ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ Π² Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°Ρ… с ΠΊΠ»ΡŽΡ‡ΠΎΠΌ Countries (Ρ‚.Π΅. Россия, ΠšΠΈΡ‚Π°ΠΉ, ΠšΡƒΠ±Π°).

  18. НаТмитС Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ DAX Π² ΠΏΡ€Π°Π²ΠΎΠΌ Π½ΠΈΠΆΠ½Π΅ΠΌ ΡƒΠ³Π»Ρƒ.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Π½Π°Π±ΠΎΡ€ΠΎΠΌ Π΄Π°Π½Π½Ρ‹Ρ… ΠŸΡ€ΠΎΠ΄Π°ΠΆΠΈ, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Иванов Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ доступ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊ Ρ‚Π΅ΠΌ Π΄Π°Π½Π½Ρ‹ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ относятся ΠΊ странам Россия, ΠšΠΈΡ‚Π°ΠΉ ΠΈ ΠšΡƒΠ±Π°:

dynamic-final2.png

Β 


Π‘ΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ Ρ‚Π°ΠΊΠΆΠ΅

АдминистрированиС Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… областСй
Настройка статичСской RLS

ВрСмя чтСния: 2 ΠΌΠΈΠ½.


НуТна Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ ΠΏΠΎΠΌΠΎΡ‰ΡŒ?

Π‘Π²ΡΠΆΠΈΡ‚Π΅ΡΡŒ с тСхничСской ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ.

Β 

Related content