Para criar um banco de dados individual no portal do Azure:
Navegue até a página Selecionar uma opção de implantação do SQL.
Em Bancos de dados SQL, deixe Tipo de recurso definido como Banco de dados individual e selecione Criar.
Na guia Noções básicas do formulário Criar Banco de Dados SQL, em Detalhes do projeto, selecione a assinatura do Azure que deseja usar.
Para Grupo de recursos, selecione Criar, insira myResourceGroup e selecione OK.
Para o Nome do banco de dados, insira demonstração.
Para Servidor, selecione Criar novo. Preencha o formulário Novo servidor com as seguintes informações:
- Nome do servidor: Insira mysqlserver e adicione caracteres para que o nome seja exclusivo. Não podemos fornecer um nome do servidor exato a ser usado porque os nomes dos servidores devem ser globalmente exclusivos para todos os servidores no Azure, não apenas para uma assinatura. Insira algo como mysqlserver12345 e o portal informará se esse nome está disponível ou não.
- Logon de administrador do servidor: insira azureuser.
- Senha: insira uma senha que atenda aos requisitos. Insira-a novamente na caixa Confirmar senha.
- Localização: Selecione uma localização na lista suspensa.
- Permitir que os serviços do Azure acessem essa opção de servidor: selecione esta opção para habilitar o acesso ao armazenamento de hash.
Selecione OK.
Deixe Deseja usar o pool elástico do SQL definido como Não.
Em Computação + armazenamento, selecione Configurar banco de dados.
Este início rápido usa um banco de dados sem servidor, portanto, selecione Sem servidor e Aplicar.
Na guia Rede, para Método de conectividade, selecione Ponto de extremidade público.
Para Regras de firewall, defina Adicionar endereço IP do cliente atual como Sim. Deixe Permitir que serviços e recursos do Azure acessem este servidor definido como Não.
Selecione Próximo: Segurança na parte inferior da página.
Na guia Segurança, na seção Razão, selecione a opção Configurar razão.
No painel Configurar razão, na seção Razão, marque a caixa de seleção Habilitar para todas as tabelas futuras neste banco de dados. Essa configuração garante que todas as tabelas futuras no banco de dados serão tabelas razão. Por esse motivo, todos os dados no banco de dados mostrarão qualquer evidência de adulteração. Por padrão, novas tabelas serão criadas como tabelas do razão atualizáveis, mesmo que você não especifique LEDGER = ON
no CREATE TABLE. Você também pode deixar essa opção não selecionada. Em seguida, será necessário habilitar a funcionalidade de razão por tabela ao criar novas tabelas usando o Transact-SQL.
Na seção Resumo do Armazenamento,Habilitar armazenamento de hash automático é selecionado automaticamente. Em seguida, são criados uma nova conta de Armazenamento do Azure e um contêiner em que seus resumos serão armazenados.
Selecione Aplicar.
Selecione Revisar + criar na parte inferior da página.
Na página Examinar + criar, após examinar, selecione Criar.
Você criar um grupo de recursos, um servidor de banco de dados lógico e um banco de dados do razão e configura o carregamento de hashes do razão usando a CLI do Azure.
Iniciar o Azure Cloud Shell
O Azure Cloud Shell é um shell gratuito e interativo que poderá ser usado para executar as etapas deste artigo. Ele tem ferramentas do Azure instaladas e configuradas para usar com sua conta.
Para abrir o Cloud Shell, selecione Experimentar no canto superior direito de um bloco de código. Você também pode iniciar o Cloud Shell em uma guia separada do navegador indo até https://shell.azure.com. Selecione Copiar para copiar os blocos de código, cole o código no Cloud Shell e depois pressione Enter para executá-lo.
Definir valores de parâmetro
Os valores a seguir são usados em comandos subsequentes para criar o banco de dados e os recursos necessários. Os nomes de servidor e os nomes de conta de armazenamento precisam ser globalmente exclusivos em todo o Azure para que a função $RANDOM seja usada para criar o nome do servidor e o nome da conta de armazenamento.
O nome do recurso deve ser exclusivo na assinatura. Substitua <your resource group name>
por um nome exclusivo e <your subscription ID>
pela ID da Assinatura.
Substitua os valores 0.0.0.0 no intervalo de endereços IP para que correspondam ao seu ambiente específico.
Substitua westeurope pelo nome da região do Azure de sua preferência.
resourceGroupName="<your resource group name>"
location="westeurope"
serverName="mysqlserver"-$RANDOM
databaseName="myLedgerDatabase"
storageAccountName="mystorage"$RANDOM
subscription="<your subscription ID>"
adminLogin=azureuser
adminPassword=<password>
serverResourceId="/subscriptions/$subscription/resourceGroups/$resourceGroupName/providers/Microsoft.Sql/servers/$serverName"
# The ip address range that you want to allow to access your server
startIP=0.0.0.0
endIP=0.0.0.0
# Set variables for your digest storage location
storageAccountName="mystorage"$RANDOM
storageAccountURL1="https://"
storageAccountURL3=".blob.core.windows.net"
storageAccountURL=$storageAccountURL1$storageAccountName$storageAccountURL3
storageAccountResourceId="/subscriptions/$subscription/resourceGroups/$resourceGroupName/providers/Microsoft.Storage/storageAccounts/$storageAccountName"
# Show resource names
echo "Resource group name is" $resourceGroupName
echo "Server name is" $serverName
echo "Database name is" $databaseName
echo "Storage account name is" $storageAccountName
Criar um grupo de recursos
Crie um grupo de recursos com o comando az group create. Um grupo de recursos do Azure é um contêiner lógico no qual os recursos do Azure são implantados e gerenciados.
az group create --name $resourceGroupName --location $location
Criar um servidor com uma identidade gerenciada
Crie um servidor com o comando az sql server create. O comando cria o servidor com uma identidade gerenciada atribuída.
az sql server create \
--name $serverName \
--resource-group $resourceGroupName \
--location $location \
--admin-user $adminLogin \
--admin-password $adminPassword \
--assign-identity
Esse comando armazena a ID em uma variável, que será usada posteriormente para conceder ao servidor permissões para carregar hashes do razão.
# Retrieves the assigned identity to be used when granting the server access to the storage account
principalId=`az sql server show \
--name $serverName \
--resource-group $resourceGroupName \
--query identity.principalId \
--output tsv`
Crie uma regra de firewall com o comando az sql server firewall-rule create.
az sql server firewall-rule create \
--resource-group $resourceGroupName \
--server $serverName \
-n AllowYourIp \
--start-ip-address $startIP \
--end-ip-address $endIP
Criar apenas um banco de dados do razão
Crie um banco de dados do razão com o comando az sql db create. O comando a seguir cria um banco de dados sem servidor com o razão habilitado.
az sql db create \
--resource-group $resourceGroupName \
--server $serverName \
--name $databaseName \
--edition GeneralPurpose \
--family Gen5 \
--capacity 2 \
--compute-model Serverless \
--ledger-on
Criar uma conta de armazenamento
Crie uma conta de armazenamento para armazenar os hashes do razão com o comando az storage account create.
az storage account create \
--name $storageAccountName \
--resource-group $resourceGroupName \
--location $location \
--sku Standard_GRS \
--kind StorageV2
Conceder ao servidor permissões para gravar hashes do razão
Atribua a identidade gerenciada do servidor à função de Colaborador de Dados do Blob de Armazenamento com o comando az role assignment create. Isso fornece ao servidor SQL as permissões apropriadas para publicar os hashes do banco de dados na conta de armazenamento.
az role assignment create \
--assignee-object-id $principalId \
--assignee-principal-type "ServicePrincipal" \
--role "Storage Blob Data Contributor" \
--scope $storageAccountResourceId
Habilitar uploads de hashes do banco de dados
Atualize o banco de dados para começar a carregar hashes do razão na conta de armazenamento usando o comando az sql db ledger-digest-uploads enable.
az sql db ledger-digest-uploads enable \
--name $databaseName \
--resource-group $resourceGroupName \
--server $serverName \
--endpoint $storageAccountURL
Para proteger os hashes de serem excluídos ou atualizados, é recomendável configurar uma política de retenção baseada em tempo no contêiner sqldbledgerdigests usando os comandos az storage container immutability-policy create e az storage container immutability-policy lock. A política deve permitir gravações de blobs de acréscimo protegidos. Isso garante que o servidor de banco de dados possa adicionar blocos contendo novos hashes a um blob existente, enquanto a exclusão ou a atualização dos hashes está desabilitada para o período de imutabilidade especificado.
Importante
O exemplo a seguir usa o valor do período de imutabilidade de 1 dia. Em um ambiente de produção, você deve usar um valor muito maior.
Observação
Quando os hashes do banco de dados começarem a ser carregados na conta de armazenamento, você não poderá excluir a conta de armazenamento até que a política de imutabilidade expire. As configurações da política de imutabilidade poderão ser ignoradas caso planeje limpar os recursos imediatamente após este Início Rápido.
Para obter mais informações sobre a política de retenção baseada em tempo para contêineres, confira Configurar políticas de imutabilidade para contêineres.
az storage container immutability-policy create \
--resource-group $resourceGroupName \
--account-name $storageAccountName \
--container-name sqldbledgerdigests \
--period 1 \
--allow-protected-append-writes true
# Retrieves the etag value of the policy to be used when the policy is locked
etag=`az storage container immutability-policy show \
--account-name $storageAccountName \
--container-name sqldbledgerdigests \
--query etag \
--output tsv`
etag="${etag/$'\r'/}"
az storage container immutability-policy lock \
--resource-group $resourceGroupName \
--account-name $storageAccountName \
--container-name sqldbledgerdigests \
--if-match $etag
Você cria um grupo de recursos, um servidor de banco de dados lógico, um banco de dados do razão e configura o carregamento de hashes do razão usando o Windows PowerShell.
Iniciar o Azure Cloud Shell
O Azure Cloud Shell é um shell gratuito e interativo que poderá ser usado para executar as etapas deste artigo. Ele tem ferramentas do Azure instaladas e configuradas para usar com sua conta.
Para abrir o Cloud Shell, selecione Experimentar no canto superior direito de um bloco de código. Você também pode iniciar o Cloud Shell em uma guia separada do navegador indo até https://shell.azure.com. Selecione Copiar para copiar os blocos de código, cole o código no Cloud Shell e depois pressione Enter para executá-lo.
Definir valores de parâmetro
Os valores a seguir são usados em comandos subsequentes para criar o banco de dados e os recursos necessários. Os nomes de servidor e os nomes de conta de armazenamento precisam ser globalmente exclusivos em todo o Azure para que o cmdlet Get-Random seja usado para criar o nome do servidor e o nome da conta de armazenamento.
O nome do recurso deve ser exclusivo na assinatura. Substitua <your resource group name>
por um nome exclusivo.
Substitua os valores 0.0.0.0 no intervalo de endereços IP para que correspondam ao seu ambiente específico.
Substitua westeurope pelo nome da região do Azure de sua preferência.
# Set variables for your server and database
$resourceGroupName = "<your resource group name>"
$location = "westeurope"
$serverName = "mysqlserver-$(Get-Random)"
$databaseName = "myLedgerDatabase"
$storageAccountName = "mystorage$(Get-Random)"
# The ip address range that you want to allow to access your server
$startIP = "0.0.0.0"
$endIP = "0.0.0.0"
# Show resource names
Write-host "Resource group name is" $resourceGroupName
Write-host "Server name is" $serverName
Write-host "Storage account name is" $storageAccountName
Criar um grupo de recursos
Crie um grupo de recursos do Azure com New-AzResourceGroup. Um grupo de recursos é um contêiner lógico no qual os recursos do Azure são implantados e gerenciados.
Write-host "Creating resource group..."
$resourceGroup = New-AzResourceGroup `
-Name $resourceGroupName `
-Location $location
$resourceGroup
Criar um servidor
Crie um servidor com o cmdlet New-AzSqlServer.
O cmdlet cria o servidor com uma identidade gerenciada atribuída, que será necessária mais tarde para conceder ao servidor permissões para carregar os hashes do razão.
Quando solicitado, insira seu nome de usuário administrador do SQL e a senha correspondente.
Write-host "Creating primary server..."
$server = New-AzSqlServer `
-ResourceGroupName $resourceGroupName `
-ServerName $serverName `
-Location $location `
-AssignIdentity `
-SqlAdministratorCredentials (Get-Credential)
$server
Criar uma regra de firewall
Crie uma regra de firewall de servidor com o cmdlet New-AzSqlServerFirewallRule.
Write-host "Configuring server firewall rule..."
$serverFirewallRule = New-AzSqlServerFirewallRule -ResourceGroupName $resourceGroupName `
-ServerName $serverName `
-FirewallRuleName "AllowedIPs" -StartIpAddress $startIP -EndIpAddress $endIP
$serverFirewallRule
Criar apenas um banco de dados do razão
Crie apenas um banco de dados do razão com o cmdlet New-AzSqlDatabase.
O exemplo a seguir cria um banco de dados sem servidor.
Write-host "Creating a gen5 2 vCore serverless ledger database..."
$database = New-AzSqlDatabase -ResourceGroupName $resourceGroupName `
-ServerName $serverName `
-DatabaseName $databaseName `
-Edition GeneralPurpose `
-ComputeModel Serverless `
-ComputeGeneration Gen5 `
-VCore 2 `
-MinimumCapacity 2 `
-EnableLedger
$database
Criar uma conta de armazenamento
Crie uma conta de armazenamento para armazenar os hashes do razão com o cmdlet New-AzStorageAccount.
Write-host "Creating a storage account for ledger digests..."
$storage = New-AzStorageAccount -ResourceGroupName $resourceGroupName `
-Name $storageAccountName `
-Location $location `
-SkuName Standard_RAGRS `
-Kind StorageV2 `
-AccessTier Hot
$storage
Conceder ao servidor permissões para gravar hashes do razão
Atribua a identidade gerenciada do servidor à função Colaborador de Dados do Blob de Armazenamento usando o cmdlet New-AzRoleAssignment. Isso fornece ao servidor SQL as permissões apropriadas para publicar os hashes do banco de dados na conta de armazenamento.
Write-host "Granting the server access to the storage account..."
$assignment = New-AzRoleAssignment `
-ObjectId $server.Identity.PrincipalId `
-RoleDefinitionName "Storage Blob Data Contributor" `
-ResourceGroupName $resourceGroupName `
-ResourceType "Microsoft.Storage/storageAccounts" `
-ResourceName $storageAccountName
$assignment
Habilitar uploads de hashes do banco de dados
Atualize o banco de dados para começar a carregar os hashes do razão na conta de armazenamento usando o cmdlet Enable-AzSqlDatabaseLedgerDigestUpload. O servidor de banco de dados criará um contêiner, chamado sqldbledgerdigests, dentro da conta de armazenamento, e começará a gravar hashes do razão no contêiner.
Write-host "Enabling ledger digest upload..."
$ledgerDigestUploadConfig = Enable-AzSqlDatabaseLedgerDigestUpload `
-ResourceGroupName $resourceGroupName `
-ServerName $serverName `
-DatabaseName $databaseName `
-Endpoint $storage.PrimaryEndpoints.Blob
$ledgerDigestUploadConfig
Para proteger os hashes de serem excluídos ou atualizados, é recomendável configurar uma política de retenção baseada em tempo no contêiner sqldbledgerdigests usando os cmdlets Set-AzRmStorageContainerImmutabilityPolicy e Lock-AzRmStorageContainerImmutabilityPolicy. A política deve permitir gravações de blobs de acréscimo protegidos. Isso garante que o servidor de banco de dados possa adicionar blocos contendo novos hashes a um blob existente, enquanto a exclusão ou a atualização dos hashes está desabilitada para o período de imutabilidade especificado.
Importante
O exemplo a seguir usa o valor do período de imutabilidade de 1 dia. Em um ambiente de produção, você deve usar um valor muito maior.
Observação
Você não poderá excluir o contêiner ou a conta de armazenamento durante o período de imutabilidade especificado.
Para obter mais informações sobre a política de retenção baseada em tempo para contêineres, confira Configurar políticas de imutabilidade para contêineres.
Write-host "Configuring a time-based retention policy..."
$immutabilityPerdiod = 1
$containerName = "sqldbledgerdigests"
$policy = Set-AzRmStorageContainerImmutabilityPolicy `
-ResourceGroupName $resourceGroupName `
-StorageAccountName $storageAccountName `
-ContainerName $containerName `
-AllowProtectedAppendWrite $true `
-ImmutabilityPeriod $immutabilityPerdiod
Lock-AzRmStorageContainerImmutabilityPolicy `
-ResourceGroupName $resourceGroupName `
-StorageAccountName $storageAccountName `
-ContainerName $containerName `
-Etag $policy.Etag
Mantenha o grupo de recursos, o servidor e o banco de dados individual para as próximas etapas. Você aprenderá a usar a funcionalidade de razão do banco de dados com métodos diferentes.
Quando terminar de usar esses recursos, exclua o grupo de recursos que você criou. Essa ação também exclui o servidor e o banco de dados único dentro dele, bem como a conta de armazenamento.