{"id":516,"date":"2023-09-04T04:04:49","date_gmt":"2023-09-04T07:04:49","guid":{"rendered":"https:\/\/powerembedded.com.br\/blog\/?p=516"},"modified":"2023-09-04T04:11:10","modified_gmt":"2023-09-04T07:11:10","slug":"novo-recurso-seguranca-a-nivel-de-linha-rls-estatico","status":"publish","type":"post","link":"https:\/\/powerembedded.com.br\/blog\/novo-recurso-seguranca-a-nivel-de-linha-rls-estatico\/","title":{"rendered":"Novo recurso: Seguran\u00e7a a n\u00edvel de linha (RLS) est\u00e1tico"},"content":{"rendered":"<h2>O RLS din\u00e2mico<\/h2>\n<p>O Power BI Embedded j\u00e1 suporta o recurso de Seguran\u00e7a a n\u00edvel de linha (RLS) h\u00e1 um bom tempo, onde voc\u00ea cria uma role no seu modelo do Power BI, implementa as regras de seguran\u00e7a e filtros necess\u00e1rios, especifica o nome da role que deve ser usada para filtrar as permiss\u00f5es e o sistema usa essa role para todos os usu\u00e1rios que visualizem o relat\u00f3rio, deixando toda a gest\u00e3o das permiss\u00f5es em um \u00fanico local e permitindo usar DAX para tratar todas as regras.<\/p>\n<p>Nesse formato, a regra de RLS, criada no Power BI Desktop, receber\u00e1 o e-mail do usu\u00e1rio que est\u00e1 acessando o relat\u00f3rio e ser\u00e1 respons\u00e1vel por realizar os filtros utilizando esse e-mail, com base nas regras criadas e nesse caso, \u00e9 necess\u00e1rio manter no seu modelo uma tabela com os usu\u00e1rios e permiss\u00f5es de acordo com a regra do RLS.<\/p>\n<p>Talvez seja necess\u00e1rio alterar a tabela de permiss\u00f5es para permitir filtros em diferentes n\u00edveis de hierarquia e usar fun\u00e7\u00f5es DAX para configurar usu\u00e1rios com acesso total (sem o RLS).<\/p>\n<p>A configura\u00e7\u00e3o do RLS din\u00e2mico \u00e9 feita na tela de edi\u00e7\u00e3o do relat\u00f3rio, conforme a tela abaixo, onde voc\u00ea dever\u00e1 informar o nome da role que ser\u00e1 aplicada para todos os usu\u00e1rios que forem visualizar.<\/p>\n<p><a href=\"https:\/\/powerembedded.com.br\/blog\/wp-content\/uploads\/2023\/09\/Novo-recurso-Row-level-security-RLS-1.png\"><img fetchpriority=\"high\" decoding=\"async\" class=\"alignnone wp-image-518\" src=\"https:\/\/powerembedded.com.br\/blog\/wp-content\/uploads\/2023\/09\/Novo-recurso-Row-level-security-RLS-1.png\" alt=\"\" width=\"946\" height=\"545\" srcset=\"https:\/\/powerembedded.com.br\/blog\/wp-content\/uploads\/2023\/09\/Novo-recurso-Row-level-security-RLS-1.png 1274w, https:\/\/powerembedded.com.br\/blog\/wp-content\/uploads\/2023\/09\/Novo-recurso-Row-level-security-RLS-1-300x173.png 300w, https:\/\/powerembedded.com.br\/blog\/wp-content\/uploads\/2023\/09\/Novo-recurso-Row-level-security-RLS-1-1024x590.png 1024w, https:\/\/powerembedded.com.br\/blog\/wp-content\/uploads\/2023\/09\/Novo-recurso-Row-level-security-RLS-1-768x442.png 768w, https:\/\/powerembedded.com.br\/blog\/wp-content\/uploads\/2023\/09\/Novo-recurso-Row-level-security-RLS-1-18x10.png 18w\" sizes=\"(max-width: 946px) 100vw, 946px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<h2>O RLS est\u00e1tico<\/h2>\n<p>Para empresas que precisam ou gostariam de criar v\u00e1rias roles e utilizar uma role de acordo com o usu\u00e1rio que est\u00e1 acessando, sem a necessidade de ter uma tabela no modelo com os usu\u00e1rios e permiss\u00f5es, existe o RLS est\u00e1tico, que \u00e9 mais simples de configurar, mas apresenta performance pior e \u00e9 mais dif\u00edcil de gerenciar as permiss\u00f5es.<\/p>\n<p>Esse \u00e9 o formato que \u00e9 utilizado pelo Power BI servi\u00e7o para definir o RLS.<\/p>\n<p>Para acessar a tela do RLS est\u00e1tico, v\u00e1 na p\u00e1gina de relat\u00f3rios, clique no bot\u00e3o de &#8220;A\u00e7\u00f5es&#8221; e clique no item do menu &#8220;Seguran\u00e7a&#8221;<\/p>\n<p><a href=\"https:\/\/powerembedded.com.br\/blog\/wp-content\/uploads\/2023\/09\/Novo-recurso-Row-level-security-RLS-2.png\"><img decoding=\"async\" class=\"alignnone size-full wp-image-519\" src=\"https:\/\/powerembedded.com.br\/blog\/wp-content\/uploads\/2023\/09\/Novo-recurso-Row-level-security-RLS-2.png\" alt=\"\" width=\"279\" height=\"289\" srcset=\"https:\/\/powerembedded.com.br\/blog\/wp-content\/uploads\/2023\/09\/Novo-recurso-Row-level-security-RLS-2.png 279w, https:\/\/powerembedded.com.br\/blog\/wp-content\/uploads\/2023\/09\/Novo-recurso-Row-level-security-RLS-2-12x12.png 12w\" sizes=\"(max-width: 279px) 100vw, 279px\" \/><\/a><\/p>\n<p>Nesse formato, voc\u00ea ir\u00e1 visualizar a lista das roles que existem nesse modelo.<\/p>\n<p><a href=\"https:\/\/powerembedded.com.br\/blog\/wp-content\/uploads\/2023\/09\/Novo-recurso-Row-level-security-RLS-3.png\"><img decoding=\"async\" class=\"alignnone wp-image-520\" src=\"https:\/\/powerembedded.com.br\/blog\/wp-content\/uploads\/2023\/09\/Novo-recurso-Row-level-security-RLS-3.png\" alt=\"\" width=\"809\" height=\"536\" srcset=\"https:\/\/powerembedded.com.br\/blog\/wp-content\/uploads\/2023\/09\/Novo-recurso-Row-level-security-RLS-3.png 1274w, https:\/\/powerembedded.com.br\/blog\/wp-content\/uploads\/2023\/09\/Novo-recurso-Row-level-security-RLS-3-300x199.png 300w, https:\/\/powerembedded.com.br\/blog\/wp-content\/uploads\/2023\/09\/Novo-recurso-Row-level-security-RLS-3-1024x678.png 1024w, https:\/\/powerembedded.com.br\/blog\/wp-content\/uploads\/2023\/09\/Novo-recurso-Row-level-security-RLS-3-768x509.png 768w, https:\/\/powerembedded.com.br\/blog\/wp-content\/uploads\/2023\/09\/Novo-recurso-Row-level-security-RLS-3-18x12.png 18w\" sizes=\"(max-width: 809px) 100vw, 809px\" \/><\/a><\/p>\n<p>Clique no bot\u00e3o &#8220;Gerenciar&#8221; para visualizar a lista de usu\u00e1rios e grupos do sistema e adicion\u00e1-los nessa role, para esse modelo.<\/p>\n<p><a href=\"https:\/\/powerembedded.com.br\/blog\/wp-content\/uploads\/2023\/09\/Novo-recurso-Row-level-security-RLS-4.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-521\" src=\"https:\/\/powerembedded.com.br\/blog\/wp-content\/uploads\/2023\/09\/Novo-recurso-Row-level-security-RLS-4.png\" alt=\"\" width=\"633\" height=\"459\" srcset=\"https:\/\/powerembedded.com.br\/blog\/wp-content\/uploads\/2023\/09\/Novo-recurso-Row-level-security-RLS-4.png 798w, https:\/\/powerembedded.com.br\/blog\/wp-content\/uploads\/2023\/09\/Novo-recurso-Row-level-security-RLS-4-300x218.png 300w, https:\/\/powerembedded.com.br\/blog\/wp-content\/uploads\/2023\/09\/Novo-recurso-Row-level-security-RLS-4-768x557.png 768w, https:\/\/powerembedded.com.br\/blog\/wp-content\/uploads\/2023\/09\/Novo-recurso-Row-level-security-RLS-4-18x12.png 18w\" sizes=\"(max-width: 633px) 100vw, 633px\" \/><\/a><\/p>\n<p>Agora basta salvar nessa tela para confirmar as altera\u00e7\u00f5es e ativar o RLS nesse relat\u00f3rio.<\/p>\n<p>Caso o seu relat\u00f3rio tenha uma role RLS definida, n\u00e3o se esque\u00e7a de adicionar todos os usu\u00e1rios que v\u00e3o acessar o relat\u00f3rio em alguma role RLS, din\u00e2mica ou est\u00e1tica, caso contr\u00e1rio, essa pessoa ir\u00e1 ver uma mensagem de erro ao tentar visualizar o relat\u00f3rio.<\/p>\n<p>&nbsp;<\/p>\n<p><strong>Como funciona o fluxo do RLS no sistema<\/strong><\/p>\n<ol>\n<li>Ao visualizar o relat\u00f3rio, o sistema ir\u00e1 verificar se o usu\u00e1rio logado est\u00e1 em alguma das roles est\u00e1ticas, seja com acesso direto ou pelo grupo. Caso o usu\u00e1rio esteja associado, essa role ser\u00e1 enviada para renderizar o relat\u00f3rio.<\/li>\n<li>Caso o usu\u00e1rio logado n\u00e3o esteja em nenhuma role est\u00e1tica, ent\u00e3o o sistema ir\u00e1 verificar se existe alguma role din\u00e2mica cadastrada. Se houver, ela ser\u00e1 utilizada.<\/li>\n<li>Se nenhum dos cen\u00e1rios acima for verdadeiro, ent\u00e3o o sistema n\u00e3o ir\u00e1 enviar nenhuma role para o RLS, e ir\u00e1 considerar que o relat\u00f3rio n\u00e3o possui regras de RLS.<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<p><strong>Observa\u00e7\u00f5es:<\/strong><\/p>\n<ul>\n<li>Como o comportamento \u00e9 igual ao do Power BI servi\u00e7o, o mais comum \u00e9 um usu\u00e1rio estar em apenas 1 role por relat\u00f3rio. Caso ele esteja em mais de 1 role, o comportamento do RLS pode ser um pouco diferente do esperado (como j\u00e1 acontece no Power BI servi\u00e7o).<\/li>\n<li>Caso exista alguma regra de RLS criada no relat\u00f3rio e a role n\u00e3o for informada pelo sistema, ser\u00e1 gerada uma mensagem de erro ao tentar visualizar o relat\u00f3rio, seja porque o usu\u00e1rio n\u00e3o est\u00e1 em nenhuma role est\u00e1tica ou porque o nome da role din\u00e2mica n\u00e3o foi especificado.<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>O RLS din\u00e2mico O Power BI Embedded j\u00e1 suporta o recurso de Seguran\u00e7a a n\u00edvel de linha (RLS) h\u00e1 um bom tempo, onde voc\u00ea cria uma role no seu modelo do Power BI, implementa as regras de seguran\u00e7a e filtros necess\u00e1rios, especifica o nome da role que deve ser usada para filtrar as permiss\u00f5es e&hellip; <br \/> <a class=\"read-more\" href=\"https:\/\/powerembedded.com.br\/blog\/novo-recurso-seguranca-a-nivel-de-linha-rls-estatico\/\">Leia mais<\/a><\/p>\n","protected":false},"author":1,"featured_media":519,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"content-type":"","footnotes":""},"categories":[7],"tags":[],"class_list":["post-516","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-novidades"],"_links":{"self":[{"href":"https:\/\/powerembedded.com.br\/blog\/wp-json\/wp\/v2\/posts\/516","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/powerembedded.com.br\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/powerembedded.com.br\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/powerembedded.com.br\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/powerembedded.com.br\/blog\/wp-json\/wp\/v2\/comments?post=516"}],"version-history":[{"count":2,"href":"https:\/\/powerembedded.com.br\/blog\/wp-json\/wp\/v2\/posts\/516\/revisions"}],"predecessor-version":[{"id":523,"href":"https:\/\/powerembedded.com.br\/blog\/wp-json\/wp\/v2\/posts\/516\/revisions\/523"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/powerembedded.com.br\/blog\/wp-json\/wp\/v2\/media\/519"}],"wp:attachment":[{"href":"https:\/\/powerembedded.com.br\/blog\/wp-json\/wp\/v2\/media?parent=516"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/powerembedded.com.br\/blog\/wp-json\/wp\/v2\/categories?post=516"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/powerembedded.com.br\/blog\/wp-json\/wp\/v2\/tags?post=516"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}