第53回
火傷をしないために:Azureのネットワークとファイアウォールでよくある構成不備の特定と修正
Varonis Systems, Inc. 執筆
私どもVaronis Systems, Inc (NASDAQ: VRNS) は、データセキュリティと分析の先駆者で、データ保護、脅威の検出と対応、およびコンプライアンスに特化したソフトウェアを開発しています。このコラムでは、サイバーセキュリティ、プライバシー、データ保護についての最新のトレンドや知見、分析情報、事例などを皆様にご紹介していきたいと考えております。
第53回目となる今回は、「火傷をしないために:Azureのネットワークとファイアウォールでよくある構成不備の特定と修正」と題して、機密性の高いデータやリソースを公開する可能性のあるAzureネットアークアクセス制御で見られるさまざまなニュアンスと一般的な構成不備を探る、Coby Abrams(Varonisのクラウドセキュリティ研究者)によるブログ記事をご紹介いたします。
Azureのネットワークは堅牢な機能を提供し、多くのセキュリティ機能を備え、複雑なワークフローとテナント間のコラボレーションを可能にしています。しかし、利用可能な機能が多岐にわたるため、Azureのネットワークが圧倒的に困難に思える場合があります。
IT部門はネットワークの目標を達成し、さまざまなモデルを導入し、複雑なリソースの組み合わせを管理する必要があります。こうした課題を考えると、業務が多忙になって、特定のセキュリティリスクが見過ごされてしまうのも無理はありません。
この記事では、機密性の高いデータやリソースを公開する可能性のあるAzureネットアークアクセス制御で見られるさまざまなニュアンスと一般的な構成不備を探ります。
Azure Firewall、リソースファイアウォール、ネットワークセキュリティグループ (NSG)
ネットワークアクセス制御は数多く存在します。これらの制御は一見似ているように思えるかも知れませんが、それぞれに特定の用途があり、ます期待通りではない振る舞いをすることがあります。
Azure Firewall
Azure Firewallは従来の物理的なファイアウォールと同様な完全にステートフルなファイアウォールで、脅威インテリジェンスベースのフィルタリング、ネットワークアドレス変換 (NAT) 、インターネットアクセスフィルタリングなどを実行できます。
Azure Firewallをデプロイする際、ユーザーは、高度な脅威保護が含まれない最低レベルのベーシックから、すべての機能が含まれる最高レベルのプレミアムまで、3つの異なるSKUから選択できます。
Azureリソースファイアウォール
多くのAzureリソースにはパブリックエンドポイントがあり、Azureのリソースファイアウォールを使用すると、仮想ネットワークと許可されたIPアドレスのホワイトリストによって、パブリックアクセスを許可したり、アクセスを制限することができます。このアクセス構成は「ファイアウォール」とも呼ばれます。
例えば、ストレージアカウントのインターネットアクセス構成は、「ストレージアカウントファイアウォール」と呼ばれます。各リソースは、パブリックエンドポイントに関して若干異なる振る舞いをし、それぞれの操作モードに微妙な違いがあります。
こうしたバリエーションの1つが、Azure SQL Serverの [Azureサービスおよびリソースにこのサーバーへのアクセスを許可する] 設定で、ストレージアカウントの [信頼されたAzureサービスによるストレージ アカウントへのアクセスを許可する] 設定とは似ているようで全く異なります。
最初のルールは、他のテナントはCloud Shellセッションなど、Azureに属するすべてのIPにデータベースへのアクセスを許可します(基本的にデータベースは公開されます)。2番目のルールでは、信頼されたAzureサービスのサブセットのみがリソースにアクセスできるようになります。
Azureネットワークセキュリティグループ
ネットワークセキュリティグループ (NSG) は、仮想ネットワーク内のAzureリソース間のトラフィックをフィルター処理し、サブネット全体または特定のネットワークインターフェイスに適用できます。これはAzure Firewallとは異なっており、Azure Firewallはフル機能のネットワークアプライアンスであるのに対し、NSGは単純に5タプル情報(送信元、送信元ポート、宛先、宛先ポート、プロトコル)に基づくアクセスルールです。この違いの一例として、Azure Firewallはインターネット ゲートウェイとして使用できますが、NSGは使用できません。
プライベートエンドポイント
プライベートエンドポイントは、Azure Storageのような一般的にパブリックエンドポイントしか持たないリソースが、仮想ネットワーク内のネットワークインターフェイスを持つことを可能にするソリューションを提供します。リソースのプライベートエンドポイントをデプロイすると、仮想ネットワークにネットワークインターフェイスが追加されます。これには、パブリックエンドポイントをインターフェイスの内部IPアドレスにリダイレクトするDNSエントリーが含まれています。
Azureリソースファイアウォール
前述のリソースファイアウォールは、パブリックIPアドレスにのみ影響します。プライベートエンドポイントへのトラフィックには影響しないため、エンドポイントがデプロイされている仮想ネットワークに接続されている任意のエンティティのネットワークアクセスが許可されます。内部ネットワークからのアクセスを制限するには、別の方法を使うことをお勧めします。
Azureネットワークセキュリティグループ (NSG)
プライベートエンドポイントを使用して仮想ネットワーク内に内部エンドポイントを作成した場合、NSGを使用してアクセスを制限することは合理的です。かなりの混乱を引き起こす可能性があるのは、各サブネットの [プライベートエンドポイントのネットワークポリシー] 設定です。この設定は、NSGルールをサブネット内のプライベートエンドポイントに適用するかどうかを指定し、既定ではこれらのルールは適用されません。つまり、ネットワークエンジニアがNSGを使用してVNET内のリソースへのアクセスを制限するために一見セキュリティで保護された環境のように見えるものを設計したとしても、これらのルールが自動的にプライベートエンドポイントを通じてデプロイされたリソースには自動適用されません。これにより、セキュリティ脆弱性が生じる可能性があります。
次のAzureリソースグラフクエリーでは、プライベートエンドポイントにNSGを適用していない問題を抱えたサブネットを持つ仮想ネットワークを検索できます:
resources
| where type =~ "microsoft.network/virtualnetworks"
| extend subnets = properties.subnets
| mv-expand subnets
| project subscription=subscriptionId, resourceGroup=resourceGroup, vnetId=id, vnetName=name, subnetName=subnets.name, nsgsEnforcedOnPrivateEndpoints=subnets.properties.privateEndpointNetworkPolicies
| where nsgsEnforcedOnPrivateEndpoints == "Disabled"
上記の設定をすべての仮想ネットワークで変更して、プライベートエンドポイントにNSGを強制することをお勧めします。ネットワーク管理者は、ポータル経由でストレージアカウントを作成し、そのプロセスの途中でプライベートエンドポイントを追加する際、誤って [プライベートエンドポイントのネットワークポリシー] を既定値にリセットしないように注意する必要があります。ストレージアカウントの作成後にプライベートエンドポイントを追加すると、 [プライベートエンドポイントのネットワークポリシー] 設定を個別に選択できるため、この方法をおすすめします。
ストレージアカウントのネットワーク設定の不正使用
Azure Storageアカウントは、重要なアプリケーションとワークフローのデータを保存し、アクセスするために不可欠です。そのため、ストレージアカウントを保護しながら、さまざまなネットワーク設定と可能性を利用できるようにする必要があります。ただし、ネットワーク設定の柔軟性により、時として潜在的な脆弱性や攻撃ベクトルが生じる可能性があります。
Azure StorageアカウントNFS
ネットワークファイルシステム (NFS) は、Azure Storageアカウントで使用できる分散ファイル共有用のネットワークプロトコルです。プライベートエンドポイント用のNSGは、BLOGストレージがNFSで機能する仕組みから、非常に重要です。BLOGストレージはNFS経由でアクセス可能ですが、これはパブリックエンドポイントを除く仮想ネットワークに制限されています。この機能には承認が含まれていないため、NFS経由のBLOBストレージへのアクセス制御は、プライベートエンドポイントのNSGやサービスエンドポイントの許可された仮想ネットワークなどのネットワークセキュリティ設定によってのみ決定されます。これにより、認証を必要とするストレージコンテナーは、NFSでアクセスすると認証をバイパスしてしまうため、セキュリティ上の問題が生じます。deBLOBストレージに対してNFS 3.0が無効化されていることを確認することをお勧めします。
次のAzureリソースグラフクエリーでは、BLOBストレージに対してNFSが有効になっているストレージアカウントを検索できます:
resources
| where type == "microsoft.storage/storageaccounts"
| where properties['isNfsV3Enabled'] == "true"
| project tenant=tenantId,subscriptionId=subscriptionId, resourceGroup=resourceGroup, storageAccountName=name, storageAccountId=id, isNFSEnabled=properties['isNfsV3Enabled']
Azure Storageファイアウォールとオブジェクトレプリケーション
NSG、リソースファイアウォール、適切な認証方法と設定を使用してストレージアカウントへのネットワークアクセスを保護していても、Azure Storage Account Contributorロールを持つユーザーは、任意のIPアドレスからストレージアカウント内のすべてのデータにアクセスすることができます。これは、ネットワーク設定を変更することなく実行できるため、検出が困難です。どうやって?オブジェクトレプリケーションを使用します。
オブジェクトレプリケーションがオブジェクトを別のストレージアカウントにレプリケーションするように設定されている場合、このアカウントが同じテナント内にあるか、テナントを跨いだレプリケーションであるかにかかわらず、既存のネットワークレベルのルールとアクセスレベルのルールはレプリケーションプロセスに影響しません。これはつまり、Storage Account Contributorロールを持つ攻撃者は、テナント間のオブジェクトレプリケーションを構成して、アカウント内のすべての既存データと新規データにアクセスできるということです。
必要な権限を持つ攻撃者は、テナント間レプリケーションを有効にし、自分がコントロールするストレージアカウントへのオブジェクトレプリケーションを構成することにより、この機能を悪用することができます。可能であれば、テナント間レプリケーションを無効にし、できない場合には、送信元アカウントと宛先アカウントの両方に同様のレベルの保護が設定されていることを確認してください。次のAzureリソースグラフクエリーでは、テナント間レプリケーションが有効になっているストレージアカウントを一覧表示できます:
resources
| where type == 'microsoft.storage/storageaccounts'
| where properties.allowCrossTenantReplication == 'true'
| project tenant=tenantId,subscriptionId=subscriptionId, resourceGroup=resourceGroup, storageAccountName=name, storageAccountId=id, isCrossTenantReplicationEnabled=properties.allowCrossTenantReplication
攻撃者がアクセス権を取得する別の方法は、パブリックストレージアカウントやアクセス許可を持つアカウントにオブジェクトを複製することです。これは、次のPowerShellスクリプトで検出でき、オブジェクトレプリケーションポリシーと、宛先コンテナーが外部サブスクリプションまたはパブリックコンテナーのどちらにあるかを一覧表示します。
$Subscriptions = Get-AzSubscription | ForEach-Object { $_.id }
$ORPolicies = Get-AzStorageAccount | ForEach-Object{ Get-AzStorageObjectReplicationPolicy -ResourceGroupName $_.ResourceGroupName -StorageAccountName $_.StorageAccountName}
foreach ($Policy in $ORPolicies) {
foreach ($Rule in $Policy.Rules) {
$destContainer = Get-AzResource -ResourceId ($Policy.DestinationAccount + "/blobServices/default/containers/" + $Rule.DestinationContainer) -ErrorAction SilentlyContinue
$Custom = [pscustomobject]@{
SourceStorageAccount = $Policy.SourceAccount
SourceContainer = $Rule.SourceContainer
DestinationStorageAccount = $Policy.DestinationAccount
DestinationContainer = $Rule.DestinationContainer
IsToExternalTenant = ($Subscriptions -contains $Policy.DestinationAccount.split('/')[2])
IsPublicAccessEnabledOnDest = $destContainer.Properties.publicAccess
}
$Custom | Format-Table
}
}
まとめ
Azureのさまざまなネットワーク設定が、リソースアクセスに対して、特定、あるいは予期せぬ方法で影響を与えることを紹介しました。
デプロイ時に、これらのネットワーク設定が環境とデータに与えるセキュリティ上の影響を理解することが重要です。
環境を監視し、実効データリソースアクセス権を計算することができるセキュリティプラットフォームを使用すると、データの安全を確保することができます。
ブログ著者について
Coby Abrams
Coby AbramsはVaronisのクラウドセキュリティ研究者であり、AzureとIaaSのリサーチ、各種サービスの詳細な概要を専門としています。さまざまな種類のセキュリティリサーチで、5年以上の経験を有しています。
(翻訳:跡部 靖夫)
プロフィール
Varonis Systems, Inc. (NASDAQ: VRNS) はデータセキュリティと分析の先駆者で、データ保護、脅威の検出と対応、およびコンプライアンスに特化したソフトウェアを開発しています。Varonisはデータのアクティビティや境界テレメトリー、ユーザーの振る舞いを分析することにより企業のデータを保護し、機密性の高いデータのロックダウンにより事故を防ぎ、また、自動化によりセキュアな状態を効率的に維持します。
Webサイト:Varonis Systems, Inc.
- 第53回 火傷をしないために:Azureのネットワークとファイアウォールでよくある構成不備の特定と修正
- 第52回 データの発見と分類:データのスキャン方法の重要性
- 第51回 クラウドセキュリティの問題を発見して修正するAzure Access Graphのご紹介
- 第50回 VaronisがCyralを買収、データベースアクティビティ監視を刷新
- 第49回 Varonis Data Lifecycle Automationによるデータガバナンスの合理化
- 第48回 クラウドセキュリティとは?
- 第47回 クラウドガバナンスを理解するための包括的なガイド
- 第46回 役割ベースのアクセス制御 (RBAC) とは?
- 第45回 データセキュリティ態勢管理 (DSPM): 最高情報セキュリティ責任者 (CISO) のためのベストプラクティスガイド
- 第44回 パラダイム転換:データセキュリティが遂に中心的な役割を果たすようになった理由
- 第43回 AWSのS3バケットを狙うランサムウェア:攻撃者による暗号化を防止する方法
- 第42回 DeepSeekを見つける: シャドゥAIの見つけ方、止め方
- 第41回 データセキュリティとインシデント対応を変革するVaronisのAthena AI
- 第40回 IDがデータセキュリティにおける最大の死角となってしまっている理由
- 第39回 Microsoft 365の新機能「組織メッセージ」の潜在的なリスク
- 第38回 サイバーセキュリティ啓発のヒント10選:積極的な安全確保
- 第37回 古いデータを効率的にアーカイブするための4つのポイント
- 第36回 Varonis for ServiceNowのご紹介
- 第35回 CISOの秘密: 2025年に向けた究極のセキュリティ計画
- 第34回 クラウドセキュリティの問題を発見して修正するAWS Access Graphのご紹介
- 第33回 Varonis for Google Cloudのご紹介
- 第32回 Microsoft 365 CopilotへのNIST CSF 2.0の適用
- 第31回 NISTサイバーセキュリティフレームワーク 2.0を紐解く
- 第30回 データセキュリティ最前線: Varonisのいま(2024年10月)
- 第29回 DSPMを利用してシャドーデータベースを見つける方法
- 第28回 サプライチェーン攻撃への対応準備はできていますか?—サプライチェーンリスク管理が不可欠である理由
- 第27回 クラウドの裂け目:大規模学習モデル (LLM) リスクから身を守るには
- 第26回 クラウドの構成ドリフトを防ぐには
- 第25回 データ漏洩に繋がるAWSの構成不備
- 第24回 データ分類製品購入ガイド: データ分類ソリューションの選び方
- 第23回 クラウド領域のデータセキュリティ:DSPMの主な活用方法
- 第22回 米国証券取引委員会(SEC)の新サイバー開示ガイドラインが意味するもの
- 第21回 対談:悪意のある(非)内部関係者
- 第20回 欧州連合人工知能法(EU AI法):その内容と重要ポイント
- 第19回 UEBAとは?ユーザーとエンティティーの振る舞い分析 (UEBA) の完全ガイド
- 第18回 対談:ガバナンス、リスク管理、コンプライアンス (GRC) の原理
- 第17回 クラウドセキュリティプログラムを一から構築するには
- 第16回 Snowflake内の重要データの安全を確保するには
- 第15回 Salesforceの保護:公開リンク作成を防止
- 第14回 ランサムウェアを防止する方法:基本編
- 第13回 クラウドセキュリティの基本:データセキュリティ態勢管理(DSPM)の自動化
- 第12回 職場でのAI活用:ビジネス活用のための準備と安全確保に関する3つのステップ
- 第11回 DSPM購入ガイド:DSPMソリューションの選び方
- 第10回 ISO 27001 (ISMS) 準拠ガイド: 重要なヒントと洞察
- 第9回 クラウドデータセキュリティの未来:DSPM活用法
- 第8回 組織における責任共有モデルの理解と適用
- 第7回 Varonisを活用してMicrosoft Copilot for Microsoft 365の安全な導入を加速する方法
- 第6回 企業向けCopilotに入力して欲しくないプロンプト6選
- 第5回 DSPMとCSPMソリューションの比較:データセキュリティとクラウドセキュリティを橋渡しするには
- 第4回 生成AIセキュリティ:Microsoft Copilotの安全なロールアウトに向けて
- 第3回 Varonisが内部者の脅威との戦いを支援する3つの方法
- 第2回 VaronisがGigaOmの2023年版レーダーレポート「データセキュリティプラットフォーム」でリーダーに選出
- 第1回 Varonis誕生ものがたり