この記事では、SFTP クライアントを使用して Azure Storage アカウントの Blob Storage エンドポイントに安全に接続できるように、SFTP クライアントへのアクセスを承認する方法を示します。
Azure Blob Storage での SFTP のサポートの詳細については、「Azure Blob Storage での SSH ファイル転送プロトコル (SFTP)」を参照してください。
前提条件
ローカル ユーザーを作成する
Azure Storageでは、SFTP エンドポイントにアクセスするための Shared Access Signature (SAS) はサポートされていません。 代わりに、ローカル ユーザー ID またはMicrosoft Entra ID ID を使用する必要があります。 ローカル ユーザーは、Azure生成されたパスワードまたは Secure Shell (SSH) キー ペアを使用してセキュリティで保護できます。 接続しているクライアントへのアクセスを許可するには、ストレージ アカウントにパスワードまたはキーの組に関連付けられている ID が必要です。 その ID はローカル ユーザーと呼ばれます。 Microsoft Entra IDの使用の詳細については、「Microsoft Entra IDを使用して BLOB への SFTP アクセスを承認する」を参照してください。
このセクションでは、ローカル ユーザーを作成し、認証方法を選択し、そのローカル ユーザーにアクセス許可を割り当てる方法について説明します。
SFTP アクセス許可モデルの詳細については、「SFTP アクセス許可モデル」を参照してください。
認証方法を選択する
パスワードまたは Secure Shell (SSH) の公開キーと秘密キーのペアを使って、SFTP クライアントから接続するローカル ユーザーを認証できます。
重要
両方の形式の認証を有効にできますが、SFTP クライアントはどちらか一方のみを使用して接続できます。 認証を成功させるには、有効なパスワードと有効な公開キーと秘密キーのペアの両方が必要な多要素認証はサポートされていません。
Azure ポータルで、ストレージ アカウントに移動します。
[設定] で、 [SFTP] 、 [ローカル ユーザーの追加] の順に選択します。
[ ローカル ユーザー 構成の追加] ウィンドウで、ユーザーの名前を入力し、このローカル ユーザーに関連付ける認証方法を選択します。 パスワードおよび/または SSH キーを関連付けできます。
[SSH パスワード] を選択した場合、[ローカル ユーザー構成の追加] ウィンドウのすべての手順を完了すると、パスワードが表示されます。 Azure SSH パスワードが生成され、32 文字以上の長さになります。
SSH キー ペアを選択した場合は、[公開キー ソース] を選択してキー ソースを指定します。
次の表では、各キー ソース オプションについて説明します。
| オプション |
ガイダンス |
| 新しいキーの組の生成 |
新しい公開キーと秘密キーの組を作成するには、このオプションを使用します。 公開キーは、指定したキー名を使用して Azure に格納されます。 秘密キーは、ローカル ユーザーを追加した後でダウンロードできます。 |
| Azure に格納されている既存のキーを使用する |
Azureに既に格納されている公開キーを使用する場合は、このオプションを使用します。 Azure で既存のキーを検索するには、「キーの一覧表示」 を参照してください。 SFTP クライアントでは、Azure Blob Storage に接続する場合、それらのクライアントで、この公開キーに関連付けられている秘密キーを指定する必要があります。 |
| 既存の公開キーを使用します |
Azureの外部に保存されている公開キーをアップロードする場合は、このオプションを使用します。 公開キーを持っていないが、Azureの外部で生成する場合は、「 ssh-keygen を使用したキーの生成」を参照してください。 |
重要
OpenSSH 形式の公開キーのみがサポートされています。 指定するキーは、<key type> <key data> の形式を使用する必要があります。 たとえば、RSA キーは次のようになります: ssh-rsa AAAAB3N...。 キーが別の形式の場合は、 ssh-keygen などのツールを使用して OpenSSH 形式に変換します。
[次へ] を選択して、構成ウィンドウの [アクセス許可] タブを開きます。
このセクションでは、SSH キーまたはパスワードを使用して認証する方法について説明します。
SSH キーを使用した認証 (PowerShell)
使用する公開キーの種類を選択します。
Azure に格納されている既存のキーを使用する
Azureに既に格納されている公開キーを使用する場合は、このオプションを使用します。 Azure で既存のキーを検索するには、「キーの一覧表示」 を参照してください。 SFTP クライアントでは、Azure Blob Storage に接続する場合、それらのクライアントで、この公開キーに関連付けられている秘密キーを指定する必要があります。
Azure の外部に格納されている既存の公開キーを使用します。
公開キーをまだ持っていない場合は、 ssh-keygen を使用してキーを生成 する方法に関するガイダンスを参照してください。 OpenSSH 形式の公開キーのみがサポートされています。 指定するキーは、<key type> <key data> の形式を使用する必要があります。 たとえば、RSA キーは次のようになります: ssh-rsa AAAAB3N...。 キーが別の形式の場合は、 ssh-keygen などのツールを使用して OpenSSH 形式に変換します。
New-AzStorageLocalUserSshPublicKey コマンドを使用して、公開キー オブジェクトを作成します。
-Key パラメーターを、キーの種類と公開キーを含む文字列に設定します。 次の例では、キーの種類は ssh-rsa で、キーは ssh-rsa a2V5... です。
$sshkey = "ssh-rsa a2V5..."
$sshkey = New-AzStorageLocalUserSshPublicKey -Key $sshkey -Description "description for ssh public key"
Set-AzStorageLocalUser コマンドを使用して、ローカル ユーザーを作成します。 SSH キーを使用している場合は、 SshAuthorizedKey パラメーターを前の手順で作成した公開キー オブジェクトに設定します。
次の例では、ローカル ユーザーを作成し、キーをコンソールに出力します。
$UserName = "mylocalusername"
$localuser = Set-AzStorageLocalUser -ResourceGroupName $resourceGroupName -StorageAccountName $storageAccountName -UserName $UserName -SshAuthorizedKey $sshkey -HasSharedKey $true -HasSshKey $true
$localuser
$localuser.SshAuthorizedKeys | ft
注
ローカル ユーザーには、SMB 認証にのみ使用される sharedKey プロパティもあります。
パスワードを使用して認証する (PowerShell)
Set-AzStorageLocalUser コマンドを使用して、ローカル ユーザーを作成し、-HasSshPassword パラメーターを $true に設定します。
次の例では、パスワード認証を使用するローカル ユーザーを作成します。
$UserName = "mylocalusername"
$localuser = Set-AzStorageLocalUser -ResourceGroupName $resourceGroupName -StorageAccountName $storageAccountName -UserName $UserName -HasSshPassword $true
New-AzStorageLocalUserSshPassword コマンドを使用してパスワードを作成します。
-UserName パラメーターをユーザー名に設定します。
次の例では、ユーザーのパスワードを生成します。
$password = New-AzStorageLocalUserSshPassword -ResourceGroupName $resourceGroupName -StorageAccountName $storageAccountName -UserName $UserName
$password
重要
後でこのパスワードを取得することはできません。そのため、必ずパスワードをコピーして、見つけられる場所に保管してください。 このパスワードを紛失した場合は、新しいものを生成する必要があります。 Azure SSH パスワードが生成され、32 文字以上です。
このセクションでは、SSH キーまたはパスワードを使用して認証する方法について説明します。
SSH キーを使用して認証する (Azure CLI)
使用する公開キーの種類を選択します。
Azure に格納されている既存のキーを使用する
Azureに既に格納されている公開キーを使用する場合は、このオプションを使用します。 Azure で既存のキーを検索するには、「キーの一覧表示」 を参照してください。 SFTP クライアントでは、Azure Blob Storage に接続する場合、それらのクライアントで、この公開キーに関連付けられている秘密キーを指定する必要があります。
Azure の外部に格納されている既存の公開キーを使用します。
公開キーをまだ持っていない場合は、 ssh-keygen を使用してキーを生成 する方法に関するガイダンスを参照してください。 OpenSSH 形式の公開キーのみがサポートされています。 指定するキーは、<key type> <key data> の形式を使用する必要があります。 たとえば、RSA キーは次のようになります: ssh-rsa AAAAB3N...。 キーが別の形式の場合は、 ssh-keygen などのツールを使用して OpenSSH 形式に変換します。
SSH キーを使用して認証するローカル ユーザーを作成するには、 az storage account local-user create コマンドを使用し、キーの種類と公開キーを含む文字列に --has-ssh-key パラメーターを設定します。
次の例では、contosouser という名前のローカル ユーザーを作成し、認証にキー値が ssh-rsa a2V5... に設定された ssh-rsa キーを使用します。
az storage account local-user create --account-name contosoaccount -g contoso-resource-group -n contosouser --ssh-authorized-key key="ssh-rsa a2V5..." --has-ssh-key true --has-ssh-password true
注
ローカル ユーザーには、SMB 認証にのみ使用される sharedKey プロパティもあります。
パスワードを使用して認証する (Azure CLI)
パスワードを使用して認証するローカル ユーザーを作成するには、 az storage account local-user create コマンドを使用し、 --has-ssh-password パラメーターを true に設定します。
次の例では、contosouser という名前のローカル ユーザーを作成し、--has-ssh-password パラメーターを true に設定します。
az storage account local-user create --account-name contosoaccount -g contoso-resource-group -n contosouser --has-ssh-password true
az storage account local-user regenerate-password コマンドを使用してパスワードを作成します。
-n パラメーターをローカル ユーザー名に設定します。
次の例では、ユーザーのパスワードを生成します。
az storage account local-user regenerate-password --account-name contosoaccount -g contoso-resource-group -n contosouser
重要
後でこのパスワードを取得することはできません。そのため、必ずパスワードをコピーして、見つけられる場所に保管してください。 このパスワードを紛失した場合は、新しいものを生成する必要があります。 Azure SSH パスワードが生成され、32 文字以上です。
コンテナーにアクセス許可を付与する
アクセス権を付与するコンテナーと、提供するアクセス レベルを選択します。 これらのアクセス許可は、コンテナー内のすべてのディレクトリとサブディレクトリに適用されます。 各コンテナーのアクセス許可の詳細については、「コンテナーのアクセス許可」を参照してください。
ファイルおよびディレクトリ レベルでアクセスを承認する場合は、ACL の認可を有効にすることができます。
[アクセス許可] タブで、このローカル ユーザーが使用できるコンテナーを選択します。 次に、このローカル ユーザーが実行できる操作の種類を選択します。
重要
ローカル ユーザーには、少なくとも 1 つのコンテナーのアクセス許可またはそのコンテナーのホーム ディレクトリに対する ACL アクセス許可が必要です。 それ以外の場合、そのコンテナーへの接続試行は失敗します。
このコンテナー内のファイルとディレクトリに関連付けられているアクセス制御リスト (ACL) を使用してアクセスを承認する場合は、[ ACL 承認を許可 する] チェック ボックスをオンにします。 ACL を使用して SFTP クライアントを承認する方法の詳細については、「ACL」を参照してください。
また、そのユーザーをグループ ID に割り当てることで、このローカル ユーザーをグループに追加することもできます。 その ID には、任意の数値または数値スキームを指定できます。 ユーザーをグループ化すると、ACL をディレクトリ構造全体に再適用する必要なく、ユーザーを追加および削除できます。 代わりに、グループに対してユーザーを追加または削除できます。
注
ローカル ユーザーのユーザー ID が自動的に生成されます。 この ID は変更できませんが、[ローカル ユーザーを編集する] ウィンドウでそのユーザーを再度開くことで、ローカル ユーザーを作成した後にその ID を確認できます。
[ ホーム ディレクトリ ] 編集ボックスに、このローカル ユーザーに関連付けられている既定の場所であるコンテナーの名前またはディレクトリ パス (コンテナー名を含む) を入力します (例: mycontainer/mydirectory)。
ホーム ディレクトリの詳細については、「ホーム ディレクトリ」を参照してください。
[ 追加 ] ボタンを選択して、ローカル ユーザーを追加します。
パスワード認証を有効にした場合、Azure生成されたパスワードは、ローカル ユーザーの追加後にダイアログ ボックスに表示されます。
重要
後でこのパスワードを取得することはできません。そのため、必ずパスワードをコピーして、見つけられる場所に保管してください。
新しいキー ペアを生成することを選択した場合は、ローカル ユーザーが追加された後、そのキー ペアの秘密キーをダウンロードするように求められます。
注
ローカル ユーザーには、SMB 認証にのみ使用される sharedKey プロパティがあります。
ローカル ユーザーが使用できるコンテナーと、このローカル ユーザーが実行できる操作の種類を決定します。
New-AzStorageLocalUserPermissionScope コマンドを使用してアクセス許可スコープ オブジェクトを作成し、そのコマンドの -Permission パラメーターを、アクセス許可レベルに対応する 1 つ以上の文字に設定します。 指定できる値は、読み取り (r)、書き込み (w)、削除 (d)、一覧表示 (l)、作成 (c)、所有権の変更 (o)、アクセス許可の変更 (p) です。
次の例では、 mycontainer コンテナーに対する読み取りと書き込みのアクセス許可を付与するアクセス許可スコープ オブジェクトを作成します。
$permissionScope = New-AzStorageLocalUserPermissionScope -Permission rw -Service blob -ResourceName mycontainer
重要
ローカル ユーザーは、接続しているコンテナーに対して少なくとも 1 つのコンテナー アクセス許可を持っている必要があります。それ以外の場合、接続の試行は失敗します。
Set-AzStorageLocalUser コマンドを使用して、ローカル ユーザーを更新します。
-PermissionScope パラメーターを、前に作成したアクセス許可スコープ オブジェクトに設定します。
次の例では、コンテナーのアクセス許可でローカル ユーザーを更新し、アクセス許可スコープをコンソールに出力します。
$UserName = "mylocalusername"
$localuser = Set-AzStorageLocalUser -ResourceGroupName $resourceGroupName -StorageAccountName $storageAccountName -UserName $UserName -HomeDirectory "mycontainer" -PermissionScope $permissionScope
$localuser
$localuser.PermissionScopes | ft
コンテナーへのアクセス許可でローカル ユーザーを更新するには、az storage account local-user update コマンドを使用し、そのコマンドの permission-scope パラメーターをアクセス許可レベルに対応する 1 つ以上の文字に設定します。 指定できる値は、読み取り (r)、書き込み (w)、削除 (d)、一覧表示 (l)、作成 (c)、所有権の変更 (o)、アクセス許可の変更 (p) です。
次の例では、contosouserという名前contosocontainerコンテナーへの読み取りおよび書き込みアクセス権をローカル ユーザー名に付与します。
az storage account local-user update --account-name contosoaccount -g contoso-resource-group -n contosouser --home-directory contosocontainer --permission-scope permissions=rw service=blob resource-name=contosocontainer
次のステップ
関連するコンテンツ