この記事では、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 つ以上のプロンプトに応答する必要がある場合があります。 例えば、ローカルユーザーにパスワード認証を設定した場合、そのパスワードを入力するよう促されます。 ホスト キーを信頼するように求めるメッセージが表示される場合もあります。 有効なホスト キーはここで公開されています。
メモ
SFTPはBlob Storageエンドポイント(blob.core.windows.net)上で動作し、Data Lake Storageエンドポイント(dfs.core.windows.net)は動作しません。 そのため、 contoso4.contosouser@contoso4.dfs.core.windows.net などの Data Lake Storage エンドポイントはサポートされていません。
カスタム ドメインを使用して接続する
カスタムドメインを使って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を使いましょう。
メモ
選択した仮想ネットワークと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 でファイルを表示および管理できます。
メモ
Azure portal では、Blob REST API と Data Lake Storage REST API が使われます。 Azure portal でアップロードされたファイルを操作できるということは、SFTP と REST 間の相互運用性を示しています。
ファイルを接続および転送する方法については、SFTP クライアントのドキュメントを参照してください。
アップロードの再開
Azure Blob Storage SFTP の再開可能なアップロード機能が一般公開されました。 この機能により、部分的な転送障害が発生した場合、障害点からファイルのアップロードを再開できるため、時間の節約とネットワーク帯域幅の使用削減が可能です。 以下のSFTP転送モードはAzure Blob Storage SFTPでサポートされています:
- 書き込み: このモードでは、クライアントは、新しいファイルを作成せずに特定のポイントから既存のファイルにデータを追加することで、アップロードを続行できます。
- 書き込み + 作成: このモードを使用すると、クライアントは既存のファイルに追加するか、存在しない場合は新しいファイルを作成することでアップロードを再開でき、ファイルが最初に存在しない可能性がある場合は柔軟性が得られます。
- 追加: このモードでは、現在の内容を上書きせずに、既存のファイルの末尾にデータを追加します。 以前は、この機能はプレビュー時のみ追加モードをサポートしており、APENDモードをサポートしないSFTPクライアントでのアップロード再開が制限されていました。 一般公開により、Azure Blob Storage SFTPは書き込み・書き込み+作成モードをサポートし、AppendモードなしでSFTPクライアントを使用するユーザーに有利です。
メモ
再開可能なアップロードは、SFTP プロトコルで作成された BLOB でのみサポートされます。 REST などの SFTP 以外のプロトコルで作成された既存の BLOB のアップロードを再開することはできません。
ファイルまたはディレクトリの ACL を変更する
SFTP クライアントを使用して、ACL の所有ユーザー、所有グループ、および他のすべてのユーザーのアクセス許可レベルを変更できます。 所有ユーザーと所有グループを変更することもできます。 SFTP クライアントの ACL サポートの詳細については、「ACL」を参照してください。
メモ
所有ユーザーは、コンテナーのアクセス許可なしで BLOB またはディレクトリの所有グループとアクセス許可を変更できるようになりました。 この機能強化は、ローカルユーザー向けの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
メモ
名前付きユーザー、名前付きグループ、名前付きセキュリティプリンシパルの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
関連するコンテンツ
- Azure Blob Storage での SSH ファイル転送プロトコル (SFTP) サポート
- Azure Blob Storage での SSH ファイル転送プロトコル (SFTP) サポートを有効または無効にする
- SSH ファイル転送プロトコル (SFTP) クライアントから Azure Blob Storage へのアクセスを承認する
- Azure Blob Storage での SSH ファイル転送プロトコル (SFTP) のサポートに関する制限事項と既知の問題
- Azure Blob Storage での SSH ファイル転送プロトコル (SFTP) サポート用のホスト キー
- Azure Blob Storage での SSH ファイル転送プロトコル (SFTP) のパフォーマンスに関する考慮事項