You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ansible集成Windows认证是否需与MSSQL服务器建立物理连接?

Ansible集成Windows认证连接MSSQL的连接要求及替代方案

关于直接物理连接的要求

是的,Ansible使用**集成Windows认证(基于Kerberos)**连接MSSQL时,运行Ansible的RHEL主机必须和MSSQL服务器建立直接物理连接。原因在于:
集成认证的核心是Kerberos票据交换流程——RHEL主机先向域控申请针对MSSQL服务的Kerberos票据,之后必须直接将该票据发送给MSSQL服务器完成身份验证,这个过程需要打通RHEL到MSSQL默认端口(1433)的网络通路。

无需直接连接的替代方案

针对你的安全限制,以下几种方案可以实现无需RHEL主机直接连接MSSQL的需求:

1. 借助域内Windows跳转机(堡垒机)

通过Ansible先连接同域内的Windows跳转机,再在跳转机上执行MSSQL操作:

  • 原理:跳转机本身在域内,支持直接用集成认证访问MSSQL;RHEL主机只需要打通到跳转机WinRM端口(5985/5986)的连接即可。
  • 示例剧本片段:
    - name: 通过Windows跳转机执行MSSQL查询
      hosts: windows_jump_host
      tasks:
        - name: 执行SQL查询(集成认证)
          win_shell: |
            sqlcmd -S mssql_server_hostname -E -Q "SELECT TOP 10 * FROM dbo.YourTable"
          register: sql_query_result
    
        - name: 输出查询结果
          debug:
            var: sql_query_result.stdout_lines
    
    其中-E参数代表启用集成Windows认证,跳转机会自动使用Ansible连接它时所用的AD账号完成MSSQL认证。

2. 加密存储AD凭证并通过跳转机使用SQL认证

如果MSSQL开启了混合认证模式,可以用AD账号作为SQL登录账号,同时用Ansible Vault加密凭证避免明文存储:

  • 示例剧本片段:
    - name: 用加密AD凭证通过跳转机访问MSSQL
      hosts: windows_jump_host
      vars_files:
        - vault_encrypted_creds.yml  # 用ansible-vault加密的文件,存储ad_username和ad_password
      tasks:
        - name: 执行SQL查询
          win_shell: |
            sqlcmd -S mssql_server_hostname -U {{ ad_username }} -P {{ ad_password }} -Q "SELECT COUNT(*) FROM dbo.YourTable"
          register: count_result
    
    注意:跳转机仍需能访问MSSQL,但RHEL主机无需直接连接MSSQL端口。

3. 部署ODBC代理中间层

在允许访问MSSQL的节点上部署ODBC代理服务(如ODBC Gateway),RHEL主机连接代理服务端口,由代理转发请求到MSSQL。此方案适合长期、批量的数据库访问需求,但需要额外部署和维护中间服务。

内容的提问来源于stack exchange,提问作者Lucifer007

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 07:42:49