Skip to content

Commit

Permalink
Merge pull request #4505 from telefonicaid/hardening/deprecate_old_db…
Browse files Browse the repository at this point in the history
…_cli

FIX deprecated old db CLI
  • Loading branch information
mapedraza authored Feb 26, 2024
2 parents a0d75b3 + da4c596 commit cbc6238
Show file tree
Hide file tree
Showing 30 changed files with 128 additions and 134 deletions.
1 change: 1 addition & 0 deletions CHANGES_NEXT_RELEASE
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,4 @@
- Fix: changed the default value of `-dbTimeout` to 0 to resolve conflict with `-dbURI` (#4496)
- Fix: wrong INFO startup log showing ORION_MONGO_TIMEOUT, ORION_IN_REQ_PAYLOAD_MAX_SIZE and ORION_OUT_REQ_MSG_MAX_SIZE env var values (#4496)
- Fix: return 400 Bad Request when subject.entities exists but it is an empty array (#4499)
- Deprecate: `-dbhost`, `-rplSet`, `-dbTimeout`, `-dbuser`, `-dbAuthMech`, `-dbAuthDb`, `-dbSSL` and `-dbDisableRetryWrites` CLI parameters along with associated env vars (use `-dbURI` instead`)
4 changes: 2 additions & 2 deletions ci/deb/build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -93,8 +93,8 @@ function _execute()

sleep 3

contextBroker -port 30001 -dbhost localhost:20001 -pidpath cb1.pid &
contextBroker -port 30002 -dbhost localhost:20002 -pidpath cb2.pid &
contextBroker -port 30001 -dbURI mongodb://localhost:20001 -pidpath cb1.pid &
contextBroker -port 30002 -dbURI mongodb://localhost:20002 -pidpath cb2.pid &
}

[ $# = 0 ] && _usage
Expand Down
2 changes: 1 addition & 1 deletion ci/deb/makefile
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ install_unit: install
unit:
@echo '------------------------------------- make unit ----------------------------------------'

BUILD_UNIT/test/unittests/unitTest -t 0-255 -dbhost ${MONGO_HOST} --gtest_output=xml:/tmp/builder/logs/unit.xml
BUILD_UNIT/test/unittests/unitTest -t 0-255 -dbURI mongodb://${MONGO_HOST} --gtest_output=xml:/tmp/builder/logs/unit.xml

build_functional: prepare
@echo '------------------------------------- make build_functional ----------------------------'
Expand Down
23 changes: 0 additions & 23 deletions doc/manuals.jp/admin/cli.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,23 +34,7 @@ broker はデフォルトでバックグラウンドで実行されるため、
- **-db <db>** : 使用する MogoDB データベース、または (`-multiservice` を使用している場合) サービス単位/テナント単位のデータベースのプレフィックス ([マルチ・テナンシー](../orion-api.md#multi-tenancy)のセクションを参照してください) です。このフィールドは最大10文字までです
- **-dbURI <uri>** : 使用する MongoDB を URI で指定します。
URI に文字列 `${PWD}` がある場合は `-dbpwd` または環境変数 `ORION_MONGO_PASSWORD` で指定したパスワードで置き換えられます。
このオプションは `-dbhost`, `-rplSet`, `-dbTimeout`, `-dbuser`, `-dbAuthMech`, `-dbAuthDb`, `-dbSSL`, `-dbDisableRetryWrites` と組み合わせできません。(組み合わせた場合、Orion は起動時にエラーで終了します)
- **-dbhost <host>** : 使用する MongoDB のホストとポートです。たとえば、`-dbhost localhost:12345` です
- **-rplSet <replicat_set>** : 指定すれば、Orion CB が MongoDB レプリカセット (スタンドアロン MongoDB インスタンスではなく) に接続されます。使用するレプリカセットの名前は、パラメータの値です。この場合、-dbhost パラメーターは、レプリカ・セットのシードとして使用されるホスト ("," で区切られた) のリストにすることができます
- **-dbTimeout <interval>** : レプリカセット (-rplSet) を使用する場合にのみ使用され、それ以外の場合は無視されます。レプリカセットへの接続のタイムアウトをミリ秒単位で指定します
- **-dbuser <user>** : 使用する MongoDB ユーザ。MongoDB が認証を使用しない場合、このオプションは避けなければなりません。[データベース認証セクション](database_admin.md#database-authorization)を参照してください
- **-dbpwd <pass>** : 使用する MongoDB パスワード。MongoDB が認証を使用しない場合、このオプションは避けなければなりません。[データベース認証セクション](database_admin.md#database-authorization)を参照してください
- **-dbAuthMech <mechanism>**. `-dbuser``-dbpwd` を提供する場合に使用する MongoDB
認証メカニズム。代替手段はSCRAM-SHA-1 または SCRAM-SHA-256 です。
- **-dbAuthDb <database>** : `-dbuser``-dbpwd` を提供する場合に認証に使用するデータベース
を指定します。
- **-dbSSL** : MongoDB への接続で SSL を有効にします。MongoDB サーバまたはレプリカ・セットが
SSL を使用している場合は、このオプションを使用する必要があります (または、逆に、MongoDB
サーバまたはレプリカ・セットが SSL を使用していない場合は、このオプションを使用する必要は
ありません)。現在、制限があることに注意してください。この場合、Orion は `tlsAllowInvalidCertificates=true`
を使用するため、MongoDB サーバで使用される証明書は検証されません。
- **-dbDisableRetryWrites** : DB 接続で retryWrite パラメータを false に設定します
(古い MongoDB インスタンスとの互換性を維持するためにのみで、通常は推奨されません)
- **-dbPoolSize <size>** : データベース・コネクション・プール プールのデフォルトサイズは10接続です
- **-writeConcern <0|1>** : MongoDB の書き込み操作に対する確認を指定 : 確認 (1) または未確認 (0)。デフォルトは 1です
- **-https** : セキュアな HTTP モードで作業します (`-cert` および `-key` を参照)
Expand Down Expand Up @@ -143,15 +127,8 @@ Orion は、環境変数を使用した引数の受け渡しをサポートし
| ORION_PORT | port |
| ORION_PID_PATH | pidpath |
| ORION_MONGO_URI | dbURI |
| ORION_MONGO_HOST | dbhost |
| ORION_MONGO_REPLICA_SET | rplSet |
| ORION_MONGO_USER | dbuser |
| ORION_MONGO_PASSWORD | dbpwd |
| ORION_MONGO_AUTH_MECH | dbAuthMech |
| ORION_MONGO_AUTH_SOURCE | dbAuthDb |
| ORION_MONGO_SSL | dbSSL |
| ORION_MONGO_DB | db |
| ORION_MONGO_TIMEOUT | dbTimeout |
| ORION_MONGO_POOL_SIZE | dbPoolSize |
| ORION_USEIPV4 | ipv4 |
| ORION_USEIPV6 | ipv6 |
Expand Down
17 changes: 9 additions & 8 deletions doc/manuals.jp/admin/database_admin.md
Original file line number Diff line number Diff line change
Expand Up @@ -54,27 +54,28 @@ mongorestore --host <dbhost> --db <db> dump/<db>
<a name="database-authorization"></a>
## データベースの認証

MongoDB の認証は `-db, `-dbuser` `-dbpwd` オプションで設定されます ([コマンドライン・オプションのセクション](cli.md)を参照)。考慮するいくつかの異なるケースがあります :
MongoDB の認証は `-dbURI` および `-dbpwd` オプションを使用して設定されます ([コマンドライン・オプションのセクションを参照](cli.md))。考慮すべきいくつかの異なるケースがあります:

- MongoDB インスタンス/クラスタが認証を使用していない場合は、`-dbuser``-dbpwd` オプションは使用しないでください
- `-dbAuthMech` で認証メカニズムを指定できます
- MongoDB インスタンス/クラスタが認証を使用していない場合は、`-dbpwd` を使用せず、`username:${PWD}@` のパートを省略した `-dbURI` を使用してください
- `authMechanism` オプションを使用して、`-dbURI` 内で認証メカニズムを指定できます
- MongoDB インスタンス/クラスタが認可を使用している場合は、次のようになります :
- Orion をシングルサービス/テナントモードで実行している場合 (つまり `-multiservice` でない場合)、1つのデータベース (-db オプションで指定されたもの) のみを使用しているので、認証は、そのデータベースで `-dbuser``-dbpwd` を使用して行われます
- Orion をマルチサービス/テナントモードで実行している場合 (つまり `-multiservice` の場合)、認証は、`admin` データベースで `-dbuser``-dbpwd` を使用して行われます。[このドキュメントの後半](#multiservicemultitenant-database-separation)で説明するように、マルチサービス/テナントモードでは、Orion はいくつかのデータベース (潜在的にオンザフライで作成される可能性があります) を使用します。`admin` データベース上での認証は、それらの全てで許可します
- とにかく、上記のデフォルトを `-dbAuthDb` でオーバーライドして、
- `-dbURI` では、`username:${PWD}@` のパートを使用する必要があります。`${PWD}``dbpwd` パラメータの値に置き換えられます
- Orion をシングルサービス/テナントモードで実行している場合 (つまり `-multiservice` でない場合)、1つのデータベース (`-db` オプションで指定されたもの) であり、認証は、`-dbURI` および `-dbpwd` で指定されたユーザ名を使用してそのデータベース内で行われます
- Orion をマルチサービス/テナントモードで実行している場合 (つまり `-multiservice` の場合)、認証は、`admin` データベースで `-dbURI` で指定されたユーザー名と `-dbpwd` を使用して行われます。[このドキュメントの後半](#multiservicemultitenant-database-separation)で説明するように、マルチサービス/テナントモードでは、Orion はいくつかのデータベース (潜在的にオンザフライで作成される可能性があります) を使用します。`admin` データベース上での認証は、それらの全てで許可します
- とにかく、上記のデフォルトを `-dbURI``defaultauthdb` でオーバーライドして、
必要な認証 DB を指定できます

次の例を考えてみましょう。 MongoDB の構成がそうである場合、通常は以下を使用してアクセスします :

```
mongo "mongodb://example1.net:27017,example2.net:27017,example3.net:27017/orion?replicaSet=rs0" --ssl --authenticationDatabase admin --username orion --password orionrules
mongosh mongodb://orion@orionrules:example1.net:27017,example2.net:27017,example3.net:27017/admin?replicaSet=rs0&tls=true&tlsAllowInvalidCertificates=true
```

Context Broker CLI パラメーターの同等の接続は次のようになります :


```
-dbhost examples1.net:27017,example2.net:27017,example3.net:27017 -rplSet rs0 -dbSSL -dbAuthDb admin -dbuser orion -dbpwd orionrules
-dbURI mongodb://orion@${PWD}:example1.net:27017,example2.net:27017,example3.net:27017/admin?replicaSet=rs0&tls=true&tlsAllowInvalidCertificates=true -dbpwd orionrules
```

Expand Down
2 changes: 1 addition & 1 deletion doc/manuals.jp/admin/diagnosis.md
Original file line number Diff line number Diff line change
Expand Up @@ -220,7 +220,7 @@ Orion Context Broker は、次のフローを使用します :
}
```

どちらの場合も、MonogDB への接続が正しく構成されていることを確認してください。特に、[コマンドラインから実行する](cli.md)場合は "-dbhost" オプションです。また、シャーディングを使用しているかどうかによって異なりますが、mongod/mongos プロセスが起動していることです。
どちらの場合も、MonogDB への接続が正しく構成されていることを確認してください。特に、[コマンドラインから実行する](cli.md)場合は `-dbURI` オプションです。また、シャーディングを使用しているかどうかによって異なりますが、mongod/mongos プロセスが起動していることです。

MongoDB が停止していることが問題の場合は、Orion Context Broker は、準備ができたらデータベースに再接続できることに注意してください。つまり、データベースに再接続するために broker を再起動する必要はありません。

Expand Down
13 changes: 4 additions & 9 deletions doc/manuals.jp/admin/sanity_check.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ curl --header 'Accept: application/json' localhost:1026/version

```
$ ps ax | grep contextBroker
8517 ? Ssl 8:58 /usr/bin/contextBroker -port 1026 -logDir /var/log/contextBroker -pidpath /var/log/contextBroker/contextBroker.pid -dbhost localhost -db orion
8517 ? Ssl 8:58 /usr/bin/contextBroker -port 1026 -logDir /var/log/contextBroker -pidpath /var/log/contextBroker/contextBroker.pid -dbURI mongodb://localhost/ -db orion
```

[トップ](#top)
Expand All @@ -63,25 +63,20 @@ Orion Context Broker は、デフォルト・ポートとして TCP 1026を使
Orion Context Broker は MongoDB データベースを使用します。このパラメーターは、
コマンドライン・オプションを使用して提供されます :

* `-dbhost`
* `-dbUri`
* `-db`
* `-dbuser`
* `-dbpwd`
* `-dbAuthMech`
* `-dbAuthDb`
* `-dbSSL`
* `-dbDisableRetryWrites`
* `-dbTimeout`
* `-dbPoolSize`
* `-writeConcern`

`-dbuser`, `-dbpwd`, `-dbAuthMech` および `-dbAuthDb` は、MongoDB が認証を使用
して、つまり `--auth` で実行される場合にのみ使用されることを注意して ください。
`-dbpwd` は、MongoDB が認証を使用して実行される場合、つまり `--auth` を使用して実行される場合にのみ使用されることに注意してください。

mongo コンソールを使用してデータベースが動作していることを確認できます :

```
mongo <dbhost>/<db>
mongosh <mongoUri>/<db>
```

mongo コンソールの次のコマンドを使用して、broker が使用するさまざまなコレクションをチェックすることができます。ただし、最初にドキュメントを挿入するときに broker がコレクションを作成するので、broker を初めて実行する、またはデータベースがクリーンアップされている、broker がまだリクエストを受信していない場合、コレクションは存在しません。特定の瞬間に実際のコレクションリストを取得するために `show collections` を使用します。
Expand Down
2 changes: 1 addition & 1 deletion doc/manuals.jp/admin/watchdog.md
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ monit が正常に動作していることを確認するには、プロセス

# ps -ef | grep contextBroker
500 27175 1 0 21:06 ? 00:00:00 monit -v -c /home/localadmin/monit_CB/monitBROKER.conf -d 10 -p /var/log/contextBroker/monit.pid
500 27205 1 0 21:06 ? 00:00:00 /usr/bin/contextBroker -port 1026 -logDir /var/log/contextBroker -pidpath /var/log/contextBroker/contextBroker.pid -dbhost localhost -db orion;
500 27205 1 0 21:06 ? 00:00:00 /usr/bin/contextBroker -port 1026 -logDir /var/log/contextBroker -pidpath /var/log/contextBroker/contextBroker.pid -dbURI mongodb://localhost/ -db orion;

そして、contextBroker を kill します。例 :

Expand Down
27 changes: 27 additions & 0 deletions doc/manuals.jp/deprecated.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@

推奨されなくなった機能のリストと、廃止された機能のバージョンは次のとおりです :

* Orion 3.12.0 での CLI パラメータ (および関連する環境変数): `-dbhost``-rplSet``-dbTimeout``-dbuser``-dbAuthMech``-dbAuthDb``-dbSSL`、および `-dbDisableRetryWrites`。MongoDB URI を構築するために必要な情報が必要な場合は、[このセクション](#mapping-to-mongouri-from-old-cli-parameters) をチェックして、代わりに `dbURI` を使用してください
* Orion 3.10.0 での `geo:point`, `geo:line`, `geo:box` および `geo:polygon` 属性タイプ。代わりに `geo:json` を使用してください
* Orion 3.8.0 での `GET /v2` 操作。この操作はかなり役に立たず、実際には使用されません。
* Orion 3.1.0 のサブスクリプションでの初期通知 (`skipInitialNotification` オプションと共に)。(Orion 3.2.0 で削除)。初期通知の
Expand Down Expand Up @@ -52,6 +53,31 @@
* Configuration Manager のロールは、0.21.0 で非推奨になり、0.25.0 で削除されました
* Associations は、0.21.0 で非推奨になり、0.25.0 で削除されました

<a name="mapping-to-mongouri-from-old-cli-parameters"></a>

### 古い CLI パラメータから MongoURI へのマッピング

次の CLI パラメータがあることを考慮します:

* `-dbhost HOST`
* `-rplSet RPLSET`
* `-dbTimeout TIMEOUT`
* `-dbuser USER`
* `-dbpass PASS`
* `-dbAuthMech AUTHMECH`
* `-dbAuthDb AUTHDB`
* `-dbSSL`
* `-dbDisableRetryWrites`

結果の MongoURI (つまり、`-dbURI` の値) は次のようになります:

> mongodb://[USER:PASS@]HOST/[AUTHDB][?replicaSet=RPLSET[&authMechanism=AUTHMECH][&tls=true&tlsAllowInvalidCertificates=true][&retryWrites=false][&connectTimeoutMS=TIMEOUT]
Notes:

* `-dbSSL` が使用される場合、`&tls=true&tlsAllowInvalidCertificates=true` トークンが追加されます
* `-dbDisableRetryWrites` が使用される場合、`&retryWrites=false` トークンが追加されます
* その他の `[...]` は、対応するパラメータが使用されているかどうかに応じて、オプションのトークンを意味します

<a name="log-deprecation-warnings"></a>

## 非推奨の警告をログに記録
Expand All @@ -77,6 +103,7 @@

| **削除された機能** | **機能をサポートする Orion ラスト・バージョン** | **バージョンのリリース日** |
|--------------------------------------------------------------------------------------|-------------------------------------------------|----------------------------|
| CLI `-dbhost``-rplSet``-dbTimeout``-dbuser``-dbAuthMech``-dbAuthDb``-dbSSL`、および `-dbDisableRetryWrites` (および関連する環境変数) | まだ定義されていません | まだ定義されていません |
| `POST /v2/entities` オペレーションの `attributes` フィールド | まだ定義されていません | まだ定義されていません |
| `APPEND`, `UPDATE`, など。`POST /v2/op/update` でのアクション・タイプ | まだ定義されていません | まだ定義されていません |
| URI パラメータでの `dateCreated` および `dateModified` | まだ定義されていません | まだ定義されていません |
Expand Down
2 changes: 1 addition & 1 deletion doc/manuals.jp/devel/cookbook.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ Orion に新しい CLI パラメータを追加するのは簡単です。これ
* 新しい CLI パラメーターの値を保持する**変数**、および
* `PaArgument` ベクトルの**新しい項目** `paArgs`

新しいCLIパラメーターが `-v` (verbose) のようなブール値の場合、`bool` 変数が必要です。`-dbHost <host name>` のようなテキスト・パラメータの場合は、char-vector が使用されるなどです。
新しいCLIパラメーターが `-v` (verbose) のようなブール値の場合、`bool` 変数が必要です。`-dbURI <MongoDB URI>` のようなテキスト・パラメータの場合は、char-vector が使用されるなどです。

最も簡単な方法は、同じタイプの古い CLI パラメータを単純にコピーすることです。

Expand Down
Loading

0 comments on commit cbc6238

Please sign in to comment.