
個人でWebアプリのホスティングや仮想マシン(Azure VM)の検証、学習用ラボ環境としてMicrosoft Azureを活用しているエンジニアにとって、アカウントの不正侵入やリソースの不正利用は避けて通れない重大なリスクです。
「ある日突然、Azureから身に覚えのない高額な請求アラートが届いた」「ログインしてみると、見知らぬ海外リージョンに高スペックな仮想マシンが乱立され、暗号資産マイニングに悪用されていた」「管理者権限(共同作成者や所有者)に見知らぬ外部アカウントが追加されていた」といった事態は、個人利用であっても実際に発生しています。
Azure環境で不正アクセスの兆候を感じた際、慌てて目についた仮想マシンを削除するだけでは根本的な解決になりません。攻撃者がどのようにテナントへ侵入したのか、バックドアとなる管理者権限が残されていないかを客観的なログから正確に突き止める必要があります。
この記事では、個人でAzureサブスクリプションを運用しているエンジニア向けに、ID基盤である Microsoft Entra ID(旧Azure AD)のサインインログ調査、サブスクリプション全体の操作を記録する Azure アクティビティ ログ(Activity Log)の解析、RBAC(ロール割り当て)の点検、ネットワークセキュリティグループ(NSG)の開放確認、そして Cost Management による異常課金の追跡手順までをステップバイステップで詳しく解説します。
- この記事で行うこと
- 前提条件・対象読者
- 注意点
- 1. Azureにおける不正アクセスの典型手口と調査の全体像
- 2. Microsoft Entra IDのサインインログで不正ログインを特定する
- 3. Azureアクティビティログで不審なリソース変更操作を追跡する
- 4. RBAC(ロールベースアクセス制御)で不審な管理権限・バックドアを点検する
- 5. Azure VMとネットワークセキュリティグループ(NSG)の開放点検
- 6. Microsoft Cost Managementで異常課金を早期検知・分析する
- 7. Azure調査で確認できること・確認できないこと
- 8. 不正アクセスが疑われる場合の緊急初動対応チェックリスト
- よくある質問(FAQ)
- まとめ
- 次に読むおすすめ記事
- 参考情報
この記事で行うこと
- Azureにおける不正アクセスの典型的な侵入経路と被害パターンを把握する
- Microsoft Entra IDのサインインログから不審な接続元(IPアドレス、海外地域、失敗履歴)を特定する
- Azureアクティビティログ(Activity Log)を活用して、攻撃者が実行したリソース作成・改ざん操作を追跡する
- サブスクリプションおよびリソースグループのRBAC(ロール割り当て)を監査し、バックドアアカウントを摘出する
- 仮想マシン(Azure VM)のネットワークセキュリティグループ(NSG)における危険なポート開放を点検する
- Microsoft Cost Managementの日別コスト分析機能を使って異常課金を早期発見する
- Entra ID Freeの「7日間の壁」などログ保持期間の仕様と、OS内部調査の限界を理解する
- 不正アクセスが確認された際に行うべき緊急初動対応チェックリストを実行できるようにする
前提条件・対象読者
- Azure Portal(ポータル画面)にサインインできる個人開発者・エンジニア
- Azure VMやApp Service、Storage AccountなどのAzureリソースを個人で運用している方
- アカウント乗っ取りや身に覚えのない課金が発生した際の調査手順を体系的に理解したい方
- 対象サービス:Microsoft Entra ID、Azure Monitor(アクティビティログ)、Azure Virtual Machines、Azure RBAC、Microsoft Cost Management
- 最終確認日:2026年11月
注意点
Microsoft Entra ID Freeのサインインログ保持期間はわずか7日間
個人のAzure利用で多く使われている無料の Microsoft Entra ID Free エディションでは、サインインログおよび監査ログの保持期間が「7日間」に制限されています(有料のP1/P2ライセンスでは30日間)。侵害が発生してから1週間以上経過して気付いた場合、ポータル上のサインインログは消去されており、過去に遡って閲覧することはできません。長期保存が必要な場合は、事前に診断設定で Log Analytics ワークスペース やストレージアカウントへログを転送しておく必要があります。
アクティビティログの標準保持期間は90日間
サブスクリプションレベルの操作を記録する「Azure アクティビティ ログ」は、追加料金なしで過去90日間保持されます。こちらは90日以内であればポータルから自由に検索できますが、90日を過ぎると自動的に消去されます。
仮想マシンのOS内部コマンドはアクティビティログでは記録されない
アクティビティログに記録されるのは「Azureのリソース管理プレーンに対するAPI操作(仮想マシンの作成、起動、停止、ネットワーク変更など)」です。仮想マシン(Azure VM)のLinuxやWindowsにSSHやRDPで直接ログインした侵入者が、OS内部で実行したシェルコマンドや設置したマルウェアファイルは、アクティビティログ単体では記録されません。OS内部の調査には仮想マシン内の認証ログ(/var/log/auth.log や Windowsイベントログ)の確認が必要です。
1. Azureにおける不正アクセスの典型手口と調査の全体像
Azure環境における不正アクセスは、ID管理層(Entra ID)とリソース管理層(Azureサブスクリプション)の2つのレイヤーを標的にして行われます。
想定される4大侵害パターン
パターン1:Microsoftアカウント・Entra IDの資格情報奪取
フィッシング詐欺、パスワードの使い回し、またはローカルPCのマルウェア感染(インフォスティーラー)により、Azure Portalへのログイン情報が漏洩するケースです。多要素認証(MFA)が設定されていない場合、海外の不審なIPアドレスから即座にログインされます。
パターン2:サブスクリプション管理者権限の奪取とバックドア作成
侵入に成功した攻撃者は、発覚後もアクセスを維持するために、サブスクリプションの アクセス制御 (IAM) を操作し、攻撃者が用意した別の外部アカウントに 所有者(Owner)や 共同作成者(Contributor)ロールを勝手に割り当てます。
パターン3:高スペックVMの乱立と暗号資産マイニング
攻撃者の主目的の多くは、クラウドリソースを悪用した金銭獲得です。GPU搭載VM(NCシリーズなど)や高CPUインスタンスを世界各地のリージョンで上限いっぱいまで起動し、暗号資産マイニングや他者へのDDoS攻撃の踏み台として利用します。
パターン4:Storageアカウントのアクセスキー窃取とデータ持ち出し
Azure Storageの接続文字列やアクセスキーがGitHubの公開リポジトリ等から漏洩し、Blobストレージ内のバックアップデータや機密ファイルが外部へ不正にダウンロードされるケースです。
【Azure不正アクセス調査の全体フロー】
ステップ1: 被害の全体像とコスト急増の把握(Microsoft Cost Management)
│
ステップ2: ID侵入経路の特定(Microsoft Entra ID サインインログ)
│ ├─ 対話型サインイン(海外IP、パスワード総当たり、MFA失敗)
│ └─ 非対話型・サービスプリンシパルサインイン
│
ステップ3: 管理操作の全件追跡(Azure アクティビティログ)
│ ├─ 仮想マシンの作成・起動操作(Microsoft.Compute/virtualMachines)
│ ├─ ロール割り当ての改ざん(Microsoft.Authorization/roleAssignments)
│ └─ ネットワーク開放(Microsoft.Network/networkSecurityGroups)
│
ステップ4: 権限とネットワークの点検(RBAC監査 / NSGインバウンド規則)
│
ステップ5: 侵害の封じ込めと修復(セッション失効・ロール剥奪・サポート連絡)
2. Microsoft Entra IDのサインインログで不正ログインを特定する
攻撃者がどのようにAzure環境へ足場を築いたのかを解明するため、まずはID基盤であるMicrosoft Entra IDのサインインログを点検します。
サインインログ画面の開き方
- Azure Portalにサインインし、上部の検索バーに
Microsoft Entra IDと入力して選択します。 - 左側のナビゲーションメニューにある
監視セクションからサインイン ログ(Sign-in logs)を開きます。 - 画面上部にあるタブから、調査目的に応じて表示を切り替えます。
【サインインログの主なタブ分類】
- ユーザーの対話型サインイン:人間がブラウザ等でID・パスワードやMFAを入力してサインインしたログ
- ユーザーの非対話型サインイン:バックグラウンドで発行済みトークンを用いて認証されたログ
- サービス プリンシパルのサインイン:スクリプトやアプリ登録による認証ログ
- マネージド ID のサインイン:Azureリソース間で自動管理されるIDの認証ログ
調査で注目すべき重要チェック項目
送信元IPアドレスと場所(国・地域)
普段アクセスしている日本の都道府県やプロバイダ以外の接続元がないか確認します。特にロシア、中国、東欧、南米などの海外IPアドレスからのサインインが記録されている場合は極めて危険です。
サインインの状態(成功・失敗)
成功(Success):見覚えのない海外IPからの成功ログがある場合、パスワードとMFAを突破されて完全に乗っ取られています。失敗(Failure):短時間の間に同一ユーザーに対して大量の失敗ログが記録されている場合、パスワードスプレー攻撃やブルートフォース攻撃を受けています。
クライアントアプリとデバイス情報
普段使用していないブラウザ(Firefoxや未知のユーザーエージェント)、または Azure CLI や Azure PowerShell、Python SDK などによる直接のAPIアクセスが記録されていないか確認します。
エラーコードの意味
ログの詳細をクリックすると、サインイン失敗の具体的なエラーコードが表示されます。
【代表的なサインインエラーコード】
- 50126:ユーザー名またはパスワードが無効(攻撃者が推測パスワードを入力した形跡)
- 50074:MFA(多要素認証)が要求されたが完了しなかった(パスワードは知られているがMFAで防いだ状態)
- 53003:条件付きアクセスポリシーによってアクセスがブロックされた
3. Azureアクティビティログで不審なリソース変更操作を追跡する
攻撃者がAzure PortalやCLI経由でサブスクリプション内にログインした後、具体的に何を行ったのかを追跡するのが「Azure アクティビティ ログ(Activity Log)」です。
アクティビティログ画面の開き方
- Azure Portal上部の検索バーに
アクティビティ ログ(Activity log)と入力して開きます。 - もしくは、調査対象の
サブスクリプションを開き、左側メニューのアクティビティ ログを選択します。 - 画面上部のフィルターバーを活用して、調査範囲を絞り込みます。
【アクティビティログの主なフィルター項目】
- 期間(Timespan):直近24時間、過去7日間、過去30日間、またはカスタム範囲
- イベント開始者(Event initiated by):特定のUPN(メールアドレス)やサービスプリンシパル
- 操作名(Operation name):実行されたAPIアクション
- リソースグループ(Resource group):操作された対象グループ
- 状態(Status):Failed(失敗)または Succeeded(成功)
警戒すべき重要操作名(Operation Name)一覧
アクティビティログで以下の操作名が記録されている場合、侵害行為の直接的な痕跡である可能性が高いです。
仮想マシンの乱造・マイニング関連の操作
Create or Update Virtual Machine(Microsoft.Compute/virtualMachines/write):新しい仮想マシンが作成された、または構成が変更された履歴Start Virtual Machine(Microsoft.Compute/virtualMachines/start/action):停止していた仮想マシンが起動された履歴Create or Update Deployment(Microsoft.Resources/deployments/write):ARMテンプレートやBicepを用いてリソースが一括作成された履歴
権限昇格・バックドア設置関連の操作
Create role assignment(Microsoft.Authorization/roleAssignments/write):新しいロール割り当てが追加された履歴。攻撃者が自身の別アカウントに権限を与えた決定的な証拠となります。Delete role assignment(Microsoft.Authorization/roleAssignments/delete):正規の管理者の権限が剥奪された履歴
ネットワーク防御無効化関連の操作
Create or Update Network Security Group(Microsoft.Network/networkSecurityGroups/write):NSGのインバウンド規則が変更され、全開放された履歴Create or Update Security Rule(Microsoft.Network/networkSecurityGroups/securityRules/write):個別セキュリティルールの追加・変更履歴
Azure CLIを使用したアクティビティログの抽出
ポータル画面だけでなく、Azure CLIの az monitor activity-log list コマンドを使用することで、直近の不審な管理操作を素早くターミナルから確認できます。
# 直近7日間に実行された仮想マシン作成操作を一覧表示する例
az monitor activity-log list \
--start-time $(date -u -d '7 days ago' '+%Y-%m-%dT%H:%M:%SZ') \
--query "[?contains(operationName.value, 'virtualMachines/write')].[eventTimestamp,caller,resourceGroup,status.value]" \
--output table
# ロール割り当ての追加(権限昇格)イベントを抽出する例
az monitor activity-log list \
--start-time $(date -u -d '30 days ago' '+%Y-%m-%dT%H:%M:%SZ') \
--query "[?contains(operationName.value, 'roleAssignments/write')].[eventTimestamp,caller,submissionTimestamp,status.value]" \
--output table
4. RBAC(ロールベースアクセス制御)で不審な管理権限・バックドアを点検する
侵害されたAzure環境でもっとも警戒すべきは、管理者の知らない間に「バックドア権限」が埋め込まれていることです。
ロール割り当ての点検手順
- Azure Portalで対象の
サブスクリプションを開きます。 - 左側メニューから
アクセス制御 (IAM)を選択します。 - 上部の
ロールの割り当て(Role assignments)タブをクリックします。 - サブスクリプション全体に付与されているユーザー、グループ、サービスプリンシパルの一覧を確認します。
特に警戒すべきロールと点検ポイント
所有者(Owner)
リソースの全権限に加えて、他のユーザーに対するアクセス権の付与・剥奪ができる最強の特権です。自分自身のアカウント以外に見覚えのないメールアドレスや外部ゲスト(#EXT#)が登録されていないか厳重に確認します。
共同作成者(Contributor)
リソースの作成・削除・変更を含むすべての操作が可能な権限です。マイニングVMの作成やストレージの改ざんを行うには十分な権限であるため、見覚えのないユーザーやアプリが存在しないか確認します。
ユーザー アクセス管理者(User Access Administrator)
リソースそのものの操作はできなくても、他者に対するロール割り当てを操作できる権限です。裏でこっそり特権を追加するために悪用されるケースがあります。
サービスプリンシパル(アプリ登録)の点検
人間のアカウントだけでなく、アプリの登録(Service Principals)に身に覚えのない自動化アプリケーションが作成され、サブスクリプションのロールを付与されていないかも合わせて確認します。
5. Azure VMとネットワークセキュリティグループ(NSG)の開放点検
攻撃者が作成した不正な仮想マシンや、既存の正規VMが踏み台にされていないか、ネットワークセキュリティグループ(NSG)のインバウンド規則を点検します。
全リソースグループのVM確認
普段利用していないリソースグループやリージョン(例: 米国東部、西欧、東南アジアなど)に、見知らぬ仮想マシンが稼働していないか確認します。
- ポータル上部の検索バーに
仮想マシン(Virtual machines)と入力して一覧を開きます。 - フィルターの
サブスクリプションをすべて選択し、全リージョンのVMを一覧表示します。 実行中(Running)状態の見覚えのないインスタンス、特に高スペックなGPU搭載インスタンス(Standard_NC...等)が存在しないか点検します。
NSGのインバウンド規則点検
仮想マシンに紐付けられているネットワークセキュリティグループ(NSG)を開き、受信セキュリティ規則(Inbound security rules)を確認します。
【危険なNSG受信規則の例】
- ポート22(SSH):送信元(Source)が `Any` または `Internet`、アクションが `Allow`
- ポート3389(RDP):送信元が `Any` または `Internet`、アクションが `Allow`
- 送信元ポート・宛先ポートが共に `*`(全通信許可)となっている規則
インターネット(Internet や *)からSSHやRDPを直接受け付ける設定は、全世界のボットネットから24時間365日の総当たり攻撃に晒されます。管理アクセスは Azure Bastion や Just-in-Time(JIT)VMアクセス を使用するか、自宅の固定IPアドレスに限定してください。
6. Microsoft Cost Managementで異常課金を早期検知・分析する
個人運用のAzureで不正アクセスが発生した場合、真っ先に被害の規模が現れるのが課金情報です。
コスト分析画面での日別スパイク特定
- Azure Portalで
コストの管理と請求(Cost Management + Billing)を開きます。 - 左側メニューから
コスト分析(Cost analysis)を選択します。 - ビューを
リソース別のコストまたは日別コスト(Daily costs)に切り替えます。 - 直近30日間のグラフを表示し、通常時は1日数十円〜数百円の推移であるにもかかわらず、突発的に数千円〜数万円に跳ね上がっている日がないか確認します。
- スパイクが発生している日付をクリックし、どのリソースグループ、どのサービス(Virtual Machines、Storage、帯域幅など)が課金の原因であるかを特定します。
予算(Budgets)アラートの事前設定
想定外の課金を数日以内に検知できるよう、予算アラートを設定しておくことが不可欠です。
コストの管理メニューから予算(Budgets)を開きます。追加をクリックし、個人の月間許容額(例: 1,000円、3,000円など)を入力します。- アラート条件として「予算の50%、80%、100%に達した際」に自身のメールアドレスへ通知を送信するように構成します。
7. Azure調査で確認できること・確認できないこと
Azureの標準監視機能がカバーする範囲と、カバーできない範囲を正しく区別して理解することが重要です。
【Azure監査ログの調査範囲と限界】
┌────────────────────────────────────────────────────────┐
│ Entra ID & アクティビティログで確認できる領域 │
│ ├─ Azure Portalへのログイン試行(成功・失敗・IP・国) │
│ ├─ ロール割り当ての追加・削除(所有者・共同作成者等) │
│ ├─ 仮想マシンの作成・起動・停止・削除 │
│ ├─ NSGルールの追加・開放・変更 │
│ └─ ストレージアカウントの作成・削除 │
└────────────────────────────────────────────────────────┘
▲
│ 調査の境界線
▼
┌────────────────────────────────────────────────────────┐
│ 標準ログ単体では確認できない領域(VM内部・データ操作) │
│ ├─ VM内部のLinuxシェルコマンド実行履歴 │
│ ├─ SSHログイン後の不正プロセスの稼働・マイニング │
│ ├─ Webアプリケーション層のSQLiや侵入ログ │
│ └─ Storage内の個別Blobダウンロード(※要診断設定) │
└────────────────────────────────────────────────────────┘
標準機能で確認できること
- どのユーザーが、いつ、どこからサインインしたか(Entra ID Freeは過去7日以内)
- どのユーザーまたはサービスプリンシパルが、どのリソースに対してARM APIを実行したか(過去90日以内)
- リソース作成や権限変更の実行結果(成功・失敗)
標準機能では確認できないこと
仮想マシンのOS内部操作
アクティビティログには「VMを起動した」という事実しか残りません。VM内部に入り込んだ侵入者が実行したスクリプトや作成したcronジョブなどを調べるには、仮想マシン内のログを直接解析するか、事前に対象VMへ Azure Monitor Agent(AMA)を導入してSyslogやイベントログをLog Analyticsへ収集しておく必要があります。
Storage内の個別ファイルアクセス(データプレーン)
ストレージアカウントが作成されたことはアクティビティログで分かりますが、「ストレージ内のどのBlobファイルを誰がダウンロードしたか」というデータ操作ログは、ストレージアカウントの 診断設定 でリソースログを有効にしていない限り記録されません。
8. 不正アクセスが疑われる場合の緊急初動対応チェックリスト
もしEntraサインインログやアクティビティログから不正アクセスが確実となった場合は、直ちに以下の初動対応を実施してください。
【Azure不正アクセス発覚時の緊急初動対応】
ステップ1: 全セッションの即時失効とパスワード変更
├─ 対象ユーザーのパスワードを変更
├─ Entra IDで「セッションの取り消し(Revoke sessions)」を実行
└─ 認証アプリ等によるMFAを再設定・強制
ステップ2: バックドアロールの即時剥奪
├─ サブスクリプションの「アクセス制御 (IAM)」を開く
└─ 見覚えのない所有者・共同作成者ロールの割り当てを削除
ステップ3: 不審なサービスプリンシパル(アプリ登録)の削除
└─ Entra IDの「アプリの登録」にある不審なアプリを削除
ステップ4: 不正リソースの停止・隔離
├─ マイニング等で稼働している見知らぬVMを停止
└─ NSGルールを修正して外部からの通信を全遮断
ステップ5: Azureサポートへのインシデント報告
└─ ポータル右上の「サポート」から請求・セキュリティのチケットを起票
「セッションの取り消し」の重要性
パスワードを変更しただけでは、攻撃者の手元にある既存のリフレッシュトークンやブラウザセッションが有効なまま残り、数時間は操作を継続されてしまう危険があります。Microsoft Entra IDのユーザー管理画面から必ず セッションの取り消し(Revoke sessions)をクリックし、すべてのアクティブなログイン状態を強制破棄してください。
よくある質問(FAQ)
Q1. Entra ID Freeで7日以上前のサインインログを確認する方法は本当にないのですか?
残念ながら、後から遡って復元する方法はありません。Microsoft Entra ID Freeの仕様上、7日を経過したアクティビティデータは完全に破棄されます。今後このような事態を防ぐためには、Azure Portalで「Microsoft Entra ID」の「診断設定」を開き、無料の範囲内で作成できる Log Analytics ワークスペース へサインインログを転送するように構成してください。Log Analytics側で保持期間を設定することで、30日以上の保管が可能になります。
Q2. 身に覚えのない高額請求が発生してしまいました。返金・減額の相談は可能ですか?
不正アクセスによって意図せず発生した高額課金については、自力で侵害リソースを停止・削除し、侵害経路を遮断した上で、速やかにAzureポータルの「ヘルプとサポート」からサポートリクエストを起票してください。発生の経緯やサインインログ、アクティビティログの調査結果を誠実に報告することで、Microsoftの請求サポートチームによる調査とクレジット調整(減額措置)を相談できる場合があります。
Q3. 仮想マシンに見知らぬプロセスが動いていました。すぐにVMを削除すべきですか?
慌ててVMを削除(Delete)すると、OSのディスク(OS Disk)も一緒に削除され、攻撃元IPや侵入手法を証明するための証拠が消滅してしまいます。まずはVMを「停止(割り当て解除)」状態にするか、NSGのインバウンド規則を全削除して通信を遮断してください。その後、Azure Portalから対象VMのOSディスクの「スナップショット」を作成して証拠を保全してから、VM本体の削除を行ってください。
まとめ
Azureにおける不正アクセス調査では、ID管理(Microsoft Entra ID)とリソース管理(Azure Activity Log)の2つの視点から、証拠を時系列で組み立てることが重要です。
- Microsoft Entra IDのサインインログから、不審な接続元IP、国・地域、失敗履歴を特定する
- Entra ID Freeの保持期間は7日間しかないため、事前のLog Analytics連携または速やかな調査が不可欠
- Azureアクティビティログから、過去90日間のリソース作成・ロール割り当て変更操作を追跡する
- サブスクリプションのRBAC(アクセス制御)を点検し、所有者や共同作成者に追加されたバックドアを排除する
- コスト分析と予算アラートを活用して、異常なリソース乱立による課金急増を早期に察知する
クラウドの利便性を享受しつつ安全な個人開発環境を維持するために、本記事の手順に沿って日頃からの点検とログ監査を実践してください。
次に読むおすすめ記事
個人で運用するクラウド全般の不正アクセス調査入門や、侵害発覚時の技術的初動手順は、以下の記事で詳しく解説しています。
個人で運用するサーバーやクラウドの包括的なセキュリティ対策手順については、以下の完全ガイドもあわせて参考にしてください。

参考情報
- Microsoft Entra ID ドキュメント:Microsoft Entra ID のサインイン ログ
- Microsoft Entra ID ドキュメント:Microsoft Entra ID の対話型のユーザー サインインログ
- Microsoft Entra ID ドキュメント:Microsoft Entra のデータ保持
- Azure Monitor ドキュメント:Azure アクティビティ ログ
- Azure Monitor ドキュメント:Azure Monitor アクティビティ ログの分析情報
- Azure RBAC ドキュメント:Azure portal を使用して Azure ロールの割り当てを表示する
- Azure Virtual Network ドキュメント:ネットワーク セキュリティ グループを作成、変更、または削除する
- Microsoft Cost Management ドキュメント:クイック スタート: コスト分析を使用してコストを探索および分析する
- Azure セキュリティ ドキュメント:Azure のインシデント対応の概要

