HTTP 転送およびポーラー転送ユーザーズ ガイド

     前  次    目次     
ここから内容

SFTP 転送

SFTP 転送は、SSH バージョン 2 を使用した SFTP (SSH ファイル転送プロトコル) 経由でファイルを安全に転送できるポーリング ベースの転送です。SFTP 転送では、定義済みのポーリング間隔に基づいて指定されたディレクトリを定期的にポーリングします。認証後、Oracle Service Bus サービスと SFTP サーバ間で接続が確立され、ファイル転送が可能になります。SFTP 転送では、一方向の着信および発信接続をサポートしています。

SFTP 転送の主要な機能は次のとおりです。

 


環境値

環境値は、コンフィグレーション データに含まれる定義済みのフィールドです。この値は、ドメイン間でコンフィグレーションを移動するとき (テスト環境からプロダクション環境への移動など) に変更される可能性があります。SFTP 転送に関連付けられた環境値を次の表に示します。

表 2-1 環境値
環境値
説明
アーカイブ ディレクトリ
ダウンロード ディレクトリまたはリモートの場所から移動されるファイルの移動先ディレクトリです。
ダウンロード ディレクトリ
ファイル転送時にファイルがダウンロードされるローカル マシンのディレクトリです。
エラー ディレクトリ
問題が発生した場合にメッセージがポストされる場所です。
ポーリングの管理対象サーバ
(クラスタ シナリオで) ポーリングに使用する管理対象サーバです。

詳細については、以下を参照してください。

 


SFTP 認証の一般原則

次の原則は、プロキシ サービスとビジネス サービスの SFTP 認証プロセスに適用されます。

 


実行時の動作

SFTP 転送を使用したファイルの転送には、以下の手順が含まれます。

  1. プロキシ サービスが入力ディレクトリを定期的にポーリングします。
  2. 注意 : ポーリング サイクルごとに新しい接続が作成されます。
  3. プロキシ サービスは、入力ディレクトリでファイルを見つけると、.stage 拡張子の付いたファイル名に変更します。この名前変更により、サービスが次回のポーリング サイクルで同じファイルを選択しないことが保証されます。
  4. .stage ファイルは、配信されるまで入力ディレクトリ内に存在します。

    注意 : (ネットワーク障害などが原因で) 入力ディレクトリからファイルを取得できない場合、.stage ファイルはクリーンアップ サイクルで処理されます。クリーンアップ サイクルは、15 分ごとまたは 15 回のポーリング サイクルの後に実行されます (いずれか後に発生した方が実行されます)。連続する 2 回のクリーンアップ サイクルで.stage ファイルが存在する場合、ファイルは再度処理されます。
  5. メッセージの JMS タスクが作成され、ドメイン全体の JMS キューに追加されます。
  6. ドメイン全体の MDB がタスクを受け取り、メッセージを処理します。
  7. 注意 : このタスクでは、メッセージを処理する際にプールされた接続を使用します。プールの接続を使用できない場合は、新しい接続が作成されます。
  8. メッセージがパイプラインに配信され、.stage ファイルが削除されます。
  9. 注意 : SFTP ビジネス サービスをコンフィグレーションしている場合、サービスはプールされた接続を使用して、メッセージを発信ディレクトリに配置します。

メッセージが配信されていない場合は、再度メッセージの転送が試行され、定義済みの試行回数に達するまでプロセスが繰り返されます。メッセージを配信できない場合、メッセージはエラー ディレクトリに移動されます。

 


SFTP 転送の使用

SFTP 転送を使用すると、SSH ファイル転送プロトコル (SFTP) を使用してファイルを安全に転送できます。

以下の節では、SFTP 転送を使用してファイルを安全に転送する方法について説明します。

SFTP 認証の有効化

SFTP 転送では、以下の認証方式をサポートしています。

Oracle Service Bus サービスは、known_hosts ファイルに定義されたサーバの詳細に基づいて SFTP サーバを認証します。そのため、サーバ認証を有効にするには、クライアント マシンで known-hosts ファイルを作成する必要があります。

