이 문서에서는 NFS Azure 파일 공유에 대한 전송 중인 데이터를 암호화하는 방법을 설명합니다.
중요합니다
- Azure 파일 공유 NFS v4.1에 대한 전송 중의 암호화는 현재 프리뷰 상태입니다.
- 미리 보기 사용 약관 참조 | Microsoft Azure.
Azure Files NFS v4.1 볼륨은 보안 TLS 연결을 사용하도록 설정하고 MITM 공격을 비롯한 가로채기로부터 전송 중인 데이터를 보호하여 네트워크 보안을 강화합니다.
오픈 소스 TLS 래퍼인 Stunnel을 사용하여 Azure Files는 Kerberos 없이 AES-GCM을 사용하여 강력한 암호화를 사용하여 NFS 클라이언트와 Azure Files 간의 TCP 스트림을 암호화합니다. 이렇게 하면 복잡한 설정 또는 Active Directory와 같은 외부 인증 시스템이 필요하지 않고 데이터 기밀성이 보장됩니다.
AZNFS 유틸리티 패키지는 클라이언트에 Stunnel을 설치하고 설정하여 암호화된 탑재를 간소화합니다. packages.microsoft.com 사용할 수 있는 AZNFS는 암호화된 연결을 통해 NFS 클라이언트 요청을 투명하게 전달하는 로컬 보안 엔드포인트를 만듭니다. 주요 아키텍처 구성 요소는 다음과 같습니다.
AZNFS 탑재 도우미: NFSv4.1 트래픽에 대한 보안 터널 설정의 복잡성을 추상화하는 클라이언트 유틸리티 패키지입니다.
Stunnel 프로세스: 로컬 포트에서 NFS 클라이언트 트래픽을 수신 대기하고 TLS를 통해 안전하게 Azure Files NFS 서버로 전달하는 스토리지 계정별 클라이언트 프로세스입니다.
AZNFS watchdog: AZNFS 패키지는 stunnel 프로세스가 실행 중임을 확인하고, 종료된 터널을 자동으로 재시작하며, 연결된 모든 NFS 탑재가 분리된 후 사용되지 않는 프로세스를 정리하는 백그라운드 작업을 수행합니다.
지원되는 지역
이제 Azure Premium Files를 지원하는 모든 지역에서 전송 중인 암호화를 지원합니다.
미리 보기 등록
NFS 공유에 대한 전송 중 암호화를 사용하도록 설정하려면 미리 보기 기능에 등록해야 합니다.
미리 보기 기능에서 "Azure NFS 파일 공유에 대한 전송 중인 암호화"를 검색하여 Azure Portal을 통해 등록합니다.
자세한 내용은 Azure 구독에서 미리 보기 기능 설정을 참조하세요.
전송 중 암호화 적용
스토리지 계정에서 보안 전송 필수 설정을 사용하도록 설정하면 스토리지 계정의 NFS 볼륨에 대한 모든 탑재가 암호화되도록 할 수 있습니다.
그러나 동일한 스토리지 계정에서 TLS와 비 TLS 연결 간의 유연성을 유지하려는 사용자의 경우 보안 전송 설정은 OFF로 유지되어야 합니다.
NFS 공유에 대한 전송 중인 데이터를 암호화하는 방법(미리 보기)
전송 중인 데이터를 암호화하려면 다음 단계를 수행합니다.
- 필요한 AZNFS 탑재 도우미 패키지가 클라이언트에 설치되어 있는지 확인합니다.
- TLS 암호화를 사용하여 NFS 파일 공유를 탑재합니다.
- 데이터 암호화가 성공했는지 확인합니다.
1단계: AZNFS 탑재 도우미 패키지 설치 확인
AZNFS 탑재 도우미 패키지가 클라이언트에 설치되어 있는지 확인하려면 다음 명령을 실행합니다.
systemctl is-active --quiet aznfswatchdog && echo -e "\nAZNFS mounthelper is installed! \n"
패키지가 설치되어 있으면 메시지가 AZNFS mounthelper is installed!
표시됩니다. 설치되지 않은 경우 적절한 명령을 사용하여 클라이언트에 AZNFS 탑재 도우미 패키지를 설치해야 합니다.
- Ubuntu/Debian
- RHEL/CentOS
- SUSE
- Alma Linux
- 오라클 리눅스
curl -sSL -O https://packages.microsoft.com/config/$(source /etc/os-release && echo "$ID/$VERSION_ID")/packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
rm packages-microsoft-prod.deb
sudo apt-get update
sudo apt-get install aznfs
중요합니다
AZNFS 지원 Linux 배포판은 다음과 같습니다.
- Ubuntu(18.04 LTS, 20.04 LTS, 22.04 LTS, 24.04 LTS)
- Centos7, Centos8
- RedHat7, RedHat8, RedHat9
- Rocky8, Rocky9
- SUSE(SLES 15)
- Oracle Linux
- Alma Linux
2단계: NFS 파일 공유 탑재
TLS 암호화를 사용하여 NFS 파일 공유를 탑재하려면 다음을 수행합니다.
- 클라이언트에서 디렉터리를 만듭니다.
sudo mkdir -p /mount/<storage-account-name>/<share-name>
- 다음 cmdlet을 사용하여 NFS 공유를 탑재합니다.
<storage-account-name>
를 스토리지 계정의 이름으로,<share-name>
를 파일 공유의 이름으로 바꾸십시오.
sudo mount -t aznfs <storage-account-name>.file.core.windows.net:/<storage-account-name>/<share-name> /mount/<storage-account-name>/<share-name> -o vers=4,minorversion=1,sec=sys,nconnect=4
TLS 암호화 없이 NFS 공유를 탑재하려면 다음을 수행합니다.
sudo mount -t aznfs <storage-account-name>.file.core.windows.net:/<storage-account-name>/<share-name> /mount/<storage-account-name>/<share-name> -o vers=4,minorversion=1,sec=sys,nconnect=4,notls
다시 부팅할 때 공유를 자동으로 마운트하려면 /etc/fstab
파일에 다음 줄을 추가하여 항목을 만드십시오.
<storage-account-name>.file.core.windows.net:/<storage-account-name>/<container-name> /nfsdata aznfs defaults,sec=sys,vers=4.1,nolock,proto=tcp,nofail,_netdev 0 2
비고
mount 명령을 실행하기 전에 환경 변수 AZURE_ENDPOINT_OVERRIDE 설정되어 있는지 확인합니다. 이는 비공용 Azure 클라우드 지역에서 파일 공유를 탑재하거나 사용자 지정 DNS 구성을 사용하는 경우에 필요합니다.
예를 들어 Azure 중국 클라우드의 경우: export AZURE_ENDPOINT_OVERRIDE="chinacloudapi.cn"
3단계: 전송 중인 데이터 암호화가 성공했는지 확인
df -Th
명령을 실행합니다.
클라이언트가 외부 네트워크가 아닌 로컬 포트 127.0.0.1을 통해 연결되었음을 나타냅니다. stunnel 프로세스는 NFS 클라이언트에서 들어오는 NFS 트래픽에 대해 127.0.0.1(localhost)에서 수신 대기합니다. 그런 다음 Stunnel은 이 트래픽 을 가로채TLS 를 통해 Azure의 Azure Files NFS 서버로 안전하게 전달합니다.
NFS 서버에 대한 트래픽이 암호화되었는지 확인하려면 명령을 사용하여 tcpdump
포트 2049에서 패킷을 캡처합니다.
sudo tcpdump -i any port 2049 -w nfs_traffic.pcap
Wireshark에서 캡처를 열면 페이로드가 읽을 수 있는 텍스트 대신 "애플리케이션 데이터"로 표시됩니다.
비고
가상 머신에서 동일한 서버 엔드포인트로의 모든 트래픽은 단일 연결을 사용합니다. AZNFS 탑재 도우미는 해당 서버에 공유를 탑재할 때 TLS 및 비 TLS 구성을 혼합할 수 없도록 합니다. 이 규칙은 동일한 스토리지 계정 및 동일한 IP 주소로 확인되는 다른 스토리지 계정의 공유에 적용됩니다.
문제 해결
동일한 서버에 대한 이전 TLS 암호화 탑재가 성공적으로 완료되기 전에 종료된 경우 TLS(notls) 이외의 탑재 작업이 실패할 수 있습니다. aznfswatchdog 서비스는 시간 초과 후 부실 항목을 자동으로 정리하지만 정리가 완료되기 전에 새 비 TLS 탑재를 시도하면 실패할 수 있습니다.
이 문제를 해결하려면 새로 만들기 옵션을 사용하여 공유를 다시 탑재합니다. 그러면 부실 항목이 즉시 지워집니다.
sudo mount -t aznfs <storage-account-name>.file.core.windows.net:/<storage-account-name>/<share-name> /mount/<storage-account-name>/<share-name> -o vers=4,minorversion=1,sec=sys,nconnect=4,notls,clean
탑재 문제가 계속되면 로그 파일에서 자세한 문제 해결 세부 정보를 확인합니다.
-
마운트 도우미 및 감시기 로그:
/opt/microsoft/aznfs/data/aznfs.log
-
Stunnel 로그:
/etc/stunnel/microsoft/aznfs/nfsv4_fileShare/logs