【发布时间】:2020-12-24 15:10:02
【问题描述】:
我们正在使用 Audit.NET SqlServer 数据提供程序将审核日志存储在我们的 Microsoft SQL Server 中。我们目前正在迁移到使用带有托管标识的 Azure SQL 来访问数据库。我们无法让 Audit.NET 与 Azure SQL 一起使用,并无法使用托管标识连接到所述数据库。该文档未提供有关此功能是否受支持的任何信息。
我们已经设法使用 Entity Framework Core 为我们自己的数据库连接执行此操作,方法是向 Context 使用的 SQL 连接添加访问令牌,如下所示:
SqlConnection sqlConnection = new SqlConnection(connectionString);
sqlConnection.AccessToken = new AzureServiceTokenProvider()
.GetAccessTokenAsync("https://database.windows.net/")
.Result;
这工作得很好。我们遇到的问题是我们希望通过 Audit.NET Sql 数据提供程序实现相同的目标。由于 SqlDataProvider 使用的 AuditContext 是内部的,我们无法将访问令牌传递给使用的 SqlConnection。
我们想出的唯一解决方案是编写我们自己的 Data Provider,它与 SqlDataProvider 几乎相同,唯一的区别是使用的 Context 将在 SqlConnection 上设置一个访问令牌。这是这里唯一可行的解决方案,还是 Audit.NET 提供了一些其他方法来使其与 Azure SQL 和托管标识一起使用?
【问题讨论】:
-
你能在github上open an issue这个吗?
-
我已经为你打开了这个:github.com/thepirat000/Audit.NET/issues/351
标签: .net-core azure-sql-database audit.net audit.net.sqlserver