SQL Server с созданием доступа Azure с помощью библиотек управления Azure для.Net

Я создаю SQL-серверы Azure, используя библиотеки управления Azure для.Net, и мне нужно добавить правило брандмауэра, чтобы службы Azure могли обращаться к новому серверу (например, к коммутатору на портале). Я сейчас создаю сервер вот так

sqlServer = Azure.SqlServers
                    .Define(serverName)
                    .WithRegion(region)
                    .WithExistingResourceGroup(resourceGroup.Name)
                    .WithAdministratorLogin(AppSettings.SqlServerAdminUser)
                    .WithAdministratorPassword(AppSettings.SqlServerAdminPassword)
                    .WithNewFirewallRule("xxx.xxx.xxx.xxx")
                    .WithNewFirewallRule("xxx.xxx.xxx.xxx", "xxx.xxx.xxx.xxx")
                    .WithNewElasticPool(poolName, elasticPoolEdition, databaseName)
                    .Create();

Есть ли какой-либо вариант, который я не нашел, чтобы разрешить службам Azure доступ к этому SQL-серверу?

Спасибо!

2 ответа

Решение

Есть ли какой-либо вариант, который я не нашел, чтобы разрешить службам Azure доступ к этому SQL-серверу?

Таким образом, на уровне API нет настройки, позволяющей службам Azure получать доступ к SQL Server. За кулисами происходит то, что когда вы хотите установить этот параметр через портал, правило брандмауэра создается с 0.0.0.0 IP-адрес для вас.

поскольку 0.0.0.0 на самом деле это не IP-адрес, API Azure рассматривает это как особый случай, позволяющий получить доступ к службам Azure.

Это то, что вам нужно сделать, а также.

Пожалуйста, попробуйте следующий код:

sqlServer = Azure.SqlServers
                    .Define(serverName)
                    .WithRegion(region)
                    .WithExistingResourceGroup(resourceGroup.Name)
                    .WithAdministratorLogin(AppSettings.SqlServerAdminUser)
                    .WithAdministratorPassword(AppSettings.SqlServerAdminPassword)
                    .WithNewFirewallRule("0.0.0.0") // Allow access to Azure Services
                    .WithNewFirewallRule("xxx.xxx.xxx.xxx", "xxx.xxx.xxx.xxx")
                    .WithNewElasticPool(poolName, elasticPoolEdition, databaseName)
                    .Create();

и вы должны увидеть, что ваши службы Azure смогут получить доступ к этому SQL Server.

Если вы хотите разрешить службам Azure доступ к параметру сервера при создании нового SQL Server Azure, он фактически создает новое правило брандмауэра с именем по умолчанию: " AllowAllWindowsAzureIp " с startIpAddress: 0.0.0.0 и endIpAddress: 0.0.0.0

Я думаю, что на основании свойств правила брандмауэра по умолчанию, приведенных выше, следует определить startIpAddress и endIpAddress как 0.0.0.0.

sqlServer = Azure.SqlServers
                    .Define(serverName)
                    .WithRegion(region)
                    .WithExistingResourceGroup(resourceGroup.Name)
                    .WithAdministratorLogin(AppSettings.SqlServerAdminUser)
                    .WithAdministratorPassword(AppSettings.SqlServerAdminPassword)
                    .WithNewFirewallRule("0.0.0.0", "0.0.0.0")
                    .WithNewElasticPool(poolName, elasticPoolEdition, databaseName)
                    .Create();
Другие вопросы по тегам