Categorias
Azure SQL Database Virtual PASS BR

Azure SQL Database – Vulnerability Assessment

[bing_translator]

O Vulnerability Assessment (VA) primeiramente introduzido no Azure SQL Database e depois entregue na versão do SQL Server Management Server (SSMS) 17.4 é um recurso que pode ajudar a descobrir, rastrear e corrigir potencias vulnerabilidades no seu database.

“To gain the benefits of a Vulnerability Assessment on your database, all you need to do is run a Scan, which will scan your database for vulnerabilities.”

Essa simples frase resume exatamente o que você deve fazer para utilizar esse recurso, nada além disso. Na minha visão o principal motivo para isso é a grande preocupação que a Microsoft está tendo em relação a segurança da informação. O Vulnerability Assessment é de fácil interpretação e principalmente é feito para não especialistas em segurança da informação assim como eu. Com esse recurso eu posso proteger melhor o meu ambiente porem isso pode não ser o suficiente caso a sua empresa tenha uma especialista em segurança e ele te direcione para qual caminho seguir.

Eu acredito que o recurso irá evoluir e iremos ganhar mais facilidades como por exemplo automatização de scan!

Hoje o Vulnerability Assessment faz parte do Advanced Threat Protection for Azure SQL Database.

A única configuração que você precisara fazer é escolher onde irá armazenar o resultado e nesse caso será uma “storage account”

Pronto! Agora basta executar o scan e aguardar pelo resultado.

Pude notar que as validações que estavam em preview foram modificadas na versão General availability (GA). O último preview, que eu utilizei, existiam 77 validações e agora só existem 48. Não sei o motivo porque algumas foram retiradas, mas espero que a lista aumente.

Para cada verificação existem detalhes que trazem informações complementares importantíssimas como por exemplo como remediar (resolver) o problema.

É possível criar uma baseline para cada database e assim você pode customizar o que é importante para seu ambiente. No relatório, o status da regra irá mostrar como aceito por baseline customizada.

Com o GA agora é exportar o resultado para Excel através do botão: Export Scan Results. Dessa maneira você pode ter um relatório offline e distribuir dentro da sua equipe ou até mesmo enviar para outras pessoas.

Com o Scan History é possível ver como estava as vulnerabilidades em cada scan. Isso facilita a auditoria e principalmente podemos ver o progresso das correções. Também é possível exportar para Excel qualquer histórico.

Eu espero que em breve possamos criar nossas próprias validações dando assim flexibilidade para cada cliente customizar com suas necessidades.

A versão do SSMS para on-premise tem as mesmas funcionalidades e é tão simples quanto a versão do Azure SQL Database.

https://www.mssqltips.com/sqlservertip/5297/sql-server-security-vulnerability-assessment-tool-in-ssms-174/

Jan Rokicki escreveu um excelente post falando sobre VA

https://www.datasic.com/post/ssms-va-assessment/

Referencias:

https://azure.microsoft.com/en-us/blog/introducing-sql-vulnerability-assessment-for-azure-sql-database-and-on-premises-sql-server/

https://blogs.technet.microsoft.com/dataplatforminsider/2017/12/11/whats-new-in-ssms-17-4-sql-vulnerability-assessment/

https://docs.microsoft.com/en-us/azure/sql-database/sql-vulnerability-assessment

https://docs.microsoft.com/en-us/sql/relational-databases/security/sql-vulnerability-assessment?view=sql-server-2017

https://docs.microsoft.com/en-us/azure/sql-database/sql-advanced-threat-protection

https://docs.microsoft.com/en-us/azure-advanced-threat-protection/what-is-atp

Categorias
Azure SQL Database How To

GDPR – como eu me preparei

[bing_translator]

“The General Data Protection Regulation (GDPR) will come into force on the 25th May 2018, replacing the existing data protection framework under the EU Data Protection Directive”

“The aim of the GDPR is to protect all EU citizens from privacy and data breaches in an increasingly data-driven world that is vastly different from the time in which the 1995 directive was established”

Nos últimos meses estive envolvido em muitas mudanças nas aplicações que temos por conta dessa nova regulamentação que esta entrando em vigor na Europa. Muitas empresas como Facebook, Google, Microsft e Amazon (apenas para citar algumas) também estão se adequando ao GDPR e desde o inicio do ano eu venho recebendo avisos de como eles tem mudado suas policas de segurança/privacidade.

Na minha opinião essa mudança é importante para nós usuários dessas grandes corporações e a intenção é ter mais controle sobre nossos dados pessoais.

Mas o que isso afeta o meu trabalho e o meu dia a dia? Não são apenas as empresas globais (gigantes da internet) que devem se adequar, mas sim qualquer empresa dentro da união europeia deve seguir essa regulamentacao e por isso o meu trabalho é afetado. Se você pensa que por não morar/trabalhar na Europa você não deve seguir o GDRP acredito que não é bem assim, pois em algum momento sua empresa pode fazer operações na Europa e você terá que se adequar, ou ate mesmo, quanto tempo você acha que essa regulamentacao ou alguma outra sera aplicada onde voce está? Pense bem.

O meu intuito aqui não é falar sobre o que o GDPR é ou para que ele se propõe. Para isso deixarei links onde você pode entender melhor.

