次の方法で共有


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

この記事では、SFTP クライアントを使用して Azure Storage アカウントの BLOB Storage エンドポイントに安全に接続する方法について説明します。 接続後は、ファイルのアップロードやダウンロード、ファイルやフォルダーのアクセス制御リスト (ACL) の変更ができるようになります。

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

前提条件

  • Azure Blob Storage の SFTP サポートを有効にします。 「SFTP サポートを有効または無効にする」を参照してください。

  • SFTP クライアントへのアクセスの承認 クライアントへのアクセスの承認に関するページを参照してください。

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

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

任意の SFTP クライアントを使用して、ファイルを安全に接続してから転送できます。 次の例は、Open SSH を使用する Windows PowerShell セッションを示しています。

PS C:\Users\temp> sftp contoso4.contosouser@contoso4.blob.core.windows.net

SFTP ユーザー名は storage_account_name.username です。 上の例では、storage_account_name が "contoso4" で、username が "contosouser" です。結合されたユーザー名は "contoso4.contosouser" になります。 BLOB サービス エンドポイントは "contoso4.blob.core.windows.net" です。

接続を完了するには、1 つ以上のプロンプトに応答する必要がある場合があります。 たとえば、ローカル ユーザーをパスワード認証で構成した場合、そのパスワードを入力するよう求めるメッセージが表示されます。 ホスト キーを信頼するように求めるメッセージが表示される場合もあります。 有効なホスト キーはここで公開されています。

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

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

重要

DNS プロバイダーが要求をプロキシしていないことを確認してください。これにより、接続試行がタイムアウトする場合があります。

カスタム ドメインを BLOB サービス エンドポイントにマップする方法については、「カスタム ドメインを Azure Blob Storage エンドポイントにマップする」を参照してください。

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

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

Note

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

インターネット ルーティングを使用して接続する

インターネット ルーティングを使用して BLOB サービス エンドポイントに接続する場合、接続文字列は myaccount.myuser@myaccount-internetrouting.blob.core.windows.net です。 ユーザのホーム ディレクトリが指定されていない場合は myaccount.mycontainer.myuser@myaccount-internetrouting.blob.core.windows.net になります。

データの転送

接続後、ファイルをアップロードおよびダウンロードできます。 次の例では、アクティブな Open SSH セッションを使用して、logfile.txt という名前のファイルをアップロードします。

sftp> put logfile.txt
Uploading logfile.txt to /mydirectory/logfile.txt
logfile.txt
        100%    19    0.2kb/S    00.00

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

ストレージ アカウントにアップロードされたファイルを表示するスクリーンショット。

Note

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

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

ファイルまたはディレクトリの ACL を変更する

SFTP クライアントを使用して、ACL の所有ユーザー、所有グループ、および他のすべてのユーザーのアクセス許可レベルを変更できます。 また、所有中のユーザーと所有グループの ID を変更することもできます。 SFTP クライアントの ACL サポートの詳細については、「ACL」を参照してください。

アクセス許可の変更

所有ユーザー、所有グループ、または ACL の他のすべてのユーザーのアクセス許可レベルを変更するには、ローカル ユーザーに Modify Permission アクセス許可が必要です。 「コンテナーにアクセス許可を付与する」を参照してください。

次の例では、あるディレクトリの ACL をコンソールに表示します。 次に、chmod コマンドを使用して、ACL を 777 に設定します。 各 7 は、rwx (読み取り、書き込み、実行) の数値形式です。 777 は、所有ユーザー、所有グループ、および他のすべてのユーザーに読み取り、書き込み、実行のアクセス許可を付与します。 この例では、更新された ACL をコンソールに表示します。 ACL の数値形式と短い形式の詳細については、「アクセス許可の短い形式」を参照してください。

sftp> ls -l
drwxr-x---     1234     5678                0 Mon, 08 Jan 2024 16:53:25 GMT dir1
drwxr-x---        0        0                0 Mon, 16 Oct 2023 12:18:08 GMT dir2
sftp> chmod 777 dir1
Changing mode on /dir1
sftp> ls -l
drwxrwxrwx     1234     5678                0 Mon, 08 Jan 2024 16:54:06 GMT dir1
drwxr-x---        0        0                0 Mon, 16 Oct 2023 12:18:08 GMT dir2

Note

名前付きユーザー、名前付きグループ、および名前付きセキュリティ プリンシパルの ACL エントリの追加または変更は、まだサポートされていません。

所有ユーザーを変更する

ディレクトリまたは BLOB の所有ユーザーを変更するには、ローカル ユーザーに Modify Ownership アクセス許可が必要です。 「コンテナーにアクセス許可を付与する」を参照してください。

次の例では、あるディレクトリの ACL をコンソールに表示します。 所有ユーザーの ID は 0 です。 この例では、chown コマンドを使用して所有ユーザーの ID を 1234 に設定し、変更をコンソールに表示します。

sftp> ls -l
drwxr-x---        0        0                0 Mon, 08 Jan 2024 16:00:12 GMT dir1
drwxr-x---        0        0                0 Mon, 16 Oct 2023 12:18:08 GMT dir2
sftp> chown 1234 dir1
Changing owner on /dir1
sftp> ls -l
drwxr-x---     1234        0                0 Mon, 08 Jan 2024 16:52:52 GMT dir1
drwxr-x---        0        0                0 Mon, 16 Oct 2023 12:18:08 GMT dir2
sftp>

所有グループを変更する

ディレクトリまたは BLOB の所有グループを変更するには、ローカル ユーザーに Modify Ownership アクセス許可が必要です。 「コンテナーにアクセス許可を付与する」を参照してください。

次の例では、あるディレクトリの ACL をコンソールに表示します。 所有グループの ID は 0 です。 この例では、chgrp コマンドを使用して所有グループの ID を 5678 に設定し、変更をコンソールに表示します。

sftp> ls -l
drwxr-x---     1234        0                0 Mon, 08 Jan 2024 16:52:52 GMT dir1
drwxr-x---        0        0                0 Mon, 16 Oct 2023 12:18:08 GMT dir2
sftp> chgrp 5678 dir1
Changing group on /dir1
sftp> ls -l
drwxr-x---     1234     5678                0 Mon, 08 Jan 2024 16:53:25 GMT dir1
drwxr-x---        0        0                0 Mon, 16 Oct 2023 12:18:08 GMT dir2