SSH ファイル転送プロトコル (SFTP) を使用して Azure Blob Storage に接続する

SFTP クライアントを使用して Azure Storage アカウントの BLOB Storage エンドポイントに安全に接続し、ファイルをアップロードおよびダウンロードできます。 この記事では、SFTP を有効にしてから、SFTP クライアントを使用して Blob Storage に接続する方法について説明します。

Azure Blob Storage での SFTP のサポートの詳細については、「Azure Blob Storage での SSH ファイル転送プロトコル (SFTP)」を参照してください。

前提条件

  • 標準の汎用 v2 または Premium ブロック BLOB ストレージ アカウント。 アカウントの作成中に SFTP を有効にすることもできます。 これらのストレージ アカウントの種類について詳しくは、「ストレージ アカウントの概要」を参照してください。

  • アカウントの階層型名前空間機能を有効にする必要があります。 階層型名前空間機能を有効にするには、「Azure Data Lake Storage Gen2 機能を使用して Azure Blob Storage をアップグレードする」を参照してください。

  • オンプレミスのネットワークから接続している場合は、クライアントが SFTP で使用するポート 22 を介した発信を許可していることを確認します。

SFTP サポートを有効にする

このセクションでは、既存のストレージ アカウントの SFTP サポートを有効にする方法について説明します。 アカウントの作成の一環として SFTP サポートを有効にする Azure Resource Manager テンプレートを表示するには、「Azure で SFTP プロトコルを使用してアクセスできる Azure Storage アカウントと BLOB コンテナーを作成する」を参照してください。 ローカル ユーザーの REST API と .NET のリファレンスを表示するには、「ローカル ユーザー」と「LocalUser クラス」を参照してください。

  1. Azure portal のストレージ アカウントに移動します。

  2. [設定][SFTP] を選択します。

    注意

    このオプションは、アカウントの階層型名前空間が有効になっている場合にのみ表示されます。 階層型名前空間機能を有効にするには、「Azure Data Lake Storage Gen2 機能を使用して Azure Blob Storage をアップグレードする」を参照してください。

  3. [SFTP を有効にする] を選択します。

    Enable SFTP button

    Note

    SFTP 構成ページにローカル ユーザーが表示されない場合は、少なくとも 1 人を追加する必要があります。 ローカル ユーザーを追加するには、次のセクションを参照してください。

SFTP サポートを無効にする

このセクションでは、既存のストレージ アカウントの SFTP サポートを無効にする方法について説明します。 SFTP のサポートには時間単位のコストがかかるため、クライアントが SFTP をアクティブに使用してデータを転送していない場合は、SFTP サポートを無効にすることを検討してください。

  1. Azure portal のストレージ アカウントに移動します。

  2. [設定][SFTP] を選択します。

  3. [SFTP を無効にする] を選択します。

    Screenshot of the disable SFTP button.

権限の構成

Azure Storage では、Shared Access Signature (SAS) も、SFTP エンドポイントにアクセスするための Microsoft Entra 認証もサポートされていません。 代わりに、Azure で生成されたパスワードまたは Secure Shell (SSH) キー ペアで保護できるローカル ユーザーと呼ばれる ID を使用する必要があります。 接続しているクライアントへのアクセスを許可するには、ストレージ アカウントにパスワードまたはキーの組に関連付けられている ID が必要です。 その ID はローカル ユーザーと呼ばれます。

このセクションでは、ローカル ユーザーを作成し、認証方法を選択して、そのローカル ユーザーにアクセス許可を割り当てる方法を説明します。

SFTP アクセス許可モデルの詳細については、「SFTP アクセス許可モデル」を参照してください。

ヒント