known_hosts ファイルの作成

known_hosts ファイルは、Oracle Service Bus プロキシ サービス (着信要求) またはビジネス サービス (発信要求) が実行されているサーバに存在する必要があります。このファイルには、プロキシ サービスまたはビジネス サービスの接続先となるリモート SFTP サーバのホスト名、IP アドレス、および公開鍵が含まれている必要があります。

  1. known_hosts ファイルを作成し、以下の形式で詳細情報を入力します。
  2. Hostname, IP algorithm publickey

    • Hostname は、SFTP サーバのホスト名です。
    • IP は、SFTP サーバの IP アドレスです。
    • algorithm には、SFTP サーバのコンフィグレーションに基づいて、DSA または RSA のいずれかを指定できます。サポートされているアルゴリズムに応じて、ssh-rsa または ssh-dss と入力します。
    • publickey は、SFTP サーバの公開鍵です。公開鍵は、Open SSH 公開鍵形式であることが必要です。
    • 例 :

      getafix,172.22.52.130 ssh-rsa
      AAAAB3NzaC1yc2EAAAABIwAAAIEAtR+M3Z9HFxnKZTx66fZdnQqAHQcF1vQe1+EjJ/HWYtg
      Anqsn0hMJzqWMatb/u9yFwUpZBirjm3g2I9Qd8VocmeHwoGPhDGfQ5LQ/PPo3esE+CGwdnC
      OyRCktNHeuKxo4kiCCJ/bph5dRpghCQIvsQvRE3sks+XwQ7Wuswz8pv58=

      known_hosts ファイルには、複数のエントリを含めることができますが、各エントリはそれぞれ別の行に入力する必要があります。

  3. known_hosts ファイルを $DOMAIN_HOME\osb\transports\sftp ディレクトリに移動します。
  4. 注意 : /transports/sftp ディレクトリは、自動的に作成されるわけではありません。このディレクトリを作成する必要があります。

ユーザ名/パスワード認証の有効化

ユーザ名/パスワード認証は、最も簡単で手早い認証方式です。この認証方式は、ユーザの資格に基づいています。

サービスのユーザ名/パスワード認証を有効にするには、次の手順を実行します。

  1. SFTP サーバで、ユーザ資格を使用して静的サービス アカウントを作成します。詳細については、『Oracle Service Bus Console の使い方』の「サービス アカウント」を参照してください。
  2. known_hosts ファイルを作成します。詳細については、「known_hosts ファイルの作成」を参照してください。

ホスト ベース認証の有効化

ホスト ベース認証では、プライベート ホスト キーを使用します。この方式は、すべてのユーザが同じプライベート ホストを共有している場合に使用できます。

サービスのホスト ベース認証を有効にするには、次の手順を実行します。

  1. SSL クライアント認証キーでサービス キー プロバイダをコンフィグレーションします。詳細については、『Oracle Service Bus Console の使い方』の「サービス キー プロバイダ」を参照してください。
  2. known_hosts ファイルを作成します。詳細については、「known_hosts ファイルの作成」を参照してください。
  3. SFTP サーバのクライアントである Oracle Service Bus からの要求を受け入れるように SFTP サーバをコンフィグレーションします。
  4. たとえば、Linux の SFTP サーバの場合、次の手順を実行する必要があります。

    • /etc/ssh/shosts.equiv ファイルを編集し、Oracle Service Bus ドメインを実行しているマシンのホスト名または IP アドレスを追加します。
    • /etc/ssh/ssh_known_hosts ファイルを編集して、Oracle Service Bus ドメインを実行しているマシンのホスト名または IP アドレスを追加し、その後にスペースを入力して公開鍵を追加します。
    • 注意 : 公開鍵は、サービス キー プロバイダの作成時に使用したキー ストアから抽出できます。公開鍵は、Open SSH 形式であることが必要です。

公開鍵認証の有効化

公開鍵認証は、ユーザ独自のプライベート キーを使用して実行されます。この方式は、各ユーザがプライベート キーを持っている場合に使用できます。

