✔️ 適用対象: Microsoft.Storage リソース プロバイダーで作成されたクラシック NFS ファイル共有
✔️ 適用対象: Microsoft.FileShares リソース プロバイダーで作成された NFS ファイル共有
✖️ 適用対象外: SMB ファイル共有
クライアント オペレーティング システムは、Azure Files サービスではなく、NFS ファイル共有に対するアクセス許可を適用します。 ルート スカッシュは NFS の管理セキュリティ機能であり、クライアント マシンによる NFS サーバーへの未承認のルート レベルのアクセスを防ぎます。 この機能は、信頼されていないクライアントまたは侵害されたクライアントによる操作からユーザー データとシステム設定を保護する上で重要な部分です。
管理者は、特にクライアント マシンが完全に信頼されていないシナリオにおいて、複数のユーザーまたはシステムが NFS 共有にアクセスする環境でルート スカッシュを有効にする必要があります。 ルート スカッシュを使用することで、ルート ユーザーを匿名ユーザーに変換し、クライアント コンピューターが侵害された場合でも、攻撃者はルート特権を利用して NFS サーバー上の重要なファイルにアクセスしたり変更したりできなくなります。
この記事では、NFS Azure ファイル共有のルート スカッシュ設定を構成および変更する方法について説明します。
Azure Files でのルート スカッシュのしくみ
ルート スカッシュは、ルート ユーザーのユーザー ID (UID) とグループ ID (GID) を、サーバー上の匿名ユーザーに属する UID と GID に再マップすることによって機能します。 ファイル システムにアクセスするルート ユーザーは、アクセス許可が制限された匿名の特権のないユーザーとグループに自動的に変換されます。
ルート スカッシュは NFS の既定の動作ですが、NFS Azure ファイル共有を作成するときの既定のオプションではありません。 ファイル共有でルート スカッシュを明示的に有効にする必要があります。 有効化は、NFS Azure ファイル共有を作成する場合、またはそれ以降に行うことができます。
ルート スカッシュ設定
3つの root squash 設定から選択します。
-
ルート スカッシュなし: ルート スカッシュをオフにします。 このオプションは、主に、ワークロードのドキュメントで指定されているディスクレス クライアントまたはワークロードに役立ちます。 この設定は、新しい NFS Azure ファイル共有を作成するときの既定値です。
-
すべてスカッシュ: すべての UID と GID を匿名ユーザーにマップします。 この設定は、すべてのクライアントによる読み取り専用アクセスを必要とする共有に使用します。
-
ルート スカッシュ: UID/GID 0 (ルート) からの要求を匿名 UID/GID にマップします。 この設定は、ユーザー ビンやグループ スタッフなど、同等に機密性の高いその他の UID や GID には適用されません。
次の表では、特定のルート スカッシュ オプションを構成するときにサーバーから観察される UID の動作を示します。
|
オプション |
クライアント UID |
サーバー UID |
| root_squash |
0 |
65534 |
| root_squash |
1000 |
1000 |
| no_root_squash |
0 |
0 |
| no_root_squash |
1000 |
1000 |
| all_squash |
0 |
65534 |
| all_squash |
1000 |
65534 |
Microsoft.Storage リソース プロバイダーを使用する Azure クラシック ファイル共有では、Azure portal、Azure PowerShell、または Azure CLI を使用してルート スカッシュ設定を構成できます。
Azure ポータルにサインインし、NFS Azure ファイル共有を含む FileStorage ストレージ アカウントに移動します。
サービス メニューの [ データ ストレージ] で、[ クラシック ファイル共有] を選択します。
ルート スカッシュ設定を変更する対象のファイル共有を選択します。
サービス メニューで [プロパティ] を選択します。 次に、必要に応じて [ルート スカッシュ] 設定を切り替えます。
[保存] を選択して、ルート スカッシュ値を更新します。
Azure にサインインしてサブスクリプションを選択します。
Connect-AzAccount
Select-AzSubscription -SubscriptionId "<your-subscription-id>"
ファイル共有でルート スカッシュを有効にするには、次のコマンドを実行します。
<resource-group-name>、<storage-account-name>、および <file-share-name> を独自の値に置き換えます。
Update-AzRmStorageShare `
-ResourceGroupName <resource-group-name> `
-StorageAccountName <storage-account-name> `
-Name <file-share-name> `
-RootSquash RootSquash
ファイル共有のルート スカッシュを無効にするには、次のコマンドを実行します。
<resource-group-name>、<storage-account-name>、および <file-share-name> を独自の値に置き換えます。
Update-AzRmStorageShare `
-ResourceGroupName <resource-group-name> `
-StorageAccountName <storage-account-name> `
-Name <file-share-name> `
-RootSquash NoRootSquash
すべてのユーザーに対してスカッシュを強制するには、次のコマンドを実行して、すべてのユーザー ID を匿名にマップします。
<resource-group-name>、<storage-account-name>、および <file-share-name> を独自の値に置き換えます。
Update-AzRmStorageShare `
-ResourceGroupName <resource-group-name> `
-StorageAccountName <storage-account-name> `
-Name <file-share-name> `
-RootSquash AllSquash
ファイル共有のルート スカッシュ プロパティを表示するには、次のコマンドを実行します。
<resource-group-name>、<storage-account-name>、および <file-share-name> を独自の値に置き換えます。
Get-AzRmStorageShare `
-ResourceGroupName <resource-group-name> `
-StorageAccountName <storage-account-name> `
-Name <file-share-name> | fl -Property ResourceGroupName, StorageAccountName, Name, QuotaGiB,AccessTier,EnabledProtocols,RootSquash
Azure にサインインしてサブスクリプションを設定します。
az login
az account set --subscription "<your-subscription-id>"
ファイル共有でルート スカッシュを有効にするには、次のコマンドを実行します。
<resource-group-name>、<storage-account-name>、および <file-share-name> を独自の値に置き換えます。
az storage share-rm update \
--resource-group <resource-group-name> \
--storage-account <storage-account-name> \
--name <file-share-name> \
--root-squash RootSquash
ファイル共有のルート スカッシュを無効にするには、次のコマンドを実行します。
<resource-group-name>、<storage-account-name>、および <file-share-name> を独自の値に置き換えます。
az storage share-rm update \
--resource-group <resource-group-name> \
--storage-account <storage-account-name> \
--name <file-share-name> \
--root-squash NoRootSquash
すべてのユーザーに対してスカッシュを強制するには、次のコマンドを実行して、すべてのユーザー ID を匿名にマップします。
<resource-group-name>、<storage-account-name>、および <file-share-name> を独自の値に置き換えます。
az storage share-rm update \
--resource-group <resource-group-name> \
--storage-account <storage-account-name> \
--name <file-share-name> \
--root-squash AllSquash
ファイル共有のルート スカッシュ プロパティを表示するには、次のコマンドを実行します。
<resource-group-name>、<storage-account-name>、および <file-share-name> を独自の値に置き換えます。
az storage share-rm show \
--resource-group <resource-group-name> \
--storage-account <storage-account-name> \
--name <file-share-name>
Microsoft.FileShares リソース プロバイダーを使用する Azure ファイル共有では、Azure portal、Azure PowerShell、または Azure CLI を使用して root squash 設定を構成できます。
Azure ポータルにサインインし、ファイル共有に移動します。
サービス メニューの [設定] で [構成] を選びます。
必要に応じて、root squash 設定のオン/オフを切り替えます。
[保存] を選択して、ルート スカッシュ値を更新します。
ファイル共有 (Microsoft.FileShares) の root squash 設定を変更するには、Azure PowerShell を使用して、次のコマンドを実行します。 変数を実際の値に置き換えます。
-RootSquashに使用できる値は、AllSquash、NoRootSquash、およびRootSquashです。
# To learn more about the Az.FileShare module, see https://www.powershellgallery.com/packages/Az.FileShare/1.0.0
Install-Module -Name Az.FileShare -Repository PSGallery -RequiredVersion 1.0.0
$resourceGroup = "<your-resource-group-name>"
$shareName = "<your-file-share-name>"
Update-AzFileShare -ResourceName $shareName -ResourceGroupName $resourceGroup -RootSquash RootSquash
Azure CLI を使用してファイル共有 (Microsoft.FileShares) のルート スカッシュ設定を変更するには、次のコマンドを実行します。
--root-squashに使用できる値は、AllSquash、NoRootSquash、およびRootSquashです。
# Install the fileshare extension
az extension add --name fileshare
# Specify your values
shareName="<your-file-share-name>"
resourceGroup="<your-resource-group-name>"
# Update the root squash setting
az fileshare update --name $shareName --resource-group $resourceGroup --root-squash RootSquash
関連項目