Eu irei mostrar como eu utilizei ferramentas e recursos nativos do SQL Server para fazer que meu ambiente esteja de acordo com a regulamentação. E para cada item farei um post sobre como implementei e minhas impressões, por isso esse post será atualizado sempre que necessário.

A maioria dos posts terá o foco no Azure SQL Database.

Primeiramente temos que conhecer melhor nossos dados, saber o que eles representam e principalmente qual a sua valia para a empresa.

Garantir o princípio do menor privilegio foi a fase do meu projeto que mais demorou, uma vez que temos que entender quem acessa a informação, para qual finalidade e porque eles acessam.

Para ajudar a proteger seus dados, o firewall impede todo o acesso ao seu servidor de banco de dados até que você especifique quais computadores têm permissão.

  • Authentication in Azure SQL Database using Azure Active Directory

Com a autenticação do Azure AD, você pode gerenciar centralmente as identidades dos usuários do banco de dados e de outros serviços da Microsoft em um local central.

É o processo de identificar, quantificar e priorizar (ou classificar) as vulnerabilidades.

Conhecido como criptografia de dados em repouso (data at rest) e executa criptografia e descriptografia de I/O em tempo real dos dados e arquivos de log.

Transparent Data Encryption and its tricks

Limita a exposição a dados confidenciais mascarando para usuários sem privilégios. O DDM ajuda a impedir o acesso não autorizado a dados confidenciais.

  • Row-Level Security

Permite que os clientes controlem o acesso a linhas em uma tabela de banco de dados com base nas características do usuário que está executando uma consulta, em outras palavras, o RLS permite implementar restrições no acesso ao registro de dados.

  • Group Managed Service Accounts

Fornece um gerenciamento automático de senhas e de SPN, incluindo delegação de gerenciamento a outros administradores.

  • Always Encrypted

É um recurso projetado para proteger dados confidenciais, como números de cartão de crédito ou números de identificação nacional. Permite que os clientes criptografem dados confidenciais em seus aplicativos e nunca revelem as chaves de criptografia ao banco de dados.

  • Business continuity in Azure SQL technologies
    • Point-time Restore
    • Backup Long-term retention
    • Active Geo-replication
  • Auditing & Threat Detection

Pode ajudar a compreender a atividade do banco de dados e obter insights sobre discrepâncias e anomalias que possam indicar preocupações comerciais ou suspeitas de violações de segurança.

  • SQL Server Audit

Permite criar auditorias que podem conter eventos no nível do servidor e no nível do banco de dados.

  • Temporal table

Fornece informações sobre os dados armazenados na tabela em qualquer momento, em vez de apenas os dados corretos no momento atual.

  • Azure SQL Analytics

Coleta e visualiza métricas importantes de desempenho do Azure SQL Database.

 

Todos os passos que eu segui foi baseado no guia da Microsoft referente ao GDPR.

https://docs.microsoft.com/en-us/sql/relational-databases/security/microsoft-sql-and-the-gdpr-requirements

References:

https://www.eugdpr.org/the-regulation.html

https://www.dataprotection.ie/docs/GDPR/1623.htm

Categorias
Azure SQL Database How To Virtual PASS BR

Azure SQL Database – Migration tools – part 2

[bing_translator]

Existem algumas ferramentas que ajudam a migrar seu database para o Azure SQL Database e eu já falei de algumas:

Export e Import manualmente

Mais uma vez o SQL Server Management Studio (SSMS) é a ferramenta que pode ser usada através do Export Data-tier Application.
Esse processo tem algumas diferenças quando comparado com o Migration Wizard

  • Suporta qualquer database a partir da versão SQL Server 2005
  • Excelente para database de tamanho pequeno, médio ou grande
  • .bacpad pode ser armazenado no Azure Storage ou localmente
  • Processo em múltiplos passos independentes
  • Maior controle sobre o export e import
  • Downtime é grande

Não esquece de validar se seu database está pronto para o Azure SQL Database através do Data Migration Assistant – Assessment

Para iniciar o seu processo de migração acesse o wizard através do SSMS.

Acesse Object Explorer –> Instance –> Database –> Botão direito –> Task –> Export Data-tier Application. Uma primeira janela de introdução será mostrada, avance para a próxima.

Nesse ponto você pode escolher entre salvar o .bacpac localmente ou no Azure Storage Account

  1.  Connect a sua storage account
  2. Indique o container onde o arquivo bacpac deverá ficar
  3. Nome do arquivo
  4. Um caminho local temporário deve ser indicado para que o processo tenha sucesso

Revise as informações, principalmente o espaço temporário disponível, e inicie a exportação do database. Através da janela de progresso podemos verificar o que o wizard está fazendo.

  1. Extrai o schema
  2. Valida o schema
  3. Exporta os dados (tabela por tabela)
  4. Upload do arquivo bacpac para o Azure Storage

Uma vez que o wizard terminou com sucesso não existe mais nada para fazer no SSMS e agora você tem o controle de quando e onde realizar o import. Acesse o Azure Portal e navegue até o seu servidor logico do SQL servers.

Acesse o item Overview e a opção Import database

 

 

  1. Indique sua subscription
  2. Local onde você fez o upload do arquivo bacpac

  1. Defina o service tier do database
  2. Escolha um nome para o database
  3. Collation que deseja utilizar
  4. Método de autenticação
  5. Login do administrador do servidor logico

 

 

 

 

