SFTP サーバーインストール

Sandbox インスタンスを使用するには、SFTP サーバーが必要です。 SFTP サーバーは、z/OS® イメージ・ボリュームを Sandbox インスタンス用のストレージに転送するために使用されます。

以下の手順に従って、サンドボックス用に使用される SFTP サーバーをセットアップします。
  • SFTP サーバーは Linux® サーバーまたは OpenShift® にインストールできます。 サンドボックスで提供または管理される SFTP サーバーはありませんが、Docker Hub に SSH/SFTP のイメージがあります。

    転送速度を上げるには、高速ローカル・ストレージを使用するクラスター内にサーバーをセットアップします。ただし、これは必須ではありません。

  • Sandbox には、SFTP サーバーに対する読み取り権限を持つユーザー資格情報が必要です。 SSH 証明書は現在サポートされていません。

Red Hat Linux サーバーへの SSH サーバーまたは SFTP サーバーのインストール

Red Hat® Linux サーバーに SFTP サーバーをインストールするには、以下の手順を実行します。
  1. 次のコマンドを実行して、SSH がインストールされているかどうか確認します。
    rpm -qa|grep ssh
  2. SSH がインストールされていない場合は、次のコマンドを実行します。
    yum install openssh-server
  3. ポート 22 を開きます。
    iptables -I INPUT -p tcp --dport 22 -j ACCEPT
  4. ディレクトリーを作成し、権限を変更します。
    mkdir -p /data/sftp
    chmod 701 /data
  5. SFTP 用にグループを追加し、ユーザーを追加します。 そして、新規パスワードを指定します。
    groupadd sftpusers
    useradd -g sftpusers -d /upload -s /sbin/nologin sftpuser
    passwd sftpuser
  6. ファイル転送のためのディレクトリーを作成します。 そして、必要な変更を加えます。
    mkdir -p /data/sftpuser/upload
    chown -R root:sftpusers /data/sftpuser
    chown -R sftpuser:sftpusers /data/sftpuser/upload
    
  7. /etc/ssh/sshd_config に、以下の行を追加します。
    Match Group sftpuser
    ForceCommand internal-sftp
  8. SFTP サービスを再開します。
    service sshd restart

OpenShift への SSH サーバーまたは SFTP サーバーのインストール

特権を持つ SFTP サーバーとコンテナーのセキュリティーについては、異なるガイドラインに従う可能性があるため、ご使用のビジネス・プロセスに関するガイドラインと以下の手順を組み合わせて使用できます。

SFTP サーバーをクラスター内にデプロイするには、組織で承認されている SFTP コンテナー・イメージを使用するのが最も簡単な方法です。 また、SFTP サーバーを始動するためのカスタム・コンテナーを作成することもできます。 以下の例は、機能する SFTP コンテナーを作成するために使用できる Docker ファイルを示しています。


        FROM registry.access.redhat.com/ubi8/ubi:latest
        ARG home=/home/sshuser
        RUN yum -y update && \
            yum -y install openssh-server \
            openssh-clients && \
            /usr/bin/ssh-keygen -A && \
            groupadd sshgroup && \
            useradd -ms /bin/bash -g sshgroup sshuser && \
            echo 'sshuser:PASSWORD' | chpasswd && \
            mkdir $home/.ssh && \
            touch $home/.ssh/authorized_keys && \
            chown sshuser:sshgroup $home/.ssh/authorized_keys && \
            chmod 600 $home/.ssh/authorized_keys
        EXPOSE 22
        CMD /usr/sbin/sshd && sleep infinity

この例の場合、PASSWORD はインストール時に、指定されたパスワードに置き換えられます。 また、アクセスのセキュリティーを向上させるには、sshd 構成を変更する必要があります。 例えば、ログイン・セッションを阻止するように構成を変更することで、SFTP サーバーとしてのアクセスのみを許可することができます。

上記のコンテナーを OpenShift 環境または Kubernetes 環境にデプロイするには、以下のデプロイメント YAML ファイルを使用できます。
注: sshd の要件のため、コンテナーは特権アクセスを使用して開始する必要があります。これは組織にとって、セキュリティー上の特定の問題となる場合があります。 したがって、組織のすべてのガイドラインに従うとともに、該当する場合はベスト・プラクティスにも従ってください。
        
        apiVersion: apps/v1
        kind: Deployment
        metadata:
          name: <instance name>
          namespace: <namespace>
        spec:
          selector:
            matchLabels:
              app: <instance name>
          template:
            metadata:
              labels:
                app: <instance name>
            spec:
              containers:
                - name: <instance name>
                  image: <image>
                  ports:
                    - containerPort: 22
                  securityContext:
                    privileged: true
                    allowPrivilegeEscalation: true
                  volumeMounts:
                    - name: <volume name>
                      mountPath: /data-stor
              volumes:
                - name: <volume name>
                  persistentVolumeClaim:
                    claimName: <PVC name>

この YAML ファイルを使用するには、必要に応じて値を変更する必要があります。 また、値を変更する前に、必要な z/OS ボリュームを保持するために必要なスペースがある PVC および PV を手動で作成する必要があります。 ご使用の環境に依存している自分のユーザー ID と他のユーザー ID にアクセスできるようにするには、ストレージに対するアクセス権を変更しなければならない場合もあります。