Skip to content

Commit 587d4ba

Browse files
committed
Apply auto TOC to all of docs under docs/security/
1 parent 1f10b97 commit 587d4ba

File tree

4 files changed

+29
-21
lines changed

4 files changed

+29
-21
lines changed

docs/security/authentication.md

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,12 @@ limitations under the License.
1919
-->
2020
# Authentication for NGINX
2121

22-
Authentication is company-specific.
22+
<div id="toc"></div>
2323

24-
One option is to use [Basic Access Authentication](https://en.wikipedia.org/wiki/Basic_access_authentication)
24+
Authentication is company-specific.
25+
One option is to use [Basic Access Authentication](https://en.wikipedia.org/wiki/Basic_access_authentication).
2526

26-
### HTTP Basic Authentication using NGINX
27+
## HTTP Basic Authentication using NGINX
2728

2829
> **Quote from Wikipedia:** NGINX is a web server. It can act as a reverse proxy server for HTTP, HTTPS, SMTP, POP3, and IMAP protocols, as well as a load balancer and an HTTP cache.
2930
@@ -39,7 +40,7 @@ This instruction based on Ubuntu 14.04 LTS but may work with other OS with few c
3940
```
4041
$ apt-get install nginx
4142
```
42-
*Important: On pre 1.3.13 version of NGINX, Proxy for Websocket may not fully works. Please use latest version of NGINX. See: [NGINX documentation](https://www.nginx.com/blog/websocket-nginx/)*
43+
> **NOTE :** On pre 1.3.13 version of NGINX, Proxy for Websocket may not fully works. Please use latest version of NGINX. See: [NGINX documentation](https://www.nginx.com/blog/websocket-nginx/).
4344
4445
1. Setup init script in NGINX
4546
@@ -119,12 +120,12 @@ This instruction based on Ubuntu 14.04 LTS but may work with other OS with few c
119120
1. More security consideration
120121
121122
* Using HTTPS connection with Basic Authentication is highly recommended since basic auth without encryption may expose your important credential information over the network.
122-
* Using [Shiro Security feature built-into Zeppelin](https://github.com/apache/zeppelin/blob/master/SECURITY-README.md) is recommended if you prefer all-in-one solution for authentication but NGINX may provides ad-hoc solution for re-use authentication served by your system's NGINX server or in case of you need to separate authentication from zeppelin server.
123+
* Using [Shiro Security feature built-into Zeppelin](./shiroauthentication.html) is recommended if you prefer all-in-one solution for authentication but NGINX may provides ad-hoc solution for re-use authentication served by your system's NGINX server or in case of you need to separate authentication from zeppelin server.
123124
* It is recommended to isolate direct connection to Zeppelin server from public internet or external services to secure your zeppelin instance from unexpected attack or problems caused by public zone.
124125
125-
### Another option
126+
## Another option
126127
127128
Another option is to have an authentication server that can verify user credentials in an LDAP server.
128129
If an incoming request to the Zeppelin server does not have a cookie with user information encrypted with the authentication server public key, the user
129130
is redirected to the authentication server. Once the user is verified, the authentication server redirects the browser to a specific URL in the Zeppelin server which sets the authentication cookie in the browser.
130-
The end result is that all requests to the Zeppelin web server have the authentication cookie which contains user and groups information.
131+
The end result is that all requests to the Zeppelin web server have the authentication cookie which contains user and groups information.

docs/security/interpreter_authorization.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@ limitations under the License.
1919
-->
2020
# Interpreter and Data Source Authorization
2121

22+
<div id="toc"></div>
23+
2224
## Interpreter Authorization
2325

2426
Interpreter authorization involves permissions like creating an interpreter and execution queries using it.

docs/security/notebook_authorization.md

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,9 @@ limitations under the License.
1919
-->
2020
# Zeppelin Notebook Authorization
2121

22+
<div id="toc"></div>
23+
24+
## Overview
2225
We assume that there is an **Shiro Authentication** component that associates a user string and a set of group strings with every NotebookSocket.
2326
If you don't set the authentication components yet, please check [Shiro authentication for Apache Zeppelin](./shiroauthentication.html) first.
2427

@@ -44,12 +47,12 @@ If someone who doesn't have **read** permission is trying to access the notebook
4447
## How it works
4548
In this section, we will explain the detail about how the notebook authorization works in backend side.
4649

47-
#### NotebookServer
50+
### NotebookServer
4851
The [NotebookServer](https://github.com/apache/zeppelin/blob/master/zeppelin-server/src/main/java/org/apache/zeppelin/socket/NotebookServer.java) classifies every notebook operations into three categories: **Read**, **Write**, **Manage**.
4952
Before executing a notebook operation, it checks if the user and the groups associated with the `NotebookSocket` have permissions.
5053
For example, before executing a **Read** operation, it checks if the user and the groups have at least one entity that belongs to the **Reader** entities.
5154

52-
#### Notebook REST API call
55+
### Notebook REST API call
5356
Zeppelin executes a [REST API call](https://github.com/apache/zeppelin/blob/master/zeppelin-server/src/main/java/org/apache/zeppelin/rest/NotebookRestApi.java) for the notebook permission information.
5457
In the backend side, Zeppelin gets the user information for the connection and allows the operation if the users and groups
5558
associated with the current user have at least one entity that belongs to owner entities for the notebook.

docs/security/shiroauthentication.md

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -20,43 +20,47 @@ limitations under the License.
2020
{% include JB/setup %}
2121

2222
# Shiro authentication for Apache Zeppelin
23+
24+
<div id="toc"></div>
25+
26+
## Overview
2327
[Apache Shiro](http://shiro.apache.org/) is a powerful and easy-to-use Java security framework that performs authentication, authorization, cryptography, and session management. In this documentation, we will explain step by step how Shiro works for Zeppelin notebook authentication.
2428

2529
When you connect to Apache Zeppelin, you will be asked to enter your credentials. Once you logged in, then you have access to all notes including other user's notes.
2630

2731
## Security Setup
2832
You can setup **Zeppelin notebook authentication** in some simple steps.
2933

30-
####1. Secure the HTTP channel
31-
To secure the HTTP channel, you have to change both **anon** and **authcBasic** settings in `conf/shiro.ini`. In here, **anon** means "the access is anonymous" and **authcBasic** means "basic auth security".
34+
### 1. Secure the HTTP channel
35+
To secure the HTTP channel, you have to change both **anon** and **authc** settings in `conf/shiro.ini`. In here, **anon** means "the access is anonymous" and **authc** means "formed auth security".
3236

3337
The default status of them is
3438

3539
```
3640
/** = anon
37-
#/** = authcBasic
41+
#/** = authc
3842
```
39-
Deactivate the line "/** = anon" and activate the line "/** = authcBasic" in `conf/shiro.ini` file.
43+
Deactivate the line "/** = anon" and activate the line "/** = authc" in `conf/shiro.ini` file.
4044

4145
```
4246
#/** = anon
43-
/** = authcBasic
47+
/** = authc
4448
```
4549

4650
For the further information about `shiro.ini` file format, please refer to [Shiro Configuration](http://shiro.apache.org/configuration.html#Configuration-INISections).
4751

48-
####2. Secure the Websocket channel
52+
### 2. Secure the Websocket channel
4953
Set to property **zeppelin.anonymous.allowed** to **false** in `conf/zeppelin-site.xml`. If you don't have this file yet, just copy `conf/zeppelin-site.xml.template` to `conf/zeppelin-site.xml`.
5054

51-
####3. Start Zeppelin
55+
### 3. Start Zeppelin
5256

5357
```
5458
bin/zeppelin-daemon.sh start (or restart)
5559
```
5660

5761
Then you can browse Zeppelin at [http://localhost:8080](http://localhost:8080).
5862

59-
####4. Login
63+
### 4. Login
6064
Finally, you can login using one of the below **username/password** combinations.
6165

6266
<center><img src="../assets/themes/zeppelin/img/docs-img/zeppelin-login.png"></center>
@@ -67,10 +71,8 @@ user1 = password2
6771
user2 = password3
6872
```
6973

70-
Those combinations are defined in the `conf/shiro.ini` file.
71-
72-
####5. Groups and permissions (optional)
73-
In case you want to leverage user groups and permissions, use one of the following configuration for LDAP or AD under `[main]` segment of shiro.ini
74+
### 5. Groups and permissions (optional)
75+
In case you want to leverage user groups and permissions, use one of the following configuration for LDAP or AD under `[main]` segment in `shiro.ini`
7476

7577
```
7678
activeDirectoryRealm = org.apache.zeppelin.server.ActiveDirectoryGroupRealm

0 commit comments

Comments
 (0)