Após revisar as informações e confirmar, o deploy deverá iniciar e uma notificação será apresentada no portal. Uma vez que sua requisição tenha sido completada seu database estará disponível para uso. Você pode verificar através do SSMS ou do Azure Portal.

O tempo total de deploy depende de alguns fatores como tamanho do seu database e service tier escolhido. Outra possibilidade é utilizar powershell para fazer o import do bacpac ao invés de usar o portal do Azure.

O código abaixo é um exemplo estático de como utilizar powershell.

#region connect to Azure
Login-AzureRmAccount
Get-AzureRmSubscription 
Select-AzureRmSubscription -SubscriptionName 'MSDN Platforms'

#list of commands 
Get-Command -Module AzureRM.Sql
#endregion

#region getting information and set variables

# Get the resource group name 
Get-AzureRmResourceGroup 
$resourcegroupname = "SQL-Database"

# Set an admin login and password for your server
$adminlogin = "admin"
$password = "yourpassword"

# Get server name - the logical server name has to be unique in the system
Get-AzureRmSqlServer -ResourceGroupName $resourcegroupname #| Select ServerName
$servername = "balabuchsqldb"

# The sample database name
$databasename = "AdventureWorks_Bacpac_PS"

# The storage account name and storage container name
Get-AzureRmStorageAccount -ResourceGroupName $resourcegroupname #| Select StorageAccountName
$storageaccountname = "sqldatabasemigration"

Get-AzureRmStorageAccount -ResourceGroupName $resourcegroupname | Get-AzureStorageContainer #| Select Name
$storagecontainername = "migration"

# BACPAC file name
Get-AzureRmStorageAccount -ResourceGroupName $resourcegroupname | Get-AzureStorageBlob -Container $storagecontainername #| Select Name
$bacpacfilename = "AdventureWorks.bacpac"

#endregion


#region importing bacpac

# Import bacpac to database with an S3 performance level
$importRequest = New-AzureRmSqlDatabaseImport -ResourceGroupName $resourcegroupname `
    -ServerName $servername `
    -DatabaseName $databasename `
    -AdministratorLogin $adminlogin `
    -AdministratorLoginPassword  (ConvertTo-SecureString -String $password -AsPlainText -Force)`
    -DatabaseMaxSizeBytes "5000000" `
    -StorageKeyType "StorageAccessKey" `
    -StorageKey (Get-AzureRmStorageAccountKey -ResourceGroupName $resourcegroupname -StorageAccountName $storageaccountname).Value[0] `
    -StorageUri "https://$storageaccountname.blob.core.windows.net/$storagecontainername/$bacpacfilename" `
    -Edition "Standard" `
    -ServiceObjectiveName "S3"


# Check import status and wait for the import to complete
$importStatus = Get-AzureRmSqlDatabaseImportExportStatus -OperationStatusLink $importRequest.OperationStatusLink
[Console]::Write("Importing")
while ($importStatus.Status -eq "InProgress")
{
    $importStatus = Get-AzureRmSqlDatabaseImportExportStatus -OperationStatusLink $importRequest.OperationStatusLink
    [Console]::Write(".")
    Start-Sleep -s 10
}
[Console]::WriteLine("")
$importStatus

#endregion

#region scale down database

# Scale down to Basic after import is completed
Set-AzureRmSqlDatabase -ResourceGroupName $resourcegroupname `
    -ServerName $servername `
    -DatabaseName $databasename  `
    -Edition "Basic" `
    -RequestedServiceObjectiveName "Basic"

#endregion

Referências:

https://docs.microsoft.com/en-us/azure/sql-database/scripts/sql-database-import-from-bacpac-powershell

https://docs.microsoft.com/en-us/azure/sql-database/sql-database-import

Categorias
Azure SQL Database How To Virtual PASS BR

Azure SQL Database – Migration tools – part 1

[bing_translator]

Escolher a ferramenta de migração nem sempre é uma tarefa fácil uma vez que devemos levar em conta todos os pré-requisitos estabelecidos pelo cliente. Por esse motivo temos que conhecer os principais métodos/ferramentas de migração e suas diferenças para fornecer uma melhor solução e é necessário uma preparação antes de iniciar sua migração. No post Azure SQL Database – Before you migrate você pode encontrar o que deve ser considerado para ter uma migração de sucesso.

A primeira ferramenta que podemos utilizar é o Data Migration Assistant e você pode verificar como utilizar essa ferramenta aqui!

Migration Wizard no SSMS

O SQL Server Management Studio (SSMS) é a ferramenta que pode ser usada através do Migration Wizard e é o método mais comum para migração de um database.

Por ser um método bastante comum, algumas características dessa ferramenta:

  • Suporta database a partir da versão SQL Server 2005
  • Excelente para database de tamanho pequeno e médio
  • .bacpac é criado apenas localmente
  • É um processo único – ou toda a migração é realizada com sucesso ou nada é feito
  • Manipula o export e import automaticamente
  • Downtime é grande

Não esquece de validar se seu database está pronto para o Azure SQL Database através do Data Migration Assistant – Assessment

Para iniciar o seu processo de migração acesse o wizard através do SSMS.

