この記事では、NFS Azure ファイル共有の転送中のデータを暗号化する方法について説明します。
Von Bedeutung
- 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 ウォッチドッグ: AZNFS パッケージはバックグラウンド ジョブを実行します。これにより、stunnel プロセスが実行され、終了したトンネルが自動的に再起動され、関連付けられているすべての NFS マウントがマウント解除された後に未使用のプロセスがクリーンアップされます。
サポートされているリージョン
Azure Premium Files をサポートするすべてのリージョンで、転送中の暗号化がサポートされるようになりました。
プレビューの利用登録
NFS 共有の転送中の暗号化を有効にするには、プレビュー機能に登録する必要があります。
プレビュー機能の下にある "Azure NFS ファイル共有の転送中の暗号化" を検索して、Azure portal 経由で登録します。
詳細については、「 Azure サブスクリプションでプレビュー機能を設定する」を参照してください。
転送中の暗号化を適用する
ストレージ アカウントで [安全な転送が必要] 設定を有効にすると、ストレージ アカウント内の NFS ボリュームに対するすべてのマウントが確実に暗号化されます。
ただし、同じストレージ アカウント上の TLS 接続と TLS 以外の接続の間で柔軟性を維持したいユーザーの場合は、 セキュリティで保護された転送 設定をオフのままにする必要があります。
NFS 共有の転送中のデータを暗号化する方法 (プレビュー)
転送中のデータを暗号化するには、次の手順に従います。
- 必要な AZNFS マウント ヘルパー パッケージがクライアントにインストールされていることを確認します。
- TLS 暗号化を使用して NFS ファイル共有をマウントします。
- データの暗号化が成功したことを確認します。
手順 1: AZNFS マウント ヘルパー パッケージのインストールを確認する
AZNFS マウント ヘルパー パッケージがクライアントにインストールされているかどうかを確認するには、次のコマンドを実行します。
systemctl is-active --quiet aznfswatchdog && echo -e "\nAZNFS mounthelper is installed! \n"
パッケージがインストールされている場合は、 AZNFS mounthelper is installed!
というメッセージが表示されます。 インストールされていない場合は、適切なコマンドを使用して、クライアントに AZNFS マウント ヘルパー パッケージをインストールする必要があります。
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
Von Bedeutung
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>
- 次のコマンドレットを使用して 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 China Cloud の場合: 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 でキャプチャを開くと、ペイロードは読み取り可能なテキストではなく "アプリケーション データ" として表示されます。
注
仮想マシンから同じサーバー エンドポイントへのすべてのトラフィックは、1 つの接続を使用します。 AZNFS マウント ヘルパーを使用すると、そのサーバーに共有をマウントするときに、TLS 構成と TLS 以外の構成を混在させないようにすることができます。 この規則は、同じストレージ アカウントの共有と、同じ IP アドレスに解決される異なるストレージ アカウントの共有に適用されます。
トラブルシューティング
TLS (notls) 以外のマウント操作は 、同じサーバーへの以前 の TLS で暗号化された マウントが正常に完了する前に終了した場合に失敗する可能性があります。 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