SqlClientPermission.Add(String, String, KeyRestrictionBehavior) 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
将新的连接字符串和一组受限关键字添加到 SqlClientPermission 对象。
public:
override void Add(System::String ^ connectionString, System::String ^ restrictions, System::Data::KeyRestrictionBehavior behavior);
public override void Add (string connectionString, string restrictions, System.Data.KeyRestrictionBehavior behavior);
override this.Add : string * string * System.Data.KeyRestrictionBehavior -> unit
Public Overrides Sub Add (connectionString As String, restrictions As String, behavior As KeyRestrictionBehavior)
参数
- connectionString
- String
连接字符串。
- restrictions
- String
密钥限制。
- behavior
- KeyRestrictionBehavior
KeyRestrictionBehavior 枚举之一。
注解
使用此方法配置特定权限对象允许的连接字符串。 例如,如果只想允许特定的连接字符串,则使用以下代码片段,而不允许其他任何连接字符串:
permission.Add("server=MyServer; database=MyDatabase; Integrated Security=true", "", KeyRestrictionBehavior.AllowOnly)
以下示例允许使用任何数据库的连接字符串,但仅在名为 MyServer 的服务器上使用任何用户和密码组合,并且没有任何其他连接字符串关键字:
permission.Add("server=MyServer;", "database=; user id=; password=;", KeyRestrictionBehavior.AllowOnly)
警告
Microsoft不建议直接提供用户名和密码,因为它是不安全模式。 如果可能,请使用更安全的身份验证流,例如 Azure 资源的托管标识,或 SQL Server 的 Windows 身份验证。
以下示例使用与上一个方案相同的方案,但允许在连接到配置为镜像的服务器时使用的故障转移伙伴:
permission.Add("server=MyServer; failover partner=MyMirrorServer", "database=; user id=; password=;", KeyRestrictionBehavior.AllowOnly)
注意
对 ADO.NET 使用代码访问安全权限时,正确的模式是从最严格的情况(完全没有权限)开始,然后添加代码需要执行的特定任务所需的特定权限。 相反的模式,从所有权限开始,然后尝试拒绝特定权限是不安全的,因为有许多方法可以表达相同的连接字符串。 例如,如果以所有权限开头,然后尝试拒绝使用连接字符串“server=someserver”,则仍允许字符串“server=someserver.mycompany.com”。 从始终不授予任何权限开始,可以降低权限集中存在漏洞的可能性。