Acesse: Object Explorer –> Instance –> Databases –> Botão direito –> Task –> Deploy Database to Microsoft Azure SQL Database.

Uma primeira janela de introdução será mostrada, avance para a próxima.

  1. Conecte no seu servidor Azure SQL (link)
  2. Escolha um nome para o seu database, originalmente o wizard mantem o mesmo nome.
  3. Configurações do seu Azure SQL Database
    1. Escolha o nível de serviço (service tiers): Basic, Standard, Premium ou PremiumRS (no momento apenas essas estão disponíveis)
    2. Tamanho máximo do database depende de cada nível de serviço.
    3. Service Objective: Dentro de cada service tier temos diferentes níveis de performance e limite de storage, as DTU
  4. Local de armazenamento do arquivo .bacpac

 

Revise as informações, principalmente o espaço temporário disponível, e inicie a migração.

Através da janela de progresso podemos verificar o que o wizard está fazendo e posso citar alguns passos:

  1. Extrai o schema
  2. Valida o schema
  3. Exporta os dados (tabela por tabela)
  4. Cria o database no Azure
  5. Verifica e analisa o deploy do novo database
  6. Inicia o processo de importação do pacote (schema e dados)
  7. Desabilita os índices
  8. Importa os dados (tabela por tabela)
  9. Habilita os índices

Uma vez que o wizard tenha completado a tarefa seu database estará disponível para uso. Você pode verificar através do SSMS ou do Azure Portal.

Algumas configurações que eu sento falta no wizard que e que por sua vez utiliza a opção default:

  • Location
  • Resource Group
  • Subscription

Apenas a configuração da região não é possível alterar depois que o database é criado.
O tempo total de deploy depende de alguns fatores como tamanho do seu database e service tier escolhido.

Concluindo, esse é o metodo mais utilizado e mais facil porem é demorado. Recomendo que teste esse metodos assim como marque o tempo total gasto e verifique se é aceitavel para sua migração. Duvidas do que fazer antes de migrar seu database? Não deixe de ler o post Azure SQL Database – Before you migrate

Referencia:
https://docs.microsoft.com/en-us/azure/sql-database/sql-database-migrate-your-sql-server-database

Pluralsight – Azure SQL Database for the SQL Server DBA

Categorias
Azure SQL Database Virtual PASS BR

Azure SQL Database – Before you migrate

[bing_translator]

A migração para o Azure SQL Database exige um grande preparo e testes devem ser feitos para que se tenha êxito no resulto final. Esse preparo se deve ao fato de que o Azure SQL Database é um serviço na nuvem e existem limitações ou a forma que você está acostumado a utilizar um recurso muda.

Para se ter sucesso nessa migração devemos levar em conta alguns fatores:

  • Identificar os benefícios: Temos que identificar todos os benefícios e melhorias que iremos tirar proveito. Enumerar um por um e criar um roadmap para implementação de cada um deles é sempre uma boa estratégia. Nunca migre para a nuvem apenas para ser “fancy”.
  • Identificar bloqueios: O Data Migration Assistant ajuda nesse requisito. Identificar cada um deles e criar uma lista com prioridades de cada item auxiliará o processo de migração, porem existem bloqueios que impedem a migração como por exemplo SQL CLR que nesse momento ainda não é suportado.

 

  • Identificar o modelo de serviço: Se você pretende migrar um único database então Single Mode é perfeito para sua solução porem se pretende migrar mais de um database Elastic Pool deve ser avaliado.
  • Identificar o nível de serviço (service tier): Nesse ponto você irá verificar a capacidade de CPU/IO/Storage entre outros requisitos que seu database pode utilizar e lembre que quanto maior a capacidade maior será o valor pago pelo serviço.

 

 

  • Identificar Azure Region: Muitas pessoas esquecem de verificar qual a melhor região do Azure Datacenter para alocar seu database e principalmente qual a melhor região para alocar seu disaster recovey.
    Cada região tem serviços disponibilizados individualmente que outras regiões podem não contem e para saber melhor sobre o que cada região disponibiliza acesse o link.
  • Identificar a melhor ferramenta de migração: Existem algumas ferramentas que podemos utilizar para migrar um database e identificar qual é a melhor para o seu cenário pode ajudar a ter sucesso.

Algumas ferramentas de migração:

Obs.: Irei escrever sobre cada uma delas.

Cada uma delas tem suas particularidades e seus benefícios, entretanto a escolha da ferramenta é apenas mais uma etapa para ter sucesso na migração. Posso citar outros fatores como:

  • SLA – Garantir que o Service Level Agreement seja cumprido é um fato chave para o negócio e a escolha da ferramenta de migração vem de encontro com esse critério uma vez que podemos ter um downtime curto ou longo e cada uma das ferramentas proporciona um tempo necessário para completar a migração.
  • Aplicação – Garantir que sua aplicação não tem incompatibilidades, erros ou problemas com o Azure SQL Database é fundamental e isso é um fator que não podemos controlar pois dependemos dos desenvolvedores ou fornecedores.
  • Performance – Os usuários finais sempre esperam que a aplicação continue com a performance atual ou que tenham uma experiencia melhor na performance depois da migração. Nesse critério o nível de serviço escolhido é um grande potenciador ou impedidor de performance. Outro fator que deve ser revisto são as queries que consomem mais recursos e começar um trabalho otimizar seu código.
  • Documentação – Documentar cada etapa da migração é fundamental para o sucesso pois dessa forma você terá controle do que está acontecendo e principalmente estime o tempo gasto em cada etapa.
  • Testes – Antes de migrar seu database para o ambiente de produção realize testes de migração para um ambiente de teste onde você é capaz de documentar cada etapa, marcar o tempo gasto em cada etapa e verificar se a aplicação está funcionando com a performance aceitável e sem erros. Repita esse passo quantas vezes achar necessário para não ter surpresas no momento da migração para produção.

