[+]文章目录

Mesos 在0.15.0 版本增加了 应用框架的认证支持。在0.19.0 版本增加了 slave节点认证。认证功能用于确保只有信任实体可以与 mesos集群进行交互。

在Mesos中,有三种情况需要用到认证功能:

  1. 应用框架需要注册到Master节点时。
  2. Slave节点可用资源注册到Master节点时。
  3. 限制对卸载的endpoint进行访问时。

工作方式

Mesos认证引擎:Cyrus SASL 库,非常灵活的一个认证框架,可双向认证,支持多种认证机制(ANONYMOUS, PLAIN, CRAM-MD5, GSSAPI 等)。Mesos默认使用 CRAM-MD5 认证,用户可自定义其他认证方式。

CRAM-MD5 用的是 principal 和 secret 值对,principal 用于表示 应用框架的身份(注意,身份和应用框架用户、应用框架角色不一样,应用框架用户指 运行应用框架执行器的帐号,应用框架角色用于确定应用资源使用权限。)。

配置

配置选项,如下:

Master节点

  • --[no-]authenticate 设定是否开启应用框架认证。若开启,则只有经过认证的应用框架可注册到Master节点,若关闭,则未认证的应用框架也可以注册。
  • --[no-]authenticate_slaves 设定是否开启Slave节点认证。若开启,则所有的Slave节点只有经过认证才可注册到Master节点,若关闭,则未认证的Slave节点也可以注册。
  • --authenticators 设定认证方式,默认 crammd5,可通过--modules指定自己想用的其他认证方式。
  • --credentials 设定证书列表存放目录。证书列表可以是 纯文本也可以是json格式,内容根据认证方式不同而不同,若设定好了,则不管设定的是什么认证方式,证书在卸载的endpoint里仍然都有效。

Slave节点

  • --authenticatee 设定认证方式,默认 crammd5。
  • --credential 证书列表,和Master节点类似,不同的是,这里只能有一个证书。

CRAM-MD5 示例

  1. 在Master节点创建 证书列表,内容格式如下:

    principal1 secret1
    principal2 secret2
  2. 在Master节点,启动 证书验证服务:(假设证书文件存放在 ~/credentials):

    ./bin/mesos-master.sh --ip=127.0.0.1 --work_dir=/var/lib/mesos --authenticate --authenticate_slaves --credentials=~/credentials
  3. 在Slave节点,新建 证书列表,内容格式如下,只有一行,假设存放在 ~/slave_credential:

    principal1 secret1
  4. 在Slave节点,启动 证书验证服务:若运行成功,Slave节点就获得了Master节点认证。

    ./bin/mesos-slave.sh --master=127.0.0.1:5050 --credential=~/slave_credential
  5. 应用框架:若开启认证功能,则所有应用,也都需要到Mesos Master节点处获得认证。应用的认证方式:当一个证书对象 构建的时候,调度器 调用相关驱动 处理 认证。 可使用测试应用来测试 Mesos的认证框架,如下:

    MESOS_AUTHENTICATE=true DEFAULT_PRINCIPAL=principal2 DEFAULT_SECRET=secret2 ./src/test-framework --master=127.0.0.1:5050

« 前一篇