Cosmos 用のカスタム HTTP PEP プロキシ

コンテンツ:

インストール

前提条件

Identity Manager (ここでは Keyrock の実装を見つけることができます) がインストールされていない場合、この PEP プロキシは意味をなしません。Cosmos も同様です。

cosmos-proxy は Node.js アプリケーションですので、公式ダウンロードからインストールしてください。先進的な選択肢は、creationix/Tim Caswellによって、Node Version Manager (nvm)をインストールすることです。これにより、Node.js のいくつかのバージョンを持ち、それらの間で切り替えることができます。

もちろん、gitcurl のような一般的なツールが必要とされるかもしれません。

トップ

インストール

これは、JavaScript で書かれたソフトウェアです。特に、Node.js (サーバサイドのJavaScript) に適しています。JavaScript はインタプリタ型のプログラミング言語なので、コンパイルやパッケージの構築は不要です。マシンのどこかにソースコードをダウンロードしておけば十分です。

まず作成されていなければ、cosmos-proxy という名前の Unixユーザを作成します。アプリケーションのインストールと実行に必要です。これは、root または別の sudoer ユーザとしてのみ行うことができます :

$ sudo useradd cosmos-proxy
$ sudo passwd cosmos-proxy <choose_a_password>

sudoer ユーザである間は、選択したパスの cosmos-proxy 下にログトレースを保存するためのフォルダを作成します。通常は /var/log/cosmos/cosmos-proxyで、所有者として cosmos-proxy を設定します :

$ sudo mkdir -p /var/log/cosmos/cosmos-proxy
$ sudo chown cosmos-proxy:cosmos-proxy /var/log/cosmos/cosmos-proxy

さらに、sudo ユーザの場合は、プロキシのシャットダウン時に user:token ペアを提供するキャッシュ・ファイルを格納するためのフォルダを作成します。

$ sudo mkdir -p /etc/cosmos/cosmos-proxy
$ sudo chown cosmos-proxy:cosmos-proxy /etc/cosmos/cosmos-proxy

次に、新しいフレッシュな cosmos-proxy ユーザに変更してください :

$ su - cosmos-proxy

次に、あなたのディレクトリのどこかに Cosmos リポジトリをクローンします :

$ git clone https://github.com/telefonicaid/fiware-cosmos.git

cosmos-proxy ディレクトリに変更し、master から develop にブランチを変更し、インストール・コマンドを実行します :

$ cd fiware-comos/cosmos-proxy
$ git checkout release/x.y.z
$ npm install

node_modules ディレクトリの下のすべての依存関係をダウンロードする必要があります。

トップ

単体テスト

未定

トップ

構成

cosmos-proxy は JSON ファイルで設定します。使用可能なパラメータは次のとおりです :

  • host: プロキシを実行しているホストの FQDN または IP アドレス
  • port: プロキシされたリクエストを受信するための TCP リスニングポート
  • target:
    • host: 実サービスを実行しているホストの FQDN または IP アドレス
    • port: 実際のサービスの TCP リスニングポート
  • idm:
    • host: Identity Manager が実行される FQDN または IP アドレス。これを URL 形式で書いてはいけません!
    • port: Identity Manager がリクエストをリスンするポート。通常は、443
  • public_paths_list: すべてのユーザに到達できるパス
  • superuser: すべての HDFS パスにアクセスする権限を与えられたスーパーユーザ
  • log:
    • file_name: ログのトレースが 1日単位で保存されるファイルのパス。このファイルは、cosmos-auth ユーザが所有するログフォルダ内に存在する必要があります
    • date_pattern: ログファイルがローテーションされたときにログファイル名に追加されるデータパターン
  • cache_file: user:token ペアが保存されるファイルのパス。このファイルは、プロキシのシャットダウン時に使用されます

トップ

実行

cosmos-proxy によって実装される PEP プロキシは、現在のディレクトリが cosmos-proxy であると仮定して実行されます :

$ npm start

すべてがうまくいけば、/var/log/cosmos/cosmos-proxy に、次のログが表示されるはずです :

{"level":"info","message":"Starting cosmos-proxy in 0.0.0.0:14000","timestamp":"2016-07-14T11:48:10.968Z"}

トップ

管理

cosmos-proxy には、ログを管理するのに便利な情報ソースが1つあります。

ロギング・トレースは通常、/var/log/cosmos/cosmos-proxy 下に保存されます。これらのトレースは、レベル、メッセージ、タイムスタンプの各フィールドを持つ JSON 形式で記述されています。例えば :

{"level":"info","message":"Starting cosmos-proxy in 0.0.0.0:14000","timestamp":"2016-07-14T11:48:10.968Z"}

ロギング・レベルは、次の階層に従います :

debug < info < warn < error < fatal

ログの中にはinfo、多くのメッセージと、いくつかの warnerror タイプがあります。特に興味があるのはエラーです :

  • Authentication error: Keyrock Identity Manager との通信がダウンしているためにトークンが有効でないため、ユーザを認証できませんでした
  • Authorization error: ユーザは、リクエストされた Cosmos リソースを承認または使用できませんでした : ユーザの ID はリソース内の Cosmos ID と一致しませんでした

トップ