Ejercicio: Configuración de Azure SQL Database

Completado

En esta unidad, implementará un servidor lógico de Azure SQL y creará bases de datos para usar las características descritas para proteger Azure SQL Database.

Configuración: Uso de scripts para implementar Azure SQL Database

En la parte derecha, verá Azure Cloud Shell, que es una manera de interactuar con Azure mediante un explorador. Antes de comenzar con el ejercicio, deberá ejecutar un script en Cloud Shell para crear el entorno con la base de datos de muestra AdventureWorks en Azure SQL Database. En el script, se le solicitará una contraseña para la nueva base de datos y la dirección IP local para permitir que el dispositivo se conecte a la base de datos.

Estos scripts deben tardar de tres a cinco minutos en completarse. No olvide anotar su password, unique ID y region, porque no se volverán a mostrar.

  1. Para empezar, obtenga la dirección IP local. Asegúrese de que está desconectado de cualquier servicio VPN y abra un terminal de PowerShell local en el dispositivo. Ejecute el comando siguiente y anote la dirección IP resultante.

    (Invoke-WebRequest -Uri "https://ipinfo.io/ip").Content
    
  2. En Cloud Shell, ejecute los comandos que se muestran a continuación. Escriba una contraseña compleja y, en el símbolo del sistema, escriba la IP pública local que ha obtenido en el paso anterior. Reemplace "[nombre del grupo de recursos del espacio aislado]" por "[nombre del grupo de recursos del espacio aislado]".

    $adminSqlLogin = "cloudadmin"
    $password = Read-Host "Your username is 'cloudadmin'. Enter a password for your Azure SQL Database server that meets the password requirements"
    # Prompt for local ip address
    $ipAddress = Read-Host "Disconnect your VPN, open PowerShell on your machine and run '(Invoke-WebRequest -Uri "https://ipinfo.io/ip").Content'. Enter the value (include periods) next to 'Address' " 
    # Get resource group and location and random string
    $resourceGroup = Get-AzResourceGroup | Where ResourceGroupName -like "[sandbox resource group name]"
    $resourceGroupName = "[sandbox resource group name]"
    $uniqueID = Get-Random -Minimum 100000 -Maximum 1000000
    $storageAccountName = "mslearnsa"+$uniqueID
    $location = $resourceGroup.Location
    # The logical server name has to be unique in the system
    $serverName = "aw-server$($uniqueID)"
    
  3. Genere y almacene en un archivo de texto la información que necesitará a lo largo del módulo ejecutando el siguiente código en Cloud Shell. Probablemente tenga que presionar Enter después de pegar el código, ya que la última línea no se ejecutará de forma predeterminada.

    Write-Host "Your unique ID for future exercises in this module:" $uniqueID
    Write-Host "Your resource group name is:" $resourceGroupName
    Write-Host "Your resources were deployed in the following region:" $location
    Write-Host "Your server name is:" $serverName
    

    Nota

    No olvide anotar su password, unique ID y region. Los usará a lo largo del módulo.

  4. Ejecute el script siguiente para implementar un servidor lógico de Azure SQL Database con la muestra AdventureWorks, así como una base de datos de libro de contabilidad que analizaremos en unidades futuras. El script también agrega la dirección IP como una regla de firewall, habilita Microsoft Defender para SQL y crea una cuenta de almacenamiento para su uso en unidades futuras. Espere varios minutos para que se complete el script.

    # The sample database name
    $databaseName = "AdventureWorks"
    # The ledger database name
    $databaseName2 = "myLedgerDatabase"
    # The storage account name has to be unique in the system
    $storageAccountName = $("sql$($uniqueID)")
    # Create a new server with a system wide unique server name
    $server = New-AzSqlServer -ResourceGroupName $resourceGroupName `
        -ServerName $serverName `
        -Location $location `
        -SqlAdministratorCredentials $(New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $adminSqlLogin, $(ConvertTo-SecureString -String $password -AsPlainText -Force))
    # Create a server firewall rule that allows access from the specified IP range and all Azure services
    $serverFirewallRule = New-AzSqlServerFirewallRule `
        -ResourceGroupName $resourceGroupName `
        -ServerName $serverName `
        -FirewallRuleName "AllowedIPs" `
        -StartIpAddress $ipAddress -EndIpAddress $ipAddress 
    $allowAzureIpsRule = New-AzSqlServerFirewallRule `
        -ResourceGroupName $resourceGroupName `
        -ServerName $serverName `
        -AllowAllAzureIPs
    # Create databases
    $database = New-AzSqlDatabase  -ResourceGroupName $resourceGroupName `
        -ServerName $serverName `
        -DatabaseName $databaseName `
        -SampleName "AdventureWorksLT" `
        -Edition "GeneralPurpose" -Vcore 2 -ComputeGeneration "Gen5"
    $database2 = New-AzSqlDatabase  -ResourceGroupName $resourceGroupName `
        -ServerName $serverName `
        -DatabaseName $databaseName2 `
        -Edition "GeneralPurpose" -Vcore 2 -ComputeGeneration "Gen5"
    # Enable Microsoft Defender for SQL
    $azureDefender = Enable-AzSqlServerAdvancedDataSecurity `
        -ResourceGroupName $resourceGroupName `
        -ServerName $serverName
    # Create a storage account
    $storageAccount = New-AzStorageAccount -ResourceGroupName $resourceGroupName `
        -AccountName $storageAccountName `
        -Location $location `
        -Type "Standard_LRS"
    
  5. Abra SQL Server Management Studio (SSMS) y cree una nueva conexión con el servidor lógico. En Nombre del servidor, escriba el nombre del servidor lógico de Azure SQL Database (por ejemplo: aw-server<unique ID>.database.windows.net). Si antes no ha guardado el nombre, es posible que tenga que ir a Azure Portal para obtenerlo.

    En Azure Portal, busque AdventureWorks para encontrar la base de datos y su servidor lógico asociado.

    Cambie la autenticación a Autenticación de SQL Server y escriba la contraseña y el inicio de sesión de administrador del servidor correspondientes (los que proporcionó durante la implementación del ejercicio anterior).

    Active la casilla Recordar contraseña. A continuación, seleccione Conectar.

    Captura de pantalla de cómo conectarse a SQL Database en SSMS.

    Nota:

    En función de la configuración local (por ejemplo, VPN), es posible que la dirección IP del cliente sea diferente a la que ha usado Azure Portal durante la implementación. Si es diferente, aparecerá un mensaje emergente en el que se indica: "La dirección IP del cliente no tiene acceso al servidor. Inicie sesión en una cuenta de Azure y cree una regla de firewall para habilitar el acceso". Si recibe este mensaje, inicie sesión con la cuenta que usa para el espacio aislado y agregue una regla de firewall para la dirección IP del cliente. Puede completar todos estos pasos mediante el asistente emergente en SSMS.

  6. Una vez conectado al servidor lógico de Azure SQL, expanda la carpeta Bases de datos.

  7. Debería ver las dos bases de datos que se crearon: AdventureWorks y myLedgerDatabase. Haga clic con el botón derecho en la base de datos myLedgerDatabase y seleccione Nueva consulta. A continuación, ejecute el siguiente comando para crear una tabla denominada Account.Balance. Para ejecutar la consulta, seleccione Ejecutar en la barra de tareas.

    CREATE SCHEMA [Account];
    GO  
    CREATE TABLE [Account].[Balance]
    (
        [CustomerID] INT NOT NULL PRIMARY KEY CLUSTERED,
        [LastName] VARCHAR (50) NOT NULL,
        [FirstName] VARCHAR (50) NOT NULL,
        [Balance] DECIMAL (10,2) NOT NULL
    )
    WITH 
    (
     SYSTEM_VERSIONING = ON (HISTORY_TABLE = [Account].[BalanceHistory]),
     LEDGER = ON
    );