Para concluir eu acredito que o preparo é a chave fundamental para obter sucesso na migração para o Azure SQL Database. Estude, crie laboratórios, faça testes, simule erros para todas as alternativas e principalmente esteja confiante  em você mesmo!

Referencia:

https://docs.microsoft.com/en-us/azure/sql-database/sql-database-migrate-your-sql-server-database

Pluralsight – Azure SQL Database for the SQL Server DBA

Categorias
Azure SQL Database How To SQL Server Virtual PASS BR

Data Migration Assistant – Migration

[bing_translator]

A ferramenta DMA v3.3 nesse momento tem duas opções de projetos: Assessment e Migration.
No post anterior Data Migration Assistant – Assessment falei um pouco sobre a funcionalidade de Assessment para assessorar e minimizar o impacto da migração de databases. Esse é o primeiro passo que você deve tomar para realizar uma migração e após verificar todos os itens dos relatórios você está “pronto” para iniciar a migração, pelo menos por parte do database não esqueça de verificar se a aplicação está preparada para a migração.

Ao iniciar a ferramenta DMA crie um projeto do tipo Migration onde iremos definir qual tipo de servidor de origem e destino.

Nesse momento temos que indicar qual o escopo da migração, que pode ser:

  • Schema and data
  • Schema only
  • Data only

A partir dessas opções podemos criar vários cenários para migração de um database como por exemplo:

  • Criar um servidor de teste e um database apenas com os metadados (schema); realizar o apontamento da aplicação para esse servidor fazendo assim um teste também com a aplicação.
  • Se precisar de poucos dados, aquelas famosas tabelas de configurações, você pode importar apenas o que precisa.

Desse ponto de vista temos uma flexibilidade enorme para trabalhar e eu escolhi o escopo: Schema and data para demonstrar do início ao fim o processo.

De forma simples o wizard irá te ajudar e nesse processo teremos 6 etapas sendo a primeira escolher a instancia e database de origem.

Uma tarefa que o wizard não faz é criar o database no Azure e por isso você deve criar um database vazio através do portal, powershell ou CLI antes de continuar. Basta seguir os passos desse link.

Eu criei um database chamado AdventureWorksDMA através do portal e o próximo passo é escolher quais objetos serão migrados.

Uma vez que tenha escolhido os objetos que serão migrados o passo a seguir é gerar os scripts desses objetos.

Aqui você tem a opção de salvar o script para analisar posteriormente, copiar para qualquer editor de texto ou realizar o deploy diretamente através do DMA que irá fazer o deploy para o Azure SQL Database.

Uma janela com informações dos resultados irá mostrar o progresso do deploy e os comandos executados. Ao finalizar existe a opção de redeploy ou iniciar a migração dos dados e como nosso objetivo é ter uma migração completa vamos seguir com a migração dos dados.

Selecione as tabelas desejadas ou todas e inicie o seu processo de migração.

O tempo que a migração depende de alguns fatores dentre eles posso citar: quantidade de tabelas e registros em cada uma delas e a performance do seu Azure SQL Database (DTU), no meu caso utilizei S0 (10 DTU).

Uma vez que a migração dos dados terminou com sucesso você pode se conectar no Azure SQL database através do SSMS (Azure SQL Database – SQL Authentication) para verificar que sua migração está finalizada com sucesso.

Categorias
Azure SQL Database How To SQL Server Virtual PASS BR

Data Migration Assistant – Assessment

[bing_translator]

Migração de um database é uma rotina comum na vida de um DBA e essa atividade pode ser para uma versão mais atual do SQL Server ou para o Azure SQL Database. A Microsoft sempre tentou auxiliar essas migrações com ferramentas como por exemplo o Upgrade Advisor. Por muito tempo utilizei essa ferramenta para as migrações que realizei pois ela gerava um relatório com todos os possíveis “problemas” que poderia ter.

Recentemente precisei migrar um database on-premise para cloud e ao verificar a versão mais atual do Upgrade Advisor descobri que a Microsoft decidiu descontinuar essa ferramenta. Você ainda pode baixar a ferramenta atrás desse link porem eu aconselho a utilizar a nova ferramenta o Data Migration Assistant (DMA). Essa ferramenta trouxe novas capacidades e facilidades onde uma delas é centralizar na mesma ferramenta as opções de realizar a migração ou apenas realizar a validação do database para uma futura migração.

É sobre essa nova ferramenta DMA que irei falar um pouco hoje.

Após fazer o download através do link acima e instalar a ferramenta, você pode notar na tela iniciar uma facilidade que é a criação de projetos. Estou utilizando a versao 3.3

