原文链接 : http://zeppelin.apache.org/docs/0.7.2/security/notebook_authorization.html

译文链接 : http://cwiki.apachecn.org/pages/viewpage.action?pageId=10031004

贡献者 : 片刻 ApacheCN Apache中文网

概述

我们假设有一个Shiro Authentication组件,它将用户字符串和一组组字符串与每个NotebookSocket相关联。如果您尚未设置身份验证组件,请先检查 Apache Zeppelin的Shiro身份验证

授权设置

您可以在每个笔记本中设置Zeppelin笔记本的权限。当然只有笔记本拥有者可以改变这个配置。只需单击锁定图标,然后打开笔记本中的权限设置页面。

您可以看到,每个Zeppelin笔记本有3个实体:

  • Owners ( users or groups )
  • Readers ( users or groups )
  • Writers ( users or groups )
    笔记本 授权 - 图1

用逗号分隔的用户组中配置的conf/shiro.ini文件填写每个表单。如果表单为空(*),则表示任何用户都可以执行该操作。

如果没有权限的人尝试访问笔记本电脑,或者没有权限的人正在尝试编辑笔记本,则Zeppelin将要求登录或阻止用户。

笔记本 授权 - 图2

单独的笔记本工作区(公共和私人)

默认情况下,授权权限允许其他用户查看新创建的笔记,意思是工作区public。这种行为是可控的,可以通过ZEPPELIN_NOTEBOOK_PUBLICconf/zeppelin-env.sh或通过zeppelin.notebook.public属性中的任何一个变量进行设置conf/zeppelin-site.xml。因此,为了使新创建的笔记只出现在您的private工作空间默认情况下,你可以设定ZEPPELIN_NOTEBOOK_PUBLICfalseconf/zeppelin-env.sh如下:

  1. export ZEPPELIN_NOTEBOOK_PUBLIC="false"

或者设置zeppelin.notebook.public属性falseconf/zeppelin-site.xml,如下所示:

  1. <property>
  2. <name>zeppelin.notebook.public</name>
  3. <value>false</value>
  4. <description>Make notebook public by default when created, private otherwise</description>
  5. </property>

在幕后,当您创建一个新的笔记时,该owners字段将填充当前用户,readers并将writers字段留空。具有至少一个空授权字段的所有注释都被视为处于工作public区。因此,当将zeppelin.notebook.public(或对应ZEPPELIN_NOTEBOOK_PUBLIC)设置为false时,新创建的注释readerswriters现有用户填充的字段,使笔记在工作区中private显示。

怎么运行的

在本节中,我们将介绍笔记本授权在后台方面如何工作的细节。

NotebookServer

NotebookServer每一个笔记本电脑业务划分为三大类:管理。在执行笔记本操作之前,它会检查用户和与之关联的组是否NotebookSocket具有权限。例如,在执行Read操作之前,它检查用户和组是否至少有一个属于Reader实体的实体。

Notebook REST API调用

Zeppelin 对笔记本电脑权限信息执行REST API调用。在后端,Zeppelin获取连接的用户信息,如果与当前用户关联的用户和组具有至少一个属于笔记本的所有者实体的实体,则可以进行操作。