Aby utworzyć pojedynczą bazę danych w witrynie Azure Portal:
Przejdź do strony Wybierz wdrożenie SQL.
W obszarze Bazy danych SQL pozostaw wartość Typ zasobu ustawioną na Pojedyncza baza danych, a następnie wybierz pozycję Utwórz.
Na karcie Podstawy formularza Tworzenie bazy danych SQL Database w obszarze Szczegóły projektu wybierz subskrypcję platformy Azure, której chcesz użyć.
W obszarze Grupa zasobów wybierz pozycję Utwórz nową, wprowadź myResourceGroup i wybierz przycisk OK.
W polu Nazwa bazy danych wprowadź demo.
W obszarze Serwer wybierz pozycję Utwórz nową. Wypełnij formularz Nowy serwer następującymi wartościami:
- Nazwa serwera: wprowadź ciąg mysqlserver i dodaj kilka znaków w celu uzyskania unikatowości. Nie można podać dokładnej nazwy serwera do użycia, ponieważ nazwy serwerów muszą być globalnie unikatowe dla wszystkich serwerów na platformie Azure, a nie tylko w ramach subskrypcji. Wprowadź wartość podobną do mysqlserver12345, a portal informuje, czy jest on dostępny, czy nie.
- Identyfikator logowania administratora serwera: wprowadź wartość azureuser.
- Hasło: wprowadź hasło spełniające wymagania. Wprowadź je ponownie w polu Potwierdź hasło .
- Lokalizacja: wybierz lokalizację z listy rozwijanej.
- Zezwalaj usługom platformy Azure na dostęp do tego serwera: wybierz tę opcję, aby włączyć dostęp do magazynu szyfrowane.
Wybierz przycisk OK.
Pozostaw opcję Chcesz użyć elastycznej puli SQL ustawionej na Nie.
W obszarze Środowisko obliczeniowe i magazyn wybierz pozycję Skonfiguruj bazę danych.
W tym przewodniku Szybki start jest używana bezserwerowa baza danych, dlatego wybierz pozycję Bezserwerowa, a następnie wybierz pozycję Zastosuj.
Na karcie Sieć w polu Metoda łączności wybierz pozycję Publiczny punkt końcowy.
W obszarze Reguły zapory ustaw wartość Dodaj bieżący adres IP klienta na Wartość Tak. Pozostaw opcję Zezwalaj usługom i zasobom platformy Azure na dostęp do tego serwera ustawionego na nie.
Wybierz pozycję Dalej: Zabezpieczenia w dolnej części strony.
Na karcie Zabezpieczenia w sekcji Rejestr wybierz opcję Konfiguruj rejestr.
W okienku Konfigurowanie rejestru w sekcji Rejestr zaznacz pole wyboru Włącz dla wszystkich przyszłych tabel w tej bazie danych . To ustawienie zapewnia, że wszystkie przyszłe tabele w bazie danych będą tabelami rejestru. Z tego powodu wszystkie dane w bazie danych będą pokazywać wszelkie dowody naruszenia. Domyślnie nowe tabele zostaną utworzone jako tabele rejestru z możliwością aktualizowania, nawet jeśli nie zostanie określona w sekcji LEDGER = ON
CREATE TABLE. Możesz również pozostawić tę opcję niezaznaczone. Następnie należy włączyć funkcje rejestru dla poszczególnych tabel podczas tworzenia nowych tabel przy użyciu języka Transact-SQL.
W sekcji Magazyn skrótów jest automatycznie wybierana opcja Włącz automatyczny magazyn skrótów. Następnie zostanie utworzone nowe konto usługi Azure Storage i kontener, w którym są przechowywane skróty.
Wybierz Zastosuj.
Wybierz pozycję Przejrzyj i utwórz w dolnej części strony.
Na stronie Przeglądanie i tworzenie po przejrzeniu wybierz pozycję Utwórz.
Utworzysz grupę zasobów, serwer logiczny bazy danych, pojedynczą bazę danych rejestru i skonfigurujesz przekazywanie skrótów rejestru przy użyciu interfejsu wiersza polecenia platformy Azure.
Uruchamianie usługi Azure Cloud Shell
Usługa Azure Cloud Shell to bezpłatna interaktywna powłoka, której możesz używać do wykonywania kroków opisanych w tym artykule. Udostępnia ona wstępnie zainstalowane i najczęściej używane narzędzia platformy Azure, które są skonfigurowane do użycia na koncie.
Aby otworzyć usługę Cloud Shell, wybierz pozycję Wypróbuj w prawym górnym rogu bloku kodu. Możesz również uruchomić usługę Cloud Shell w oddzielnej karcie przeglądarki, przechodząc do strony https://shell.azure.com. Wybierz pozycję Kopiuj , aby skopiować bloki kodu, wklej go w usłudze Cloud Shell, a następnie naciśnij Enter , aby go uruchomić.
Ustawianie wartości parametrów
Następujące wartości są używane w kolejnych poleceniach do tworzenia bazy danych i wymaganych zasobów. Nazwy serwerów i nazwy kont magazynu muszą być globalnie unikatowe na całej platformie Azure, więc funkcja $RANDOM jest używana do tworzenia nazwy serwera i nazwy konta magazynu.
Nazwa zasobu musi być unikatowa w subskrypcji. Zastąp <your resource group name>
ciąg unikatową nazwą i <your subscription ID>
identyfikatorem subskrypcji.
Zastąp wartości 0.0.0.0 w zakresie adresów IP, aby pasować do określonego środowiska.
Zastąp ciąg westeurope preferowaną nazwą regionu platformy Azure.
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
Tworzenie grupy zasobów
Utwórz grupę zasobów za pomocą polecenia az group create. Grupa zasobów platformy Azure to logiczny kontener przeznaczony do wdrażania zasobów platformy Azure i zarządzania nimi.
az group create --name $resourceGroupName --location $location
Tworzenie serwera z tożsamością zarządzaną
Utwórz serwer za pomocą polecenia az sql server create . Polecenie tworzy serwer z przypisaną tożsamością zarządzaną.
az sql server create \
--name $serverName \
--resource-group $resourceGroupName \
--location $location \
--admin-user $adminLogin \
--admin-password $adminPassword \
--assign-identity
To polecenie przechowuje identyfikator w zmiennej, która będzie później używana do udzielania uprawnień serwera do przekazywania skrótów rejestru.
# 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`
Utwórz regułę zapory za pomocą polecenia 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
Tworzenie pojedynczej bazy danych rejestru
Utwórz bazę danych rejestru za pomocą polecenia az sql db create . Następujące polecenie tworzy bezserwerową bazę danych z włączonym rejestrem.
az sql db create \
--resource-group $resourceGroupName \
--server $serverName \
--name $databaseName \
--edition GeneralPurpose \
--family Gen5 \
--capacity 2 \
--compute-model Serverless \
--ledger-on
Tworzenie konta magazynu
Utwórz konto magazynu do przechowywania skrótów rejestru za pomocą polecenia az storage account create .
az storage account create \
--name $storageAccountName \
--resource-group $resourceGroupName \
--location $location \
--sku Standard_GRS \
--kind StorageV2
Udzielanie uprawnień serwera do zapisywania skrótów rejestru
Przypisz tożsamość zarządzaną serwera do roli Współautor danych obiektu blob usługi Storage za pomocą polecenia az role assignment create . Dzięki temu serwer SQL ma odpowiednie uprawnienia do publikowania skrótów bazy danych na koncie magazynu.
az role assignment create \
--assignee-object-id $principalId \
--assignee-principal-type "ServicePrincipal" \
--role "Storage Blob Data Contributor" \
--scope $storageAccountResourceId
Włączanie przekazywania skrótów bazy danych
Zaktualizuj bazę danych, aby rozpocząć przekazywanie skrótów rejestru do konta magazynu przy użyciu polecenia az sql db ledger-digest-uploads .
az sql db ledger-digest-uploads enable \
--name $databaseName \
--resource-group $resourceGroupName \
--server $serverName \
--endpoint $storageAccountURL
Aby chronić skróty przed usunięciem lub zaktualizowaniem, zaleca się skonfigurowanie zasad przechowywania na podstawie czasu w kontenerze sqldbledgerdigests przy użyciu polecenia az storage container immutability-policy create i az storage container immutability-policy lock. Zasady muszą zezwalać na zapisywanie chronionych uzupełnialnych obiektów blob. Dzięki temu serwer bazy danych może dodawać bloki zawierające nowe skróty do istniejącego obiektu blob, podczas gdy usuwanie lub aktualizowanie skrótów jest wyłączone dla określonego okresu niezmienności.
Ważne
W poniższym przykładzie użyto wartości okresu niezmienności równej 1 dzień. W środowisku produkcyjnym należy użyć znacznie większej wartości.
Uwaga
Po rozpoczęciu przekazywania skrótów bazy danych do konta magazynu nie będzie można usunąć konta magazynu do momentu wygaśnięcia zasad niezmienności. Ustawienie zasad niezmienności można pominąć, jeśli planujesz wyczyścić zasoby bezpośrednio po tym przewodniku Szybki start.
Aby uzyskać więcej informacji na temat zasad przechowywania na podstawie czasu dla kontenerów, zobacz Konfigurowanie zasad niezmienności dla kontenerów.
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
Utworzysz grupę zasobów, serwer logiczny bazy danych, pojedynczą bazę danych rejestru i skonfigurujesz przekazywanie skrótów rejestru przy użyciu programu Windows PowerShell.
Uruchamianie usługi Azure Cloud Shell
Usługa Azure Cloud Shell to bezpłatna interaktywna powłoka, której możesz używać do wykonywania kroków opisanych w tym artykule. Udostępnia ona wstępnie zainstalowane i najczęściej używane narzędzia platformy Azure, które są skonfigurowane do użycia na koncie.
Aby otworzyć usługę Cloud Shell, wybierz pozycję Wypróbuj w prawym górnym rogu bloku kodu. Możesz również uruchomić usługę Cloud Shell w oddzielnej karcie przeglądarki, przechodząc do strony https://shell.azure.com. Wybierz pozycję Kopiuj , aby skopiować bloki kodu, wklej go w usłudze Cloud Shell, a następnie naciśnij Enter , aby go uruchomić.
Ustawianie wartości parametrów
Następujące wartości są używane w kolejnych poleceniach do tworzenia bazy danych i wymaganych zasobów. Nazwy serwerów i nazwy kont magazynu muszą być globalnie unikatowe na całej platformie Azure, więc polecenie cmdlet Get-Random jest używane do tworzenia nazwy serwera i nazwy konta magazynu.
Nazwa zasobu musi być unikatowa w subskrypcji. Zastąp ciąg <your resource group name>
unikatową nazwą.
Zastąp wartości 0.0.0.0 w zakresie adresów IP, aby pasować do określonego środowiska.
Zastąp ciąg westeurope preferowaną nazwą regionu platformy Azure.
# 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
Tworzenie grupy zasobów
Utwórz grupę zasobów platformy Azure za pomocą polecenia New-AzResourceGroup. Grupa zasobów to logiczny kontener przeznaczony do wdrażania zasobów platformy Azure i zarządzania nimi.
Write-host "Creating resource group..."
$resourceGroup = New-AzResourceGroup `
-Name $resourceGroupName `
-Location $location
$resourceGroup
Tworzenie serwera
Utwórz serwer za pomocą polecenia cmdlet New-AzSqlServer .
Polecenie cmdlet tworzy serwer z przypisaną tożsamością zarządzaną, która będzie potrzebna później, aby przyznać serwerowi uprawnienia do przekazywania skrótów rejestru.
Po wyświetleniu monitu wprowadź nazwę użytkownika administratora SQL i hasło.
Write-host "Creating primary server..."
$server = New-AzSqlServer `
-ResourceGroupName $resourceGroupName `
-ServerName $serverName `
-Location $location `
-AssignIdentity `
-SqlAdministratorCredentials (Get-Credential)
$server
Tworzenie reguły zapory
Utwórz regułę zapory serwera za pomocą polecenia cmdlet New-AzSqlServerFirewallRule .
Write-host "Configuring server firewall rule..."
$serverFirewallRule = New-AzSqlServerFirewallRule -ResourceGroupName $resourceGroupName `
-ServerName $serverName `
-FirewallRuleName "AllowedIPs" -StartIpAddress $startIP -EndIpAddress $endIP
$serverFirewallRule
Tworzenie pojedynczej bazy danych rejestru
Utwórz pojedynczą bazę danych rejestru za pomocą polecenia cmdlet New-AzSqlDatabase .
Poniższy przykład tworzy bezserwerową bazę danych.
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
Tworzenie konta magazynu
Utwórz konto magazynu do przechowywania skrótów rejestru za pomocą polecenia 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
Udzielanie uprawnień serwera do zapisywania skrótów rejestru
Przypisz tożsamość zarządzaną serwera do roli Współautor danych obiektu blob usługi Storage za pomocą polecenia cmdlet New-AzRoleAssignment . Dzięki temu serwer SQL ma odpowiednie uprawnienia do publikowania skrótów bazy danych na koncie magazynu.
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
Włączanie przekazywania skrótów bazy danych
Zaktualizuj bazę danych, aby rozpocząć przekazywanie skrótów rejestru do konta magazynu przy użyciu polecenia cmdlet Enable-AzSqlDatabaseLedgerDigestUpload . Serwer bazy danych utworzy nowy kontener o nazwie sqldbledgerdigests na koncie magazynu i rozpocznie zapisywanie skrótów rejestru w kontenerze.
Write-host "Enabling ledger digest upload..."
$ledgerDigestUploadConfig = Enable-AzSqlDatabaseLedgerDigestUpload `
-ResourceGroupName $resourceGroupName `
-ServerName $serverName `
-DatabaseName $databaseName `
-Endpoint $storage.PrimaryEndpoints.Blob
$ledgerDigestUploadConfig
Aby chronić skróty przed usunięciem lub zaktualizowaniem, zaleca się skonfigurowanie zasad przechowywania na podstawie czasu w kontenerze sqldbledgerdigests przy użyciu poleceń cmdlet Set-AzRmStorageContainerImmutabilityPolicy i Lock-AzRmStorageContainerImmutabilityPolicy . Zasady muszą zezwalać na zapisywanie chronionych uzupełnialnych obiektów blob. Dzięki temu serwer bazy danych może dodawać bloki zawierające nowe skróty do istniejącego obiektu blob, podczas gdy usuwanie lub aktualizowanie skrótów jest wyłączone dla określonego okresu niezmienności.
Ważne
W poniższym przykładzie użyto wartości okresu niezmienności równej 1 dzień. W środowisku produkcyjnym należy użyć znacznie większej wartości.
Uwaga
Nie będzie można usunąć kontenera ani konta magazynu w określonym okresie niezmienności.
Aby uzyskać więcej informacji na temat zasad przechowywania na podstawie czasu dla kontenerów, zobacz Konfigurowanie zasad niezmienności dla kontenerów.
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
Zachowaj grupę zasobów, serwer i pojedynczą bazę danych, aby wykonać następne kroki. Dowiesz się, jak używać funkcji rejestru bazy danych z różnymi metodami.
Po zakończeniu korzystania z tych zasobów usuń utworzoną grupę zasobów. Ta akcja powoduje również usunięcie serwera i pojedynczej bazy danych oraz konta magazynu.