公開鍵認証を有効にするには、次の手順を実行します。

  1. SSL クライアント認証キーでサービス キー プロバイダをコンフィグレーションします。詳細については、『Oracle Service Bus Console の使い方』の「サービス キー プロバイダ」を参照してください。
  2. Oracle Service Bus (SFTP クライアント) からの要求を受け入れるように SFTP サーバをコンフィグレーションします。
  3. たとえば、Linux の SFTP サーバの場合、キー ストアから公開鍵を抽出し、このキーを SFTP サーバの $HOME/.ssh/authorized_keys ファイルに入力する必要があります。このパスとファイルが存在することを確認してください。

  4. known_hosts ファイルを作成します。詳細については、「known_hosts ファイルの作成」を参照してください。

プロキシ サービスのコンフィグレーション

Oracle Service Bus Console の [転送コンフィグレーション] ページでプロキシ サービスを作成するときに、転送プロトコルとして sftp を選択し、次の形式でエンドポイント コンフィグレーションを指定する必要があります。

sftp://hostname:port/directory

注意 : SFTP 転送がサポートしているサービス タイプはメッセージと XML のみであるため、Oracle Service Bus Console の [全般的なコンフィグレーション] ページで、サービス タイプとして [メッセージング サービス] または [任意の XML サービス] を選択する必要があります。
注意 : サービス タイプとして [メッセージング サービス] を選択した場合、以下を実行する必要があります。
注意 : 詳細については、『Oracle Service Bus Console の使い方』の「プロキシ サービス : 作成と管理を参照してください。

次の表の説明に従って、プロキシ サービスをコンフィグレーションします。

表 2-2 SFTP プロキシ サービスのコンフィグレーション
フィールド
説明
ユーザ認証
プロキシ サービスは、指定されたユーザ認証方式に基づいて SFTP サーバによって認証されます。
必要な認証方式を選択します。
  • ユーザ名/パスワード認証 : 静的サービス アカウントをこの認証方式に関連付け、サービス アカウントで提供される資格を使用してクライアントを認証します。
  • ホスト ベース認証 : ユーザ名とサービス キー プロバイダが必要です。既知のホストから接続するユーザは、ホストのプライベート キーを使用して認証されます。
  • 公開鍵認証 : ユーザ名とサービス キー プロバイダが必要です。ユーザは、独自のプライベート キーを持ちます。
サービス アカウント
ユーザのサービス アカウントを入力するか、[参照] をクリックしてサービス アカウントを選択します。サービス アカウントの使用方法については、『Oracle Service Bus Console の使い方』の「サービス アカウント」を参照してください。
サービス キー プロバイダ
このフィールドは、公開鍵認証方式とホスト ベース認証方式にのみ使用できます。
サービス キー プロバイダを入力するか、[参照] をクリックしてサービス キー プロバイダを選択します。詳細については、『Oracle Service Bus Console の使い方』の「サービス キー プロバイダ」を参照してください。
ユーザ名
この値は、ホスト ベース認証方式または公開鍵認証方式を選択した場合にのみ必要です。
  • ホスト ベース認証では、SFTP サーバ上のユーザのホーム ディレクトリをポーリングするためにユーザ名が必要となります。
  • 公開鍵認証では、ユーザのホーム ディレクトリのポーリングと SFTP サーバ上の公開鍵の場所の識別にユーザ名が必要となります。
ユーザ名を入力します。
参照として渡す
このオプションを選択すると、ファイルはアーカイブ ディレクトリにステージングされ、参照としてヘッダに渡されます。

注意 : このオプションは、リモート ストリーミングが無効になっている場合にのみ使用できます。

リモート ストリーミング
このオプションを選択すると、処理時に SFTP のファイルがリモート サーバから直接ストリームされます。このオプションを選択した場合、SFTP サーバ マシンのリモート ディレクトリがアーカイブ ディレクトリになります。そのため、SFTP ユーザ ディレクトリからの相対パスでアーカイブ ディレクトリを指定する必要があります。
ファイル マスク
特定のタイプのファイルを転送する場合は、ファイル マスクを使用できます。
正規表現を入力して、ディレクトリから取り出すファイルを選択します。デフォルト値は *.* です。
ポーリング間隔
ポーリング間隔は、入力ディレクトリをポーリングする頻度です。ポーリングでは、SFTP 接続を作成する必要があります。
指定した場所からファイルをポーリングする間隔を秒単位で入力します。デフォルト値は 60 です。

