Translated message

A translation of this page exists in English.

Red Hat Secure FTP を使用してケースにファイルをアップロードする方法

更新 -

免責事項: 以下に示す外部の Web サイトへのリンクは、お客様の利便性のみを目的として提供しています。Red Hat はリンクの内容を確認しておらず、そのコンテンツや有用性について責任を負わないものとします。外部の Web サイトへのリンクを含めることは、Web サイトまたはそれらの法的主体、製品またはサービスについて Red Hat が承認したことを意味するものではありません。お客様は、外部サイトまたはコンテンツの使用 (または信頼) によって生じる損失または費用について、Red Hat が責任を負わないことに同意するものとします。

目次

1. 背景情報

Red Hat Support Tool, RHST, Deprecation Guide で説明されているとおり、RHEL 9 で redhat-support-tool が非推奨になりました。 ここでは、Red Hat の新しい Secure FTP サービスである Red Hat Secure FTP を使用してケースにファイルをアップロードする方法について説明します。

Red Hat Secure FTP の目的は、持続可能なクロスプラットフォームおよびコマンドラインからアクセス可能なエンドポイントを提供し、お客様が Red Hat にファイルをアップロードできるようにすることです。幅広いカスタマーベース全体で使用できる安全でスケーラブルなエンドポイントを提供することを目標としています。

2. 範囲

  • コマンドラインからファイルをアップロードするためにお客様がアクセスできるエンドポイントを提供します。
  • お客様のワークフローへの影響を最小限に抑えます。
  • Red Hat による追加のパッケージはありません。
  • 安全なサポートケースは対象外となります。

3. お客様向けユーザーガイド

3.1 認証されたフロー

有効なポータル認証情報を持つお客様は、所属するアカウントのケースに添付ファイルをアップロードできるはずですが、厳格なファイル形式ポリシー (${CASEID}_* または sosreport-${CASEID}-*) に従う必要があります。ファイル名が有効な場合は、ファイルは添付ファイルとしてケースにアップロードされ、Red Hat Secure FTP から削除されます。ファイル名が無効な場合は、Red Hat Secure FTP バケットに 30 日間保管され、その後は完全に削除されます。

サポートケースに自動添付するファイルの有効および無効なファイル名形式の例の一部を以下に示します。

  • sosreport-hostname-4-02855523-2021-04-20-uhbkfag.tar.xz (有効) [sosreport が生成するデフォルトのファイル名]
  • 02436811_sosreport-12387183.gz (有効)
  • 02436811_log-report.txt (有効)
  • 02436811-sosreport.gz (無効)
  • sosreport.gz (無効)
  • sosreport_02436811.gz (無効)
  • sosreport-02855523-testreport.gz (有効)
  • sosreport_02855523-testreport.gz (無効)
  • sosrep_02855523-testreport.gz (無効)
  • 02855523-testreport.gz (無効)
  • 02855523_testreport.gz (有効)

以下のマトリックスでは、認証されたお客様の権限について説明しています。

権限あり 権限なし
独自のディレクトリー内でのファイルの一覧表示 他のユーザーのファイルまたはディレクトリーの一覧表示/表示
Red Hat SFTP に添付ファイルをアップロードし、正しいファイル名形式で、お客様がアクセスできるサポートケースにファイルを自動添付する 任意の添付ファイルのダウンロード
アクセス権のないケースへのファイルの添付

注記: アップロードしたファイルに無効なケース番号またはお客様がアクセスできないケース番号が付いている場合は、アップロードされたファイルはサポートケースに 添付されず、保持ポリシーに従って Secure FTP に保管されます。

ここでは、添付ファイルのアップロードについて簡単に説明します。

3.1.1 トークンの生成

3.1.1.1 cURL の使用

コマンドターミナル (Linux または Macintosh) または PowerShell (Windows) を開きます。プロンプトで、以下に詳述する cURL コマンドを使用してカスタマーポータルアカウントにログインし、SFTP ログイントークンの生成に使用するアクセストークンを取得する権限を付与します。

デバイスの認可:

SFTP ログイントークンの生成では、最初の手順として、カスタマーポータルアカウントを検証し、SFTP ログイントークンの生成で認証に使用するベアラートークンを取得するためのアクセス権を付与します。デバイス認可フローの詳細は、こちら をご覧ください。

次の curl を入力します。

