はじめに
Neo4jのデフォルト設定では、同一ホストからのアクセスのみ許可されているだけです。これだと、クラウド上にNeo4jを配置した場合など、外部からアクセスする際にちょっと扱いづらいので、Neo4jにBasic認証とSSLを有効にして外部からアクセス可能な設定にしてみます。
Neo4jの公式マニュアルにもセキュリティに関するページがありますが、ちょっとややこしい感があったのでもう少し簡易な方法です。
外部からのアクセスを許可する
まず、Neo4jに外部からアクセスできるよう、org.neo4j.server.webserver.address=0.0.0.0
の部分のコメントを外します。
#let the webserver only listen on the specified IP. Default
#is localhost (only accept local connections). Uncomment to allow
#any connection.
org.neo4j.server.webserver.address=0.0.0.0
HTTPSを有効にする
以下の設定をtrueにしてHTTPSを有効にします。
# Turn https-support on/off
org.neo4j.server.webserver.https.enabled=true
これだけだと、オレオレ証明書によるHTTPSです。ちゃんとした証明書を使いたい場合は、公式マニュアルに方法が書いてあるのでそちらを参照してください。
Basic認証を設定する
今回は、Neo4jにBasic認証機能を追加してくれるプラグインを使ってみます。
プラグインのダウンロード
こちらのページにアクセスしてページの一番下にあるjarファイルをダウンロードします。
今回は、DBがNeo4j community 2.1.6だったので、
authentication-extension/authentication-extension-2.1.5-1.0-SNAPSHOT.jar
というのを使ってみました。微妙にバージョンが違うようですが気にしない。
プラグインの保存
ダウンロードしたjarファイルをNeo4jがインストールされている場所下のplugins
フォルダ配下に保存します。
設定ファイルの編集
設定ファイルに以下の行を追記します。
username
とpassword
の部分は、Basic認証で使用するユーザ名とパスワードです。
org.neo4j.server.credentials=username:password
org.neo4j.server.thirdparty_jaxrs_classes=org.neo4j.server.extension.auth=/auth
最後にNeo4jを再起動して設定完了です。
これで、ブラウザおよびAPIからのアクセスなどからアクセスした際、Basic認証を求められるようになります。
https://neo4j.hoge:7473/