ES安全 -LDAP 接入方法

注意:该项功能需要license

 

Ldap测试命令

ldapsearch -x -D "cn=username, ou=people, dc=example, dc=com" -w password -b "dc=example,dc=com" -p 389 -h ldap.example.com

 

elasticsearch.yml 修改

     order 数值越小越优先, ES7.X版本文档的配置项稍有不同,下面这个是6.X的配置,应该是兼容的

xpack:
  security:
    authc:
      realms:
        ldap1:
          type: ldap
          order: 0
          url: "ldap://ldap.example.com:389"
          bind_dn: "cn=username, ou=people, dc=example, dc=com"
          bind_password: password
          user_search:
            base_dn: "dc=example,dc=com"
            filter: "uid={0}"
          unmapped_groups_as_roles: false
        native1:
          type: native
          order: 1

 

必须每个节点都这么设置,然后重启节点

角色与权限配置

访问 kibana -> management -> roles

点击 create role 创建角色

按说明配置角色相关权限

配置完成后点击 save 保存。

用户角色绑定

LDAP 用户目前不支持通过 UI 界面配置,需要使用 API 来管理

详情请参考:

https://www.elastic.co/guide/en/elasticsearch/reference/6 api-put-role-mapping.html

访问 kibana -> dev tools 界面,使用下一 API 创建用户角色关联:

POST security/role_mapping/<role_mapping_name>
{
  "roles": [
    "test" //这里填写需要绑定的角色名,例如上面我们创建的test角色q
  ],
  "enabled": true,
  "rules": {
    "any": [
      {
        "field": {
          "username": [
            "esadmin" //这里填写需要绑定的ldap用户名
          ]
        }
      },
      {
        "field": {
          "groups": "cn=admins,dc=example,dc=com" //也可以把角色绑定到ldap用户组上
        }
      }
    ]
  }
}

### 实现安全登录的方法 为了实现通过特定API的安全登录,配置认证源是一个重要的步骤。对于SimpleSAMLphp而言,在完成前期准备之后,需要进一步设置用于身份验证的数据源[^1]。 确保应用程序URL提前注册至关重要。这一步骤防止了潜在的安全风险——如果允许Windows Azure AD重定向至任意地址,则增加了攻击者劫持认证流程并窃取令牌的可能性;而预先登记应用的URL则保障了专属于该应用的身份验证令牌仅会被发送到此应用本身[^2]。 当涉及到具体技术栈中的安全性增强措施时,例如ElasticsearchLDAP集成场景下,可以采用加密方式存储密码而非明文形式保存于`elasticsearch.yml`文件中。利用命令行工具将绑定DN(`bind_dn`)对应的密码加入Elastisearch密钥库之中是一种较为推荐的做法[^3]。 另外值得注意的是,在现代Web开发环境中启用SSL/TLS协议不仅有助于保护数据传输过程中的隐私性和完整性,同时也支持基于Servlet 3.0规范的新特性如会话跟踪功能。不过需要注意的是由于其依赖于物理客户端-服务器连接上的SSL会话ID因此存在一定局限性[^4]。 最后,考虑到网络通信层面的安全需求,Java NIO框架下的Channel机制提供了灵活高效的I/O处理能力,特别是针对非阻塞模式的支持使得开发者可以在设计高并发服务端程序时更加得心应手[^5]。 综上所述,构建一个安全可靠的API登录接口涉及多个方面的工作,从合理规划OAuth授权流、HTTPS强制访问策略直至细致入微的服务端组件间交互细节都需要给予充分重视。 ```java // 示例代码展示如何创建带有SSL上下文的HTTP请求工厂 import javax.net.ssl.HttpsURLConnection; import java.net.URL; public class SecureLoginExample { public static void main(String[] args) throws Exception { String targetUrl = "https://api.example.com/login"; // 创建URL对象 URL url = new URL(targetUrl); HttpsURLConnection conn = (HttpsURLConnection)url.openConnection(); // 设置必要的请求属性 conn.setRequestMethod("POST"); conn.setDoOutput(true); // 这里省略了实际发送用户名/密码等参数的过程 int responseCode = conn.getResponseCode(); System.out.println("Response Code : " + responseCode); } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值