SSH ファイル転送プロトコル (SFTP) クライアントの Azure Blob Storage へのアクセスを承認する
[アーティクル] 05/06/2024
2 人の共同作成者
フィードバック
この記事の内容
この記事では、SFTP クライアントを使用して Azure Storage アカウントの Blob Storage エンドポイントに安全に接続できるように、SFTP クライアントへのアクセスを承認する方法を示します。
Azure Blob Storage での SFTP のサポートの詳細については、「Azure Blob Storage での SSH ファイル転送プロトコル (SFTP) 」を参照してください。
前提条件
ローカル ユーザーを作成する
Azure Storage では、Shared Access Signature (SAS) も、SFTP エンドポイントにアクセスするための Microsoft Entra 認証もサポートされていません。 代わりに、Azure で生成されたパスワードまたは Secure Shell (SSH) キー ペアで保護できるローカル ユーザーと呼ばれる ID を使用する必要があります。 接続しているクライアントへのアクセスを許可するには、ストレージ アカウントにパスワードまたはキーの組に関連付けられている ID が必要です。 その ID はローカル ユーザー と呼ばれます。
このセクションでは、ローカル ユーザーを作成し、認証方法を選択して、そのローカル ユーザーにアクセス許可を割り当てる方法を説明します。
SFTP アクセス許可モデルの詳細については、「SFTP アクセス許可モデル 」を参照してください。
認証方法を選択する
パスワードまたは Secure Shell (SSH) の公開キーと秘密キーのペアを使って、SFTP クライアントから接続するローカル ユーザーを認証できます。
重要
両方の形式の認証を有効にできますが、SFTP クライアントはどちらか一方のみを使用して接続できます。 認証を成功させるために、有効なパスワードと有効な公開キーと秘密キーのペアの両方が必要な多要素認証はサポートされていません。
Azure portal のストレージ アカウントに移動します。
[設定] で、 [SFTP] 、 [ローカル ユーザーの追加] の順に選択します。
[ローカル ユーザーの追加] ウィンドウで、ユーザーの名前を追加し、このローカル ユーザーに関連付ける認証方法を選択します。 パスワードおよび/または SSH キーを関連付けできます。
[SSH パスワード] を選択した場合、[ローカル ユーザーの追加] 構成ペインのすべての手順を完了すると、パスワードが表示されます。 SSH パスワードが Azure によって生成されます。長さは 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
Note
ローカル ユーザーには、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
重要
後でこのパスワードを取得することはできません。そのため、必ずパスワードをコピーして、見つけられる場所に保管してください。 このパスワードを紛失した場合は、新しいものを生成する必要があります。 SSH パスワードは Azure によって生成され、長さは 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
Note
ローカル ユーザーには、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
重要
後でこのパスワードを取得することはできません。そのため、必ずパスワードをコピーして、見つけられる場所に保管してください。 このパスワードを紛失した場合は、新しいものを生成する必要があります。 SSH パスワードは Azure によって生成され、長さは 32 文字以上であることに注意してください。
コンテナーにアクセス許可を付与する
アクセス権を付与するコンテナーと、提供するアクセス レベルを選択します。 これらのアクセス許可は、コンテナー内のすべてのディレクトリとサブディレクトリに適用されます。 各コンテナーのアクセス許可の詳細については、「コンテナーのアクセス許可 」を参照してください。
ファイルおよびディレクトリ レベルでアクセスを承認する場合は、ACL の認可を有効にすることができます。 この機能はプレビュー段階であり、Azure portal を使用してのみ有効にすることができます。
[アクセス許可] タブで、このローカル ユーザーが使用できるコンテナーを選択します。 次に、このローカル ユーザーが実行できる操作の種類を選択します。
重要
ローカル ユーザーには、少なくとも 1 つのコンテナーのアクセス許可またはそのコンテナーのホーム ディレクトリに対する ACL アクセス許可が必要です。 それ以外の場合、そのコンテナーへの接続試行は失敗します。
このコンテナー内のファイルとディレクトリに関連付けられているアクセス制御リスト (ACL) を使用してアクセスを承認する場合は、[Allow ACL authorization]\(ACL 承認を許可する\) チェックボックスをオンにします。 ACLS を使用して SFTP クライアントを承認する方法の詳細については、ACL の説明を参照してください。
また、そのユーザーをグループ ID に割り当てることで、このローカル ユーザーをグループに追加することもできます。 その ID には、任意の数値または数値スキームを指定できます。 ユーザーをグループ化すると、ACL をディレクトリ構造全体に再適用する必要なく、ユーザーを追加および削除できます。 代わりに、グループに対してユーザーを追加または削除できます。
Note
ローカル ユーザーのユーザー ID が自動的に生成されます。 この ID は変更できませんが、[ローカル ユーザーを編集する] ウィンドウでそのユーザーを再度開くことで、ローカル ユーザーを作成した後にその ID を確認できます。
[ホーム ディレクトリ] 編集ボックスに、このローカル ユーザーに関連付けられている既定の場所になるコンテナーの名前またはディレクトリ パス (コンテナー名を含む) を入力します (例: mycontainer/mydirectory
)。
ホーム ディレクトリの詳細については、「ホーム ディレクトリ 」を参照してください。
[ボタンの追加] を選択してローカル ユーザーを追加します。
パスワード認証を有効にした場合、ローカル ユーザーが追加された後、Azure で生成されたパスワードがダイアログ ボックスに表示されます。
重要
後でこのパスワードを取得することはできません。そのため、必ずパスワードをコピーして、見つけられる場所に保管してください。
新しいキーの組を生成することを選択した場合、ローカル ユーザーが追加された後、そのキーの組の秘密キーをダウンロードするように求められます。
Note
ローカル ユーザーには、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) です。
次の例では、contosocontainer
という名前のコンテナーに対する読み取りおよび書き込みアクセス権をローカル ユーザー名 contosouser
に与えます。
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
次のステップ
関連するコンテンツ