注意 : 間隔が短いとディレクトリが頻繁にポーリングされるため、短いポーリング間隔を設定しないようにしてください。

読み込み制限
ポーリング ディレクトリに多数のファイルが存在する場合は、このフィールドで適切な値を選択することにより同時転送の数を制限できます。
制限を指定しない場合は、0 (ゼロ) を入力します。デフォルト値は 10 です。

注意 : SFTP サーバで同時接続数が制限されている場合があります。定義した読み込み制限がサーバで定義されている制限よりも少ないことを確認してください。

読み込み後のアクション
ファイル転送後にメッセージで実行する必要のあるアクションを選択します。
  • アーカイブ : メッセージは指定されたアーカイブ ディレクトリにアーカイブされます。
  • 削除 : メッセージが削除されます。
アーカイブ ディレクトリ
[読み込み後のアクション] が [アーカイブ] に設定されている場合、ファイルは転送後に (ダウンロード ディレクトリまたはリモートの場所から) アーカイブ ディレクトリに移動します。
[参照として渡す] オプションを選択した場合は、アーカイブ ディレクトリを指定する必要があります。
リモート ストリーミングが有効になっている場合、アーカイブ ディレクトリは SFTP サーバのディレクトリになります。リモート ストリーミングが無効になっている場合は、Oracle Service Bus マシン上のアーカイブ ディレクトリを使用できます。
アーカイブ ディレクトリの絶対パスを指定します。

注意 : このディレクトリが存在しない場合は、自動的に作成されます。相対パスを指定すると、ディレクトリは WebLogic Server を起動する Java プロセスからの相対パスに作成されます。

ダウンロード ディレクトリ
ファイル転送時に、ファイルはこのディレクトリにダウンロードされます。
リモート ストリーミングが有効になっている場合、このオプションは無効になります。
ファイル転送時にファイルをダウンロードするローカル マシンのディレクトリの絶対パスを指定します。

注意 : このディレクトリが存在しない場合は、自動的に作成されます。相対パスを指定すると、ディレクトリは WebLogic Server を起動する Java プロセスからの相対パスに作成されます。

エラー ディレクトリ
ファイル転送時に問題が発生した場合、メッセージはエラー ディレクトリにポストされます。
リモート ストリーミングが有効になっている場合、エラー ディレクトリは SFTP サーバのディレクトリになります。リモート ストリーミングが無効になっている場合は、Oracle Service Bus マシン上のエラー ディレクトリを使用できます。
エラー ディレクトリの絶対パスを指定します。

注意 : このディレクトリが存在しない場合は、自動的に作成されます。相対パスを指定すると、ディレクトリは WebLogic Server を起動する Java プロセスからの相対パスに作成されます。

要求エンコーディング
SFTP 転送での要求の文字セット エンコーディングとしてデフォルト値 (UTF-8) を受け入れます。
詳細設定
サブディレクトリのスキャン
エンドポイント URI で指定されたディレクトリ内のすべてのサブディレクトリを再帰的にスキャンする場合は、このオプションを選択します。

注意 : サブディレクトリをスキャンする場合、追加の処理オーバーヘッドが必要となります。そのため、このオプションは慎重に使用してください。

[到着順にソート]
このオプションを選択すると、イベントは到着順に配信されます。これにより、メッセージ配信がランダムに行われるのではなく、ファイルが送り先ディレクトリにダウンロードされた時間に基づいて行われるようになります。
タイムアウト
ソケット タイムアウト間隔を秒単位で入力します。この時間が経過すると、接続を切断する必要があります。接続をタイムアウトしない場合は、0 を入力します。デフォルト値は 60 です。
再試行回数
この設定を使用すると、ネットワーク障害などのエラーの発生時に、複数回の試行が可能になります。
SFTP 接続に失敗した場合の再試行の回数を指定します。デフォルト値は 3 です。

