azure sql 连接字符串-用户身份验证不是管理员
azuresql connection string-user auth not admin
sql azuredb 的样板连接字符串使用服务器的管理员 username/pwd。使用包含的数据库,用户可以登录到特定的数据库,而无需服务器登录访问权限。
我可以将数据库的连接字符串设置为 db 用户,而不必使用服务器的管理员用户吗?我正在使用 connstring 作为 azure 函数从数据库中获取数据。此外,用户没有活动目录帐户。
非常感谢您的帮助
如果想在Azure函数中使用非admin用户连接AzureSQL,可以使用下面的连接字符串
Server=tcp:<sql server name>.database.windows.net,1433;
Initial Catalog=<databse name>;Persist Security Info=False;
User ID=<the non-adimn user name>;
Password=<passsword>;
MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;
例如
- 使用 SSMS 为您需要的数据库创建非管理员用户
CREATE USER jim WITH PASSWORD = '<strong_password>'
ALTER ROLE db_owner ADD MEMBER jim;
- 代码。我使用
System.Data.SqlClient 4.6.1
连接 Azure sql in Azure function
public static async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
ILogger log)
{
log.LogInformation("C# HTTP trigger function processed a request.");
var constr = "Server=tcp:<sql server name>.database.windows.net,1433;Initial Catalog=<databse name>;Persist Security Info=False;User ID=<the non-adimn user name>;Password=<passsword>;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;";
using (SqlConnection connection = new SqlConnection(constr))
{
var sql = "SELECT * FROM StarWars";
using (SqlCommand command = new SqlCommand(sql, connection))
{
connection.Open();
using (SqlDataReader reader = command.ExecuteReader())
{
while (reader.Read())
{
log.LogInformation(reader.GetString(2));
}
}
}
}
...
}
更新
如果您想使用非管理员用户连接 Azure SQL,请更改连接字符串中的 User ID
值,然后在应用程序设置中保存
- 配置连接字符串
Server=tcp:<sql server name>.database.windows.net,1433;
Initial Catalog=<databse name>;Persist Security Info=False;
User ID=<the non-adimn user name>;
Password=<passsword>;
MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;
在应用程序设置中保存
用代码获取
如果要限制对 SQL 数据库的访问,您还可以向函数应用程序授予托管标识,并在 Sql 数据库中授予对其的访问权限。这样,只有您的函数才能连接,并且没有连接字符串泄露的风险。
这里有一些很好的例子来说明如何做到这一点:
https://docs.microsoft.com/en-us/azure/app-service/app-service-web-tutorial-connect-msi
sql azuredb 的样板连接字符串使用服务器的管理员 username/pwd。使用包含的数据库,用户可以登录到特定的数据库,而无需服务器登录访问权限。
我可以将数据库的连接字符串设置为 db 用户,而不必使用服务器的管理员用户吗?我正在使用 connstring 作为 azure 函数从数据库中获取数据。此外,用户没有活动目录帐户。
非常感谢您的帮助
如果想在Azure函数中使用非admin用户连接AzureSQL,可以使用下面的连接字符串
Server=tcp:<sql server name>.database.windows.net,1433;
Initial Catalog=<databse name>;Persist Security Info=False;
User ID=<the non-adimn user name>;
Password=<passsword>;
MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;
例如
- 使用 SSMS 为您需要的数据库创建非管理员用户
CREATE USER jim WITH PASSWORD = '<strong_password>'
ALTER ROLE db_owner ADD MEMBER jim;
- 代码。我使用
System.Data.SqlClient 4.6.1
连接 Azure sql in Azure function
public static async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
ILogger log)
{
log.LogInformation("C# HTTP trigger function processed a request.");
var constr = "Server=tcp:<sql server name>.database.windows.net,1433;Initial Catalog=<databse name>;Persist Security Info=False;User ID=<the non-adimn user name>;Password=<passsword>;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;";
using (SqlConnection connection = new SqlConnection(constr))
{
var sql = "SELECT * FROM StarWars";
using (SqlCommand command = new SqlCommand(sql, connection))
{
connection.Open();
using (SqlDataReader reader = command.ExecuteReader())
{
while (reader.Read())
{
log.LogInformation(reader.GetString(2));
}
}
}
}
...
}
更新
如果您想使用非管理员用户连接 Azure SQL,请更改连接字符串中的 User ID
值,然后在应用程序设置中保存
- 配置连接字符串
Server=tcp:<sql server name>.database.windows.net,1433;
Initial Catalog=<databse name>;Persist Security Info=False;
User ID=<the non-adimn user name>;
Password=<passsword>;
MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;
在应用程序设置中保存
用代码获取
如果要限制对 SQL 数据库的访问,您还可以向函数应用程序授予托管标识,并在 Sql 数据库中授予对其的访问权限。这样,只有您的函数才能连接,并且没有连接字符串泄露的风险。
这里有一些很好的例子来说明如何做到这一点:
https://docs.microsoft.com/en-us/azure/app-service/app-service-web-tutorial-connect-msi