- [アーティクル]
-
-
NFS ファイル共有のアクセス許可は、Azure Files サービスではなく、クライアント OS によって適用されます。 ルート スカッシュは NFS の管理セキュリティ機能であり、クライアント マシンによる NFS サーバーへの未承認のルート レベルのアクセスを防ぎます。 この機能は、信頼されていないクライアントまたは侵害されたクライアントによる操作からユーザー データとシステム設定を保護する上で重要な部分です。
管理者は、特にクライアント マシンが完全に信頼されていないシナリオにおいて、複数のユーザーまたはシステムが NFS 共有にアクセスする環境でルート スカッシュを有効にする必要があります。 ルート スカッシュを使用することで、ルート ユーザーを匿名ユーザーに変換し、クライアント コンピューターが侵害された場合でも、攻撃者はルート特権を利用して NFS サーバー上の重要なファイルにアクセスしたり変更したりできなくなります。
この記事では、NFS Azure ファイル共有のルート スカッシュ設定を構成および変更する方法について説明します。
適用対象
ファイル共有の種類 |
SMB |
NFS |
Standard ファイル共有 (GPv2)、LRS/ZRS |
|
|
Standard ファイル共有 (GPv2)、GRS/GZRS |
|
|
Premium ファイル共有 (FileStorage)、LRS/ZRS |
|
|
Azure Files でのルート スカッシュのしくみ
ルート スカッシュは、ルート ユーザーのユーザー ID (UID) とグループ ID (GID) を、サーバー上の匿名ユーザーに属する UID と GID に再マッピングすることによって機能します。 ファイル システムにアクセスするルート ユーザーは、アクセス許可が制限された匿名の特権のないユーザー/グループに自動的に変換されます。
ルート スカッシュは NFS の既定の動作ですが、NFS Azure ファイル共有を作成するときの既定のオプションではありません。 ファイル共有でルート スカッシュを明示的に有効にする必要があります。 有効化は、NFS Azure ファイル共有を作成する場合、またはそれ以降に行うことができます。
ルート スカッシュ設定
次の 3 つのルート スカッシュ設定から選択できます。
- ルート スカッシュなし: ルート スカッシュをオフにします。 このオプションは、主に、ワークロードのドキュメントで指定されているディスクレス クライアントまたはワークロードに役立ちます。 これは、新しい 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 |
ルート スカッシュ設定は、Azure portal、Azure PowerShell、または Azure CLI を使用して構成できます。
Azure portal にサインインし、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>
関連項目