$ curl --request POST 'https://sso.redhat.com/auth/realms/redhat-external/protocol/openid-connect/auth/device' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'client_id=hydra-sftp'

{
    "device_code": "Zq8vFKGMrIONm3HeWRrXnV9PQgkwDiydhFtKcOVm32w",
    "user_code": "EYWJ-TDJH",
    "verification_uri": "https://sso.redhat.com/auth/realms/redhat-external/device",
    "verification_uri_complete": "https://sso.redhat.com/auth/realms/redhat-external/device?user_code=EYWJ-TDJH",
    "expires_in": 600,
    "interval": 5
}

次に、ブラウザーで verification_uri_complete にアクセスします。または、Web ブラウザーで verify_uri を開き、要求に応じて user_code の値を送信します。
次に、プロンプトが表示されたらカスタマーポータルアカウントにログインし、hydra-sftp クライアントに権限を付与します。アクセス権が正常に付与されたら、前の応答から device_code をコピーし、次の手順に進みます。

v2 API (トークン有効期間は 0 - 90 日に設定可能):

Token Generation v2 API を使用すると、ユーザーはトークンの有効期限を設定できます。 'expiryInDays' パラメーターは、0 日から最大 90 日までの日数を値として設定できます。'expiryInDays' のデフォルト値は 30 日です。
ターミナルに以下のコマンドを入力します (device_code の値を上記の応答から取得した値に置き換えます)。

  • デフォルトの有効期限 (30 日) でトークンを生成するためのサンプル curl:
$ bearer_token=$(curl -s --request POST 'https://sso.redhat.com/auth/realms/redhat-external/protocol/openid-connect/token' --header 'Content-Type: application/x-www-form-urlencoded' --data-urlencode 'client_id=hydra-sftp' --data-urlencode 'grant_type=urn:ietf:params:oauth:grant-type:device_code' --data-urlencode 'device_code=Zq8vFKGMrIONm3HeWRrXnV9PQgkwDiydhFtKcOVm32w' | jq -r '.access_token')
curl --header "Authorization: Bearer $bearer_token"  --request POST 'https://access.redhat.com/hydra/rest/v2/sftp/token'

{"username": "brett.lymn","token": "SBmaGUbA","expiryDate": "2021-8-01T06:37:19.966Z"}
  • 'expiryInDays' を 60 日に設定してトークンを設定するためのサンプル curl:
$ bearer_token=$(curl -s --request POST 'https://sso.redhat.com/auth/realms/redhat-external/protocol/openid-connect/token' --header 'Content-Type: application/x-www-form-urlencoded' --data-urlencode 'client_id=hydra-sftp' --data-urlencode 'grant_type=urn:ietf:params:oauth:grant-type:device_code' --data-urlencode 'device_code=Zq8vFKGMrIONm3HeWRrXnV9PQgkwDiydhFtKcOVm32w' | jq -r '.access_token') 
curl --header "Authorization: Bearer $bearer_token" --request POST 'https://access.redhat.com/hydra/rest/v2/sftp/token' \
--header 'Content-Type: application/json' \
--data-raw '{
   "expiryInDays" : 60
}'

{"username": "brett.lymn","token": "SBmaGUbA","expiryDate": "2021-10-01T06:37:19.966Z"}

v1 API (トークンの有効期限は 30 日に固定):

$ bearer_token=$(curl -s --request POST 'https://sso.redhat.com/auth/realms/redhat-external/protocol/openid-connect/token' --header 'Content-Type: application/x-www-form-urlencoded' --data-urlencode 'client_id=hydra-sftp' --data-urlencode 'grant_type=urn:ietf:params:oauth:grant-type:device_code' --data-urlencode 'device_code=Zq8vFKGMrIONm3HeWRrXnV9PQgkwDiydhFtKcOVm32w' | jq -r '.access_token')
curl --header "Authorization: Bearer $bearer_token" https://access.redhat.com/hydra/rest/v1/sftp/token

{"username" : "brett.lymn",  "token" : "7c8afc4f","expiryDate": "2021-8-01T06:37:19.966Z"}
3.1.1.2 Web UI の使用 (v1 API を使用):

あるいは、Web ブラウザーを使用して Red Hat Secure FTP Token Generator アプリケーションに移動し、カスタマーポータルの認証情報を使用してログインします。次に、"Generate Token" をクリックして新しいトークンを生成するか、既存の有効なトークンを表示します。

