Azure Files には、Azure ファイル共有のマウント用に、サーバー メッセージ ブロック (SMB) プロトコルとネットワーク ファイル システム (NFS) プロトコルの 2 つの業界標準プロトコルが用意されています。 Azure Files を使用すると、ワークロードに最適なファイル システム プロトコルを選択できます。 Azure ファイル共有では、SMB と NFS の両方のプロトコルを使用した個々の Azure ファイル共有へのアクセスはサポートされませんが、同じストレージ アカウント内に SMB と NFS のファイル共有を作成することはできます。 すべてのファイル共有に対し、Azure Files により、ストレージのニーズに合わせたスケールアップが可能で、数千ものクライアントによって同時にアクセスできる、エンタープライズ レベルのファイル共有が提供されます。
この記事では、SMB Azure ファイル共有について説明します。 NFS Azure ファイル共有の詳細については、「NFS Azure ファイル共有」を参照してください。
対象
管理モデル |
課金モデル |
メディア階層 |
冗長性 |
中小企業 |
ネットワークファイルシステム(NFS) |
Microsoft.Storage |
プロビジョニング済み v2 |
HDD (標準) |
ローカル (LRS) |
|
|
Microsoft.Storage |
プロビジョニング済み v2 |
HDD (標準) |
ゾーン (ZRS) |
|
|
Microsoft.Storage |
プロビジョニング済み v2 |
HDD (標準) |
ジオ (GRS) |
|
|
Microsoft.Storage |
プロビジョニング済み v2 |
HDD (標準) |
ジオゾーン (GZRS) |
|
|
Microsoft.Storage |
プロビジョニング済み v1 |
SSD (プレミアム) |
ローカル (LRS) |
|
|
Microsoft.Storage |
プロビジョニング済み v1 |
SSD (プレミアム) |
ゾーン (ZRS) |
|
|
Microsoft.Storage |
従量課金制 |
HDD (標準) |
ローカル (LRS) |
|
|
Microsoft.Storage |
従量課金制 |
HDD (標準) |
ゾーン (ZRS) |
|
|
Microsoft.Storage |
従量課金制 |
HDD (標準) |
ジオ (GRS) |
|
|
Microsoft.Storage |
従量課金制 |
HDD (標準) |
ジオゾーン (GZRS) |
|
|
一般的なシナリオ
SMB ファイル共有は、エンドユーザーのファイル共有や、データベースやアプリケーションをバックアップするファイル共有など、多くのアプリケーションで使用されます。 SMB ファイル共有は、多くの場合、次のシナリオで使用されます。
- エンドユーザー ファイル共有 (チーム共有、ホーム ディレクトリなど)。
- Windows ベースのアプリケーション (SQL Server データベースや Win32 または .NET ローカル ファイル システム API 用に作成された基幹業務アプリケーションなど) 向けのバックアップ用ストレージ。
- 新しいアプリケーションとサービスの開発 (特に、そのアプリケーションまたはサービスにランダム IO と階層ストレージの要件がある場合)。
機能
Azure Files では、SMB ファイル共有の運用環境へのデプロイに必要な SMB と Azure の主な機能がサポートされています。
- AD ドメイン参加と随意アクセス制御リスト (DACL)。
- Azure Backup と統合されたサーバーレス バックアップ。
- Azure のプライベート エンドポイントを使用したネットワークの分離。
- SMB マルチチャネルを使用した高いネットワーク スループット (SSD ファイル共有のみ)。
- AES-256-GCM、AES-128-GCM、および AES-128-CCM を含む SMB チャネルの暗号化。
- VSS 統合共有スナップショットを使用した以前のバージョンのサポート。
- 誤って削除されないようにするための、Azure ファイル共有での自動論理的な削除。
- 必要に応じて、インターネットでも安全に使用できる SMB 3.0 以降を使用した、インターネットにアクセス可能なファイル共有。
SMB ファイル共有は、オンプレミスに直接マウントすることも、Azure File Sync を使用してオンプレミスでキャッシュすることもできます。
セキュリティ
Azure Files に格納されるすべてのデータは、Azure Storage Service Encryption (SSE) を使用して保存時に暗号化されます。 Storage Service Encryption は Windows の BitLocker と同様に機能し、データはファイル システム レベルで暗号化されます。 データは Azure ファイル共有のファイル システムで暗号化されるため、ディスクにエンコードされた場合、Azure ファイル共有を読み書きするために、基になるクライアント上のキーにアクセスできる必要はありません。 保存時の暗号化は、SMB と NFS の両方のプロトコルに適用されます。
既定では、すべての Azure ファイル共有で転送中の暗号化が有効になっているため、SMB 3.x と暗号化を使用する SMB マウントのみが許可されます。 SMB チャネル暗号化で SMB 3.x をサポートしていないクライアントからのマウントは、転送中の暗号化が有効になっている場合は拒否されます。
Windows Server 2022 または Windows 11 と共に使用する場合、Azure Files では、SMB 3.1.1 を使用した AES-256-GCM がサポートされます。 SMB 3.1.1 では、AES-128-GCM もサポートされており、SMB 3.0 では AES-128-CCM がサポートされます。 パフォーマンス上の理由から Windows 10 バージョン 21H1 では、AES-128-GCM が既定でネゴシエートされます。
Azure ファイル共有の転送中の暗号化を無効にすることができます。 暗号化が無効になっている場合、Azure Files では暗号化なしで SMB 2.1 と SMB 3.x が許可されます。 転送中の暗号化を無効にする主な理由は、古いオペレーティング システム (Windows Server 2008 R2 や古い Linux ディストリビューションなど) 上で実行する必要のあるレガシ アプリケーションをサポートするためです。 Azure Files では、Azure ファイル共有と同じ Azure リージョン内の SMB 2.1 接続のみが許可されます。オンプレミスや別の Azure リージョンなど、Azure ファイル共有の Azure リージョン外の SMB 2.1 クライアントは、ファイル共有にアクセスできません。
SMB プロトコル設定
Azure Files には、SMB プロトコルの動作、パフォーマンス、およびセキュリティに影響する複数の設定があります。 これらは、ストレージ アカウント内のすべての Azure ファイル共有に対して構成されます。
SMB マルチチャネル
SMB マルチチャネルでは、SMB 3.x クライアントが SMB ファイル共有に複数のネットワーク接続を確立できます。 Azure Files では、SSD ファイル共有での SMB マルチチャネルがサポートされています。 SMB マルチチャネルがすべての Azure リージョンで既定で有効になりました。
SMB マルチチャネルの状態を表示するには、SSD ファイル共有を含むストレージ アカウントに移動し、ストレージ アカウントの目次の [データ ストレージ] 見出しの下にある [ファイル共有] を選択します。 [ ファイル共有の設定 ] セクションに SMB マルチチャネルの状態が表示されます。 表示されない場合は、ストレージ アカウントが FileStorage アカウントの種類であることを確認します。
SMB マルチチャネルを有効または無効にするには、現在のステータスを選択します (ステータスに応じて [有効] または [無効] )。 表示されるダイアログでは、SMB マルチチャネルを有効または無効に切り替えることができます。 目的の状態を選択し、 [保存] を選択します。
SMB マルチチャネルのステータスを取得するには、Get-AzStorageFileServiceProperty
コマンドレットを使用します。 これらの PowerShell コマンドを実行する前に、<resource-group>
と <storage-account>
を実際の環境に適した値に置き換えることを忘れないでください。
$resourceGroupName = "<resource-group>"
$storageAccountName = "<storage-account>"
# Get reference to storage account
$storageAccount = Get-AzStorageAccount `
-ResourceGroupName $resourceGroupName `
-StorageAccountName $storageAccountName
# If you've never enabled or disabled SMB Multichannel, the value for the SMB Multichannel
# property returned by Azure Files will be null. Null returned values should be interpreted
# as "default settings are in effect". To make this more user-friendly, the following
# PowerShell commands replace null values with the human-readable default values.
$defaultSmbMultichannelEnabled = $false
# Get the current value for SMB Multichannel
Get-AzStorageFileServiceProperty -StorageAccount $storageAccount | `
Select-Object -Property `
ResourceGroupName, `
StorageAccountName, `
@{
Name = "SmbMultichannelEnabled";
Expression = {
if ($null -eq $_.ProtocolSettings.Smb.Multichannel.Enabled) {
$defaultSmbMultichannelEnabled
} else {
$_.ProtocolSettings.Smb.Multichannel.Enabled
}
}
}
SMB マルチチャネルを有効または無効にするには、Update-AzStorageFileServiceProperty
コマンドレットを使用します。
Update-AzStorageFileServiceProperty `
-StorageAccount $storageAccount `
-EnableSmbMultichannel $true
SMB マルチチャネルのステータスを取得するには、az storage account file-service-properties show
コマンドを使用します。 これらの Bash コマンドを実行する前に、<resource-group>
と <storage-account>
を実際の環境に適した値に置き換えることを忘れないでください。
RESOURCE_GROUP_NAME="<resource-group>"
STORAGE_ACCOUNT_NAME="<storage-account>"
# If you've never enabled or disabled SMB Multichannel, the value for the SMB Multichannel
# property returned by Azure Files will be null. Null returned values should be interpreted
# as "default settings are in effect". To make this more user-friendly, the following
# PowerShell commands replace null values with the human-readable default values.
## Search strings
REPLACESMBMULTICHANNEL="\"smbMultichannelEnabled\": null"
# Replacement values for null parameters.
DEFAULTSMBMULTICHANNELENABLED="\"smbMultichannelEnabled\": false"
# Build JMESPath query string
QUERY="{"
QUERY="${QUERY}smbMultichannelEnabled: protocolSettings.smb.multichannel.enabled"
QUERY="${QUERY}}"
# Get protocol settings from the Azure Files FileService object
protocolSettings=$(az storage account file-service-properties show \
--resource-group $RESOURCE_GROUP_NAME \
--account-name $STORAGE_ACCOUNT_NAME \
--query "${QUERY}")
# Replace returned values if null with default values
PROTOCOL_SETTINGS="${protocolSettings/$REPLACESMBMULTICHANNEL/$DEFAULTSMBMULTICHANNELENABLED}"
# Print returned settings
echo $PROTOCOL_SETTINGS
SMB マルチチャネルを有効または無効にするには、az storage account file-service-properties update
コマンドを使用します。
az storage account file-service-properties update \
--resource-group $RESOURCE_GROUP_NAME \
--account-name $STORAGE_ACCOUNT_NAME \
--enable-smb-multichannel "true"
古いオペレーティング システムで SMB マルチチャネルを有効にする
Azure Files で SMB マルチチャネルをサポートするには、Windows に関連するすべてのパッチが適用されていることを確認する必要があります。 Windows Server 2016、Windows 10 バージョン 1607、Windows 10 バージョン 1507 を含むいくつかの古い Windows バージョンでは、完全にパッチが適用されたインストールで関連するすべての SMB マルチチャネルの修正を適用するために、追加のレジストリ キーを設定する必要があります。 これらの 3 つのバージョンより新しい Windows バージョンを実行している場合は、追加の操作は必要ありません。
Windows Server 2016 および Windows 10 バージョン 1607
Windows Server 2016 および Windows 10 バージョン 1607 の SMB マルチチャネルの修正をすべて有効にするには、次の PowerShell コマンドを実行します。
Set-ItemProperty `
-Path "HKLM:SYSTEM\CurrentControlSet\Policies\Microsoft\FeatureManagement\Overrides" `
-Name "2291605642" `
-Value 1 `
-Force
Windows 10 バージョン 1507
Windows 10 バージョン 1507 の SMB マルチチャネルの修正をすべて有効にするには、次の PowerShell コマンドを実行します。
Set-ItemProperty `
-Path "HKLM:\SYSTEM\CurrentControlSet\Services\MRxSmb\KBSwitch" `
-Name "{FFC376AE-A5D2-47DC-A36F-FE9A46D53D75}" `
-Value 1 `
-Force
SMB セキュリティ設定
Azure Files は、組織の要件に応じて、SMB プロトコルの互換性またはセキュリティを強化する設定を公開します。 既定では、Azure Files は最大限の互換性を持つように構成されているため、これらの設定を制限すると、一部のクライアントが接続できなくなる可能性があることに注意してください。
Azure Files では、以下の設定が公開されています。
-
SMB バージョン: 許可される SMB バージョンを指定します。 サポートされているプロトコルのバージョンは、SMB 3.1.1、SMB 3.0、および SMB 2.1 です。 既定では、すべての SMB バージョンが許可されていますが、 "安全な転送を必須にする" が有効になっている場合、SMB 2.1 は許可されません。SMB 2.1 は転送中の暗号化をサポートしていないためです。
-
認証方法: 許可される SMB 認証方法を指定します。 サポートされている認証方法は、NTLMv2 (ストレージ アカウント キーのみ) と Kerberos です。 既定では、すべての認証方法が許可されています。 NTLMv2 を削除すると、ストレージ アカウント キーを使用して Azure ファイル共有をマウントすることができなくなります。 Azure Files は、ドメイン資格情報で NTLM 認証の使用をサポートしていません。
-
Kerberos チケットの暗号化: 許可される暗号化アルゴリズムを指定します。 サポートされている暗号化アルゴリズムは、AES-256(推奨)、RC4-HMACです。
-
SMB チャネル暗号化: 許可される SMB チャネル暗号化アルゴリズムを指定します。 サポートされている暗号化アルゴリズムは、AES-256-GCM、AES-128-GCM、および AES-128-CCM です。 AES-256-GCM のみを選んだ場合は、各クライアント上で管理者として PowerShell ターミナルを開き、
Set-SmbClientConfiguration -EncryptionCiphers "AES_256_GCM" -Confirm:$false
を実行することで、接続しているクライアントにそれを使うように指示する必要があります。 AES-256-GCM の使用は、Windows 11/Windows Server 2022 より以前の Windows クライアント上ではサポートされていません。
SMB セキュリティ設定は、Azure portal、PowerShell、または CLI を使用して表示および変更できます。 目的のタブを選択して、SMB セキュリティ設定を取得および設定する方法の手順を確認します。 これらの設定は、SMB セッションが確立されるときにチェックされ、満たされていない場合は、SMB セッションのセットアップが "STATUS_ACCESS_DENIED" というエラーで失敗します。
Azure portal を使用して SMB セキュリティ設定を表示または変更するには、次の手順に従います。
Azure portal にサインインし、 ストレージ アカウントを検索します。 SMB セキュリティ設定を表示または変更するストレージ アカウントを選択します。
サービス メニューから、 データ ストレージ>ファイル共有を選択します。
[ファイル共有の設定] で、[セキュリティ] に関連付けられている値を選択します。 セキュリティ設定を変更していない場合、この値の既定値は [最大の互換性] になります。
[プロファイル] で、[最大の互換性]、[最大のセキュリティ]、[カスタム] のいずれかを選択します。 [カスタム] を選択すると、SMB プロトコル バージョン、SMB チャネル暗号化、認証メカニズム、および Kerberos チケット暗号化について、カスタム プロファイルを作成できます。
必要なセキュリティ設定を入力したら、[保存] を選択します。
SMB プロトコル設定を取得するには、Get-AzStorageFileServiceProperty
コマンドレットを使用します。 忘れずに、<resource-group>
および <storage-account>
を実際の環境の適切な値に置き換えてください。 SMB チャネル暗号化を無効にするなどして、SMB セキュリティ設定のいずれかを意図的に null に設定した場合は、スクリプト内の特定の行のコメントアウトに関する手順を参照してください。
$resourceGroupName = "<resource-group>"
$storageAccountName = "<storage-account>"
# Get reference to storage account
$storageAccount = Get-AzStorageAccount `
-ResourceGroupName $resourceGroupName `
-StorageAccountName $storageAccountName
# If you've never changed any SMB security settings, the values for the SMB security
# settings returned by Azure Files will be null. Null returned values should be interpreted
# as "default settings are in effect". To make this more user-friendly, the following
# PowerShell commands replace null values with the human-readable default values.
# If you've deliberately set any of your SMB security settings to null, for example by
# disabling SMB channel encryption, comment out the following four lines to avoid
# changing the security settings back to defaults.
$smbProtocolVersions = "SMB2.1", "SMB3.0", "SMB3.1.1"
$smbAuthenticationMethods = "NTLMv2", "Kerberos"
$smbKerberosTicketEncryption = "RC4-HMAC", "AES-256"
$smbChannelEncryption = "AES-128-CCM", "AES-128-GCM", "AES-256-GCM"
# Gets the current values of the SMB security settings
Get-AzStorageFileServiceProperty -StorageAccount $storageAccount | `
Select-Object -Property `
ResourceGroupName, `
StorageAccountName, `
@{
Name = "SmbProtocolVersions";
Expression = {
if ($null -eq $_.ProtocolSettings.Smb.Versions) {
[String]::Join(", ", $smbProtocolVersions)
} else {
[String]::Join(", ", $_.ProtocolSettings.Smb.Versions)
}
}
},
@{
Name = "SmbChannelEncryption";
Expression = {
if ($null -eq $_.ProtocolSettings.Smb.ChannelEncryption) {
[String]::Join(", ", $smbChannelEncryption)
} else {
[String]::Join(", ", $_.ProtocolSettings.Smb.ChannelEncryption)
}
}
},
@{
Name = "SmbAuthenticationMethods";
Expression = {
if ($null -eq $_.ProtocolSettings.Smb.AuthenticationMethods) {
[String]::Join(", ", $smbAuthenticationMethods)
} else {
[String]::Join(", ", $_.ProtocolSettings.Smb.AuthenticationMethods)
}
}
},
@{
Name = "SmbKerberosTicketEncryption";
Expression = {
if ($null -eq $_.ProtocolSettings.Smb.KerberosTicketEncryption) {
[String]::Join(", ", $smbKerberosTicketEncryption)
} else {
[String]::Join(", ", $_.ProtocolSettings.Smb.KerberosTicketEncryption)
}
}
}
組織のセキュリティ、パフォーマンス、互換性の要件に応じて、SMB プロトコルの設定を変更することをお勧めします。 次の PowerShell コマンドを実行すると、SMB ファイル共有が最も安全なオプションのみに制限されます。
重要
SMB Azure ファイル共有を最も安全なオプションのみに制限すると、一部のクライアントが接続できなくなる可能性があります。 たとえば、AES-256-GCM は、SMB チャネル暗号化のオプションとして Windows Server 2022 と Windows 11 から導入されました。 これは、AES-256-GCM をサポートしていない古いクライアントは接続できないことを意味します。 AES-256-GCM のみを選んだ場合は、各クライアント上で管理者として PowerShell ターミナルを開き、Set-SmbClientConfiguration -EncryptionCiphers "AES_256_GCM" -Confirm:$false
を実行することで、Windows Server 2022 および Windows 11 クライアントに AES-256-GCM のみを使うように指示する必要があります。
Update-AzStorageFileServiceProperty `
-ResourceGroupName $resourceGroupName `
-StorageAccountName $storageAccountName `
-SmbAuthenticationMethod "Kerberos" `
-SmbChannelEncryption "AES-256-GCM" `
-SmbKerberosTicketEncryption "AES-256" `
-SmbProtocolVersion "SMB3.1.1"
SMB セキュリティ設定のステータスを取得するには、az storage account file-service-properties show
コマンドを使用します。 これらの Bash コマンドを実行する前に、<resource-group>
と <storage-account>
を実際の環境に適した値に置き換えることを忘れないでください。 SMB チャネル暗号化を無効にするなどして、SMB セキュリティ設定のいずれかを意図的に null に設定した場合は、スクリプト内の特定の行のコメントアウトに関する手順を参照してください。
RESOURCE_GROUP_NAME="<resource-group>"
STORAGE_ACCOUNT_NAME="<storage-account>"
# If you've never changed any SMB security settings, the values for the SMB security
# settings returned by Azure Files will be null. Null returned values should be interpreted
# as "default settings are in effect". To make this more user-friendly, the commands in the
# following two sections replace null values with the human-readable default values.
# If you've deliberately set any of your SMB security settings to null, for example by
# disabling SMB channel encryption, comment out the following two sections before
# running the script to avoid changing the security settings back to defaults.
# Values to be replaced
REPLACESMBPROTOCOLVERSION="\"smbProtocolVersions\": null"
REPLACESMBCHANNELENCRYPTION="\"smbChannelEncryption\": null"
REPLACESMBAUTHENTICATIONMETHODS="\"smbAuthenticationMethods\": null"
REPLACESMBKERBEROSTICKETENCRYPTION="\"smbKerberosTicketEncryption\": null"
# Replacement values for null parameters. If you copy this into your own
# scripts, you will need to ensure that you keep these variables up-to-date with any new
# options we may add to these parameters in the future.
DEFAULTSMBPROTOCOLVERSIONS="\"smbProtocolVersions\": \"SMB2.1;SMB3.0;SMB3.1.1\""
DEFAULTSMBCHANNELENCRYPTION="\"smbChannelEncryption\": \"AES-128-CCM;AES-128-GCM;AES-256-GCM\""
DEFAULTSMBAUTHENTICATIONMETHODS="\"smbAuthenticationMethods\": \"NTLMv2;Kerberos\""
DEFAULTSMBKERBEROSTICKETENCRYPTION="\"smbKerberosTicketEncryption\": \"RC4-HMAC;AES-256\""
# Build JMESPath query string
QUERY="{"
QUERY="${QUERY}smbProtocolVersions: protocolSettings.smb.versions,"
QUERY="${QUERY}smbChannelEncryption: protocolSettings.smb.channelEncryption,"
QUERY="${QUERY}smbAuthenticationMethods: protocolSettings.smb.authenticationMethods,"
QUERY="${QUERY}smbKerberosTicketEncryption: protocolSettings.smb.kerberosTicketEncryption"
QUERY="${QUERY}}"
# Get protocol settings from the Azure Files FileService object
PROTOCOLSETTINGS=$(az storage account file-service-properties show \
--resource-group $RESOURCE_GROUP_NAME \
--account-name $STORAGE_ACCOUNT_NAME \
--query "${QUERY}")
# Replace returned values if null with default values
PROTOCOLSETTINGS="${protocolSettings/$REPLACESMBPROTOCOLVERSION/$DEFAULTSMBPROTOCOLVERSIONS}"
PROTOCOLSETTINGS="${protocolSettings/$REPLACESMBCHANNELENCRYPTION/$DEFAULTSMBCHANNELENCRYPTION}"
PROTOCOLSETTINGS="${protocolSettings/$REPLACESMBAUTHENTICATIONMETHODS/$DEFAULTSMBAUTHENTICATIONMETHODS}"
PROTOCOLSETTINGS="${protocolSettings/$REPLACESMBKERBEROSTICKETENCRYPTION/$DEFAULTSMBKERBEROSTICKETENCRYPTION}"
# Print returned settings
echo $PROTOCOLSETTINGS
組織のセキュリティ、パフォーマンス、および互換性の要件に応じて、SMB プロトコルの設定を変更することをお勧めします。 次の Azure CLI コマンドを実行すると、SMB ファイル共有が最も安全なオプションのみに制限されます。
重要
SMB Azure ファイル共有を最も安全なオプションのみに制限すると、一部のクライアントが接続できなくなる可能性があります。 たとえば、AES-256-GCM は、SMB チャネル暗号化のオプションとして Windows Server 2022 と Windows 11 から導入されました。 これは、AES-256-GCM をサポートしていない古いクライアントは接続できないことを意味します。 AES-256-GCM のみを選んだ場合は、各クライアント上で管理者として PowerShell ターミナルを開き、Set-SmbClientConfiguration -EncryptionCiphers "AES_256_GCM" -Confirm:$false
を実行することで、Windows Server 2022 および Windows 11 クライアントに AES-256-GCM のみを使うように指示する必要があります。
az storage account file-service-properties update \
--resource-group $RESOURCE_GROUP_NAME \
--account-name $STORAGE_ACCOUNT_NAME \
--versions "SMB3.1.1" \
--channel-encryption "AES-256-GCM" \
--auth-methods "Kerberos" \
--kerb-ticket-encryption "AES-256"
制限事項
Azure Files の SMB ファイル共有では、SMB プロトコルおよび NTFS ファイル システムでサポートされている機能のサブセットがサポートされています。 ほとんどのユース ケースとアプリケーションにはこれらの機能は必要ありませんが、一部のアプリケーションは、サポートされていない機能に依存している場合、Azure Files で正常に動作しないことがあります。 次の機能はサポートされていません:
リージョン別の提供状況
SMB Azure ファイル共有は、すべてのパブリックとソブリンのリージョンを含む、すべての Azure リージョンで利用できます。 SSD ファイル共有は、 リージョンのサブセットで使用できます。
次のステップ