Managed Instance (MI) は VNET 内にデプロイを行う、PaaS の SQL Server であり、利用するためには VNET が必須となっています。
当初は、VNET にアクセスできる環境のみが MI に接続することができていたのですが、今回パブリックエンドポイントの機能が追加されました。
これにより、MI をデプロイした VNET に接続を行っていない環境からもアクセスが可能となります。
デフォルトではパブリックエンドポイントは無効になっており、2019/4/14 時点では、ポータルからのデプロイ時には、有効化することができませんんで、PowerShell 等で有効化する必要があります。
テストでしたら、Cloud Shell で次のようなコマンドレットを実行するとサクッと有効化できます。
$rgName = "<リソースグループ名>" $miName = "<MI サーバー名>" $mi = Get-AzSqlInstance -ResourceGroupName $rgName -Name $miName $mi = $mi | Set-AzSqlInstance -PublicDataEndpointEnabled $true -force
有効化すると「<MI サーバー名>.public.<DNS ゾーン名>.database.windows.net」の A レコードが、パブリックなレコードとして追加されます。
public がない、ポータルから取得できる名称についてはプライベート IP が取得されますが、public を途中につけたものについては、パブリック IP が取得されます。
MI のネットワーク構成については、次のドキュメントの情報で確認できます。
今回、使用できるようになったパブリックエンドポイントは、「管理エンドポイント IP アドレス」と同様のようでした。
実際に外部から MI に接続をする場合は、「<MI サーバー名>.public.<DNS ゾーン名>.database.windows.net,3342」という形で TCP 3342 を使用して、インスタンスに接続を行う必要があります。
SQL Database の場合は、インスタンスレベル (または、データベースレベル) のファイアウォールによって接続の制御が行われています。
MI の場合は、NSG (ネットワークセキュリティグループ) によって、接続の制御が行われていますので、MI で使用している NSG の「受信セキュリティ規則」として、3342 の接続を許可する必要があります。
MI はデフォルトで VNET に閉じられたネットワークに構築をすることでセキュリティを高めていますので、パブリックエンドポイントを有効にするときには、NSG で「どのアクセス元を接続許可するか」については、考慮しておいた方が良いかと。
(全許可にすることはないと思いますが。)
Ignite でアナウンスされていた機能が今月になって、だいぶ実装されてきましたね。