SFTP 転送を使用するプロキシ サービスをコンフィグレーションする方法の詳細については、『Oracle Service Bus Console の使い方』の「プロキシ サービス : 作成と管理を参照してください。

転送ヘッダとメタデータのコンフィグレーション

プロキシ サービスをコンフィグレーションするときに、転送ヘッダ アクションを使用してメッセージのヘッダ値を設定できます。SFTP 転送に関連する転送ヘッダとメタデータを次の表に示します。

表 2-3 転送ヘッダとメタデータ
ヘッダ/メタデータ
説明
FileName
この値は、送り先ディレクトリでファイル名として使用されます。
isFilePath
メタデータ フィールドです。指定可能な値は true と false です。
  • True : FileName がファイルの絶対パスとして解釈されます。
  • False : FileName がファイルの名前として解釈されます。
filePath
応答メタデータ フィールドです。FileName ヘッダで指定したファイルが書き込まれる絶対パスを示します。

Oracle Service Bus メッセージ フローでの転送ヘッダのコンフィグレーション

コンフィグレーションできるのは、Oracle Service Bus メッセージ フローにおける発信要求の転送ヘッダのみです。パイプラインで、転送ヘッダ アクションを使用してメッセージのヘッダ値を設定します。詳細については、『Oracle Service Bus Console の使い方』の「プロキシ サービス : アクションを参照してください。

テスト コンソールでの転送ヘッダとメタデータのコンフィグレーション

開発時に SFTP 転送ベースのサービスをテストする場合、Oracle Service Bus テスト コンソールで FileName 転送ヘッダと isFilePath メタデータの値をコンフィグレーションできます。詳細については、『Oracle Service Bus Console の使い方』の「テスト コンソール」およびOracle Service Bus 『ユーザーズ ガイド』の「テスト コンソールの使用」を参照してください。

ビジネス サービスのコンフィグレーション

Oracle Service Bus Console の [転送コンフィグレーション] ページでビジネス サービスを作成するときに、転送プロトコルとして sftp を選択し、次の形式でエンドポイント URI (サービスの場所) を指定する必要があります。

sftp://hostname:port/directory

注意 : SFTP 転送がサポートしているサービス タイプはメッセージと XML のみであるため、Oracle Service Bus Console の [全般的なコンフィグレーション] ページで、サービス タイプとして [メッセージング サービス] または [任意の XML サービス] を選択する必要があります。
注意 : サービス タイプとして [メッセージング サービス] を選択した場合、以下を実行する必要があります。
注意 : 詳細については、『Oracle Service Bus Console の使い方』の「ビジネス サービス : 作成と管理」を参照してください。

次の表の説明に従って、ビジネス サービスをコンフィグレーションします。

表 2-4 SFTP ビジネス サービスのコンフィグレーション
フィールド
説明
ユーザ認証
プロキシ サービスは、指定されたユーザ認証方式に基づいて SFTP サーバによって認証されます。
必要な認証方式を選択します。
  • ユーザ名/パスワード認証 : 静的サービス アカウントをこの認証方式に関連付け、サービス アカウントで提供される資格を使用してクライアントを認証します。
  • ホスト ベース認証 : ユーザ名とサービス キー プロバイダが必要です。既知のホストから接続するユーザは、ホストのプライベート キーを使用して認証されます。
  • 公開鍵認証 : ユーザ名とサービス キー プロバイダが必要です。ユーザは、独自のプライベート キーを持ちます。
