Ćwiczenie — konfigurowanie usługi Azure SQL Database

Ukończone

W tej lekcji wdrożysz serwer logiczny Usługi Azure SQL i utworzysz bazy danych, aby korzystać z funkcji omówionych w celu zabezpieczenia bazy danych Azure SQL Database.

Konfigurowanie: wdrażanie usługi Azure SQL Database przy użyciu skryptów

Po prawej stronie jest usługa Azure Cloud Shell, która umożliwia pracę z platformą Azure przy użyciu przeglądarki. Przed rozpoczęciem ćwiczenia uruchomisz skrypt w usłudze Cloud Shell, aby utworzyć środowisko przy użyciu przykładowej AdventureWorks bazy danych w usłudze Azure SQL Database. W skrypcie zostanie wyświetlony monit o podanie hasła dla nowej bazy danych i lokalnego adresu IP, aby umożliwić urządzeniu nawiązywanie połączenia z bazą danych.

Wykonanie tych skryptów powinno zająć od trzech do pięciu minut. Pamiętaj, aby zanotować wartości password, unique IDi region, ponieważ nie zostaną one ponownie wyświetlone.

  1. Zacznij od uzyskania lokalnego adresu IP. Upewnij się, że odłączono cię od dowolnej usługi sieci VPN i otwórz lokalny terminal programu PowerShell na urządzeniu. Uruchom następujące polecenie i zanotuj wynikowy adres IP.

    (Invoke-WebRequest -Uri "https://ipinfo.io/ip").Content
    
  2. Uruchom następujące polecenia w usłudze Cloud Shell. Wprowadź złożone hasło i w wierszu polecenia wprowadź lokalny publiczny adres IP uzyskany w poprzednim kroku. Zastąp ciąg "[nazwa grupy zasobów piaskownicy]" ciągiem "[nazwa grupy zasobów piaskownicy]".

    $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. Uzyskaj dane wyjściowe i zapisz w pliku tekstowym informacje, które będą potrzebne w całym module, uruchamiając następujący kod w usłudze Cloud Shell. Prawdopodobnie trzeba będzie nacisnąć Enter po wklejeniu kodu, ponieważ ostatni wiersz nie będzie domyślnie uruchamiany.

    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
    

    Uwaga

    Pamiętaj, aby zanotować wartości password, unique IDi region. Będziesz ich używać w całym module.

  4. Uruchom następujący skrypt, aby wdrożyć serwer logiczny usługi Azure SQL Database z AdventureWorks przykładem, a także bazę danych rejestru, którą omówimy w przyszłych lekcjach. Skrypt dodaje również adres IP jako regułę zapory, włącza usługę Microsoft Defender dla języka SQL i tworzy konto magazynu do użycia w przyszłych lekcjach. Poczekaj kilka minut na ukończenie tego skryptu.

    # 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. Otwórz program SQL Server Management Studio (SSMS), a następnie utwórz nowe połączenie z serwerem logicznym. W polu Nazwa serwera wprowadź nazwę serwera logicznego usługi Azure SQL Database (na przykład aw-server.database.windows.net<unique ID>). Jeśli ta nazwa nie została przez Ciebie zanotowana, aby ją uzyskać, musisz przejść do witryny Azure Portal.

    W witrynie Azure Portal wyszukaj nazwę AdventureWorks, aby znaleźć bazę danych i skojarzony z nią serwer logiczny.

    Zmień uwierzytelnianie na Uwierzytelnianie programu SQL Server i wprowadź odpowiedni identyfikator logowania administratora serwera i hasło podane podczas wdrażania w poprzednim ćwiczeniu.

    Zaznacz pole wyboru Zapamiętaj hasło, a następnie wybierz pozycję Połączenie.

    Zrzut ekranu przedstawiający nawiązywanie połączenia z usługą SQL Database w programie SSMS

    Uwaga

    W zależności od konfiguracji lokalnej (np. sieci VPN) adres IP klienta może się różnić od adresu IP, który był używany przez witrynę Azure Portal podczas wdrażania. Jeśli różni się, zostanie wyświetlone okno dialogowe z komunikatem „Twój adres IP klienta nie ma dostępu do serwera. Zaloguj się do konta platformy Azure i utwórz nową regułę zapory, aby włączyć dostęp". Jeśli zostanie wyświetlony ten komunikat, zaloguj się przy użyciu konta używanego dla piaskownicy i dodaj regułę zapory dla adresu IP klienta. Wszystkie te kroki można wykonać przy użyciu kreatora podręcznego w programie SSMS.

  6. Po nawiązaniu połączenia z serwerem logicznym usługi Azure SQL rozwiń folder Bazy danych .

  7. Powinny zostać wyświetlone dwie utworzone bazy danych i AdventureWorksmyLedgerDatabase. Kliknij prawym przyciskiem myszy myLedgerDatabase bazę danych i wybierz pozycję Nowe zapytanie, a następnie uruchom następujące polecenie, aby utworzyć tabelę o nazwie Account.Balance. Zapytanie można uruchomić, wybierając pozycję Wykonaj na pasku zadań.

    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
    );