{"id":1334,"date":"2020-03-30T12:59:09","date_gmt":"2020-03-30T15:59:09","guid":{"rendered":"http:\/\/thesqltimes.com\/blog\/?p=1334"},"modified":"2020-04-22T16:31:22","modified_gmt":"2020-04-22T19:31:22","slug":"azure-file-share-no-sql-server-3","status":"publish","type":"post","link":"https:\/\/thesqltimes.com\/blog\/2020\/03\/30\/azure-file-share-no-sql-server-3\/","title":{"rendered":"Azure File Share no SQL Server &#8211; [3] Mapeamentos de file shares no Windows"},"content":{"rendered":"<div class=\"pld-like-dislike-wrap pld-template-1\">\r\n    <div class=\"pld-like-wrap  pld-common-wrap\">\r\n    <a href=\"javascript:void(0)\" class=\"pld-like-trigger pld-like-dislike-trigger  \" title=\"Muito \u00fatil!\" data-post-id=\"1334\" data-trigger-type=\"like\" data-restriction=\"cookie\" data-already-liked=\"0\">\r\n                        <i class=\"fas fa-thumbs-up\"><\/i>\r\n                <\/a>\r\n    <span class=\"pld-like-count-wrap pld-count-wrap\">    <\/span>\r\n<\/div><\/div><div class=\"seriesmeta\">Post 3\/5. Este post \u00e9 parte da s\u00e9rie: <a href=\"https:\/\/thesqltimes.com\/blog\/series\/azure-file-share-sql\/\" class=\"series-279\" title=\"Azure File Share no SQL Server\">Azure File Share no SQL Server<\/a>\r\n<\/div>\r\n<span class=\"span-reading-time rt-reading-time\" style=\"display: block;\"><span class=\"rt-label rt-prefix\">Tempo de Leitura:<\/span> <span class=\"rt-time\"> 3<\/span> <span class=\"rt-label rt-postfix\">minutos<\/span><\/span><p>At\u00e9 aqui,\u00a0 voc\u00ea j\u00e1 aprendeu como funciona o que \u00e9 o file share do Azure e como criar um. Agora, vamos trazer isso, com mais detalhes, para um mundo com o qual voc\u00ea provavelmente est\u00e1 mais acostumado: Mapeamento de unidades de rede!<\/p>\n<p><b>Mapeando o file share<\/b><\/p>\n<p>Mapear o file share do azure funciona da mesma maneira que qualquer outro. Basta usar a interface do seu explorer (na op\u00e7\u00e3o mapear unidade de rede) ou via linha de comando, da seguinte maneira:<\/p>\n<pre class=\"lang:ps decode:true \" title=\"Mapeando unidade de rede\">net use T: \\\\thesqltimes.file.core.windows.net\\arquivos \/user:Usuario password<\/pre>\n<p>Este comando n\u00e3o \u00e9 espec\u00edfico do Azure, e sim, do Windows. Funciona para mapear qualquer unidade de rede, e permite especificar um usu\u00e1rio e senha. No caso do Azure File share, o nome do usu\u00e1rio \u00e9 o nome da <em>storage account<\/em>, e a senha \u00e9 uma das chaves da conta. Voc\u00ea pode obter a chave de v\u00e1rias maneiras, uma delas \u00e9 usar o portal do azure, conforme mostrado no post anterior. Aqui est\u00e1 um exemplo da execu\u00e7\u00e3o:<\/p>\n<p id=\"IWnAVPz\"><img loading=\"lazy\" decoding=\"async\" width=\"821\" height=\"73\" class=\"alignnone size-full wp-image-1275 \" src=\"http:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/02\/img_5e3f9639a3f83.png\" alt=\"\" srcset=\"https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/02\/img_5e3f9639a3f83.png 821w, https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/02\/img_5e3f9639a3f83-300x27.png 300w, https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/02\/img_5e3f9639a3f83-768x68.png 768w\" sizes=\"auto, (max-width: 821px) 100vw, 821px\" \/><\/p>\n<p id=\"EPsHKsN\"><img loading=\"lazy\" decoding=\"async\" width=\"450\" height=\"131\" class=\"alignnone size-full wp-image-1276 \" src=\"http:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/02\/img_5e3f96617ec10.png\" alt=\"\" srcset=\"https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/02\/img_5e3f96617ec10.png 450w, https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/02\/img_5e3f96617ec10-300x87.png 300w\" sizes=\"auto, (max-width: 450px) 100vw, 450px\" \/><\/p>\n<p><strong>SQL Server e mapeamento de diret\u00f3rios remotos<\/strong><\/p>\n<p>\u00c9 comum nas empresas que o local de backup do SQL Server seja em um outro servidor, e n\u00e3o localmente. Para isso, geralmente \u00e9 disponibilizado o caminho do share, junto com as credenciais. O grande problema com isso \u00e9 mapear essa unidade de forma que o SQL Server possa escrever o arquivo de backup.<\/p>\n<p>Creio que muita gente j\u00e1 passou por isso e <a href=\"https:\/\/www.google.com\/search?q=sql+server+mapear+unidade+de+rede&amp;oq=sql+server+mapear+unidade+de+rede&amp;aqs=chrome..69i57j69i64l3.6118j0j7&amp;sourceid=chrome&amp;ie=UTF-8\">com uma simples pesquisa<\/a> no google, a resposta mais comum \u00e9 essa:<\/p>\n<ul>\n<li>Habilita xp_cmdshell<\/li>\n<li>Mapeia usando o comando <strong>net use<\/strong> e passando o usu\u00e1rio e senha com a op\u00e7\u00e3o de persist\u00eancia ativada<\/li>\n<li>Deixe um condi\u00e7\u00e3o no c\u00f3digo que refa\u00e7a os mapeamentos, caso, magicamente, o mapeamento deixe de funcionar<\/li>\n<\/ul>\n<p>T\u00e1, eu gosto e n\u00e3o gosto dessa solu\u00e7\u00e3o por alguns motivos (fique livre para usar os coment\u00e1rios e trazer seus pontos de vista tamb\u00e9m):<\/p>\n<ul>\n<li>Habilitar o xp_cmdshell<br \/>\nUtilizar isso \u00e9 ter muito cuidado. \u00c9 uma boa pr\u00e1tica de seguran\u00e7a n\u00e3o usar isso. Na verdade mesmo, o problema com xp_cmdshell \u00e9 voc\u00ea habilitar e esquecer habilitado. Algumas ferramentas da Microsoft, utilizam o xp_cmdshell para realizar algumas tarefas. Minha implic\u00e2ncia com isso \u00e9\u00a0 s\u00f3: SAIBA USAR e SAIBA O QUE EST\u00c1 EXECUTANDO e prefira n\u00e3o deixar isso ligado pra sempre.<\/li>\n<li>Deixar um script que refa\u00e7a o mapeamento<br \/>\nEssa pra mim \u00e9 mais do\u00edda do ponto de vista de seguran\u00e7a&#8230; Ora, algu\u00e9m foi l\u00e1, adicionou uma camada de seguran\u00e7a e voc\u00ea simplesmente deixou a senha expostas em seus scripts&#8230; Novamente, \u00e9 quest\u00e3o de tomar cuidado. Tentar procurar alternativas que envolvem criptografar a senha e controlar o acesso ao script, job, etc. onde ela est\u00e1 salva!<\/li>\n<li>Acesso<br \/>\nEsta alternativa \u00e9 interessante porque somente o servi\u00e7o do SQL consegue enxergar e acessar a unidade, protegendo de ataques contra RansonWare, por\u00a0 exemplo. Como o mapeamento \u00e9 vis\u00edvel apenas na sess\u00e3o do SQL, dificilmente ele vai ter acesso (a menos que voc\u00ea tenha mapeado na sua sess\u00e3o tamb\u00e9m).<\/li>\n<\/ul>\n<p><strong>Por que o SQL Server n\u00e3o enxerga o mapeamento que eu fa\u00e7o no meu usu\u00e1rio?<\/strong><\/p>\n<p>O motivo \u00e9 muito simples: sess\u00f5es e contextos dos processos no Windows. De uma maneira bem resumida, tudo que roda no Windows tem uma sess\u00e3o associada. Especificamente, uma <a href=\"https:\/\/docs.microsoft.com\/en-us\/windows\/win32\/secauthn\/lsa-logon-sessions\">Logon Session<\/a>.<\/p>\n<p>Por exemplo, quando voc\u00ea loga, fisicamente ou via RDP, o Windows cria e atribui uma sess\u00e3o para voc\u00ea. Certos recursos, como o mapeamento de unidades, s\u00f3 existem naquela Logon Session.<\/p>\n<p>Cada servi\u00e7o do Windows possui sua pr\u00f3pria Logon Session.. Quando um servi\u00e7o \u00e9 iniciado, uma nova Logon Session \u00e9 criada para este servi\u00e7o. E \u00e9 por isso que ele n\u00e3o enxerga os mapeamentos feitos por voc\u00ea em sua sess\u00e3o, <strong><em>seu mortal!<\/em><\/strong><\/p>\n<p>Ao utilizar o xp_cmdshell, o SQL Server cria um novo processo na mesma Logon Session dele. Por isso que seu comando funciona e faz, milagrosamente, o SQL enxergar. E, mesmo usando &#8220;persistent yes&#8221; voc\u00ea eventualmente pode vir a ter problemas de conex\u00e3o, devido ao fato de que o net use n\u00e3o armazena a senha!<\/p>\n<p>E outra: Voc\u00ea pode ser muito espertinho(a), e tentar abrir um cmd.exe com a conta de servi\u00e7o do SQL para fazer o mapeamento! Sinto muito! Mas este processo, cria uma nova Logon Session, e por isso n\u00e3o funciona tamb\u00e9m. ROLLBACK pro xp_cmdshell&#8230;<\/p>\n<p>Ent\u00e3o, o resumo da \u00f3pera: Voc\u00ea precisa utilizar o xp_cmdshell para mapear a unidade toda vez que o servi\u00e7o do SQL reiniciar!<\/p>\n<p>E tudo isso porque a senha n\u00e3o fica salva! E voc\u00ea tem que deixar um c\u00f3digo pronto com a senha para refazer o mapeamento&#8230;.<\/p>\n<p>Bom, se voc\u00ea fazia assim, <strong>pare de fazer a partir de agora! (ou me d\u00ea raz\u00f5es nos coment\u00e1rios para continuar fazendo depois de ler o resto desta s\u00e9rie).<\/strong><\/p>\n<p>No pr\u00f3ximo post, te mostrarei um recurso extremamente importante do Windows!<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<div class=\"seriesmeta\">This entry is part 3 of 5 in the series <a href=\"https:\/\/thesqltimes.com\/blog\/series\/azure-file-share-sql\/\" class=\"series-279\" title=\"Azure File Share no SQL Server\">Azure File Share no SQL Server<\/a><\/div><p>At\u00e9 aqui,\u00a0 voc\u00ea j\u00e1 aprendeu como funciona o que \u00e9 o file share do Azure e como criar um. Agora, vamos trazer isso, com mais detalhes, para um mundo com o qual voc\u00ea provavelmente est\u00e1 mais acostumado: Mapeamento de unidades de rede! Mapeando o file share Mapear o file share do azure funciona da mesma&hellip;&nbsp;<a href=\"https:\/\/thesqltimes.com\/blog\/2020\/03\/30\/azure-file-share-no-sql-server-3\/\" rel=\"bookmark\"><span class=\"screen-reader-text\">Azure File Share no SQL Server &#8211; [3] Mapeamentos de file shares no Windows<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":1275,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_exactmetrics_skip_tracking":false,"_exactmetrics_sitenote_active":false,"_exactmetrics_sitenote_note":"","_exactmetrics_sitenote_category":0,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"neve_meta_sidebar":"","neve_meta_container":"","neve_meta_enable_content_width":"","neve_meta_content_width":0,"neve_meta_title_alignment":"","neve_meta_author_avatar":"","neve_post_elements_order":"","neve_meta_disable_header":"","neve_meta_disable_footer":"","neve_meta_disable_title":"","footnotes":""},"categories":[277,278,7,93],"tags":[281,291,282,293,73,283,87,292],"series":[279],"class_list":["post-1334","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-azure","category-azure-storage","category-sql-server","category-windows","tag-file-share","tag-logon-session","tag-mapeamento","tag-net-use","tag-sql-server","tag-unidade-de-rede","tag-windows","tag-xp_cmdshell","series-azure-file-share-sql"],"_links":{"self":[{"href":"https:\/\/thesqltimes.com\/blog\/wp-json\/wp\/v2\/posts\/1334","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/thesqltimes.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/thesqltimes.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/thesqltimes.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/thesqltimes.com\/blog\/wp-json\/wp\/v2\/comments?post=1334"}],"version-history":[{"count":3,"href":"https:\/\/thesqltimes.com\/blog\/wp-json\/wp\/v2\/posts\/1334\/revisions"}],"predecessor-version":[{"id":1477,"href":"https:\/\/thesqltimes.com\/blog\/wp-json\/wp\/v2\/posts\/1334\/revisions\/1477"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/thesqltimes.com\/blog\/wp-json\/wp\/v2\/media\/1275"}],"wp:attachment":[{"href":"https:\/\/thesqltimes.com\/blog\/wp-json\/wp\/v2\/media?parent=1334"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/thesqltimes.com\/blog\/wp-json\/wp\/v2\/categories?post=1334"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/thesqltimes.com\/blog\/wp-json\/wp\/v2\/tags?post=1334"},{"taxonomy":"series","embeddable":true,"href":"https:\/\/thesqltimes.com\/blog\/wp-json\/wp\/v2\/series?post=1334"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}