サービス アカウント
ユーザのサービス アカウントを入力するか、[参照] をクリックしてサービス アカウントを選択します。サービス アカウントの使用方法については、『Oracle Service Bus Console の使い方』の「サービス アカウント」を参照してください。
サービス キー プロバイダ
このフィールドは、公開鍵認証方式とホスト ベース認証方式にのみ使用できます。
サービス キー プロバイダを入力するか、[参照] をクリックしてサービス キー プロバイダを選択します。詳細については、『Oracle Service Bus Console の使い方』の「サービス キー プロバイダ」を参照してください。
ユーザ名
この値は、ホスト ベース認証方式または公開鍵認証方式を選択した場合にのみ必要です。
  • ホスト ベース認証では、SFTP サーバ上のユーザのホーム ディレクトリをポーリングするためにユーザ名が必要となります。
  • 公開鍵認証では、ユーザのホーム ディレクトリのポーリングと SFTP サーバ上の公開鍵の場所の識別にユーザ名が必要となります。
ユーザ名を入力します。
タイムアウト
ソケット タイムアウト間隔を秒単位で入力します。この時間が経過すると、接続を切断する必要があります。接続をタイムアウトしない場合は、0 を入力します。デフォルト値は 60 です。
送り先ファイル名のプレフィックス
リモート サーバに格納されるファイルの名前に使用するプレフィックスを入力します。
送り先ファイル名のサフィックス
リモート サーバに格納されるファイルの名前に使用するサフィックスを入力します。
要求エンコーディング
SFTP 転送での要求の文字セット エンコーディングとしてデフォルト値 (UTF-8) を受け入れます。

SFTP 転送を使用するビジネス サービスをコンフィグレーションする方法の詳細については、『Oracle Service Bus Console の使い方』の「ビジネス サービス : 作成と管理を参照してください。

通信エラーの処理

リモート SFTP サーバへの接続時に接続またはユーザ認証に失敗した場合に発生する可能性のある通信エラーを処理するように、SFTP 転送ベースのビジネス サービスをコンフィグレーションできます。ビジネス サービスをコンフィグレーションするときに、指定した再試行間隔の後、ビジネス サービスのエンドポイント URI がオフラインになるように設定できます。

詳細については、『Oracle Service Bus Console の使い方』の「モニタ」にある以下のトピックを参照してください。

トラブルシューティング

ほとんどのエラーは、SFTP プロキシ サービスまたはビジネス サービスのコンフィグレーション中に発生します。エラーについて理解し、エラーを解決する上で役立つヒントを以下に示します。

リソースのインポート

Oracle Service Bus ドメインに存在するリソースをインポートする場合、[セキュリティおよびポリシーのコンフィグレーションを保持] オプションを選択することで、そのリソースの既存のセキュリティおよびポリシーのコンフィグレーションの詳細を保持できます。リソースのインポート時に保持される SFTP サービス固有の詳細は次のとおりです。

Oracle Service Bus Console でリソースをインポートする方法の詳細については、『Oracle Service Bus Console の使い方』の「リソースのインポート」を参照してください。

サービスのインポートとパブリッシュ : UDDI レジストリ

SFTP サービスを UDDI レジストリにパブリッシュすると、認証モード、要求エンコーディング、到着順にソート、およびファイル マスクの各プロパティがパブリッシュされます。

SFTP サービスを UDDI レジストリからインポートしたときに、レジストリからインポートされるプロパティを表 2-5 に示します。

表 2-5 UDDI レジストリからインポートされるプロパティ
プロパティ
説明
送り先ファイル名のプレフィックス
リモート サーバに格納されるファイルの名前に使用するプレフィックスです。
デフォルト値は " " (null) です。
送り先ファイル名のサフィックス
リモート サーバに格納されるファイルの名前に使用するサフィックスです。
デフォルト値は " " (null) です。
認証モード
レジストリからインポートされる認証方式です。
ユーザ認証を使用する SFTP ビジネス サービスを UDDI レジストリから Oracle Service Bus にインポートすると、衝突が発生します。
  • ユーザ名/パスワード認証の場合は、サービス アカウントを作成し、サービスに関連付ける必要があります。
  • ホスト ベース認証または公開鍵認証の場合は、サービス キー プロバイダを作成し、サービスに関連付ける必要があります。

サービスのインポート後のロード バランシング アルゴリズムのデフォルト値は round-robin です。

詳細については、『Oracle Service Bus Console の使い方』の「UDDI」を参照してください。


  ページの先頭       前  次