リバース・プロキシを使用したセキュアなデプロイメント

ポート番号を使用せずにNGINXを使用してOracle GoldenGate Microservicesにアクセスするための、NGINXを使用したリバース・プロキシ・サービスを構成する方法について学習します。

ReverseProxySettingsを使用するための前提条件

MAでは、任意のリバース・プロキシ・サービスを使用できます。次の例では、その他のリバース・プロキシ・サービスを構成するための手順と、対象プロキシ・サーバーのドキュメントを示します。

次の前提条件では、NGINXリバース・プロキシを構成するための最小要件に関する詳細を示します。プロキシ構成に別のユーティリティを使用している場合でも、目的の環境とリバース・プロキシに対して同様の要件が必要になることがあります。

ノート: Oracle Linux 8またはRHEL 8にOracle GoldenGate 26aiをインストールする場合は、適切なNGINXモジュール・ストリームを有効にして、NGINXバージョンが1.24以上である必要があります。

  1. NGINXをインストールします。Oracle LinuxでのNGINX Webサーバーおよびプロキシの削除を参照してください。Oracle Linuxの場合、NGINXをインストールするコマンドは次のとおりです。

    yum -y install nginx

  2. JREのバージョンがJRE 8以降であることを確認します。

  3. Oracle GoldenGate MAをインストールします。

  4. 1つ以上のアクティブなMAデプロイメントを作成します。

  5. Oracleユーザーにsudo権限があることを確認します。

  6. NGINXインストール・ディレクトリ・パスを含めるようにPATH環境変数を構成します。

NGINXを構成するためのReverseProxySettingsユーティリティの実行

Oracle GoldenGate Microservices Architectureのインストールには、ReverseProxySettingsユーティリティが含まれています。ReverseProxySettingsユーティリティは、$OGG_HOME/lib/utl/reverseproxyディレクトリにあります。

ReverseProxySettingsユーティリティで使用できる追加のコマンドを確認するには、--helpオプションを指定してユーティリティを実行します。

$OGG_HOME/lib/utl/reverseproxy/ReverseProxySettings --help

ReverseProxySettingsユーティリティで使用可能なオプションは、次のとおりです。

-oまたは-output

出力ファイル名。デフォルトのファイル名はogg.confです。

-Pまたは-password

Service Managerアカウントのパスワード。

-lまたは–log

ログ・ファイル名を指定し、ロギングを開始します。デフォルトではロギングしません。

–trailOnly

インバウンドの証跡データ専用に構成します。

-tまたは–type

プロキシ・サーバーのタイプ。デフォルトはNginxです。

-sまたは –no-ssl

SSLなしで構成します。

-hまたは–host

リバース・プロキシの仮想ホスト名。

-pまたは-port

リバース・プロキシのポート番号。デフォルトは80または443です。

-?または-help

使用法に関する情報を表示します。

-uまたは –user

使用するService Managerアカウントの名前です。

-vまたは–version

バージョンが表示されます。

ReverseProxySettingsユーティリティの実行

ReverseProxySettingsユーティリティを使用するには:

  1. NGINXリバース・プロキシ用の構成ファイルを生成するには、ReverseProxySettingsユーティリティの場所に移動します。

    cd $OGG_HOME/lib/utl/reverseproxy
  2. ReverseProxySettingユーティリティを実行します。

    ReverseProxySettings -u *adminuser* -P *adminpwd* -o ogg.conf http://localhost:9100

    このコード・スニペットでは、adminuserはデプロイメント・ユーザー名であり、adminpwdはデプロイメントへのログインに使用されるデプロイメント・ユーザー・パスワードです。

  3. ステップ2で生成されたogg.confファイルを/etc/nginx/conf.dディレクトリにコピーします。

    sudo cp ogg.conf /etc/nginx/conf.d/.
  4. 次のステップを使用して、SSL/TLS設定のogg.confファイルを更新します。

    1. ssl_ciphers行を検索し、次のように置き換えます。

      ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-CHACHA20-POLY1305;
    2. この行の下に別の行を追加します。

      ssl_conf_command Ciphersuites TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256;
    3. 自己署名証明書を使用している場合は、次の例に示すように、秘密キーと証明書のpemファイルが/etc/nginxディレクトリにコピーされていることを確認します。

      sudo cp ogg.key /etc/nginx/.
      sudo cp ogg.pem /etc/nginx/.

      次の2行を正しいファイルの場所を指すように変更します。

      ssl_certificate          /etc/nginx/ogg.pem;
      ssl_certificate_key      /etc/nginx/ogg.key;
    4. ルートCA署名付き証明書を使用している場合は、すべての中間CA証明書がサーバー証明書に追加されていることを確認します。

      cat server_cert.pem intermediate_ca_cert1.pem intermediate_ca_cert2.pem > ogg_chain.pem

      秘密キーと証明書チェーンを/etc/nginxにコピーします。

      sudo cp ogg_chain.pem /etc/nginx/.
      sudo cp ogg_key /etc/nginx/.

      次の2行を正しいファイルの場所を指すように変更します。

      ssl_certificate         /etc/nginx/ogg_chain.pem;
      ssl_certificate_key     /etc/nginx/ogg.key;
  5. NGINX構成を検証します。

    sudo nginx -t

    コマンドが成功した場合、出力は次のようになります。

    NGINX: the configuration file /etc/NGINX/NGINX.conf syntax is ok
    NGINX: configuration file /etc/NGINX/NGINX.conf test is successful
  6. NGINXサービスを再起動します。

    sudo systemctl restart nginx

    構成ファイルに対する変更がロードされていない場合は、プロキシを停止して再起動します。

  7. NGINXが正常に設定された後にマイクロサービスにアクセスできるかどうかをテストするには、Webブラウザを開きます。

  8. 次のように、ポート番号443を使用してサービス・マネージャのプロキシURLを入力します。

    http://dc.example.com:443

    これにより、サービス・マネージャのログイン・ページが開き、そこから他のマイクロサービスにもアクセスできます。マイクロサービスに直接アクセスする場合は、以前に生成されたogg.confファイル内で指定されているとおり、そのマイクロサービスのプロキシURLを入力できます。

NGINXリバース・プロキシの構成については、このビデオもご覧ください。

SSL終了

TLSベースの接続を使用するリバース・ プロキシとオリジン・サーバーの間に保護されていない接続がある場合、その接続がリバース・プロキシSSL終端と呼ばれます。ノート: SSL終端では、リバース・ プロキシとオリジン・サーバー間の接続は保護されていません。

ただし、SSLブリッジングもサポートされています。ここでは、クライアントとリバース・ プロキシ間の接続が保護され、リバース・ プロキシとオリジン・サーバー間の接続も保護されます。

ノート:リバース・プロキシを使用する場合、mTLSはサポートされません。