Nesse momento existem dois tipos de projetos:

  • Assessment
  • Migration

O Assessment é a funcionalidade que iremos utilizar para verificar os possíveis problemas e incompatibilidades que temos ao migrar um database.

Depois de dar um nome ao seu projeto você deve escolher o tipo de servidor de origem que no meu caso só tenho a opção de SQL Server.

Nesse momento você deve selecionar qual o seu objetivo final, ou seja, qual o tipo de servidor que o seu database será hospedado. No meu caso 3 opções são apresentadas: Azure SQL Database, SQL Server e SQL Server on Azure Virtual Machines.

Como tenho trabalho com Azure SQL Databases vou utilizar essa opção para demonstração.

Agora que você escolheu as opções e criou o projeto uma nova janela irá apresentar quais os tipos de relatórios você gostaria de gerar.

Nesse momento é possível optar por gerar relatórios separados, o que pode ser útil quando existe uma lista grande de itens que estão sendo tratados aos poucos e você pode medir quanto esforço foi realizado ou falta a ser feito.

  • Check database compatilibity – verificará problemas que podem ser bloqueadores para a migração assim como features descontinuadas.
  • Check feature parity – verificará por features que não são suportadas ou são parcialmente suportadas.

Um terceiro tipo de relatório está por vim e parece ser bem interessante uma vez que ele informará quais são as possíveis features que podem ser utilizadas no seu database uma vez que você realizar a migração e isso é um benefício que pode ser traduzido em performance, tamanho, segurança entre outros (essa é a minha opinião sobre o que esperar desse relatório)

Próximo passo é escolher a instancia SQL Server e o(s) database(s) que fará parte do projeto de migração.

 

Uma lista com os databases selecionados será apresentada e você pode adicionar ou remover servidores de origem dentro do seu projeto, ou seja, pense que uma aplicação tem mais de um database em mais de uma instancia e com isso é possível criar um projeto com múltiplas instancias SQL Server e múltiplos databases.

Após iniciar o Assessment e a ferramenta terminar de analisar, você terá seus relatórios prontos e sua análise desses é extremamente fácil uma vez que está divido em seções.

Relatório: SQL Server features parity

  1. Recomendações e informações sobre features
  2. Detalhes sobre uma das recomendações selecionadas.
  3. Nível de aplicabilidade da recomendação. (Não se aplica a todas as recomendações)

Relatório: Compatility issues

  1. Issue (problema) agrupado por categorias
  2. Detalhes sobre o issue
  3. Objetos dentro database que são impactados pelo issue.

Dessa forma fica fácil visualizar o que devemos fazer para corrigir cada um dos issues antes de migrar o database.

No campo superior direito existem duas opções: Restart Assessment e Delete Assessment. Uma forma rápida para regerar o relatório ou excluir!

Para concluir é possível exportar o relatório para dois formatos: CSV e JSON. Particularmente o formato CSV não me agradou e o JSON é a nova onda do momento de transferia de dados de forma leve!

Categorias
Azure SQL Database How To SQL Server Virtual PASS BR

Azure SQL Database – Dynamic Data Masking

[bing_translator]

O Azure SQL Database estende a funcionalidade de Dynamic Data Masking (DDM) que foi introduzido no SQL Server 2016.
A intenção desse post é ter um overview sobre o que o DDM e mostrar como utilizar essa funcionalidade no Azure SQL Database

O que é o DDM

Ofuscar dados em tempo real para impedir o acesso não autorizado
Os dados armazenados em disco não são criptografados ou alterados
Útil para ocultar dados sensíveis e confidenciais, como números de identificação pessoal, números de cartão de crédito, data de nascimento e assim por diante.

Como o DDM funciona

Ofuscamento sobre os dados nos resultados da consulta
As regras podem ser definidas em colunas particulares
Não há mudanças físicas (storage)
Os dados permanecem intactos e estão totalmente disponíveis para usuários / aplicativos autorizados.
Os dados em máscaras têm o mesmo tipo de dados que os dados originais
Múltiplas funções de máscara disponíveis para várias categorias de dados sensíveis
Flexibilidade para definir um conjunto de logins privilegiados para acesso de dados não mascarados
Por padrão, db_owner do banco de dados tem acesso aos dados sem máscara.
Pode ser aplicado sem fazer alterações nos procedimentos do banco de dados ou no código da aplicação.

Existem 5 tipos de máscaras disponíveis (espere que tem uma surpresa)

  • Default ou Full masking
  • Email
  • Custom String ou Partial masking
  • Random
  • Credit card – Até o momento somente disponível do Azure SQL Database
Função Antes da Máscara Depois da Máscara
Default () –  O valor é completamente ofuscado.

Number: 487

Text: Tiago

(FUNCTION = ‘default()’)

Number: 000

Text: XXX

Email() – Ofusca quase tudo menos a primeira letra, @ e sufixo tiago@email.com

(FUNCTION = ‘email()’)

tXX@XXXXX.com

Partial() – Personalizada em que você determina o quanto será mostrado 912-564-897

(FUNCTION = ‘partial(1,”XXXXXXX”,0)’)

9XXXXXXXXX

(FUNCTION = ‘partial(3,”XXXXXXX”,0)’)

912XXXXXXX

