✔️ 적용 대상: Microsoft.Storage 리소스 공급자를 사용하여 만든 클래식 NFS 파일 공유
✔️ 적용 대상: Microsoft.FileShares 리소스 공급자를 사용하여 만든 NFS 파일 공유
✖️ 적용되지 않음: SMB 파일 공유
클라이언트 운영 체제는 Azure Files 서비스가 아닌 NFS 파일 공유에 대한 권한을 적용합니다. 루트 Squash는 NFS의 관리 보안 기능으로, 클라이언트 컴퓨터가 NFS 서버에 대한 허가되지 않은 루트 수준 액세스를 방지합니다. 이 기능은 신뢰할 수 없거나 손상된 클라이언트가 사용자 데이터와 시스템 설정을 조작하는 것을 방지하는 데 중요한 부분입니다.
관리자는 여러 사용자 또는 시스템이 NFS 공유에 액세스하는 환경, 특히 클라이언트 컴퓨터를 완전히 신뢰할 수 없는 시나리오에서 루트 Squash를 사용하도록 설정해야 합니다. 루트 사용자를 익명 사용자로 변환함으로써 루트 Squash는 클라이언트 컴퓨터가 손상되더라도 공격자가 루트 권한을 악용하여 NFS 서버의 중요한 파일에 액세스하거나 수정할 수 없도록 보장합니다.
이 문서에서는 NFS Azure 파일 공유에 대한 루트 Squash 설정을 구성하고 변경하는 방법을 알아봅니다.
Azure Files에서 루트 Squash가 작동하는 방식
루트 스쿼시는 루트 사용자의 UID(사용자 ID) 및 GID(그룹 ID)를 서버의 익명 사용자에 속한 UID 및 GID로 다시 매핑하여 작동합니다. 파일 시스템에 액세스하는 루트 사용자는 권한이 제한된 익명의 덜 권한이 있는 사용자 및 그룹으로 자동으로 변환됩니다.
루트 Squash는 NFS의 기본 동작이지만 NFS Azure 파일 공유를 만들 때의 기본 옵션은 아닙니다. 파일 공유에서 루트 squash를 명시적으로 사용하도록 설정해야 합니다. NFS Azure 파일 공유를 만들 때나 나중에 이 작업을 수행할 수 있습니다.
루트 Squash 설정
다음 세 가지 루트 스쿼시 설정 중에서 선택합니다.
-
루트 Squash 안 함: 루트 Squash를 끕니다. 이 옵션은 주로 워크로드 설명서에 지정된 대로 디스크 없는 클라이언트나 워크로드에 유용합니다. 이 설정은 새 NFS Azure 파일 공유를 만들 때 기본값입니다.
-
모든 Squash: 모든 UID와 GID를 익명 사용자에게 매핑합니다. 모든 클라이언트에서 읽기 전용 액세스가 필요한 공유에는 이 설정을 사용합니다.
-
루트 Squash: UID/GID 0(루트)의 요청을 익명 UID/GID로 매핑합니다. 이 설정은 사용자 bin 또는 그룹 직원과 같이 똑같이 민감할 수 있는 다른 UID 또는 GID에는 적용되지 않습니다.
다음 표에서는 특정 루트 스쿼시 옵션을 구성할 때 서버에서 관찰되는 UID 동작을 강조 표시합니다.
|
옵션 |
클라이언트 UID |
서버 UID |
| 루트_스쿼시 |
0 |
65534 |
| 루트_스쿼시 |
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 스토리지 계정으로 이동합니다.
서비스 메뉴의 데이터 스토리지에서 클래식 파일 공유를 선택합니다.
루트 스쿼시 설정을 변경할 파일 공유를 선택합니다.
서비스 메뉴에서 속성을 선택합니다. 그런 다음 원하는 대로 루트 Squash 설정을 전환합니다.
저장을 선택하여 루트 Squash 값을 업데이트합니다.
Azure에 로그인 및 구독 선택
Connect-AzAccount
Select-AzSubscription -SubscriptionId "<your-subscription-id>"
파일 공유에서 root squash를 사용하도록 설정하려면 다음 명령을 실행합니다.
<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
파일 공유에서 root squash를 사용하지 않도록 설정하려면 다음 명령을 실행합니다.
<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
모든 사용자에 대해 Squash를 강제로 적용하려면 다음 명령을 실행하여 모든 사용자 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
파일 공유에 대한 루트 Squash 속성을 보려면 다음 명령을 실행합니다.
<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>"
파일 공유에서 root squash를 사용하도록 설정하려면 다음 명령을 실행합니다.
<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
파일 공유에서 root squash를 사용하지 않도록 설정하려면 다음 명령을 실행합니다.
<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
모든 사용자에 대해 Squash를 강제로 적용하려면 다음 명령을 실행하여 모든 사용자 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
파일 공유에 대한 루트 Squash 속성을 보려면 다음 명령을 실행합니다.
<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 포털, Azure PowerShell 또는 Azure CLI를 사용하여 루트 스쿼시 설정을 구성할 수 있습니다.
Azure 포털에 로그인하고 파일 공유로 이동합니다.
서비스 메뉴의 설정에서 구성을 선택합니다.
루트 스쿼시 설정을 원하는 대로 전환합니다.
저장을 선택하여 루트 Squash 값을 업데이트합니다.
파일 공유의 루트 스쿼시 설정을 변경하려면(Microsoft. FileShares)는 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
파일 공유의 루트 스쿼시 설정을 변경하려면(Microsoft. FileShares)는 Azure CLI 사용하여 다음 명령을 실행합니다. 허용되는 값 --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
참고 항목