注記:

  • v1 API は、既存のトークンが存在する場合はそれを返し、トークンの有効期限を $CURRENT_DATE + 30 日に更新します。
  • 既存のトークンが見つからない場合は、有効期限が 30 日間の新規トークンが生成されます。
  • v1 API は近日中に非推奨になるため、v2 API を使用するようにスクリプト/ガイドを移行してください。
  • v2 API は、GET の代わりに POST メソッドを使用します。
  • 'expiryInDays' の値は、30 以上 (0 から 30 までの値はすべて 30 として処理されます)、90 以下にします (90 より大きい値にすると検証エラーが発生します)。
  • Basic 認証/Direct Password の付与は、2023 年 12 月 1 日から非推奨となります (この記事を読む時期によってはすでに非推奨になっています)。

3.1.2 SFTP 接続

3.1.2.1 Linux または Macintosh の場合

コマンドターミナルで SFTP 接続を開き、パスワードの入力を求められたら、トークンを入力します。

$ sftp brett.lymn@sftp.access.redhat.com
brett.lymn@sftp.access.redhat.com's password: <token>
Connected to brett.lymn@sftp.access.redhat.com.
sftp>
3.1.2.2 Windows の場合

ユーザーは winscp ソフトウェアを使用して、Windows マシンから 接続 することができます。

3.1.3 添付ファイルのアップロード

3.1.3.1 Linux または Macintosh の場合

PUT コマンドを使用し、${CASEID}_* 形式でファイルをケースにアップロードします。

sftp> put 02436811_sosreport.gz
Uploading 02436811_sosreport.gz to /02436811_sosreport.gz
02436811_sosreport.gz                                                                                                                                                                                   100%   10MB   1.9MB/s   00:05   
sftp>
3.1.3.2 Windows の場合

winscp ソフトウェアを使用して、Windows マシンからファイルを アップロード することができます。

注記

  • ファイル名が正しい形式 (${CASEID}_*) の場合:
    • ファイルは対応するケースに添付されます。
    • ファイルが正常にケースに添付された場合は、Secure FTP から削除され、表示されなくなります。
  • ファイル名の形式が正しくない場合は、以下のようになります。
    • ファイルはケースに添付されません。
    • ファイルは保持ポリシーに従って Secure FTP に保管されます。
  • ユーザー名に特殊文字がある場合 (例: 'example@company.com' など) でも、上記の手順は適用されます。
  • Secure FTP を使用したアップロードは、カスタマーポータルのサポートケースの管理 が提供するマルチパートアップロード機能と比較すると、単一のストリームになります。これにより、SFTP のアップロード中の速度が遅くなる可能性があります。

以下は、ユーザー名における特殊文字の例になります。

$ curl --header 'Authorization: Bearer <bearer_token>' https://access.redhat.com/hydra/rest/v1/sftp/token
{ "username" : "example@company.com", "token" : "7c8afc4f", "expiryDate" : "2021-09-07T10:13:46.149Z" }

$ sftp example@company.com@sftp.access.redhat.com
example@company.com@sftp.access.redhat.com's password: <token>
Connected to example@company.com@sftp.access.redhat.com 
sftp>

3.2 認証されていないフロー

Red Hat SFTP は、Red Hat でアカウントを作成していないユーザーによるファイルのアップロードもサポートしています。これらのユーザーは、Red Hat SFTP にファイルをアップロードして、そのディレクトリー配下に存在するファイルを表示できますが、ファイルをダウンロードすることはできません。また、匿名ユーザーがアップロードしたファイルは、サポートケースに自動添付されません。

以下のマトリックスでは、匿名ユーザーの権限について説明しています。

権限あり 権限なし
独自のディレクトリー内でのファイルの一覧表示 他のユーザーのファイルまたはディレクトリーの一覧表示/表示
Red Hat SFTP への添付ファイルのアップロード 任意の添付ファイルのダウンロード
サポートケースへのファイルの添付

3.2.1 ユーザー名およびトークンの生成

コマンドターミナル (Linux または Macintosh) または PowerShell (Windows) を開きます。プロンプトが表示されたら、以下の cURL を入力して匿名ユーザーのユーザー名とトークンを生成します。

v2 API

$ curl --request POST 'https://access.redhat.com/hydra/rest/v2/sftp/token' \
--header 'Content-Type: application/json' \
--data-raw '{
 "isAnonymous" : true
}'
{"username" : "aiFPyJiK", "token" : "FAAivaiy", "expiryDate" : "2021-09-07T10:13:46.149Z"}