Random() – Usado com tipos de dados numéricos. Ofusca os dados com um valor aleatório em um determinado intervalo 487

(FUNCTION = ‘random(1,1000)’)

198, ou 633, ou 1000

Credit card – expõe os últimos quatro dígitos e adiciona uma sequência constante como um prefixo na forma de um cartão de crédito 1234-5678-9876-1234 XXXX-XXXX-XXXX-1234

Usando o portal do Azure

Para utilizar essa funcionalidade acesse seu database através do portal e procure a opção Dynamic Data Masking. Uma vez que você acessar o próprio Azure irá te sugerir tabelas e colunas.

Um simples clique em ADD MASK você terá criado a máscara para aquela coluna e uma lista com todas as mascaras irá aparecer

O Azure SQL Database tenta identificar a tipo de dados e sugere um tipo de máscara (muitas vezes acerta outras nem tanto) porém é possível mudar o tipo de máscara clicando sobre o nome do mascara uma nova blade irá abrir.  Escolha a nova máscara que melhor se aplique para o tipo de dados da coluna e atualize a máscara. Da mesma forma é possível apagar a máscara que foi criada apenas clicando no botão DELETE.

Assim você pode rever todas as colunas que deseja e é possível mudar isso de forma simples e rápido. Quando tiver pronto salve as alterações.

Uma forma de verificar as colunas e as máscaras é consultar uma DMV nova – sys.masked_columns.

E agora com PowerShell?

Tudo se torna fácil para automatizar com PS e uma surpresa (na opinião boa) apareceu quando estava criando os comandos. Um outro tipo de máscara “SocialSecureNumber” está disponível e até o momento não é possível utilizar pelo portal (o que eu posso concluir que existem outros comandos com esse mesmo comportamento e que existe muito trabalho para o time de desenvolvimento do portal)

Porém uma vez que você criou a máscara por PS a informação fica disponível para visualização com o tipo de máscara correto!

Aqui esta a lista de comandos PS:

#region connect to Azure

Login-AzureRmAccount
Get-AzureRmSubscription 
Select-AzureRmSubscription -SubscriptionName 'MSDN Platforms'

#endregion disk caching

#list of commands 
Get-Command -Module AzureRM.Sql -Noun *masking*

#region get all masking rule in all databases or masking policy

$ResoureGroup = Get-AzureRmResourceGroup | where {$_.ResourceGroupName -contains “SQL-Database”} #or $ResoureGroup = “SQL-Database”
$ServerName = Get-AzureRmSqlServer -ResourceGroupName $ResoureGroup.ResourceGroupName
$Databases = Get-AzureRmSqlDatabase -ResourceGroupName $ResoureGroup.ResourceGroupName -ServerName $ServerName.ServerName | where {$_.CurrentServiceObjectiveName -ne “System0”} 

foreach ($db in $Databases)
{
    Get-AzureRmSqlDatabaseDataMaskingRule -ResourceGroupName $ResoureGroup.ResourceGroupName -ServerName $ServerName.ServerName -DatabaseName $db.DatabaseName | Format-Table
   # Get-AzureRmSqlDatabaseDataMaskingPolicy -ResourceGroupName $ResoureGroup.ResourceGroupName -ServerName $ServerName.ServerName -DatabaseName $db.DatabaseName | Format-Table
}

#endregion

#region add new masking rule

New-AzureRmSqlDatabaseDataMaskingRule -MaskingFunction SocialSecurityNumber -SchemaName "HumanResources" -TableName "Employee" -ColumnName "NationalIDNumber" -DatabaseName "AzureAdventureWorks" -ServerName $ServerName.ServerName -ResourceGroupName $ResoureGroup.ResourceGroupName

#endregion

#region remove new masking rule

Remove-AzureRmSqlDatabaseDataMaskingRule -SchemaName "HumanResources" -TableName "Employee" -ColumnName "NationalIDNumber" -DatabaseName "AzureAdventureWorks" -ServerName $ServerName.ServerName -ResourceGroupName $ResoureGroup.ResourceGroupName

#endregion

#region update a masking rule

Set-AzureRmSqlDatabaseDataMaskingRule -MaskingFunction Text -PrefixSize 1 -SuffixSize 5 -ReplacementString "XDXDXDXD" -SchemaName "Person" -TableName "PersonPhone" -ColumnName "PhoneNumber" -DatabaseName "AzureAdventureWorks" -ServerName $ServerName.ServerName -ResourceGroupName $ResoureGroup.ResourceGroupName
#endregion

#region update a masking policy

Set-AzureRmSqlDatabaseDataMaskingPolicy -DataMaskingState Enabled -DatabaseName "AzureAdventureWorks" -ServerName $ServerName.ServerName -ResourceGroupName $ResoureGroup.ResourceGroupName 

#endregion

Links:

https://docs.microsoft.com/en-us/azure/sql-database/sql-database-dynamic-data-masking-get-started

https://docs.microsoft.com/en-us/powershell/module/azurerm.sql/New-AzureRmSqlDatabaseDataMaskingRule?view=azurermps-4.2.0

Categorias
Azure SQL Database How To SQL Server Virtual PASS BR

Azure SQL Database – Azure Active Directory Authentication

[bing_translator]