このセクションでは、既存のストレージ アカウントのローカル ユーザーを構成する方法について説明します。 アカウントの作成の一環としてローカル ユーザーを構成する Azure Resource Manager テンプレートを表示するには、「Azure で SFTP プロトコルを使用してアクセスできる Azure Storage アカウントと BLOB コンテナーを作成する」を参照してください。

  1. Azure portal のストレージ アカウントに移動します。

  2. [設定] で、 [SFTP][ローカル ユーザーの追加] の順に選択します。

    Add local users button

  3. [ローカル ユーザーの追加] ウィンドウで、ユーザーの名前を追加し、このローカル ユーザーに関連付ける認証方法を選択します。 パスワードおよび/または SSH キーを関連付けできます。

    重要

    両方の形式の認証を有効にできますが、SFTP クライアントはどちらか一方のみを使用して接続できます。 認証を成功させるために、有効なパスワードと有効な公開キーと秘密キーのペアの両方が必要な多要素認証はサポートされていません。

    [SSH パスワード] を選択した場合、[ローカル ユーザーの追加] 構成ペインのすべての手順を完了すると、パスワードが表示されます。 SSH パスワードが Azure によって生成されます。長さは 32 文字以上です。

    [SSH キー ペア] を選択した場合は、[パブリック キー ソース] を選択してキー ソースを指定します。

    Local user configuration pane

    次の表では、各キー ソース オプションについて説明します。

    オプション ガイダンス
    新しいキーの組の生成 新しい公開キーと秘密キーの組を作成するには、このオプションを使用します。 公開キーは、指定したキー名を使用して Azure に格納されます。 秘密キーは、ローカル ユーザーが正常に追加された後でダウンロードできます。
    Azure に格納されている既存のキーを使用する Azure に既に格納されている公開キーを使用する場合は、このオプションを使用します。 Azure で既存のキーを検索するには、「キーの一覧表示」 を参照してください。 SFTP クライアントでは、Azure Blob Storage に接続する場合、それらのクライアントで、この公開キーに関連付けられている秘密キーを指定する必要があります。
    既存の公開キーを使用します Azure の外部に格納されている公開キーをアップロードする場合は、このオプションを使用します。 公開キーを持ってはいないが、Azure の外部で公開キーを生成する場合は、「ssh-keygen でキーを生成する」を参照してください。

    注意

    現在、既存の公開キー オプションでは、OpenSSH 形式の公開キーのみがサポートされています。 指定されたキーは、<key type> <key data> の形式に従う必要があります。 たとえば、RSA キーは ssh-rsa AAAAB3N... のようになります。 キーが別の形式の場合は、ssh-keygen などのツールを使用して OpenSSH 形式に変換できます。

  4. [次へ] を選択して、構成ウィンドウの [コンテナーのアクセス許可] タブを開きます。

  5. [コンテナーのアクセス許可] タブで、このローカル ユーザーが使用できるコンテナーを選択します。 次に、このローカル ユーザーが実行できる操作の種類を選択します。

    Container permissions tab

    重要

    ローカル ユーザーは、接続しているコンテナーに対して少なくとも 1 つのコンテナー アクセス許可を持っている必要があります。そうしないと、接続試行は失敗します。

  6. [ホーム ディレクトリ] 編集ボックスに、このローカル ユーザーに関連付けられている既定の場所になるコンテナーの名前またはディレクトリ パス (コンテナー名を含む) を入力します。

    ホーム ディレクトリの詳細については、「ホーム ディレクトリ」を参照してください。

  7. [ボタンの追加] を選択してローカル ユーザーを追加します。

    パスワード認証を有効にした場合、ローカル ユーザーが追加された後、Azure で生成されたパスワードがダイアログ ボックスに表示されます。

    重要

    後でこのパスワードを取得することはできません。そのため、必ずパスワードをコピーして、見つけられる場所に保管してください。

    新しいキーの組を生成することを選択した場合、ローカル ユーザーが追加された後、そのキーの組の秘密キーをダウンロードするように求められます。

    Note

    ローカル ユーザーには、SMB 認証にのみ使用される sharedKey プロパティがあります。

SFTP クライアントを接続する

任意の SFTP クライアントを使用して、ファイルを安全に接続してから転送できます。 次のスクリーンショットは、Open SSH とパスワード認証を使用して接続し、logfile.txt という名前のファイルをアップロードする Windows PowerShell セッションを示しています。

Connect with Open SSH

Note

SFTP ユーザー名は storage_account_name.username です。 上記の例では、storage_account_name は "contoso4" で、username は "contosouser" です。組み合わされたユーザー名は、SFTP コマンドでは contoso4.contosouser になります。

注意

ホスト キーを信頼するように求めるメッセージが表示される場合があります。 有効なホスト キーはここで公開されています。

転送が完了すると、Azure portal でファイルを表示および管理できます。

Uploaded file appears in storage account

Note

Azure portal では、Blob REST API と Data Lake Storage Gen2 REST API を使用します。 Azure portal でアップロードされたファイルを操作できるということは、SFTP と REST 間の相互運用性を示しています。

ファイルを接続および転送する方法については、SFTP クライアントのドキュメントを参照してください。

カスタム ドメインを使用して接続する

カスタム ドメイン使用時の接続文字列は myaccount.myuser@customdomain.com です。 ユーザー用のホーム ディレクトリが指定されていない場合は、myaccount.mycontainer.myuser@customdomain.com になります。

重要

DNS プロバイダーで要求をプロキシしていないことを確認します。 プロキシを使用すると、接続しようとしたときにタイムアウトになる可能性があります。

プライベート エンドポイントを使用する接続

プライベート エンドポイントを使用する場合、接続文字列は myaccount.myuser@myaccount.privatelink.blob.core.windows.net です。 ユーザー用のホーム ディレクトリが指定されていない場合は、myaccount.mycontainer.myuser@myaccount.privatelink.blob.core.windows.net になります。

Note

ネットワーク構成を [選択した仮想ネットワークと IP アドレスから有効] に変更し、プライベート エンドポイントを選択します。それ以外の場合は、通常の SFTP エンドポイントに引き続きパブリックにアクセスできます。

ネットワークに関する考慮事項

SFTP はプラットフォーム レベルのサービスであるため、アカウント オプションが無効になっている場合でもポート 22 は開きます。 SFTP アクセスが構成されていない場合は、すべての要求がサービスから切断を受信します。 SFTP を使用しているとき、ファイアウォール、仮想ネットワーク、またはプライベート エンドポイントの構成を通じてパブリック アクセスを制限することができます。 これらの設定はアプリケーション層で適用されます。つまり、SFTP に固有のものではなく、すべての Azure Storage エンドポイントへの接続に影響を与えます。 ファイアウォールおよびネットワークの構成の詳細については、「Azure Storage ファイアウォールおよび仮想ネットワークを構成する」を参照してください。

注意

プロトコル層で TLS のサポートを確認しようとする監査ツールは、ストレージ アカウント エンドポイントに対して直接実行された場合、最低限必要なバージョンに加えて、TLS バージョンを返す場合があります。 詳細については、「ストレージ アカウントへの要求に必要な最小バージョンのトランスポート層セキュリティ (TLS) を適用する」を参照してください。

関連項目