v1 API

$ curl  https://access.redhat.com/hydra/rest/v1/sftp/token?isAnonymous=true
{"username" : "DpDPSPGN", "token" : "89d41439", "expiryDate" : "2021-09-07T10:13:46.149Z"}

あるいは、Web ブラウザーを使用して Red Hat Secure FTP Token Generator アプリケーションに移動し、ゲストとしてログインします。次に、"Generate Token" をクリックして新しいユーザー名とトークンを生成します。

注記: 匿名のトークンの使用は 1 回のみ有効です。セッションごとに、新しいトークンを生成する必要があります。

3.2.2 SFTP 接続

Red Hat SFTP に接続します (WinSCP の認証フローを参照)。

$ sftp DpDPSPGN@sftp.access.redhat.com
DpDPSPGN@sftp.access.redhat.com's password: <token>
Connected to DpDPSPGN@sftp.access.redhat.com.
sftp>

3.2.3 ファイルのアップロード

PUT コマンドを使用してファイルをアップロードします (WinSCP の認証フローを参照)。

Connected to DpDPSPGN@sftp.access.redhat.com.
sftp> put sysreport.tar.gz
Uploading sysreport.tar.gz to /sysreport.tar.gz
sysreport.tar.gz                                                                                                                                                                                            100%   10MB   1.8MB/s   00:05   
sftp>

3.2.4 ファイルのリスト表示

ユーザーのディレクトリー配下にファイルを一覧表示します。これは、WinSCP を使用して行うこともできます。

sftp> ls -l
-rwxr--r--   1        -        - 10485760 Sep 30 18:18 sysreport.tar.gz
sftp>

3.3 プロキシー経由での Secure FTP サーバーへの接続

プロキシー経由で SFTP サーバーに接続するための代替方法

3.3.1 認証されていないプロキシー (RHEL 8 および RHEL 7)

sftp -o "ProxyCommand nc --proxy <proxy_host>:<proxy_port> --proxy-type http %h %p" brett.lymn@sftp.access.redhat.com

3.3.2 認証されたプロキシー (RHEL 8 および RHEL 7)

sftp -o "ProxyCommand nc --proxy <proxy_host>:<proxy_port> --proxy-auth <proxy_user>:<proxy_password> --proxy-type http %h %p" brett.lymn@sftp.access.redhat.com