No post anterior (link) expliquei como utilizar SQL Authentication para permitir acesso do Azure SQL Database e agora vamos ver como utilizar o Azure Active Directory Authentication.

Recapitulando! Nesse momento o Azure SQL Database permite dois tipos de autenticação:

  • SQL Authentication
    • A identidade é através de um usuário e senha. Quando você está criando um servidor logico você define um “server admin” que irá usar esse tipo de autenticação para se conectar a qualquer database.
  • Azure Active Directory Authentication
    • A identidade é gerenciada pelo Azure Active Directory e aqui você tem várias opções de identidade, não sou especialista nessa área, mas tentarei mostrar um pouco de como utilizar. Se você quiser usar esse tipo de autenticação, você deve criar outro administrador do servidor chamado “Administrador do Azure AD”, que tem permissão para administrar usuários e grupos do Azure AD. Este administrador também pode executar todas as operações que um administrador do servidor normal pode. Esse novo administrador também pode ser um grupo de usuários.

Azure Active Directory Authentication

Aqui a brincadeira começa a ficar interessante e uma vez que não sou especialista nessa área de AD irei mostrar como utilizar recursos nativos sem criar cenários complexos.

Criando usuário no Azure AD

Acesse o Azure AD através do Azure portal para criar usuários e grupo de usuários

Comece pelo grupo de usuário que irá administrar o servidor logico do Azure SQL Database.

Agora crie um novo usuário e aqui tem um jeito diferente para utilizar pois não temos um domino criado para vincular, mas sua conta do Azure tem um domínio vinculado.

Porem existe uma forma de utilizar o domain name para criar um usuário onde o user name deve ser: <name>@<domain name>, por exemplo deadpool@seudominio.onmicrosoft.com

Uma vez que você criou o usuário e verificou a senha que vem predefina já pode começar a usar porem eu esqueci alguma vezes de verificar qual a senha! Não tem problema é possível alterar a senha. Acesso o usuário e é possível usar a opção Reset password porem você pode definir uma senha, mas dessa vez você deve guardar essa senha pois ela é temporária.

Agora que o usuário está criado e senha é temporária, devemos alterar essa senha e para isso acesse o portal do Azure e faça login com o usuário e senha. Dessa forma será solicitado para que você altere a senha.

Para confirmar que você está utilizando o usuário que acabou de criar verifique o canto superior direito.

Definir Active Directory Admin

Agora que já tem o usuário e senha prontos, vamos para o servidor logico e configurar o outro administrador, o Active Directory Admin

Simplesmente acesse o seu servidor logico, procure a opção Active Directory Admin e adicione um novo usuário ou grupo. No meu caso eu vou utilizar o grupo no qual vinculei o usuário.

Você deve ter agora configurado dois administradores do seu Azure SQL Database, um Server Admin e outro Active Directory Admin

Usando Powershell para configurar um Active Directory Admin

Login-AzureRmAccount

#Verifica qual grupo/usuario configurado como adminstrador
Get-AzureRmSqlServerActiveDirectoryAdministrator -ServerName balabuchsqldb -ResourceGroupName SQL-database

#Define um grupo/usuario como adminstrador
Set-AzureRmSqlServerActiveDirectoryAdministrator -ServerName balabuchsqldb -ResourceGroupName SQL-database -DisplayName SQL-Admin

# Remove um grupo/usuario como adminstrador
Remove-AzureRmSqlServerActiveDirectoryAdministrator -ServerName balabuchsqldb -ResourceGroupName SQL-database

Acessando o database

Agora utilize o SSMS para se conectar no Azure SQL Database, lembre-se que você deve configurar o firewall (link).

Primeiramente eu utilizei a opção de autenticação: Active Directory Universal Authentication. Isso fará que uma janela seja levantada para autenticação onde você deve colocar usuário e senha.

Finalmente depois de realizar todos esses passos você conseguiu acesso ao Azure SQL Database como administrador

Mas e se eu não quiser acessar como administrador, como fazer? Siga os passos para criar um novo usuário igual acima porem não inclua esse usuário no grupo de SQL-ADMIN.

Acesse o SQL Azure Database com um Active Directory Admin, isso é obrigatório pois apenas esse usuário/grupo pode criar outros usuários de AD, escolha o database para se conectar, no meu caso dbMarvel, e eu criei um usuário chamado loki

CREATE USER [loki@seudominio.onmicrosoft.com] FROM EXTERNAL PROVIDER

Agora você pode utilizar a opção Active Directory Password Authentication:

Uma vez que temos um usuário criado podemos conceder ou revogar permissões da mesma forma que fazemos hoje no SQL Server e isso fica para um futuro post!

Dessa forma nos utilizamos dois métodos de autenticação novos que devemos começar a nos acostumar, eu acredito que esse tipo de autenticação irá se tornar mais comuns nos próximos anos!

 

 

 

 

 

 

Algumas referências:

https://docs.microsoft.com/en-us/azure/sql-database/sql-database-aad-authentication

https://docs.microsoft.com/en-us/azure/sql-database/sql-database-aad-authentication-configure

https://docs.microsoft.com/en-us/azure/sql-database/sql-database-manage-logins

https://blogs.msdn.microsoft.com/sqlsecurity/2015/09/28/examples-of-some-connection-errors-for-azure-active-directory-authentication/