kubeflow中文文档-v0.6|kubeflow中文文档-v0.6 多用户隔离 Multi-user Isolation

官方文档-Multi-user Isolation
1. 什么是多用户隔离(Multi-user Isolation)
多用户隔离是对不同用户之间使用资源的隔离。在kubeflow v0.6以上的版本,kubeflow支持的在kubeflow部署中对用户创建的资源进行多用户隔离。这个功能额主要目的是是多个用户可以共享一个集群上的kubeflow但是不会影响彼此创建的资源。隔离机制还可以防止意外删除/修改部署中其他用户的资源。当然需要注意一点:kubeflow并没有提供一个安全的多用户隔离的机制,用户还是可以通过namespace来恶意渗透到其他用户的个人资料当中。
2.使用概述
kubeflow中的profile 资源会与k8s中 namesapce会拥有相同的名字。每一个用户都会创建一个自己的profile资源。一个用户可以与其他用户分享自己的profile。当一个用户分享自己的profile与其他用户时可以决定分享只读权限或者是可写权限。
一个profile的示例:

$ cat << EOF > profile.yaml apiVersion: kubeflow.org/v1alpha1 kind: Profile metadata: name: profileName# replace with the name of profile you want spec: owner: kind: User name: userid@email.com# replace with the email of the user EOF

在kubeflow central dashboard中,我们可以看到namespaceprofile是互相绑定的。
kubeflow中文文档-v0.6|kubeflow中文文档-v0.6 多用户隔离 Multi-user Isolation
文章图片
3.例子
注意??:由于profile和Kubernetes 中的namespace是一一对应的,所以在以下文档中这个两个名词可能会进行混用。
  • 用户可以从kubeflow控制面板中的上部选择namespaceprofile,因为这两个资源的名字相同,可以认为是多用户隔离中的一个标志)。一个用户只会看到他自己有权限(可读或者可写都可以)的namespace
kubeflow中文文档-v0.6|kubeflow中文文档-v0.6 多用户隔离 Multi-user Isolation
文章图片
【kubeflow中文文档-v0.6|kubeflow中文文档-v0.6 多用户隔离 Multi-user Isolation】Jupyter notebooks服务是第一个完全集成多用户隔离功能的服务,后面将以它作为例子来讲。
  • 当用户选择了一个namespace,Notebooks Servers UI 将只显示相应namespace下的notebook。其他的notebook对于这个namespace下的用户是隐藏状态。
kubeflow中文文档-v0.6|kubeflow中文文档-v0.6 多用户隔离 Multi-user Isolation
文章图片
  • 当一个没有授权的用户去查看这个页面的时候就会报错:
kubeflow中文文档-v0.6|kubeflow中文文档-v0.6 多用户隔离 Multi-user Isolation
文章图片
用户可以通过这个UI界面去创建一个新的Jupyter notebook server,而这个Jupyter notebook server的pod就会建立在这个'namespace'底下。用户对于自己的'namespace'是拥有着读和创建的权利,但是对于只读权限的namespace,就只能读而不能创建新的Jupyter notebook server。
4.在页面上创建一个新用户
kubeflow v0.6.2提供了在用户登录成功时自动创创建profile的功能。并且一个管理员用户(administrator)可以在kubeflow集群中为任何用户创建profile
解释一下,管理员用户(administrator)就是Kubernetes集群中拥有管理员权限的用户,这个用户拥有在这个集群中创建任意资源的权利。
  • 自动创建profile
    kubeflow v0.6.2提供了自动创建profile功能。
    • 在kubeflow部署过程中会自动的为部署的用户创建一个profile。当这个用户登录到这个控制面板时直接就能看到他的profile(在namespace中可以看到,这两个资源同名)。
    • 当一个用户第一次登入到控制面板时,就会出发一次profile的自动创建,会有如下引导。
      • kubeflow中文文档-v0.6|kubeflow中文文档-v0.6 多用户隔离 Multi-user Isolation
        文章图片
      • 为你的profile取一个名字
      kubeflow中文文档-v0.6|kubeflow中文文档-v0.6 多用户隔离 Multi-user Isolation
      文章图片

    推荐阅读