• 金仓数据库KingbaseES客户端编程接口指南-ado.net(6. 安全和加密)


    6. 安全和加密

    6.1. 登录

    登录 KingbaseES 的最简单方法是在连接字符串中指定 Username 和 Password 。 Password 根据 KingbaseES 的配置方式(在 .conf 文件中), Kdbndp 将以MD5或明文形式发送密码(不推荐)。

    如果未指定 Password 且 KingbaseES 配置为请求密码(普通或MD5),Kdbndp 将查找标准 KingbaseES 密码文件。如果您指定 Passfile 连接字符串参数,将使用它指定的文件。如果未定义该参数,Kdbndp 将在从 KESPASSFILE 环境变量获取的路径下查找。 如果未定义环境变量,Kdbndp将回退到与系统相关的默认目录。

    KdbndpConnection 也可以配置一个 ProvidePasswordCallback 。这将在打开新的数据库连接以在代码中生成密码时执行。可以将其配置为使用基于访问凭证生成的短期令牌。 未指定 ProvidePasswordCallback 密码和 Passfile 连接字符串参数时执行委托。

    6.2. 集成安全性(GSS/SSPI/Kerberos

    以用户名和密码登录的方式并不推荐,因为这必须要让应用程序有权访问您的密码。另一种身份验证的方式是 “集成安全”,它使用 GSS 或 SSPI 来通过 Kerberos验证。这种方法的优点是,通过已经打开的登录会话将身份验证移交给操作系统。应用程序永远不需要处理密码。

    正确配置KingbaseES之后,只需在连接字符串中包含 Intefrated Sercurity=true 并且删除密码参数,但是 Kdbndp 仍然需要向 KingbaseES 发送用户名。 如果在连接字符串中指定了 Username 参数, Kdbndp 会正常发送。如果省略了该参数,Kdbndp 将尝试检测系统用户名,包括 Kerberos域。 默认情况下,KingbaseES 期望您的 Kerberos 域以您的用户名发送;您可以通过在连接字符串中设置 Include Realm 为true来让 Kdbndp 检测领域。 或者,您可以在 KingbaseES 的kdb.conf 条目中禁用添加 include_realm=0 来将其脱离领域,这样就可以自己指定发送到 KingbaseES 的用户名。

    6.3. 加密(SSL/TLS)

    默认情况下 KingbaseES 连接时未加密的,您可以根据需要打开 SSL/TLS 加密。

    1. 首先,需要设置 KingbaseES 以接收 SSL/TLS 连接。

    2. 完成后,在连接字符串中指定 "SSL Mode",将其设置为 Require (如果服务器没有设置加密,连接将失败),或者 Prefer (如果服务器设置了加密,则使用加密,否则会回退到未加密状态)。

    默认情况下,Kdbndp将验证您的服务器的证书是否有效。如果您使用的是自签名证书,验证将会失败。您可以通过在连接字符串中指定 Trust Server Certificate=true 来指示 Kdbndp 忽略验证。为了精确的控制服务器的证书是如何验证的,您可以再 KdbndpConnection 上注册 UserCertificateValidationCallback (和在 .NET上的SSLStream一样)。

    您还可以通过在 KdbndpConnection 上注册 ProvideClientCertificatesCallback 来让Kdbndp向服务器提供客户端证书。

  • 相关阅读:
    微信/QQ/TIM防撤回补丁
    【生日快乐】SpringBoot SpringBoot 基础篇(第一篇) 第4章 SpringBoot 综合案例 4.7 修改客户功能
    先进制造aps专题三 为什么java语言不适合作为aps算法的开发语言
    STM32作业实现(八)触摸按键TPAD
    会计学基础重点
    解决echarts多个单独图标使用connect 联动之后下载 图片脏数据的问题
    Windows错误处理
    手把手教你打造美观实用的家居微信小程序
    centos 开机启动流程、开机运行级别
    解决“您的Chrome 浏览器由组织或机构管理”问题
  • 原文地址:https://blog.csdn.net/arthemis_14/article/details/126658259