3.3.3 プロキシー (RHEL 8 および RHEL 7) は認証されているがポート 80 を使用している場合{#TOC333}

sftp -P 80 -o "ProxyCommand nc --proxy <proxy_host>:<proxy_port> --proxy-auth <proxy_user>:<proxy_password> --proxy-type http %h %p" brett.lymn@sftp.access.redhat.com

3.3.4 RHEL 6 の場合{#TOC334}

nc の代わりに ncat コマンドを使用してください。以下に例を示します。

sftp -o "ProxyCommand ncat --proxy <proxy_host>:<proxy_port> --proxy-type http %h %p" brett.lymn@sftp.access.redhat.com

注記 -
1.この例では、プロキシー設定でポート 22 またはポート 80 を許可するようにプロキシーを設定し、Secure FTP に接続できるようにする必要があります。
2.nc コマンド、つまり nmap-ncat を提供するパッケージをインストールする必要があります (RHEL 7 および RHEL 8 の場合は sudo yum install nmap-ncat を使用)。RHEL 6 の場合は、パッケージ nmap をインストールする必要があります (sudo yum install nmapを使用)。

3.4 保持ポリシー

Red Hat Secure FTP のデフォルトの保持ポリシーは 30 日 です。30 日が経過すると、ファイルは完全に削除されます。有効なサポートケース番号を接頭辞 (${CASEID}_*) として追加したファイルをアップロードする場合、このポリシーは適用されず、ケースファイルはサポートケースに正常にアタッチされた直後に削除されます。

サポートケースにアタッチされたファイルは、3 年間 保持されます。

3.5 お客様によるファイアウォールの設定

お客様は、ファイアウォールで以下の接続を許可する必要があります。

ソース 宛先 目的
カスタマー IP sftp.access.redhat.com:22 OR 35.80.245.1:22 SFTP コントロールチャネル

または、以下のようにします。

ソース 宛先 目的
カスタマー IP sftp.access.redhat.com:80 OR 35.80.245.1:80 SFTP コントロールチャネル

注記:
1.接続はポート 22 とポート 80 の両方でサポートされます。
2.IP アドレス 35.80.245.1 は、プロキシー/ファイアウォール設定で、ホスト名 sftp.access.redhat.com の代わりに使用できますが、ロードバランサーを更新すると、この IP が変更される可能性があります。
3.さらに、トークンの生成が SFTP アップロードと同じマシンで実行される場合に備え、ファイアウォール設定で access.redhat.com:80 へのアクセスを開いてください。

3.6 SSH ホスト鍵のフィンガープリント

Red Hat Secure FTP の SSH ホスト鍵のフィンガープリントは次のとおりです。

SHA256:Ij7dPhl1PhiycLC/rFXy1sGO2nSS9ky0PYdYhi+ykpQ=

3.7 SFTP アップロードを支援するラッパースクリプト

この記事に、ファイルを Red Hat Secure FTP に直接アップロードするために使用できるラッパーシェルスクリプトを記載しています。これは Red Hat の公式バイナリー/ソフトウェアとしては扱われない点に留意してください。また、背景で何が起きているかについてはソースコードをご確認ください。また、このスクリプトは Linux および MacOS で動作する点にも留意してください (RHEL 8、RHEL 7、MacOS でテストしており、RHEL 7 では認証されていないプロキシーに問題があることが確認されています)。

ダウンロード後、スクリプトを展開し、--help オプションを指定して実行すると、使用可能なすべてのコマンドラインオプションが表示されます。

$ unzip uploadfiletosftp.zip
$ cd uploadfiletosftp/
$ sh uploadFileToSFTP.sh --help

DESCRIPTION:
This wrapper script eliminates the multiple commands needed to be typed manually by the user to upload a file to SFTP. It takes the file path for the file to be uploaded and then performs all the steps from authentication to uploading the file to SFTP. The user should note that the script makes use of v2 API for SFTP token generation.

SYNTAX: sh uploadFileToSFTP.sh [--path file_path] [-C case_number] [--proxy proxy_type] [-x proxy_user] [-y proxy_password] [-h proxy_host] [-o proxy_port] [-c] [-b] [--help]

OPTIONS:
      --path            The --path option is a mandatory option, whose option argument is used to specify
                        the complete file path of the file to be uploaded.
-C  | --case            If the -C option is present, the corresponding option argument is used to specify the 
                        case number to which the file is to be attached.
-x  | --proxy_user      If the -x option is present, the value for the proxy_user in the properties.json 
                        file is set as the corresponding option argument.
-h  | --proxy_host      If the -h option is present, the value for the proxy_host in the properties.json 
                        file is set as the corresponding option argument.
-o  | --proxy_port      If the -o option is present, the value for the proxy_port in the properties.json 
                        file is set as the corresponding option argument.
-y  | --proxy_password  If the -y option is present, the corresponding option argument is used to specify 
                        the proxy_password of proxy_user. If your password contains any special character, 
                        you must enclose the 'password' in single quotes.
-c  | --config_all      If the -c option is present, it will trigger input prompts for configuring each 
                        property in properties.json file, enabling the user to set or change value for 
                        any property.
      --proxy           If the --proxy option is present, the corresponding option argument is used to specify 
                        the type of proxy to be used to connect to connect to SFTP. For authenticated proxy, 
                        provide the option argument as 'auth' and 'unauth' for an unauthenticated proxy 
                        connection. Any other value shall default to connect to SFTP without any proxy.
-b  | --sso_token       If the -b option is present, the script will print the bearer token corresponding to the 
                        customer portal account of the user and exit.
      --help            Print this help and exit.

カスタマーポータルアカウントのベアラートークンの取得:

SFTP ラッパースクリプトは、カスタマーポータルアカウントのアクセストークンを取得する場合にも使用できます。取得したアクセストークンは、SFTP ログイントークンの生成時にベアラートークンとして使用できます。

アクセストークンを表示するには、次のようにスクリプトを実行します。

$ sh uploadfiletosftp.sh -b

{"access_token":"XXXX","expires_in":900,"refresh_expires_in":36000,"refresh_token":"XXXX","token_type":"Bearer","not-before-policy":0,"session_state":"88bd2a9e-8048-4440-bac1-772735788bad","scope":"Legacy_IDP_OpenID"}

Attachments

Comments