作者:
安装与设置
- 1. 快速开始
- Docker
- Vagrant
- Bare metal
- 2. 在主机上运行 - 需要的环境
- 3. 安装java和MongoDB
- 4. 安装 RESTHeart
- 5. 启动MongoDB
- 6. 启动RESTHeart服务
- 7. 开启MongoDB认证
- 7.3. MongoDB认证需要的最低权限
- 8.客户端认证和授权
1. 快读开始
Docker
在一个有JVM的Docker容器上运行RESTHeart,连接到安装MongoDB官方3版本以上镜像的Docker容器上.Docker应当被认为是开发和运行RESTHeart最好的方式没有之一。
现在我们在Github库上创建了一个谷歌云容器配置的向导。
Vagrant
用Vagrant box创建的完整的开发环境已经完成了,使用的是Ubuntu 14.04版本镜像,JDK 8, MongoDB 3和最近的RESTHeart服务。如果你想知道如何改变默认的安全设置的花,你可以跳过从第2段到第六段,直接看第七段。
Bare metal(裸机)
在下面内容中可以找到完整的安装说明。
2. 在主机上运行 - 需要的环境
如果你现在什么都没有,请下载以下安装包
大多数工作可以用CLI来完成。
3. 安装Java和MongoDB
根据您的操作系统的指令安装 Java 8和MongoDB并确保安装包被正确的执行(在PATH中可以找到他们的变量).
检查您机器上的JAVA和MongoDB可以通过以下命令并获得下面相似的内容。
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
1 C:\Users\Administrator>java -version 2 java version "1.8.0_45" 3 Java(TM) SE Runtime Environment (build 1.8.0_45-b14) 4 Java HotSpot(TM) 64-Bit Server VM (build 25.45-b02, mixed mode) 5 6 C:\Users\Administrator>mongod --version 7 db version v3.0.0 8 git version: a841fd6394365954886924a35076691b4d149168 9 OpenSSL version: OpenSSL 1.0.1j-fips 15 Oct 2014
RESTHeart已经通过了以下 MongoDB version 3.2, 3.0, 2.6 和 2.4的测试.
4. 安装RESTHeart
安装RESTHeart需要解压下载压缩包到指定的目录.
你只需要关心以下两个文件:
restheart.jar
etc/restheart.yml
<- 配置文件模版(样例)
5. 启动MongoDB
为了简单起见,在一次启动的时候我们先不开启权限控制,后续我们将看看怎么开启权限认证。
你可以从shell窗口中通过mongod命令启动MongoDB,默认使用的配置文件在/data/db
文件夹中,如果不存在的话,在启动之前必须手动创建。如果你不想使用默认的路径,可以使用--dbpath
参数来更改数据库路径,例如:mongod --dbpath
;如果你想让MongoDB后台运行可以使用--fork参数,例如
: mongod --fork --syslog(我运行时fork和syslog参数提示不存在,我运行时没有得到如下内容)
:
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
1 $ mongod --fork --syslog 2 about to fork child process, waiting until server is ready for connections. 3 forked process: 11471 4 child process started successfully, parent exiting 5 6 By default MongoDB starts listening for connections on 127.0.0.1:27017.
6. 启动RESTHeart服务
通过CLI窗口中输入java -server -jar restheart.jar
启动RESTHeart.
这样就通过默认配置启动了RESTHeart服务,默认的配置MongoDB未启用认证运行在本机, 使用默认的端口.
约定优与配置
在Linux, OSX 和 Solaris RESTHeart可以被当作守护进程(daemon process)启动: java -server -jar restheart.jar --fork
,这样会强制关闭控制台日志并打开文件日志而不管配置文件中的配置是什么样的。
例如:
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
1 $ java -jar restheart.jar 2 14:01:09.968 [main] INFO org.restheart.Bootstrapper - Starting RESTHeart 3 14:01:09.971 [main] INFO org.restheart.Bootstrapper - version 2.0.0 4 14:01:09.978 [main] INFO org.restheart.Bootstrapper - Logging to file /var/folders/yx/mgksqtzn41j41xdnv74snjpc0000gn/T/restheart.log with level INFO 5 14:01:09.978 [main] INFO org.restheart.Bootstrapper - Logging to console with level INFO 6 14:01:10.275 [main] INFO org.restheart.Bootstrapper - MongoDB connection pool initialized 7 14:01:10.275 [main] INFO org.restheart.Bootstrapper - MongoDB version 3.2.0 8 14:01:10.276 [main] WARN org.restheart.Bootstrapper - ***** No Identity Manager specified. Authentication disabled. 9 14:01:10.277 [main] WARN org.restheart.Bootstrapper - ***** No access manager specified. users can do anything. 10 14:01:10.277 [main] INFO org.restheart.Bootstrapper - Token based authentication enabled with token TTL 15 minutes 11 14:01:10.593 [main] INFO org.restheart.Bootstrapper - HTTPS listener bound at 0.0.0.0:4443 12 14:01:10.593 [main] INFO org.restheart.Bootstrapper - HTTP listener bound at 0.0.0.0:8080 13 14:01:10.595 [main] INFO org.restheart.Bootstrapper - Local cache for db and collection properties enabled with TTL 1000 msecs 14 14:01:10.595 [main] INFO org.restheart.Bootstrapper - Local cache for schema stores not enabled 15 14:01:10.766 [main] INFO org.restheart.Bootstrapper - URL / bound to MongoDB resource * 16 14:01:10.976 [main] INFO org.restheart.Bootstrapper - Embedded static resources browser extracted in /var/folders/yx/mgksqtzn41j41xdnv74snjpc0000gn/T/restheart-4469244188076444924 17 14:01:10.999 [main] INFO org.restheart.Bootstrapper - URL /browser bound to static resources browser. Access Manager: false 18 14:01:11.246 [main] INFO org.restheart.Bootstrapper - Pid file /var/folders/yx/mgksqtzn41j41xdnv74snjpc0000gn/T/restheart-0.pid 19 14:01:11.246 [main] INFO org.restheart.Bootstrapper - RESTHeart started
现在我们可以用HAL格式或者内嵌的HAL浏览器查看是否一切正常。HAL浏览器使你可以在你平常的浏览器中浏览数据接口(DATA API)。
HAL是在API中给与资源一种一致和简单的超链接格式,使用HAL后可以使接口可以探索,数据文档可以通过接口本身被发现。总之他可以简化接口并且对客户端开发者更有吸引力。采用HAL的接口可以容易的被大多数主流编程语言的开源库使用和处理,它甚至简单到了你可以像处理其他JSON一样来处理它。
打开你的浏览器,输入http://127.0.0.1:8080/browser
,查看HAL用户操作接口。
7. 开启 MongoDB 权限认证
这部分假定使用MongoDB3.2,如果使用其他版本,安全配置基本相似也有部分不同。想知道更多的话到 MongoDB官方文档。
在相同系统的机器上开启带权限认证的MongoDB和链接数据库的客户端。访问可能导致localhost异常。可以使用--fork参数在后台启动MongoDB。
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
$ mongod --fork --syslog --auth
$ mongo
这部分我们将使用具有mongodb的超级管理员角色的用户来进行所有操作和访问所有资源。
但是,使用MongoDB用户最好的实践是限制用户的操作权限。例如,我们创建一个只有读权限访问一个数据库实例的用户。想得到更多的信息请访问MongoDB authentication with just enough permissions部分。
每个MongoDB的版本创建admin用户的过程都不相同。
1 > use admin 2 > db.createUser({ 3 user: "admin", 4 pwd: "changeit", 5 roles:[ "root" ] 6 })
我们需要在RESTHeart的配置文件中提供MongoDB的权限认证信息: 点这.
我们将使用您下载的RESTHeart包中的restheart.yml样例配置文件。(可以在解压后的etc目录中找到这个文件)
1 $ vi etc/restheart.yml
找到并修改下面这部分内容中的用户名(user-name),密码(password)和认证的db(authentication db,创建用户的数据库,在我们上面的用例中是'admin')。
1 mongo-uri: mongodb://admin:changeit@127.0.0.1/?authSource=admin
现在可以通过我们配置文件启动RESTHeart了
1 $ java -server -jar restheart.jar etc/restheart.yml
测试数据库连接可以使用http://127.0.0.1:8080/browser
的HAL浏览器
备注:etc/restheart.yml
配置文件模版中开启了RESTHeart的安全认证。打开HAL浏览器后,将会问你认证信息。可以使用 etc/security.yml
配置文件中定义的认证(例如:username='a',password='a')。
7.3. 使用适当权限的MongoDB用户
简单起见在上一个例子中,我们使用了MongoDB的root(或者是clusterAdmin,dbAdminAnyDatabase)权限用户。这样使RESTHeart可以执行任何命令来操作MongoDB中的资源。
在生产环境中,常常需要强制性的安全隔离。
为了达到这样的目的,最好的方式是这样:
- 使用mongo-mounts配置选项限制暴露给RESTHeart的资源;
- 使用较少权限的MongoDB用户: 读(read)或者读写(readWrite) 权限到指定数据库。
下面这个例子创建了一个有适当权限角色(拥有db1, db2 and db3的只读权限)的用户。
1 1 > use admin 2 2 > db.createUser({user: "mongousr", 3 3 pwd: "secret", 4 4 roles: [{role: "readWrite", db: "db1"}, 5 5 {role: "readWrite", db: "db2"}, 6 6 {role: "read", db: "db3"} 7 7 ]})
listDatabases权限是列出所有数据库 (例如使用 GET动作 /, 获取根资源) 时必须的. 这个权限可以通过readWriteAnyDatabase角色或者创建一个自定义角色来获取。
dropDatabase权限是删除数据库时必须的. 这个权限可以通过dbAdmin角色或者创建一个自定义角色来获取。
8. Clients Authentication and Authorization
访问Security部分获得更多关于开启,配置和自定义用户权限和认证的内容。
原文地址:https://softinstigate.atlassian.net/wiki/display/RH/Installation+and+Setup转载请注明出处