演習 - Azure SQL Database を構成する
このユニットでは、Azure SQL 論理サーバーをデプロイし、データベースを作成して、Azure SQL Database をセキュリティで保護するための機能を活用します。
セットアップ:スクリプトを使用して Azure SQL Database をデプロイする
右側には Azure Cloud Shell が表示されます。これは、ブラウザーを使用して Azure と対話する方法です。 この演習を始める前に、Cloud Shell 内でスクリプトを実行し、Azure SQL Database 内に自分用の環境とサンプル AdventureWorks
データベースを作成します。 このスクリプトでは、新しいデータベースのパスワードとローカル IP アドレスを入力するように求められます。これにより、デバイスがデータベースに接続できるようになります。
これらのスクリプトは、完了するまでに 3 から 5 分かかります。 password
、unique ID
、region
は再び表示されないため、必ずメモしてください。
まず、ローカル IP アドレスを取得します。 すべての VPN サービスから切断されていることを確認し、デバイスでローカル PowerShell ターミナルを開きます。 次のコマンドを実行し、結果として得られる IP アドレスを書き留めます。
(Invoke-WebRequest -Uri "https://ipinfo.io/ip").Content
Cloud Shell で次のコマンドを実行します。 複雑なパスワードを入力し、プロンプトで、前の手順で取得したローカルのパブリック IP アドレスを入力します。
$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 "<rgn>[sandbox resource group name]</rgn>" $resourceGroupName = $resourceGroup.ResourceGroupName $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)"
Cloud Shell で次のコードを実行することにより、モジュール全体を通して必要な情報を出力し、テキスト ファイルに保存します。 最後の行は既定では実行されないため、コードを貼り付けた後に、
Enter
キーを押すことが必要となることがあります。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
注意
password
、unique ID
、region
をメモすることをお忘れなく。 それらはモジュール全体を通して使用します。次のスクリプトを実行し、Azure SQL Database 論理サーバー、
AdventureWorks
サンプル、(今後のユニットで扱う) 元帳データベースをデプロイします。 このスクリプトによって、IP アドレスがファイアウォール規則として追加され、Microsoft Defender for SQL が有効になり、今後のユニットで使用するストレージ アカウントが作成されます。 このスクリプトが完了するまで数分かかります。# 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"
SQL Server Management Studio (SSMS) を開いて、ご利用の論理サーバーへの新しい接続を作成します。 サーバー名として、ご利用の Azure SQL Database 論理サーバーの名前 (たとえば、aw-server
<unique ID>
.database.windows.net) を入力します。 以前に名前を保存していない場合は、それを取得するために Azure portal へのアクセスが必要になる場合があります。Azure portal で AdventureWorks を検索して、ご利用のデータベースとそれに関連付けられている論理サーバーを見つけます。
認証を [SQL Server 認証] に変更し、対応するサーバー管理者のログインとパスワード (前の演習でデプロイ時に指定したもの) を入力します。
[パスワードを記憶する] チェック ボックスを選択して、それから [接続] を選択します。
Note
ローカル構成 (VPN など) によっては、クライアントの IP アドレスが、デプロイ時に Azure portal で使用した IP アドレスと異なる場合があります。 異なる場合は次のようなメッセージがポップアップ表示されます: "このクライアント IP アドレスではサーバーにアクセスできません。 アクセスできるようにするには、Azure アカウントにサインインし、新しいファイアウォール規則を作成します。" このメッセージが表示されたら、サンドボックスに使用しているアカウントでサインインし、クライアント IP アドレスのファイアウォール規則を追加します。 SSMS のポップアップ ウィザードを使用して、これらの手順をすべて完了できます。
ご利用の Azure SQL 論理サーバーに接続したら、[データベース] フォルダーを展開します。
作成された 2 つのデータベース、
AdventureWorks
とmyLedgerDatabase
が表示されます。myLedgerDatabase
データベースを右クリックして [新しいクエリ] を選択し、次のコマンドを実行して、Account.Balance
という名前のテーブルを作成します。 タスク バー内で [実行] を選択すると、このクエリを実行することができます。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 );