6

ドキュメントによると、のAdmin REST APISyncGateway公開されるべきではありません。

見積もり:

デフォルトでは、管理 REST API はポート 4985 で実行されます (adminInterface 構成パラメーターを変更しない限り)。このポートを公開しないでください — ファイアウォールの内側に属します。このポートにアクセスできる人は誰でも、データベースとユーザー アカウントに自由にアクセスして制御できます。

これは理にかなっていますが、Google AppEngine で実行され、セッションのサインアップ/作成を処理するアプリケーション サーバーに、公開せずに API へのアクセスを許可するにはどうすればよいのでしょうか? :8091Admin REST API を公開するが、リクエストを送信する特定のサーバーへのアクセスを制限したり、ポートの GUI のようにユーザー名とパスワードの組み合わせを要求したりするオプションはありますか?

編集

明確にするために、質問にコメントを追加しています。

アプリ サーバー (GAE 上で実行) と Couchbase サーバー (DigitalOcean 上で実行) は 2 つの異なる物理デバイスであるため、異なる IP アドレスを持っています。意味: 私の GAE サーバーから Couchbase サーバーへの接続はその後何の影響も与えないため、私のadminInterface構成パラメーターをループバック アドレスに変更することはできません。syncgateway_config.json私が間違っていなければ、サーバーは外部からアクセスできませんか?!

4

5 に答える 5

4

通常、管理者レベルのアクセスを必要とするデータベース サーバーとその他のサーバーは、同じホスト上にあるか、ファイアウォールの背後にある内部ネットワーク上にあると予想されます。後者の場合、管理ポートを内部ネットに安全にバインドできます。もちろん、ファイアウォール ルールは、同期ゲートウェイ (SG) パブリック ポートへの外部接続のみを許可します。

まったく異なるネットワーク上にある認証サーバーがある場合、事態はもう少し複雑になります。

1 つの可能性は、ファイアウォールでより洗練されたオプションを使用して、外部認証サーバーからのみ管理ポートへの外部アクセスを許可できるようにすることです。これを行うと想像できるいくつかの方法は、(a) 認証サーバーの IP アドレスのみをハードコードする、(b) クライアント証明書で SSL 接続を使用する、または (c) 認証サーバーから SG サーバーへの SSH トンネルを開くことです。

もう 1 つの可能性は、まさにこの種のことを行うように設計された OAuth のような分散認証システムを使用することです。したがって、モバイル アプリは認証サーバーと通信してトークンを取得し、そのトークンを SG に提示します。SG はトークンを認証サーバーに提示して検証します。IIRC SG ではまだ汎用の OAuth サポートがないため、この作業を行う SG サーバーで実行する小さな OAuth ハンドラーを作成する必要があります。

[免責事項: 私は Couchbase のアーキテクトであり、Sync Gateway に取り組んできましたが、最近は Couchbase Lite にしか取り組んでいないので、SG の現在の機能の専門家ではありません!]

于 2016-02-01T17:13:22.187 に答える
2

nginx などの同期ゲートウェイと同じローカル ネットワークに http プロキシをインストールできます。

クライアント側の証明書を使用して認証された公開 SSL 接続を受け入れるように nginx を構成します。

nginx と共有されているローカル ネットワークからの管理者接続のみを受け入れるように同期ゲートウェイを構成します。

nginx 経由で同期ゲートウェイに接続するときに、クライアント側の証明書を使用するようにアプリケーション サーバーを構成します。

ここにnginxクライアント証明書のセットアップをカバーする良いブログがあります: http://nategood.com/client-side-certificate-authentication-in-ngi

于 2016-02-01T17:11:51.073 に答える
2

あなたのコメントの新しい情報に対処する必要があります。私はこの分野の専門家ではありませんが、認証サービスと同期ゲートウェイが同じサーバー上で実行されていることを前提としていると思います。そうでない場合は、もう少し複雑になりますが、同期ゲートウェイ構成の adminInterface セクションを内部 IP アドレスとポート (例: 192.168.3.2:4985) に変更することで実行できると思います。

于 2016-01-31T06:51:16.080 に答える
0

必要なものを認証サービスにラップすることをお勧めします。このブログ投稿では、これを行う方法が非常によく説明されています: http://ti.eng.br/configuring-your-very-first-couchbase-mobile-sync-backend/

于 2016-01-27T13:54:11.690 に答える