Pour créer une base de données unique dans le portail Azure :
Accédez à la page Sélectionner l’option de déploiement SQL.
Sous Bases de données SQL, laissez Type de ressource défini sur Base de données unique, puis sélectionnez Créer.
Sous l’onglet De base du formulaire Créer une base de données SQL, sous Détails du projet, sélectionnez l’abonnement Azure que vous souhaitez utiliser.
Pour Groupe de ressources, sélectionnez Créer, entrez myResourceGroup, puis sélectionnez OK.
Pour Nom de la base de données, entrez démo.
Pour Serveur, sélectionnez Créer. Remplissez le formulaire de nouveau serveur avec les valeurs suivantes :
- Nom du serveur : entrez mysqlserver et ajoutez quelques caractères pour l’unicité. Nous ne pouvons pas fournir un nom de serveur exact à utiliser, car les noms de serveur doivent être globalement uniques pour tous les serveurs dans Azure, et non pas seulement dans un abonnement. Entrez un nom tel que mysqlserver12345, après quoi le portail vous indique s’il est disponible ou non.
- Connexion administrateur au serveur : entrez azureuser.
- Mot de passe: entrez un mot de passe répondant aux exigences. Entrez-le une nouvelle fois dans la zone Confirmer le mot de passe.
- Emplacement : sélectionnez un emplacement dans la liste déroulante.
- Autoriser les services Azure à accéder à ce serveur : sélectionnez cette option activer l’accès au stockage de synthèse.
Sélectionnez OK.
Laissez Vous souhaitez utiliser un pool élastique SQL ? avec la valeur Non.
Sous Calcul + stockage, sélectionnez Configurer la base de données.
Comme ce guide de démarrage rapide utilise une base de données serverless, sélectionnez Serverless, puis Appliquer.
Sous l’onglet Réseau, pour Méthode de connectivité, sélectionnez Point de terminaison public.
Pour Règles de pare-feu, affectez la valeur Oui à Ajouter l’adresse IP actuelle du client. Laissez Autoriser les services et les ressources Azure à accéder à ce serveur avec la valeur Non.
Sélectionnez Suivant : Sécurité en bas de la page.
Sous l’onglet Sécurité, dans la section Registre, sélectionnez l’option Configurer un registre.
Dans le volet Configurer un registre, dans la section Registre, activez la case à cocher Activer pour toutes les futures tables dans cette base de données. Ce paramètre garantit que toutes les futures tables dans la base de données seront des tables de registre. Ainsi, toutes les données de la base de données présentent une preuve de falsification. Par défaut, les nouvelles tables seront créées en tant que tables de registre pouvant être mises à jour, même si vous ne spécifiez pas LEDGER = ON
dans CREATE TABLE. Vous pouvez également conserver cette option désélectionnée. Vous devez alors activer la fonctionnalité de registre pour chaque table lorsque vous créez des tables à l’aide de Transact-SQL.
Dans la section Stockage de synthèse, l’option Activer le stockage de synthèse automatique est automatiquement sélectionnée. Ensuite, un nouveau compte Stockage Azure et un nouveau conteneur où vos synthèses sont stockées est créé.
Sélectionnez Appliquer.
Au bas de la page, sélectionnez Examiner et créer.
Dans la page Vérifier + créer, après vérification, sélectionnez Créer.
Vous allez créer un groupe de ressources, un serveur de base de données logique, une base de données de registre unique, puis vous allez configurer le chargement des condensés de registre à l’aide d’Azure CLI.
Lancement d’Azure Cloud Shell
Azure Cloud Shell est un interpréteur de commandes interactif et gratuit que vous pouvez utiliser pour exécuter les étapes de cet article. Il contient des outils Azure courants préinstallés et configurés pour être utilisés avec votre compte.
Pour ouvrir Cloud Shell, sélectionnez Essayer en haut à droite d’un bloc de code. Vous pouvez aussi lancer Cloud Shell dans un onglet distinct du navigateur en accédant à https://shell.azure.com. Sélectionnez Copier pour copier les blocs de code, collez-les dans Cloud Shell, puis appuyez sur Entrée pour les exécuter.
Définir les valeurs de paramètres
Les valeurs ci-dessous sont utilisées dans les commandes suivantes pour créer la base de données et les ressources requises. Les noms des serveurs et des comptes de stockage doivent être uniques dans Azure afin que la fonction $RANDOM puisse être utilisée pour créer le nom du serveur et le nom du compte de stockage.
Le nom de la ressource doit être unique dans votre abonnement. Remplacez <your resource group name>
par un nom unique et <your subscription ID>
par l’ID de votre abonnement.
Remplacez les valeurs 0.0.0.0 de la plage d’adresses IP pour les faire correspondre à votre environnement spécifique.
Remplacez westeurope par le nom de région Azure de votre choix.
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
Créer un groupe de ressources
Créez un groupe de ressources avec la commande az group create. Un groupe de ressources Azure est un conteneur logique dans lequel les ressources Azure sont déployées et gérées.
az group create --name $resourceGroupName --location $location
Créer un serveur avec une identité managée
Créez un serveur avec la commande az sql server create. La commande crée le serveur avec une identité managée attribuée.
az sql server create \
--name $serverName \
--resource-group $resourceGroupName \
--location $location \
--admin-user $adminLogin \
--admin-password $adminPassword \
--assign-identity
Cette commande stocke l’ID dans une variable, qui sera utilisée ultérieurement pour accorder au serveur les autorisations de chargement des données de registre.
# 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`
Créez une règle de pare-feu avec la commande 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
Créer une base de données de registre unique
Créez une base de données de registre avec la commande az sql db create. La commande suivante crée une base de données serverless avec le registre activé.
az sql db create \
--resource-group $resourceGroupName \
--server $serverName \
--name $databaseName \
--edition GeneralPurpose \
--family Gen5 \
--capacity 2 \
--compute-model Serverless \
--ledger-on
Créez un compte de stockage.
Créez un compte de stockage dans lequel stocker les condensés de registre à l’aide de la commande az storage account create.
az storage account create \
--name $storageAccountName \
--resource-group $resourceGroupName \
--location $location \
--sku Standard_GRS \
--kind StorageV2
Accorder au serveur l’autorisation d’écrire des condensés de registre
Attribuez l’identité managée du serveur au rôle Contributeur aux données Blob du stockage à l’aide de la commande az role assignment create. Cela accorde au serveur SQL les autorisations nécessaires pour publier les condensés de base de données dans le compte de stockage.
az role assignment create \
--assignee-object-id $principalId \
--assignee-principal-type "ServicePrincipal" \
--role "Storage Blob Data Contributor" \
--scope $storageAccountResourceId
Activer le chargement des condensés de base de données
Mettez à jour la base de données pour commencer à charger les condensés de registre dans le compte de stockage à l’aide de la commande az sql db ledger-digest-uploads enable.
az sql db ledger-digest-uploads enable \
--name $databaseName \
--resource-group $resourceGroupName \
--server $serverName \
--endpoint $storageAccountURL
Pour empêcher la suppression et la mise à jour des condensés, il est recommandé de configurer une stratégie de conservation limitée dans le temps pour le conteneur sqldbledgerdigests à l’aide des commandes az storage container immutability-policy create et az storage container immutability-policy lock. La stratégie doit autoriser les écritures protégées d’objets blob d’ajout. Ainsi, le serveur de base de données pourra ajouter des blocs contenant de nouveaux condensés à un objet blob existant pendant que la suppression et la mise à jour des condensés sont désactivées dans le cadre de la période d’immuabilité spécifiée.
Important
L’exemple ci-dessous utilise une période d’immuabilité de 1 jour. Dans un environnement de production, vous devrez utiliser une valeur beaucoup plus élevée.
Notes
Une fois que les condensés de base de données commencent à être chargés dans le compte de stockage, vous ne pourrez pas supprimer le compte de stockage tant que la stratégie d’immuabilité n’aura pas expiré. Vous n’aurez pas à définir de stratégie d’immuabilité si vous prévoyez de nettoyer les ressources dès la fin de ce guide.
Pour plus d’informations sur les stratégies de conservation basée sur le temps destinées aux conteneurs, consultez Configurer des stratégies d’immuabilité pour les conteneurs.
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
Vous allez créer un groupe de ressources, un serveur de base de données logique, une base de données de registre unique, puis vous allez configurer le chargement des condensés de registre à l’aide de Windows PowerShell.
Lancement d’Azure Cloud Shell
Azure Cloud Shell est un interpréteur de commandes interactif et gratuit que vous pouvez utiliser pour exécuter les étapes de cet article. Il contient des outils Azure courants préinstallés et configurés pour être utilisés avec votre compte.
Pour ouvrir Cloud Shell, sélectionnez Essayer en haut à droite d’un bloc de code. Vous pouvez aussi lancer Cloud Shell dans un onglet distinct du navigateur en accédant à https://shell.azure.com. Sélectionnez Copier pour copier les blocs de code, collez-les dans Cloud Shell, puis appuyez sur Entrée pour les exécuter.
Définir les valeurs de paramètres
Les valeurs ci-dessous sont utilisées dans les commandes suivantes pour créer la base de données et les ressources requises. Les noms des serveurs et des comptes de stockage doivent être uniques dans Azure afin que l’applet de commande Get-Random puisse être utilisée pour créer le nom du serveur et le nom du compte de stockage.
Le nom de la ressource doit être unique dans votre abonnement. Remplacez <your resource group name>
par un nom unique.
Remplacez les valeurs 0.0.0.0 de la plage d’adresses IP pour les faire correspondre à votre environnement spécifique.
Remplacez westeurope par le nom de région Azure de votre choix.
# 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
Créer un groupe de ressources
Créez un groupe de ressources Azure avec New-AzResourceGroup. Un groupe de ressources est un conteneur logique dans lequel les ressources Azure sont déployées et gérées.
Write-host "Creating resource group..."
$resourceGroup = New-AzResourceGroup `
-Name $resourceGroupName `
-Location $location
$resourceGroup
Créer un serveur
Créez un serveur avec l’applet de commande New-AzSqlServer.
L’applet de commande crée le serveur avec une identité managée déjà attribuée. Vous en aurez besoin plus tard pour accorder au serveur les autorisations nécessaires au chargement des condensés de registre.
Lorsque vous y êtes invité, entrez votre nom d’utilisateur et votre mot de passe d’administrateur SQL.
Write-host "Creating primary server..."
$server = New-AzSqlServer `
-ResourceGroupName $resourceGroupName `
-ServerName $serverName `
-Location $location `
-AssignIdentity `
-SqlAdministratorCredentials (Get-Credential)
$server
Créer une règle de pare-feu
Créez une règle de pare-feu de serveur avec l’applet de commande New-AzSqlServerFirewallRule.
Write-host "Configuring server firewall rule..."
$serverFirewallRule = New-AzSqlServerFirewallRule -ResourceGroupName $resourceGroupName `
-ServerName $serverName `
-FirewallRuleName "AllowedIPs" -StartIpAddress $startIP -EndIpAddress $endIP
$serverFirewallRule
Créer une base de données de registre unique
Créez une base de données de registre unique avec l’applet de commande New-AzSqlDatabase.
L’exemple ci-dessous crée une base de données serverless.
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
Créez un compte de stockage.
Créez un compte de stockage pour stocker les condensés de registre avec l’applet de commande 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
Accorder au serveur l’autorisation d’écrire des condensés de registre
Attribuez l’identité managée du serveur au rôle Contributeur aux données Blob du stockage à l’aide de l’applet de commande New-AzRoleAssignment. Cela accorde au serveur SQL les autorisations nécessaires pour publier les condensés de base de données dans le compte de stockage.
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
Activer le chargement des condensés de base de données
Mettez à jour la base de données pour commencer à charger les condensés de registre dans le compte de stockage à l’aide de l’applet de commande Enable-AzSqlDatabaseLedgerDigestUpload. Le serveur de base de données crée un nouveau conteneur nommé sqldbdbrdigests dans le compte de stockage, et commence à écrire des condensés de registre dans le conteneur.
Write-host "Enabling ledger digest upload..."
$ledgerDigestUploadConfig = Enable-AzSqlDatabaseLedgerDigestUpload `
-ResourceGroupName $resourceGroupName `
-ServerName $serverName `
-DatabaseName $databaseName `
-Endpoint $storage.PrimaryEndpoints.Blob
$ledgerDigestUploadConfig
Pour empêcher la suppression et la mise à jour des registres, il est recommandé de configurer une stratégie de conservation basée sur le temps pour le conteneur sqldbledgerdigests à l’aide des applets de commande Set-AzRmStorageContainerImmutabilityPolicy et Lock-AzRmStorageContainerImmutabilityPolicy. La stratégie doit autoriser les écritures protégées d’objets blob d’ajout. Ainsi, le serveur de base de données pourra ajouter des blocs contenant de nouveaux condensés à un objet blob existant pendant que la suppression et la mise à jour des condensés sont désactivées dans le cadre de la période d’immuabilité spécifiée.
Important
L’exemple ci-dessous utilise une période d’immuabilité de 1 jour. Dans un environnement de production, vous devrez utiliser une valeur beaucoup plus élevée.
Notes
Vous ne pourrez pas supprimer le conteneur ni le compte de stockage pendant la période d’immuabilité spécifiée.
Pour plus d’informations sur les stratégies de conservation basée sur le temps destinées aux conteneurs, consultez Configurer des stratégies d’immuabilité pour les conteneurs.
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
Conservez le groupe de ressources, le serveur et la base de données unique pour les étapes suivantes. Vous allez apprendre à utiliser la fonctionnalité de registre de base de données avec différentes méthodes.
Une fois que vous avez fini d’utiliser ces ressources, supprimez le groupe de ressources que vous avez créé. Cette action supprime également le serveur et la base de données unique qu’il contient, ainsi que le compte de stockage.