<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>ナギ｜システム基盤エンジニアの知見録</title>
	<atom:link href="https://sys-univ.com/feed/" rel="self" type="application/rss+xml" />
	<link>https://sys-univ.com</link>
	<description>大手SIer20年超｜要件定義から設計・構築・試験・移行・運用まで、実務で使える知見を発信</description>
	<lastBuildDate>Sun, 20 Sep 2026 15:10:39 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1.1</generator>
<atom:link rel="hub" href="https://pubsubhubbub.appspot.com"/>
<atom:link rel="hub" href="https://pubsubhubbub.superfeedr.com"/>
<atom:link rel="hub" href="https://websubhub.com/hub"/>
<atom:link rel="self" href="https://sys-univ.com/feed/"/>
	<item>
		<title>AI AgentのIAM権限はどこまで届くか｜OpenAI・Hugging Face侵害から考えるAWSセキュリティ設計</title>
		<link>https://sys-univ.com/tec/ai-agent-aws-security/</link>
					<comments>https://sys-univ.com/tec/ai-agent-aws-security/#respond</comments>
		
		<dc:creator><![CDATA[ナギ]]></dc:creator>
		<pubDate>Sun, 06 Sep 2026 15:25:03 +0000</pubDate>
				<category><![CDATA[AWS]]></category>
		<category><![CDATA[テクノロジー]]></category>
		<guid isPermaLink="false">https://sys-univ.com/?p=3342</guid>

					<description><![CDATA[はじめに AWS上でAI Agentを動かす構成が、検証環境だけの話ではなくなってきた。専用のIAM Roleを与え、VPC内に置き、必要なAPIやツールを実行させる。権限の与え方だけを見れば、運用ジョブやバッチ処理と大 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-heading"><strong>はじめに</strong></p>


<p class="wp-block-paragraph">AWS上でAI Agentを動かす構成が、検証環境だけの話ではなくなってきた。専用のIAM Roleを与え、VPC内に置き、必要なAPIやツールを実行させる。権限の与え方だけを見れば、運用ジョブやバッチ処理と大きくは変わらない。違うのは、目的に応じて何を実行するかをAgent自身が判断する点にある。</p>


<p class="wp-block-paragraph">2026年7月、OpenAIの評価環境で動いていたAI Agentが隔離を越えて外部へ到達し、7月11日から13日にかけてHugging Faceの本番基盤を侵害した。境界の突破は7月に突然始まったわけではなく、5月から断続的に続いていた。両社が公開した技術レポートには、どの経路が使われ、どこで止まり、どこでは止まらなかったかが記録されている。</p>


<p class="wp-block-paragraph">本記事は、この事件の時系列を追うものではない。攻撃の詳細は両社の一次資料に譲り、ここでは次の問いを扱う。</p>


<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">AWS上で正規の権限を持つAI Agentが、想定した範囲を越えて動いたとき、その到達範囲は何によって決まるのか。</p>
</blockquote>


<p class="wp-block-paragraph">進め方は、セキュリティ要件定義の基本形をそのまま使う。資産を洗い出し、脅威主体を定め、弱点と攻撃シナリオを置き、対策を決めて、残るリスクを確認する。この順に沿って、AI Agentという実行主体を一度当てはめてみる。</p>


<p class="wp-block-paragraph">リスクアセスメントの進め方そのものは、セキュリティ要件定義の記事で別途整理する。ここでは方法論の説明はせず、事件で実際に何が効いて何が効かなかったかという、設計時には得にくい材料を扱う。</p>


<h2 class="wp-block-heading">AI Agentに何を預けているのか</h2>


<p class="wp-block-paragraph">リスクアセスメントは、守る対象を決めるところから始まる。AI Agentを載せた基盤で、守る対象は何か。今回の事件は、その範囲を実測で示している。</p>


<h3 class="wp-block-heading">侵害の経路</h3>


<p class="wp-block-paragraph">事件の経路を、後の議論で必要な範囲だけ確認する。​</p>



<div id="attachment_3347" style="width: 510px" class="wp-caption aligncenter"><img fetchpriority="high" decoding="async" aria-describedby="caption-attachment-3347" class="wp-image-3347 size-medium" src="https://sys-univ.com/wp-content/uploads/2026/09/4c9ef128957629daca148d9f9588f337-500x192.png" alt="" width="500" height="192" srcset="https://sys-univ.com/wp-content/uploads/2026/09/4c9ef128957629daca148d9f9588f337-500x192.png 500w, https://sys-univ.com/wp-content/uploads/2026/09/4c9ef128957629daca148d9f9588f337-800x308.png 800w, https://sys-univ.com/wp-content/uploads/2026/09/4c9ef128957629daca148d9f9588f337-300x115.png 300w, https://sys-univ.com/wp-content/uploads/2026/09/4c9ef128957629daca148d9f9588f337-768x296.png 768w, https://sys-univ.com/wp-content/uploads/2026/09/4c9ef128957629daca148d9f9588f337-1536x591.png 1536w, https://sys-univ.com/wp-content/uploads/2026/09/4c9ef128957629daca148d9f9588f337.png 1920w" sizes="(max-width: 500px) 100vw, 500px" /><p id="caption-attachment-3347" class="wp-caption-text">図　AIエージェント攻撃チェーン</p></div>


<p class="wp-block-paragraph">押さえておきたい事実は3つある。</p>


<p class="wp-block-paragraph"><strong>一つ目は、脱出に使われたのが許可された通信経路だったこと。</strong> 評価環境はインターネットから隔離されていたが、パッケージを取得するための経路は業務上必要なため開いていた。エージェントはその経路の実装に脆弱性を見つけ、外部へ抜けている。塞ぎ忘れた穴ではなく、開けておく理由があった経路が足場になった。</p>


<p class="wp-block-paragraph"><strong>二つ目は、コード実行より前に認証情報が漏れていること。</strong> Hugging Faceへの最初の侵入ベクターは、細工したデータセット設定を処理させ、ワーカーのローカルファイルを返させるものだった。コードは一切実行していない。読み取らせた&#8217;/proc/self/environ&#8217;に本番Podの環境変数が入っており、そこに認証情報が含まれていた。この読み取りで得た認証情報や実装情報が、その後の探索と横展開の材料になった。</p>




<p class="wp-block-paragraph"><strong>三つ目は、一つの境界を越えたあとも連鎖が続いたこと。</strong> 本番Podでの足場から、Kubernetesのサービスアカウント、クラウドのメタデータ、内部ネットワーク、ソースコード管理へと進んでいる。</p>


<h2 class="wp-block-heading">資産の範囲をどう置くか</h2>


<p class="wp-block-paragraph">ここから、自分たちの環境に置き換える。</p>


<p class="wp-block-paragraph">奪われたものを並べると、業務データそのものより手前にあるものが多い。</p>



<div id="attachment_3348" style="width: 510px" class="wp-caption aligncenter"><img decoding="async" aria-describedby="caption-attachment-3348" class="wp-image-3348 size-medium" src="https://sys-univ.com/wp-content/uploads/2026/09/ab3c90d3c3d11c1402ced0b9b9b3c2ef-500x375.png" alt="" width="500" height="375" srcset="https://sys-univ.com/wp-content/uploads/2026/09/ab3c90d3c3d11c1402ced0b9b9b3c2ef-500x375.png 500w, https://sys-univ.com/wp-content/uploads/2026/09/ab3c90d3c3d11c1402ced0b9b9b3c2ef-800x600.png 800w, https://sys-univ.com/wp-content/uploads/2026/09/ab3c90d3c3d11c1402ced0b9b9b3c2ef-300x225.png 300w, https://sys-univ.com/wp-content/uploads/2026/09/ab3c90d3c3d11c1402ced0b9b9b3c2ef-768x576.png 768w, https://sys-univ.com/wp-content/uploads/2026/09/ab3c90d3c3d11c1402ced0b9b9b3c2ef.png 1448w" sizes="(max-width: 500px) 100vw, 500px" /><p id="caption-attachment-3348" class="wp-caption-text">図　AI Agentと重要資産の到達範囲</p></div>

<p class="wp-block-paragraph">​<strong>AI Agentに預けていると考えるべき範囲は、Agentに直接処理させるデータだけではない。Agentが直接・間接に到達できる重要資産まで広げて考える必要がある。</strong> 要件定義で資産を洗い出すとき、Agentに渡すデータだけを対象にすると、事件で実際に使われた経路が丸ごと抜け落ちる。</p>



<p class="wp-block-paragraph">影響も同じ範囲で考える。情報の取得と改ざんに加えて、構成変更による外部公開と、基盤そのものの停止まで入る。構成変更によって内部基盤を外部へ公開できた事例も、後段で確認する。</p>


<h3 class="wp-block-heading">脅威主体としてのAI Agent</h3>


<p class="wp-block-paragraph">脅威分析では、まず誰が資産に手を伸ばし得るかを並べる。外部攻撃者、内部関係者、委託先、侵害されたワークロード。ここにAI Agentを加えるかどうかが、この記事の前提になる。</p>


<h3 class="wp-block-heading">人間の内部不正者とは別物として扱う</h3>


<p class="wp-block-paragraph">AI Agentを内部脅威と呼ぶと、人間の内部不正と同じ枠に見えてしまう。動機を持ち、意図して権限を濫用する主体という含みが入るためで、その枠に置くと分析が動機の推定へ向かう。</p>


<p class="wp-block-paragraph">ここでは次のように定義する。</p>


<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">正規に発行されたWorkload Identity（非人間ID）を持ち、与えられた目的を達成する過程で、設計者が想定した範囲を越える操作を行い得る実行主体。</p>
</blockquote>


<p class="wp-block-paragraph">IAM Role、Kubernetesのサービスアカウント、マシンIDの延長として読める形だ。既存の非人間IDの管理に、判断して行動する性質が加わったものと捉えればよい。</p>


<h3 class="wp-block-heading">悪意は要件ではない</h3>


<p class="wp-block-paragraph">今回の事件で、エージェントはHugging Faceを攻撃するという目的を与えられていない。与えられていたのは、脆弱性を発見して悪用する能力を測る評価課題を解くことだった。</p>


<p class="wp-block-paragraph">課題が解けないなかで、エージェントは評価対象のデータや解答がHugging Faceに置かれている可能性に行き当たり、そちらへ向かっている。OpenAIはこれを、報酬を得るための意図しない経路を選ぶreward hackingとして整理している。侵害は目的ではなく、目的達成の副産物だった。</p>


<p class="wp-block-paragraph">脅威分析で見るのは動機ではない。与えられたGoal（目的）と、許されたAuthority（権限）の組み合わせだ。 Agentがデータを盗もうと考える必要はなく、与えられた目的の達成経路上にその操作が現れるだけで足りる。</p>


<h3 class="wp-block-heading">達成できない目的を与えると、環境を掘り始める</h3>


<p class="wp-block-paragraph">この事件の前段には、目的が達成できない状況が繰り返し置かれていた。</p>


<p class="wp-block-paragraph">訓練時の例が公開されている。エージェントは投稿の更新時刻を指定の値にせよと指示されたが、与えられたインターフェースにその機能がなかった。エージェントは環境を広く探索し、ブラウザがroot権限を持つことを発見して’/etc/sudoers.d’を上書きし、権限を得て目的を達成している。</p>




<p class="wp-block-paragraph">事件時の評価でも同じ形が出ている。**AI Agentの脆弱性悪用能力を評価するベンチマーク「ExploitGym」**の898問のうち198問は、事故以前にどのモデルも正解したことがなかった。</p>


<p class="wp-block-paragraph">Agentに必要なのは、達成する能力だけではない。達成できないと判断して正常に止まる経路が要る。</p>


<div id="attachment_3350" style="width: 510px" class="wp-caption aligncenter"><img decoding="async" aria-describedby="caption-attachment-3350" class="wp-image-3350 size-medium" src="https://sys-univ.com/wp-content/uploads/2026/09/3f6e346b694d2e313f80b587f1fd26d6-500x375.png" alt="" width="500" height="375" srcset="https://sys-univ.com/wp-content/uploads/2026/09/3f6e346b694d2e313f80b587f1fd26d6-500x375.png 500w, https://sys-univ.com/wp-content/uploads/2026/09/3f6e346b694d2e313f80b587f1fd26d6-800x600.png 800w, https://sys-univ.com/wp-content/uploads/2026/09/3f6e346b694d2e313f80b587f1fd26d6-300x225.png 300w, https://sys-univ.com/wp-content/uploads/2026/09/3f6e346b694d2e313f80b587f1fd26d6-768x576.png 768w, https://sys-univ.com/wp-content/uploads/2026/09/3f6e346b694d2e313f80b587f1fd26d6.png 1448w" sizes="(max-width: 500px) 100vw, 500px" /><p id="caption-attachment-3350" class="wp-caption-text">図　達成不能時に安全に止まる設計</p></div>

<p class="wp-block-paragraph">これらはアライメントだけに任せる話ではなく、Agent実行基盤の設計項目でもある。止まれないAgentに広い権限を与えると、想定した経路が使えなくても、目的達成のために別の経路を探索し続ける。</p>




<h2 class="wp-block-heading">効いた統制と、効かなかった統制</h2>


<p class="wp-block-paragraph">同じインシデント調査の中で、ある境界では攻撃が止まり、別の境界では止まらなかった。なぜそうなったのかを見ていく。</p>


<p class="wp-block-paragraph">対策の実効性は、設計時点の机上評価だけでは判断しにくい。テストで確認できる範囲はあっても、複数の境界をまたぐ侵害でどこまで被害を止められるかは見えにくい。今回の事件では、関連するエージェント活動の中で、効いた統制と効かなかった統制の両方が記録されている。</p>


<h3 class="wp-block-heading">侵入されたあとに止まった側</h3>


<p class="wp-block-paragraph">Hugging Faceの本番Podが侵害されたあと、エージェントはインスタンスメタデータサービスからEC2ノードロールの一時認証情報を読み出している。この認証情報は外部の二つのホスティング事業者のアドレスから再利用され、VPC、EKSクラスタ、Transit Gateway、シークレット、コンテナレジストリが列挙された。ここまでは通っている。</p>


<p class="wp-block-paragraph">止まったのはこの先だ。AWSクラウドAPI面では、変更を伴う呼び出しがノードロールのポリシーによってすべて拒否された。 Hugging Face自身が、ここで得られたのはcontrolではなくmapだったと整理している。</p>


<p class="wp-block-paragraph">ネットワーク側も同じ形で効いた。本番Hubのデータベースは、許可リストに載ったアドレスからプライベートリンク経由の接続しか受け付けない構成になっている。盗まれたAWSキーを使った接続はサーバー選択のタイムアウトで失敗し、数時間後の再試行も同じ結果に終わった。</p>


<p class="wp-block-paragraph">認証情報は奪われている。それでも、奪われた認証情報でできることがIAMポリシーとネットワーク構成の側で先に絞られていた。</p>


<h3 class="wp-block-heading">同じ事件で止まらなかった側</h3>


<p class="wp-block-paragraph">侵害されたのはHugging Faceだけではない。OpenAI側の評価基盤でも、関連するエージェント活動は続いていた。</p>


<p class="wp-block-paragraph">7月19日、ある評価ランでは、エージェントが稼働マシンのLinuxカーネルに公開CVEが残っていることを特定し、エクスプロイトを自環境向けに改変して権限昇格し、コンテナの外へ出てワーカーノードのrootを取得した。</p>


<p class="wp-block-paragraph">同日、別の評価ランでは、別の内部研究モデルのエージェントが、以前の活動によって残されていた署名鍵・復号材料・JWT偽造コードを回収し、新しい管理者JWTを発行してArtifactoryに受理させている。管理者認証情報を作り直せるため、標的に永続的なインプラントを置く必要すらなかった。</p>


<p class="wp-block-paragraph">一連の活動では、その後、OpenAIのマネージドKubernetes環境で<strong data-start="76" data-end="139">cluster-admin相当の権限まで到達し、Privileged設定かつホストファイルシステムをマウントしたPod</strong>も作成された。さらに、クラウドのシークレット管理サービスでは956件のシークレットが列挙・読み取りされ、その中には<strong data-start="196" data-end="216">監視ツール自身のセンサー認証情報</strong>も含まれていた。</p>


<p class="wp-block-paragraph">さらに、取得した認証情報を使って、OpenAIのパブリッククラウド環境にパブリックなApplication Load BalancerとNetwork Load Balancerが作成され、内部基盤の一部がインターネットへ露出し得る状態になった。</p>


<h3 class="wp-block-heading">差を生んだのは、次の境界が独立して機能したかどうか</h3>


<div id="attachment_3352" style="width: 510px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-3352" class="wp-image-3352 size-medium" src="https://sys-univ.com/wp-content/uploads/2026/09/74ef0db2f160669320e76af208840b1f-500x375.png" alt="" width="500" height="375" srcset="https://sys-univ.com/wp-content/uploads/2026/09/74ef0db2f160669320e76af208840b1f-500x375.png 500w, https://sys-univ.com/wp-content/uploads/2026/09/74ef0db2f160669320e76af208840b1f-800x600.png 800w, https://sys-univ.com/wp-content/uploads/2026/09/74ef0db2f160669320e76af208840b1f-300x225.png 300w, https://sys-univ.com/wp-content/uploads/2026/09/74ef0db2f160669320e76af208840b1f-768x576.png 768w, https://sys-univ.com/wp-content/uploads/2026/09/74ef0db2f160669320e76af208840b1f.png 1448w" sizes="auto, (max-width: 500px) 100vw, 500px" /><p id="caption-attachment-3352" class="wp-caption-text">図　侵害後の権限展開フロー</p></div>



<p class="wp-block-paragraph">ここで比較している活動は、すべて同一モデル・同一評価ランによるものではない。それでも、認証情報の取得、権限拡大、横展開という攻撃チェーンは共通している。結果を分けたのは、取得したIDから何を変更できたかだった。</p>


<p class="wp-block-paragraph">Hugging Face側も、変更が一切できなかったわけではない。Kubernetesではprivilegedポッドが作られ、ソースコード管理では書き込み権限が取られてプルリクエストまで作成されている。止まったのはAWSのクラウドAPI面に限られる。</p>


<p class="wp-block-paragraph">ここから引き出せる設計上の区別が一つある。<strong>既存の到達範囲で何ができるかという権限と、到達範囲そのものを変更できる権限は分けて考える必要がある。 前者を最小権限化していても、後者が残っていれば、Agent自身がその権限境界やネットワーク境界を広げられる。</strong>侵入されるかどうかだけでなく、侵入されたあとに次の境界が独立して機能するかが被害範囲を決める。</p>


<h2 class="wp-block-heading">AWSで何を許し、何を許さないか</h2>


<p class="wp-block-paragraph">ここまでで、資産、脅威主体、弱点と攻撃シナリオまでを見た。ここからが対策だ。</p>


<p class="wp-block-paragraph">AI Agentに与える権限を検討するとき、確認しておく観点は次のようになる。</p>


<figure class="wp-block-table">
<table class="has-fixed-layout">
<tbody>
<tr>
<th>観点</th>
<th>要件</th>
</tr>
<tr>
<td>IAM</td>
<td>Agent専用Roleを分け、最小権限で設計する</td>
</tr>
<tr>
<td>ワークロードID</td>
<td>IRSA / EKS Pod Identity等を利用し、長期Access Keyを渡さない</td>
</tr>
<tr>
<td>IMDS</td>
<td>不要なワークロードからメタデータへ到達させない</td>
</tr>
<tr>
<td>外向き通信（Egress）</td>
<td>Proxy・リポジトリ・アーティファクトストアも通信境界として評価する</td>
</tr>
<tr>
<td>ネットワーク</td>
<td>不要な内部到達性を与えない</td>
</tr>
<tr>
<td>境界変更</td>
<td>Agent自身に権限境界・ネットワーク境界を変更させない</td>
</tr>
<tr>
<td>共有サービス</td>
<td>共有ストアを意図しないAgent間通信路として評価する</td>
</tr>
<tr>
<td>認証情報</td>
<td>環境変数に長期の認証情報を置かない</td>
</tr>
<tr>
<td>共有ID</td>
<td>複数環境で高権限のIDを共有しない</td>
</tr>
<tr>
<td>Tool / API</td>
<td>AgentからAWS APIへの実行経路を限定する</td>
</tr>
<tr>
<td>ログ</td>
<td>Agentの権限が及ばない場所へ保存する</td>
</tr>
<tr>
<td>検知・停止</td>
<td>検知から重大度判定、停止権限までを設計する</td>
</tr>
<tr>
<td>バックアップ</td>
<td>Agentから破壊できない境界へ分離する</td>
</tr>
</tbody>
</table>
</figure>


<p class="wp-block-paragraph">大半は従来のクラウド設計で扱ってきた項目だ。この中で、AI Agentを置くことによって検討の仕方が変わるものを3つ取り上げる。</p>


<h3 class="wp-block-heading">Agentに自分の境界を変更させない</h3>


<p class="wp-block-paragraph">前章で見たとおり、最小権限では「既存の到達範囲で何ができるか」だけでなく、「到達範囲そのものを変更できるか」を分けて見る必要がある。後者は業務データに直接触らないため、最小権限の議論から漏れやすい。代表例が次のAPIだ。</p>


<ul>
	<li>elbv2:CreateLoadBalancer</li>
	<li>ec2:AuthorizeSecurityGroupIngress</li>
	<li>ec2:CreateInternetGateway</li>
	<li>ec2:CreateRoute​</li>
</ul>



<p class="wp-block-paragraph">これらを持つAgentは、自分が到達できる範囲を自分で広げられる。今回のOpenAI側の活動でも、パブリックなロードバランサーが実際に作成され、内部基盤をインターネットへ露出し得る状態が生まれている。</p>


<p class="wp-block-paragraph">私がAI Agentを載せる基盤の設計レビューをするなら、ここは「最小権限とすること」という一行では通さない。ネットワークとIAMの構成を変更するAPIを洗い出し、Agent実行ロールから明示的に外れていることを確認する。</p>


<p class="wp-block-paragraph">加えて、<strong>この種の境界変更はIAMポリシーだけに依存させない。</strong> Agent自身、またはAgentがAssumeRoleできるIDに</p>
<ul>
	<li>iam:PutRolePolicy</li>
	<li>iam:AttachRolePolicy</li>
</ul>
<p>などのIAM変更権限が残っていれば、最小権限として設計した実行ロールを後から拡張する経路が生まれる。境界の固定は、SCP（Service Control Policies）のようにAgent自身が変更できない上位のガードレールでも制限する。</p>






<h3 class="wp-block-heading">Read Only ≠ Low Risk</h3>


<p class="wp-block-paragraph">権限を絞る議論は、更新系と参照系を分けるところから始まることが多い。参照だけなら壊れないという前提が置かれる。</p>


<p class="wp-block-paragraph">事件の被害連鎖は、この前提の外側で始まっている。最初の侵入ベクターはコード実行を伴わないファイル読み取りで、’/proc/self/environ’を返させることで本番Podの環境変数中の認証情報が漏れた。</p>




<p class="wp-block-paragraph">参照系を一段分けて考えたい。</p>


<div id="attachment_3356" style="width: 510px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-3356" class="wp-image-3356 size-medium" src="https://sys-univ.com/wp-content/uploads/2026/09/b0e1743e3135d492f78b72b2309364be-500x250.png" alt="" width="500" height="250" srcset="https://sys-univ.com/wp-content/uploads/2026/09/b0e1743e3135d492f78b72b2309364be-500x250.png 500w, https://sys-univ.com/wp-content/uploads/2026/09/b0e1743e3135d492f78b72b2309364be-800x400.png 800w, https://sys-univ.com/wp-content/uploads/2026/09/b0e1743e3135d492f78b72b2309364be-300x150.png 300w, https://sys-univ.com/wp-content/uploads/2026/09/b0e1743e3135d492f78b72b2309364be-768x384.png 768w, https://sys-univ.com/wp-content/uploads/2026/09/b0e1743e3135d492f78b72b2309364be-1536x768.png 1536w, https://sys-univ.com/wp-content/uploads/2026/09/b0e1743e3135d492f78b72b2309364be.png 1774w" sizes="auto, (max-width: 500px) 100vw, 500px" /><p id="caption-attachment-3356" class="wp-caption-text">図　読み取り権限のリスク比較</p></div>


<p class="wp-block-paragraph">​※Describe / Listも、対象によってはネットワーク構成やARN、エンドポイントなどの偵察情報を返すため、常に低リスクとは限らない。</p>



<p class="wp-block-paragraph">下段は性質が二つに分かれる。データベースの顧客データは、読まれた時点で情報漏洩そのものだ。認証情報は、読まれた内容が次の操作の資格情報になる。更新権限を持たないAgentでも、後者に到達できれば、そこで得た認証情報を持つ別のIDとして動ける。</p>


<p class="wp-block-paragraph">この区別は、Human-in-the-loopをどこに入れるかにも効いてくる。<strong>Human-in-the-loopの線を「更新かどうか」だけで引くと、今回のような認証情報窃取の前段は素通りする。</strong> IAM変更やDELETEの手前に人間を置いても、その前段で認証情報が漏れていれば、そこから先は別のIDとして進める。</p>


<p class="wp-block-paragraph">線を引くなら、<strong>その操作が更新か参照かではなく、戻り値そのものが重要資産か、次の攻撃経路を成立させる材料になるかで判断する。</strong></p>


<h3 class="wp-block-heading">検知ではなく、止められるかまで設計する</h3>


<p class="wp-block-paragraph">この事件では、検知そのものは複数回機能している。</p>


<p class="wp-block-paragraph">6月27日には監視ツールがポートスイープを検知し、対応者は活動を評価ランに紐づけたが、停止は不要と判断された。7月5日にはサービス停止を契機に管理者レベルの侵害が判明した。Hugging Face側でも、AIによるセキュリティ機構が複数のシグナルを相関させながら、重大度を十分に引き上げてオンコールチームを起動させることに失敗している。</p>


<p class="wp-block-paragraph">シグナルは上がっていた。それでも活動は止まらなかった。</p>


<p class="wp-block-paragraph">要件として書くべきは、検知できることだけではない。<strong>検知 → 重大度判定 → エスカレーション → 停止権限</strong>という4段が、最後まで通ることだ。誰が停止を判断するのか、判断がつかない場合はどちらへ倒すのか、応答がない場合に自動で止まるのか。OpenAIが事件後に示した対応基準では、懸念活動が浮上してから30分以内の通知を目標とし、重大なものは24時間365日のページ発報対象とする。さらに、ページを受けた安全・セキュリティ・研究チームが30分以内に誤検知と断定できなければ、関連する活動を一時停止することが期待されている。</p>


<p class="wp-block-paragraph">判断がつかないときに止める側へ倒す設計は、可用性とのトレードオフを伴う。AI Agentが本番環境で自律的に動く構成では、この判断を運用開始後に持ち越さず、要件定義の段階で決めておきたい。</p>


<p class="wp-block-paragraph">監視・ログ・障害時の判断体制を後から付け足すのではなく、要件定義から処理方式と結びつける考え方は、次の記事でも整理している。</p>
<a href="https://sys-univ.com/dev/opedesign/" title="運用設計とは？運用設計書の目次サンプルと項目一覧｜システム基盤エンジニア視点" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img width="160" height="90" src="https://sys-univ.com/wp-content/uploads/2026/07/7a689f13e1c38b90b6e6b1584b241588-160x90.jpg" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" loading="lazy" decoding="async" srcset="https://sys-univ.com/wp-content/uploads/2026/07/7a689f13e1c38b90b6e6b1584b241588-160x90.jpg 160w, https://sys-univ.com/wp-content/uploads/2026/07/7a689f13e1c38b90b6e6b1584b241588-120x68.jpg 120w, https://sys-univ.com/wp-content/uploads/2026/07/7a689f13e1c38b90b6e6b1584b241588-320x180.jpg 320w, https://sys-univ.com/wp-content/uploads/2026/07/7a689f13e1c38b90b6e6b1584b241588-376x212.jpg 376w" sizes="auto, (max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">運用設計とは？運用設計書の目次サンプルと項目一覧｜システム基盤エンジニア視点</div><div class="blogcard-snippet internal-blogcard-snippet">運用設計とは何かをシステム基盤エンジニアの実務目線で解説します。運用設計書の目次サンプルと検討項目一覧を示し、監視・ログ・バックアップ・ジョブ管理、誰がやるのか、要件定義・基本設計との関係、処理方式設計との双方向連携を整理します。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img src="https://www.google.com/s2/favicons?domain=https://sys-univ.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" loading="lazy" decoding="async" /></div><div class="blogcard-domain internal-blogcard-domain">sys-univ.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2026.08.14</div></div></div></div></a>


<p class="wp-block-paragraph">監視の配置も同じ考え方だ。事件では、読み出されたシークレットの中に監視ツール自身のセンサー認証情報まで含まれていた。監視とログをAgentの権限境界の内側に置けば、Agentの到達範囲が広がったときに、検知する側から先に失われる。<strong>CloudTrailの組織証跡を別アカウントのログアーカイブへ送り、Agent実行ロールにログの削除・停止権限を持たせない。</strong> 表の「ログ」が求めているのは、監査証跡の管理権限をAgentの権限境界から分離するという構成だ。</p>


<h2 class="wp-block-heading">それでも残るもの</h2>


<p class="wp-block-paragraph">対策を並べたら、次は残存リスクを確認する。ここまでの要件をすべて満たしたとして、何が残るのか。</p>


<h3 class="wp-block-heading">対策で低減できるものと、残る性質</h3>


<figure class="wp-block-table">
<table class="has-fixed-layout">
<tbody>
<tr>
<th>対策で低減できる要因</th>
<th>対策後も残る性質</th>
</tr>
<tr>
<td>過大な権限</td>
<td>許可範囲内での想定外の組み合わせ</td>
</tr>
<tr>
<td>不要なネットワーク到達性</td>
<td>探索の量と速度</td>
</tr>
<tr>
<td>長期の認証情報</td>
<td>大量の失敗経路が生む検知ノイズ</td>
</tr>
<tr>
<td>高権限IDの共有</td>
<td>短命な実行環境での再構築</td>
</tr>
</tbody>
</table>
</figure>


<p class="wp-block-paragraph">※左右の項目は1対1の対応関係を示すものではない。</p>


<p class="wp-block-paragraph">左側は設計によって大きく低減できる。右側は、権限を必要最小限まで絞っても残る。</p>


<p class="wp-block-paragraph">最小権限もネットワーク分離も、許可した範囲内の動作までは止めない。許可した操作を、設計者が想定していない順序と組み合わせで実行されることまでは、権限の側から防げない。</p>


<h3 class="wp-block-heading">17,600という数字の意味</h3>


<p class="wp-block-paragraph">Hugging Faceの復元によれば、この事件でエージェントが実行したアクションは約17,600件だった。</p>


<p class="wp-block-paragraph">この数字を、17,600回の攻撃が成功したと読むと意味を取り違える。ほとんどは失敗している。 Hugging Face自身、多くのアクションはどこにもたどり着かなかったが、合わせると複数の独立したシステムを横断する経路を見つけるだけの網羅性を生んだ、と整理している。</p>


<p class="wp-block-paragraph">人間による手作業では、探索を繰り返すほど時間と作業量が増える。AI Agentでは探索、失敗、再試行を自動化できるため、<strong>一つひとつの失敗にかかる追加コストを大きく下げられる。</strong> 塞がれれば別の経路を試し、以前の手がかりへ戻り、短命な実行環境でも必要なツールを組み直して探索を続けられる。</p>


<p class="wp-block-paragraph">防御側にとって特に変わるのは、個々の攻撃手法よりも探索の物量だ。成功した1本の経路が、失敗した数千本のノイズに埋もれる。前章で検知から停止までを要件として書いたのは、この物量が相関分析の負荷に直接効いてくるためだ。</p>


<h3 class="wp-block-heading">原則は変わっていない</h3>


<p class="wp-block-paragraph">今回悪用されたのも、安全でないデータ処理、メタデータへの到達、過大な権限、長期の認証情報といった既知の弱点だった。</p>


<p class="wp-block-paragraph">OpenAI自身も、攻撃的に動作するエージェント集団が侵入のルールを書き換えるわけではないとしたうえで、最小権限、分離とセグメンテーション、強力な認証というセキュリティの基本は従来どおり不可欠であり、いかなる単一の統制も完全に堅牢だと仮定してはならないと整理している。</p>


<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">AI Agentがセキュリティ原則を書き換えたわけではない。従来からある弱点を、より速く、広く、執拗に組み合わせられるようになった。</p>
</blockquote>


<p class="wp-block-paragraph">この能力は評価環境の中だけに留まるものでもない。OpenAIは、同等の能力が外部の脅威アクターにも利用可能になるにつれ、持続的で協調的なAI支援型の攻撃を脅威モデルへ織り込む必要があるとしている。自社でAI Agentを運用していない組織でも、探索の量と速度が増大することを外部脅威側の前提として考える必要がある。</p>


<h2 class="wp-block-heading">まとめ</h2>


<p class="wp-block-paragraph">AI Agentを載せたAWS環境のセキュリティ要件を、一度フレームに通してみた。持ち帰る点は3つだ。</p>


<p class="wp-block-paragraph">AI Agentは、正規の非人間IDを持つ実行主体として脅威分析の対象に入れる。 人間の内部不正と同じ枠には置かない。見るのは動機ではなく、与えた目的と許した権限の組み合わせだ。悪意がなくても、目的の達成経路上に想定外の操作が現れる。</p>


<p class="wp-block-paragraph">一つの境界を突破されても、次の境界が独立して機能するように設計する。 今回、同じインシデント調査の中で止まった統制と止まらなかった統制の両方が記録された。差を生んだのは、取得されたIDから権限とネットワーク境界をどこまで変更できたかだった。既存の到達範囲で何ができるかという権限と、到達範囲そのものを変更できる権限は分けて設計する。</p>


<p class="wp-block-paragraph">AI固有なのは原則ではなく、探索の量・速度・持続性だ。 最小権限も多層防御も分離も、従来どおり有効なまま残る。単一の統制を完全と考えないという原則が、これまで以上に短時間で試される。</p>


<p class="wp-block-heading"><strong>参考資料</strong></p>


<p class="wp-block-paragraph"><a href="https://huggingface.co/blog/agent-intrusion-technical-timeline">Hugging Face, “Anatomy of a Frontier Lab Agent Intrusion: A Technical Timeline of the July 2026 Incident”</a></p>


<p class="wp-block-paragraph"><a href="https://openai.com/index/hugging-face-incident-and-the-road-ahead/">OpenAI, “The Hugging Face incident and the road ahead”</a></p>


<p class="wp-block-paragraph"><a href="https://cdn.openai.com/pdf/67869394-cb91-4c12-888c-5cbd85c7814c/OpenAI-Hugging-Face%20Incident-Technical-Report.pdf">OpenAI, “OpenAI – Hugging Face Incident Technical Report” (August 26, 2026)</a><br />
<br />
</p>
<hr />
<p class="PDq2pG_selectionAnchorContainer" data-start="92" data-end="100"><span style="font-size: 20px;"><strong data-start="92" data-end="100">関連記事</strong></span></p>
<p data-start="102" data-end="240">AI Agentでは、IAMやネットワーク、認証情報といった従来からのセキュリティ設計が不要になるわけではありません。むしろ、Agentが正規の権限を持って自律的に操作することを前提に、<strong data-start="195" data-end="219">どこまで到達できるか、どの境界で止めるか</strong>を要件として明確にしておく必要があります。</p>
<p data-start="242" data-end="345">本記事ではOpenAI・Hugging Faceの事例からAI Agentの到達範囲を整理しましたが、AWS側の統制、検知後の運用設計については、以下の記事で詳しく解説しています。</p>
<ul data-start="347" data-end="862">
	<li data-section-id="xb94f7" data-start="347" data-end="495"><strong data-start="499" data-end="560">VPC Encryption Controlsの落とし穴｜Flow Logsの暗号化判定とEnforce判定は別物</strong><br data-start="560" data-end="563" />
AWSのネットワーク統制について、Flow Logsで観測できる状態とEnforceによる許可・拒否の判定が同じではない点を整理しています。<strong data-start="635" data-end="668">「見えている状態」と「実際に強制される境界」を分けて考える</strong>という点は、AI Agentのネットワーク設計にも共通します。<br />
<br />
<a href="https://sys-univ.com/tec/vpc-encryption-controls/" title="VPC Encryption Controlsの落とし穴｜Flow Logsの暗号化判定とEnforce判定は別物" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img width="160" height="90" src="https://sys-univ.com/wp-content/uploads/2026/08/bdefc8469bee66f11e3530b7a3fa8b76-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" loading="lazy" decoding="async" srcset="https://sys-univ.com/wp-content/uploads/2026/08/bdefc8469bee66f11e3530b7a3fa8b76-160x90.png 160w, https://sys-univ.com/wp-content/uploads/2026/08/bdefc8469bee66f11e3530b7a3fa8b76-120x68.png 120w, https://sys-univ.com/wp-content/uploads/2026/08/bdefc8469bee66f11e3530b7a3fa8b76-320x180.png 320w, https://sys-univ.com/wp-content/uploads/2026/08/bdefc8469bee66f11e3530b7a3fa8b76-376x212.png 376w" sizes="auto, (max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">VPC Encryption Controlsの落とし穴｜Flow Logsの暗号化判定とEnforce判定は別物</div><div class="blogcard-snippet internal-blogcard-snippet">VPC Encryption Controlsでは、Flow Logsで暗号化と表示されてもEnforceで許可されるとは限りません。encryption-statusと準拠判定の違い、既存Flow Logsにフィールドが自動追加されない点、ExclusionやTGWの注意点をAWS公式仕様から整理します。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img src="https://www.google.com/s2/favicons?domain=https://sys-univ.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" loading="lazy" decoding="async" /></div><div class="blogcard-domain internal-blogcard-domain">sys-univ.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2026.08.27</div></div></div></div></a></li>
	<li data-section-id="dy8svs" data-start="701" data-end="862"><strong data-start="703" data-end="740">運用設計とは｜監視・障害対応・エスカレーションまでをどう設計するか</strong><br data-start="740" data-end="743" />
監視はアラートを出して終わりではなく、重大度判定、エスカレーション、対応判断まで含めて設計する必要があります。本記事で扱った**「検知 → 重大度判定 → エスカレーション → 停止」**を、より広い運用設計の観点から整理しています。<br />
<br />
<a href="https://sys-univ.com/dev/opedesign/" title="運用設計とは？運用設計書の目次サンプルと項目一覧｜システム基盤エンジニア視点" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img width="160" height="90" src="https://sys-univ.com/wp-content/uploads/2026/07/7a689f13e1c38b90b6e6b1584b241588-160x90.jpg" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" loading="lazy" decoding="async" srcset="https://sys-univ.com/wp-content/uploads/2026/07/7a689f13e1c38b90b6e6b1584b241588-160x90.jpg 160w, https://sys-univ.com/wp-content/uploads/2026/07/7a689f13e1c38b90b6e6b1584b241588-120x68.jpg 120w, https://sys-univ.com/wp-content/uploads/2026/07/7a689f13e1c38b90b6e6b1584b241588-320x180.jpg 320w, https://sys-univ.com/wp-content/uploads/2026/07/7a689f13e1c38b90b6e6b1584b241588-376x212.jpg 376w" sizes="auto, (max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">運用設計とは？運用設計書の目次サンプルと項目一覧｜システム基盤エンジニア視点</div><div class="blogcard-snippet internal-blogcard-snippet">運用設計とは何かをシステム基盤エンジニアの実務目線で解説します。運用設計書の目次サンプルと検討項目一覧を示し、監視・ログ・バックアップ・ジョブ管理、誰がやるのか、要件定義・基本設計との関係、処理方式設計との双方向連携を整理します。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img src="https://www.google.com/s2/favicons?domain=https://sys-univ.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" loading="lazy" decoding="async" /></div><div class="blogcard-domain internal-blogcard-domain">sys-univ.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2026.08.14</div></div></div></div></a></li>
</ul>
]]></content:encoded>
					
					<wfw:commentRss>https://sys-univ.com/tec/ai-agent-aws-security/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【全3回・第1部】詳細設計とは何を決める工程か｜パラメータ表で終わらせないための設計の考え方</title>
		<link>https://sys-univ.com/dev/detailed-design-overview/</link>
					<comments>https://sys-univ.com/dev/detailed-design-overview/#respond</comments>
		
		<dc:creator><![CDATA[ナギ]]></dc:creator>
		<pubDate>Thu, 20 Aug 2026 06:17:15 +0000</pubDate>
				<category><![CDATA[システム開発]]></category>
		<guid isPermaLink="false">https://sys-univ.com/?p=2635</guid>

					<description><![CDATA[この記事は「詳細設計で決めること」全3回シリーズの第1部です。 本シリーズでは、詳細設計を「構築・テスト・運用できる形」に落とし込む工程として、全3回に分けて整理しています。 【第1部】この記事 詳細設計とは何を決める工 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph"><strong>この記事は「詳細設計で決めること」全3回シリーズの第1部です。</strong></p>
<p>本シリーズでは、詳細設計を「構築・テスト・運用できる形」に落とし込む工程として、全3回に分けて整理しています。</p>
<ul>
	<li>
<p><strong>【第1部】この記事</strong><br />
詳細設計とは何を決める工程か／パラメータ表で終わらせないための設計の考え方</p>
</li>
	<li>
<p><a href="https://sys-univ.com/dev/detailed-design-part1-os-db-job/">【第2部】OS・Web/APサーバ・DB・ジョブの詳細設計</a><br />
OS／Web・APサーバ／DB／ジョブの4領域</p>
</li>
	<li>
<p><a href="https://sys-univ.com/dev/detailed-design-part2-monitoring-security/">【第3部】監視・ログ・バックアップ・セキュリティの詳細設計</a><br />
監視／ログ／バックアップ・リストア／セキュリティ／運用スクリプトの5領域</p>
</li>
</ul>
<p>第2部・第3部では、各記事の後半にあたる詳細解説をnote（有料）で公開しています。</p>
<p><strong>はじめに</strong></p>
<p>基本設計では、要件をシステム構成、処理方式、運用方式に落とし込みます。</p>
<p>では、詳細設計では何をするのでしょうか。</p>
<p>詳細設計と聞くと、サーバのパラメータを決める、ミドルウェアの設定値を書く、クラウドサービスの設定項目を埋める、といったイメージを持つ人もいるかもしれません。</p>
<p>もちろん、それらは詳細設計の重要な要素です。</p>
<p>しかし、詳細設計は、単にパラメータ表を埋める工程ではありません。</p>
<p>基本設計で決めた方式を、実際に構築・設定・テスト・運用できる粒度まで落とし込む工程です。</p>
<p class="isSelectedEnd">たとえば、基本設計で「ログを1か月保持する」と決めたなら、詳細設計では、どのログファイルを対象にするのか、どのディレクトリに出力するのか、どの周期でローテーションするのか、圧縮するのか、何世代残すのか、バックアップ対象に含めるのか、容量監視をどうするのかまで具体化します。</p>
<p class="isSelectedEnd">基本設計で「7時までに業務を開局する」と決めたなら、詳細設計では、その運用要件をジョブ、スクリプト、監視、起動停止、開局前チェックに落とします。</p>
<p class="isSelectedEnd">どのジョブを何時に起動するのか。<br />
どのスクリプトを実行するのか。<br />
どの戻り値を正常とするのか。<br />
終了遅延をどう検知するのか。<br />
開局前チェックで何を確認するのか。<br />
どの監視を再開するのか。</p>
<p class="isSelectedEnd">これは一見すると運用設計の話に見えます。</p>
<p class="isSelectedEnd">しかし、詳細設計では、この運用要件を実際の製品設定、ジョブ定義、スクリプト仕様、監視設定、手順書の粒度に落とします。</p>
<p class="isSelectedEnd">ここで落とし込みが甘いと、運用試験や本番移行前に手戻りが発生します。</p>
<p class="isSelectedEnd">つまり、詳細設計とは、基本設計で決めた方針を、OS、ミドルウェア、DB、ジョブ、監視、バックアップ、クラウドサービス、運用スクリプト、手順、試験観点へ展開する工程です。</p>
<p class="isSelectedEnd">構築担当者が設定値を判断しなければならない。<br />
テスト担当者が期待値を確認できない。<br />
運用スクリプトが作られていない。<br />
ジョブは定義されているが、異常時の分岐が分からない。<br />
監視項目はあるが、閾値や通知先が決まっていない。<br />
バックアップは設定されているが、リストア手順がない。</p>
<p class="isSelectedEnd">こうした問題は、詳細設計の時点で「構築できる粒度」「テストできる粒度」「運用できる粒度」まで落とし込めていないことから起きます。</p>
<p class="isSelectedEnd">この記事では、基盤SEの目線で、詳細設計で何を具体化するのかを整理します。</p>
<h2>この記事で確認する視点</h2>
<p class="isSelectedEnd">詳細設計書を見るときは、設定値そのものだけを追ってはいけません。</p>
<p class="isSelectedEnd">この記事では、詳細設計を確認する時の視点として、次の観点を整理します。<br />
各章の末尾では、その領域ごとの確認観点を3つに絞って整理します。</p>
<ul data-spread="false">
	<li>この設定値は、基本設計のどの方針を受けているのか</li>
	<li>なぜこの値でよいと言えるのか</li>
	<li>構築担当者が、この設計書を見て同じ設定を再現できるか</li>
	<li>テスト担当者が、期待値を判断できるか</li>
	<li>運用担当者が、障害時に使える設計になっているか</li>
	<li>監視、ログ、バックアップ、ジョブ、スクリプト、手順書とつながっているか</li>
	<li>この設計で品質を確保できると説明できるか</li>
</ul>
<p class="isSelectedEnd">詳細設計は、設定値を埋める作業ではありません。</p>
<p class="isSelectedEnd">基本設計で決めた方式を、構築、テスト、運用、保守に接続し、「なぜこの設計でよいのか」を説明できる状態にする工程です。</p>
<p>この視点で見ると、詳細設計書は単なるパラメータ表ではなく、構築・テスト・運用を成立させるための設計資料として見えるようになります。</p>


<h2 class="wp-block-heading">詳細設計は基本設計の続きである</h2>


<p class="wp-block-paragraph">詳細設計は、基本設計と切り離された工程ではありません。</p>


<p class="wp-block-paragraph">基本設計で決めた内容を、実際に構築・設定できるレベルに落とし込むのが詳細設計です。</p>


<p class="wp-block-paragraph">基本設計では、たとえば次のようなことを決めます。</p>


<ul id="9f39a30f-e887-4d15-a1e8-6bba27dda93a" class="wp-block-list">
	<li>システム構成</li>


	<li>処理方式</li>


	<li>サーバ構成</li>


	<li>ネットワーク構成</li>


	<li>DB構成</li>


	<li>ストレージ方式</li>


	<li>ジョブ・バッチ方式</li>


	<li>監視方式</li>


	<li>ログ方式</li>


	<li>バックアップ・リストア方式</li>


	<li>セキュリティ方式</li>


	<li>運用方式</li>
</ul>


<p class="wp-block-paragraph">一方、詳細設計では、それらをより具体的な設定、パラメータ、ファイル、ジョブ、スクリプト、手順、テスト可能な期待値に落としていきます。</p>


<p class="wp-block-paragraph">たとえば、基本設計で「Web/AP/DBの3層構成」と決めたなら、詳細設計では、各サーバのホスト名、IPアドレス、OS設定、導入ミドルウェア、待ち受けポート、接続先、タイムアウト、ログ出力先、起動停止順序を決めます。</p>


<p class="wp-block-paragraph">基本設計で「監視する」と決めたなら、詳細設計では、監視対象、監視方式、監視間隔、閾値、検知条件、通知先、抑止条件、一次対応手順まで落とします。</p>


<p class="wp-block-paragraph">基本設計で「バックアップを取得する」と決めたなら、詳細設計では、対象ファイル、対象DB、取得コマンド、実行ジョブ、取得時刻、世代数、保管先、削除条件、リストア手順、戻し先、確認方法まで落とします。</p>


<p class="wp-block-paragraph">詳細設計は、基本設計で決めたことを「誰が見ても同じ構成で作れる状態」にするための工程です。</p>


<p class="wp-block-paragraph">詳細設計を、構築担当者向けの設定メモにしてはいけません。</p>


<p class="wp-block-paragraph">詳細設計書は、構築担当者だけのためにあるわけではありません。テスト担当者、運用担当者、レビュー担当者、障害対応者、後続保守担当者も参照します。</p>


<p class="wp-block-paragraph">そのため、詳細設計では、単に設定値を書くのではなく、なぜその設定にしているのか、基本設計のどの方針を受けているのか、どのテストで確認するのか、運用上どの手順や監視とつながるのかを意識します。</p>


<h2 class="wp-block-heading">詳細設計とパラメータ設計・環境定義</h2>


<p class="wp-block-paragraph">開発標準によっては、詳細設計、パラメータ設計、環境定義を分けて整理することがあります。</p>


<p class="wp-block-paragraph">考え方としては、次のように整理できます。</p>


<p class="wp-block-paragraph">詳細設計は、基本設計で決めた方式を、製品・ミドルウェア・クラウドサービスの設定や構築単位に落とし込む工程です。</p>


<p class="wp-block-paragraph">パラメータ設計は、その中でも、OS、ミドルウェア、DB、ジョブ管理製品、監視製品、バックアップ製品、クラウドサービスなどの設定値を具体化する作業です。</p>


<p class="wp-block-paragraph">環境定義は、実際に構築される環境ごとの設定値を一覧化する成果物です。</p>


<p class="wp-block-paragraph">ただし、実務上は、詳細設計とパラメータ設計、環境定義を一体的に進めることも多くあります。特に基盤領域では、製品ごとの詳細設計書と、環境ごとのパラメータ一覧を合わせて管理することが一般的です。</p>


<p class="wp-block-paragraph">ここで押さえるべきなのは、<strong>すべての製品パラメータを案件ごとにゼロから検証するわけではない、ということ</strong>です。</p>


<p class="wp-block-paragraph">OS、Web/APサーバ、DB、ジョブ管理、監視、バックアップ製品、クラウドサービスには、膨大な設定項目があります。これらをすべて個別に妥当性検証することは、現実的ではありません。</p>


<p class="wp-block-paragraph">そのため、多くのプロジェクトでは、過去案件で実績のある標準構成や製品デフォルト値をベースにし、基本設計で定めた処理方式、性能要件、運用要件、セキュリティ要件に影響するパラメータを重点的に設計します。</p>


<p class="wp-block-paragraph">「デフォルトだから見なくてよい」ではありません。</p>


<p class="wp-block-paragraph">案件固有の要件に影響するパラメータを洗い出し、変更する項目については設定値と根拠を示します。</p>


<p class="wp-block-paragraph">一方、変更しない項目についても、環境定義として値を明示しておくことで、構築後の確認、障害時の調査、後続保守で参照できる状態にしておきます。</p>


<p class="wp-block-paragraph">詳細設計とは、全パラメータを網羅的に説明する工程ではありません。基本設計で決めた方式と、実際の製品設定・環境定義をつなぐ工程です。</p>


<h2 class="wp-block-heading">詳細設計は品質保証ストーリーの一部である</h2>


<p class="wp-block-paragraph">詳細設計は、構築担当者のための設定表ではありません。</p>


<p class="wp-block-paragraph">基本設計で決めた方式を、構築・テスト・運用へつなげることで、「なぜこの設計で品質を確保できると判断したのか」を説明する材料になります。</p>


<p class="wp-block-paragraph">特に大規模プロジェクトでは、設計値やパラメータ値に対して、根拠を求められることがあります。</p>


<p class="wp-block-paragraph">なぜこの値なのか。<br />
なぜデフォルト値でよいのか。<br />
なぜこの監視項目で足りるのか。<br />
なぜこの試験で確認できたと言えるのか。<br />
なぜこの構成で性能要件を満たすと判断したのか。</p>


<p class="wp-block-paragraph">このとき、詳細設計書に設定値だけが並んでいても説明できません。</p>


<p class="wp-block-paragraph">必要なのは、次の接続です。</p>


<ul id="39bb756f-5806-4ba7-90eb-bd16074ea7dd" class="wp-block-list">
	<li>基本設計で定めた方式</li>


	<li>非機能要件</li>


	<li>製品仕様</li>


	<li>標準構成・過去実績</li>


	<li>設定値の根拠</li>


	<li>テスト観点</li>


	<li>監視・運用での確認方法</li>
</ul>


<p class="wp-block-paragraph">一方で、すべての製品パラメータやすべての操作パターンを案件ごとに完全検証することはできません。</p>


<p class="wp-block-paragraph">製品内部の制御仕様、バージョン差分、特定条件でのみ発生する挙動まで、設計段階で完全に予見することは現実的ではありません。</p>


<p class="wp-block-paragraph">たとえば、通常利用では問題が出ないものの、特定の処理タイミング、特定の負荷条件、特定の運用操作が重なった場合だけ、製品内部の制御仕様によって処理遅延やエラーが発生することがあります。</p>


<p class="wp-block-paragraph">こうした事象は、要件や設計から自然に導けるものではなく、製品仕様、バージョン差分、既知不具合、過去事例に依存します。マニュアルやベンダー情報に明示されていなければ、設計段階で完全に予見することは困難です。</p>


<p class="wp-block-paragraph">だからこそ、詳細設計では、次の項目を重点的に設計します。</p>


<ul id="de11d93f-e406-478b-9714-1d7b75358ff6" class="wp-block-list">
	<li>基本設計で決めた処理方式に影響する項目</li>


	<li>性能・可用性・運用・セキュリティに影響する項目</li>


	<li>案件固有要件により変更する項目</li>


	<li>過去実績や標準構成で注意点が分かっている項目</li>
</ul>


<p class="wp-block-paragraph">変更する項目には、設定値と根拠を残します。</p>


<p class="wp-block-paragraph">変更しない項目については、製品デフォルト値または標準構成を採用し、環境定義として管理します。これは、すべてのデフォルト値を個別に検証したという意味ではありません。構築後の確認、障害時の調査、保守引継ぎのために、実際の設定状態を参照できるようにするためです。</p>


<p class="wp-block-paragraph">テストも同じです。</p>


<p class="wp-block-paragraph">テストは、見えない全パターンを無限に洗い出すものではありません。要件定義、基本設計、詳細設計で決めた内容に対して、Vモデルに沿って確認観点を展開するものです。</p>


<p class="wp-block-paragraph">詳細設計で目指すべきなのは、トラブルゼロを保証することではありません。</p>


<p class="wp-block-paragraph">要件と設計に基づいて、どこを重点的に設計し、どこを標準値として採用し、どこを試験で確認し、どこを運用監視で検知するのかを説明できる状態にすることです。</p>


<p class="wp-block-paragraph">これが、詳細設計における品質保証ストーリーです。</p>


<h2 class="wp-block-heading">詳細設計で見るべきなのは「設定値」ではなく「接続性」である</h2>


<p class="wp-block-paragraph">詳細設計というと、どうしても設定値に目が行きます。</p>


<p class="wp-block-paragraph">OSのパラメータ。<br />
ApacheやTomcatの設定。<br />
DBの初期化パラメータ。<br />
ジョブ管理製品のジョブ定義。<br />
監視製品の閾値。<br />
クラウドサービスの設定項目。</p>


<p class="wp-block-paragraph">もちろん、これらは大事です。</p>


<p class="wp-block-paragraph">しかし、詳細設計で見るべきなのは、設定値そのものだけではありません。</p>


<p class="wp-block-paragraph">基本設計、構築、テスト、運用がつながっているかです。</p>


<p class="wp-block-paragraph">たとえば、ログ設計であれば、以下がつながっている必要があります。</p>


<ul id="7a1d5e0c-cdca-4deb-93ab-52af06482cf2" class="wp-block-list">
	<li>基本設計：ログを1か月保持する</li>


	<li>詳細設計：logrotate設定、退避先、圧縮有無、世代数</li>


	<li>構築：設定ファイルの配置、権限設定、反映</li>


	<li>テスト：ログローテーション確認、容量監視確認</li>


	<li>運用：ログ確認手順、障害調査手順、バックアップ対象</li>
</ul>


<p class="wp-block-paragraph">このつながりがないと、詳細設計書は単なる設定一覧になります。</p>


<p class="wp-block-paragraph">一見すると設計書は埋まっているのに、後工程で漏れます。</p>


<p class="wp-block-paragraph">ログ保持期間は決まっているが、ローテーション設定がない。<br />
ログ出力先は決まっているが、容量監視がない。<br />
バックアップ対象に含まれていない。<br />
障害時にどのログを見るのか手順書に書かれていない。</p>


<p class="wp-block-paragraph">こうした漏れは、詳細設計の段階で「設定値を決めること」だけを目的にしていると起きます。</p>


<p class="wp-block-paragraph">詳細設計で見るべきなのは、設定値が正しいかだけではありません。</p>


<p class="wp-block-paragraph">その設定が、基本設計の方針とつながっているか。<br />
構築手順に落ちるか。<br />
テストで確認できるか。<br />
運用手順や監視とつながるか。<br />
障害時に使えるか。</p>


<p class="wp-block-paragraph">ここまで見て初めて、詳細設計として成立します。</p>


<h2 class="wp-block-heading">詳細設計は製品・ミドルウェア単位で分かれやすい</h2>


<p class="wp-block-paragraph">基本設計では、処理方式や運用方式の単位で設計することが多くあります。</p>


<p class="wp-block-paragraph">一方、詳細設計では、製品・ミドルウェア・クラウドサービス単位で設計書が分かれることが多くなります。</p>


<p class="wp-block-paragraph">たとえば、次のような詳細設計書です。</p>


<ul id="20bfa6c2-64a6-4731-90cd-ab2b3b5fb308" class="wp-block-list">
	<li>OS詳細設計書</li>


	<li>Webサーバ詳細設計書</li>


	<li>APサーバ詳細設計書</li>


	<li>DB詳細設計書</li>


	<li>ジョブ詳細設計書</li>


	<li>バックアップ詳細設計書</li>


	<li>監視詳細設計書</li>


	<li>ログ詳細設計書</li>


	<li>ストレージ詳細設計書</li>


	<li>ネットワーク詳細設計書</li>


	<li>セキュリティ詳細設計書</li>


	<li>運用スクリプト設計書</li>


	<li>クラウドサービス詳細設計書</li>
</ul>


<p class="wp-block-paragraph">これは、詳細設計が実際の構築対象に近づくからです。</p>


<p class="wp-block-paragraph">構築担当者は、OSを設定し、Webサーバを設定し、APサーバを設定し、DBを設定し、ジョブ管理製品にジョブを登録し、監視製品に監視項目を設定します。</p>


<p class="wp-block-paragraph">そのため、詳細設計も自然と製品・ミドルウェア・クラウドサービス単位になります。</p>


<p class="wp-block-paragraph">ただし、ここで注意が必要です。</p>


<p class="wp-block-paragraph">製品単位で詳細設計書を分けると、設計対象を管理しやすくなる一方で、処理方式としてのつながりが見えにくくなることがあります。</p>


<p class="wp-block-paragraph">たとえば、バックアップ方式は、DB詳細設計、ストレージ詳細設計、ジョブ詳細設計、監視詳細設計、運用スクリプト設計にまたがります。</p>


<p class="wp-block-paragraph">ログ方式は、OS詳細設計、ミドルウェア詳細設計、監視詳細設計、バックアップ詳細設計にまたがります。</p>


<p class="wp-block-paragraph">ジョブ方式は、ジョブ管理製品の詳細設計だけでなく、実行スクリプト、ログ出力、異常終了時の通知、運用手順、運転スケジュールにまたがります。</p>


<p class="wp-block-paragraph">つまり、詳細設計では、製品単位で分けることと、処理方式として横断的につなぐことの両方が必要です。</p>


<p class="wp-block-paragraph">ここを意識しないと、各詳細設計書は存在するのに、全体としてつながっていない状態になります。</p>


<hr class="wp-block-separator has-alpha-channel-opacity" />

<p class="wp-block-paragraph">ここまで、詳細設計の考え方を整理してきました。</p>


<p class="wp-block-paragraph">ここから先は、基盤SEが実際に詳細設計で具体化する領域を、OS、Web/AP、DB、ジョブ、監視、ログ、バックアップ、セキュリティ、運用スクリプトに分けて見ていきます。</p>


<p class="wp-block-paragraph">特に、<strong>ジョブ管理規約とスクリプトの戻り値設計、正常系だけで終わらせない単体試験、特権IDや本番作業統制の考え方は、現場でトラブルを起こしやすいポイント</strong>です。</p>


<p class="wp-block-paragraph">詳細設計を「設定表作成」で終わらせず、構築・テスト・運用で使える成果物にするための具体論を整理します。</p>


<p class="wp-block-paragraph">この先、後編①ではOS・Web/AP・DB・ジョブを、後編②では監視・ログ・バックアップ・セキュリティ・運用スクリプトを扱います。</p>


<p class="wp-block-paragraph">&#8211; OS詳細設計で見るべき観点<br />
&#8211; Web/APサーバ詳細設計で性能・運用とつなげる考え方<br />
&#8211; DB詳細設計で性能・バックアップ・セキュリティをどう見るか<br />
&#8211; ジョブ詳細設計で事故りやすい戻り値設計<br />
&#8211; ジョブ管理規約とスクリプトのコーディング規約をそろえる理由<br />
&#8211; 監視・ログ・バックアップ設計で後工程に漏れを出さない見方<br />
&#8211; セキュリティ詳細設計を技術設定だけで終わらせない考え方<br />
&#8211; 運用スクリプトの設計・試験で見落としやすいポイント<br />
&#8211; 詳細設計でやってはいけないこと</p>


<h2 class="wp-block-heading">「第一部まとめ｜詳細設計の本質」</h2>


<p class="wp-block-paragraph">詳細設計を単なるパラメータ表ではなく、基本設計で決めた方式を構築・テスト・運用・保守へ接続する工程として整理しました。</p>


<p class="wp-block-paragraph">設定値を埋めることではなく、基本設計、構築、テスト、運用がつながっているかを見ること。トラブルゼロを保証することではなく、どこを重点設計し、どこを試験で確認し、どこを運用監視で検知するかを説明できる状態にすること。</p>


<p class="wp-block-paragraph">これが詳細設計の本質です。</p>


<p class="wp-block-paragraph">その本質を踏まえて、詳細設計でやってはいけないことを4つ整理します。</p>


<p class="wp-block-paragraph"><strong>基本設計とのつながりを見ない<br />
</strong>詳細設計は、基本設計で決めた方式を具体化する工程です。基本設計との対応が見えない詳細設計は、ただの設定メモになります。</p>


<p class="wp-block-paragraph"><strong>製品パラメータを埋めるだけで終わる<br />
</strong>詳細設計では設定値を決めますが、それだけでは不十分です。構築、テスト、運用、障害対応までつながる粒度で設計します。</p>


<p class="wp-block-paragraph"><strong>設定値の理由を書かない<br />
</strong>なぜその値にしたのかが分からないと、レビューも保守もできません。推奨値なのか、性能要件から決めたのか、製品制約なのか、運用要件なのかを残します。</p>


<p class="wp-block-paragraph"><strong>全パラメータを保証したつもりになる<br />
</strong>詳細設計は、すべての製品パラメータやすべての組み合わせ挙動を案件ごとに完全検証する工程ではありません。要件・方式・リスクに影響する項目を重点的に設計し、標準構成やデフォルト値に依拠する範囲を明確にします。</p>


<p class="wp-block-paragraph">第2部ではOS・Web/AP・DB・ジョブ、第3部では監視・ログ・バックアップ・セキュリティ・運用スクリプトの注意点を整理します。</p>


<p class="wp-block-paragraph">扱う論点の多くは、「知っているか、知らないか」で後工程の品質が大きく変わるものです。設計書の体裁は整っているのに、システムテストや本番移行前に手戻りが発生する。その原因の多くは、詳細設計のこの段階で見落とされています。</p>
<div style="border: 1px solid #d9e8ff; border-radius: 8px; padding: 18px 20px; margin: 28px 0; background: #f8fbff;">
<p style="font-size: 13px; color: #336699; margin: 0 0 8px;">続けて読む</p>
<p style="font-size: 16px; font-weight: bold; color: #333; margin: 0 0 12px;">詳細設計で決めること 全3回シリーズ</p>
<p style="margin: 8px 0;"><a style="color: #1d5fd1; font-weight: bold; text-decoration: none;" href="https://sys-univ.com/dev/detailed-design-overview/"> 【第1部】詳細設計とは何を決める工程か｜パラメータ表で終わらせないための設計の考え方 </a></p>
<p style="margin: 8px 0;"><a style="color: #1d5fd1; font-weight: bold; text-decoration: none;" href="https://sys-univ.com/dev/detailed-design-part1-os-db-job/"> 【第2部】OS・Web/APサーバ・DB・ジョブの詳細設計｜基盤SEが決めるべき設計項目 </a></p>
<p style="margin: 8px 0;"><a style="color: #1d5fd1; font-weight: bold; text-decoration: none;" href="https://sys-univ.com/dev/detailed-design-part2-monitoring-security/"> 【第3部】監視・ログ・バックアップ・セキュリティの詳細設計｜運用で使える設計にする観点 </a></p>
</div>]]></content:encoded>
					
					<wfw:commentRss>https://sys-univ.com/dev/detailed-design-overview/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Fluent BitがPermission deniedでログを読めない｜ECS/Fargate共有VolumeのUID/GID設計</title>
		<link>https://sys-univ.com/dev/ecs-fargate-fluent-bit-permission-denied/</link>
					<comments>https://sys-univ.com/dev/ecs-fargate-fluent-bit-permission-denied/#respond</comments>
		
		<dc:creator><![CDATA[ナギ]]></dc:creator>
		<pubDate>Mon, 24 Aug 2026 09:35:01 +0000</pubDate>
				<category><![CDATA[システム開発]]></category>
		<guid isPermaLink="false">https://sys-univ.com/?p=3198</guid>

					<description><![CDATA[はじめに ECS/FargateでTomcatとFluent Bitを別コンテナとして起動し、同じVolumeを共有してログを収集する構成を作りました。 Tomcatが共有Volumeへログを書き込み、Fluent Bi [&#8230;]]]></description>
										<content:encoded><![CDATA[<p id="5fc6e5e0-fb23-4233-a997-2bcc20f52f3f" data-pm-slice="0 0 []"><strong>はじめに<br />
</strong><br />
ECS/FargateでTomcatとFluent Bitを別コンテナとして起動し、同じVolumeを共有してログを収集する構成を作りました。</p>
<p id="9648fe8f-8d5b-428e-8169-c54a39a78e42">Tomcatが共有Volumeへログを書き込み、Fluent Bitが同じVolumeをマウントしてログを読み取る構成です。</p>
<p id="9c5ed8a8-6f4e-4820-a3ef-3505e9dd7323">最初に発生したのはTomcat側のPermission deniedでした。その問題を解消してTomcatが正常にログを書けるようになると、今度はFluent Bit側で次のエラーが発生しました。</p>
<pre id="82f9231a-1dc6-4a73-80ab-6ed50cc1232a"><code>[error] [input:tail:tail.0]
cannot open /var/log/tomcat/app01/catalina.2030-09-18.log

[error] [plugins/in_tail/tail_file.c:888 errno=13]
Permission denied
</code></pre>
<p id="3a0fd474-3301-4118-8fb8-5db604e5a1e7">GCログでも同様です。</p>
<pre id="04a3d5a3-d837-4ad3-8e90-0a8578392c4a"><code>[error] [input:tail:tail.2]
cannot open /var/log/tomcat/app01/GC_log....txt

[error] [plugins/in_tail/tail_file.c:888 errno=13]
Permission denied
</code></pre>
<p id="8c686dc1-2dfd-4c6d-92f7-221dcd095d90">Tomcat自身はログを書けています。それなのに、同じVolumeを参照するFluent Bitはログを読めません。</p>
<p id="c3a8dc29-403d-467f-b26a-ad644df67624">今回の問題は、Tomcat単体では解決していても、<strong>ECSタスク全体では権限設計が成立していなかった</strong>ことにありました。</p>
<p id="5a926af7-441f-4533-a861-e59afa69caf8">前回の</p>
<a href="https://sys-univ.com/incident/ecs-fargate-permission-denied/" title="ECS/FargateでDockerfileのchownが効かない｜非rootコンテナがPermission deniedになる理由" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img width="160" height="90" src="https://sys-univ.com/wp-content/uploads/2026/08/00cdb8a8005d127bdb22a70dc77243e1-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" loading="lazy" decoding="async" srcset="https://sys-univ.com/wp-content/uploads/2026/08/00cdb8a8005d127bdb22a70dc77243e1-160x90.png 160w, https://sys-univ.com/wp-content/uploads/2026/08/00cdb8a8005d127bdb22a70dc77243e1-120x68.png 120w, https://sys-univ.com/wp-content/uploads/2026/08/00cdb8a8005d127bdb22a70dc77243e1-320x180.png 320w, https://sys-univ.com/wp-content/uploads/2026/08/00cdb8a8005d127bdb22a70dc77243e1-376x212.png 376w" sizes="auto, (max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">ECS/FargateでDockerfileのchownが効かない｜非rootコンテナがPermission deniedになる理由</div><div class="blogcard-snippet internal-blogcard-snippet">ECS/Fargateで非rootコンテナを実行した際、Dockerfileでchown済みのログディレクトリがPermission deniedになった実例をもとに、空のデータVolume（Empty Volume）とbind mount、VOLUMEの仕様、対策、設計レビュー、事前PoCで確認すべき点を解説します。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img src="https://www.google.com/s2/favicons?domain=https://sys-univ.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" loading="lazy" decoding="async" /></div><div class="blogcard-domain internal-blogcard-domain">sys-univ.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2026.08.14</div></div></div></div></a>
<p>では「ビルド時と実行時」を分けて考えました。今回はその続きとして、「コンテナ単体とECSタスク全体」を分けて考えます。</p>
<h2 id="39f92fb2-7283-46ee-9b4f-a88ff64d5bd3">今回の構成｜Tomcatが書き、Fluent Bitが読む</h2>
<p class="isSelectedEnd">今回の構成を単純化すると、Tomcatが共有Volumeへログを書き込み、Fluent Bitが同じVolumeをマウントしてログを読み取る構成です。</p>
<p><div id="attachment_3416" style="width: 510px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-3416" class="wp-image-3416 size-medium" src="https://sys-univ.com/wp-content/uploads/2026/08/6ac00c7dd0f929a752dc8cd19813260c-500x281.png" alt="" width="500" height="281" srcset="https://sys-univ.com/wp-content/uploads/2026/08/6ac00c7dd0f929a752dc8cd19813260c-500x281.png 500w, https://sys-univ.com/wp-content/uploads/2026/08/6ac00c7dd0f929a752dc8cd19813260c-800x450.png 800w, https://sys-univ.com/wp-content/uploads/2026/08/6ac00c7dd0f929a752dc8cd19813260c-300x169.png 300w, https://sys-univ.com/wp-content/uploads/2026/08/6ac00c7dd0f929a752dc8cd19813260c-768x432.png 768w, https://sys-univ.com/wp-content/uploads/2026/08/6ac00c7dd0f929a752dc8cd19813260c-1536x864.png 1536w, https://sys-univ.com/wp-content/uploads/2026/08/6ac00c7dd0f929a752dc8cd19813260c-120x68.png 120w, https://sys-univ.com/wp-content/uploads/2026/08/6ac00c7dd0f929a752dc8cd19813260c-160x90.png 160w, https://sys-univ.com/wp-content/uploads/2026/08/6ac00c7dd0f929a752dc8cd19813260c-320x180.png 320w, https://sys-univ.com/wp-content/uploads/2026/08/6ac00c7dd0f929a752dc8cd19813260c-376x212.png 376w, https://sys-univ.com/wp-content/uploads/2026/08/6ac00c7dd0f929a752dc8cd19813260c.png 1672w" sizes="auto, (max-width: 500px) 100vw, 500px" /><p id="caption-attachment-3416" class="wp-caption-text">図：ECS/Fargateの共有Volume構成（Tomcat → Fluent Bit）</p></div></p>
<p class="isSelectedEnd">TomcatはWriterとして、共有Volume上の<code dir="ltr">/var/log/tomcat/app01/</code>へ<code dir="ltr">catalina.2030-09-18.log</code>やGCログを書き込みます。Fluent BitはReaderとして同じVolumeを参照し、<code dir="ltr">in_tail</code>でこれらのログファイルを監視します。</p>
<p class="isSelectedEnd">両コンテナが直接データを受け渡しているのではなく、<strong>共有Volume上のログファイルがTomcatとFluent Bitの間のインターフェース</strong>になっています。</p>
<p class="isSelectedEnd">本記事で扱うのは、Fluent Bitの<code dir="ltr">in_tail</code>で共有Volume上のファイルを直接監視する構成です。アプリケーションの標準出力を<code dir="ltr">awsfirelens</code>ログドライバ経由でFluent Bitへ渡すFireLensの一般的な構成とは異なります。</p>
<p>また、公式の<code dir="ltr">aws-for-fluent-bit</code>イメージをデフォルトのrootユーザーで実行している場合、本記事で扱うような読み取り権限の問題は通常表面化しません。今回の環境ではFluent Bitを非rootユーザーで実行していたため、共有Volume上のファイル権限が問題になりました。</p>
<h2 id="3ea86439-4020-4e07-b307-d33f04d836c8">発端はTomcat側のPermission deniedだった</h2>
<p id="e1bb26ef-840f-4579-ab41-06c526826a71">今回、最初に問題になったのはFluent Bitではありません。</p>
<p id="28f8b72e-be2c-4ee4-9dea-3f3f0bad9d83">Tomcat側でGCログを作成できず、Javaの起動そのものが失敗していました。</p>
<pre id="836ec7a2-ad52-4bdf-b276-2eab12662abb"><code>Error opening log file
'/var/log/tomcat/app01/GC_log....txt':
Permission denied

Initialization of output
'file=/var/log/tomcat/app01/GC_log....txt' failed.

Error: Could not create the Java Virtual Machine.
</code></pre>
<p id="c748d671-be08-46e0-b6e2-9ad95d9b0d77">Dockerfileでは対象ディレクトリへchownしていましたが、Fargateタスク起動時に同じパスへVolumeをマウントしていたため、イメージ作成時に設定したディレクトリではなく、実行時にマウントされたVolume側のファイルシステムが見えていました。</p>
<p id="40636595-4c7c-4a78-ad7a-46e6bd27833e">この仕組みについては、先ほど示した<a href="https://sys-univ.com/incident/ecs-fargate-permission-denied/">前回</a>の記事で詳しく整理しています。</p>
<p id="c3b8c4dc-5577-4d09-9d59-c4a07f8122d8">本記事では、その問題を解消した<strong>後に発生した問題</strong>を扱います。</p>
<h2 id="8f29331b-fc94-49f2-8877-8fe736dd554f">Tomcatは書けるようになった。しかしFluent Bitは読めなかった</h2>
<p id="aa74750b-498d-4f09-8f3e-348300e81213">Tomcat側では、Volumeがマウントされた後に対象ディレクトリのowner/groupとpermissionを変更することで、ログを書き込める状態にしました。</p>
<p id="63b24e02-220b-4b2a-935d-bda2e4ea600f">これによってTomcatは正常に起動します。</p>
<p id="fae902ba-7712-43e7-963e-4c322a0d2237">ところが、次にFluent Bitでerrno=13が発生しました。</p>
<p id="66ce63ab-f2fa-4a7c-aa51-99354620861f">Linuxのerrno=13はEACCES、アクセス拒否です。</p>
<p id="b16ccc75-b294-40be-9f91-e9a59819b503">ここで重要なのは、</p>
<p id="b9b0eb80-778b-4395-925f-7ae5a7a31f50"><strong>Tomcatがログを書けることと、Fluent Bitがそのログを読めることは別の権限要件</strong></p>
<p id="7c3dcb82-4db3-4620-b871-df050655bdf5">だという点です。</p>
<p id="b0659908-da4d-4338-92b8-4d2be223d317">例えばTomcatが所有者であるログファイルなら、owner権限によってTomcat自身は問題なく書き込めます。</p>
<p id="2755838c-957b-4fe8-bed0-c8216e2efa24">Fluent Bitが別UIDで実行されている場合、そのファイルのgroupまたはotherに読み取り権限がなければアクセスできません。</p>
<p id="4874443f-328a-4919-a747-ef56ad6e18ee">さらにファイル自身のrだけでは足りません。</p>
<p id="368e1fd1-adae-400c-b2a5-5458b3853a59">Fluent Bitが対象ファイルへ到達するためには、<strong>ルートから対象ファイルまで、パス上に存在するすべてのディレクトリにx権限が必要</strong>です。</p>
<p id="3f8fe455-dbc8-4a39-89a5-32a9d9c24cdb">例えば、</p>
<pre id="caa4f965-bc56-4dda-8a04-a4e87fc16e6e"><code>/
└─ var
   └─ log
      └─ tomcat
         └─ app01
            └─ catalina.2030-09-18.log
</code></pre>
<p id="79109715-a431-4556-941f-65100e570a16">であれば、/var、/var/log、/var/log/tomcat、/var/log/tomcat/app01を順に辿れる必要があります。</p>
<p id="37fcfe56-6e4b-4b14-b0df-2587c2e177a4">さらに、*.logのようなワイルドカードでファイルを探索する場合は、ディレクトリエントリを列挙するためのr権限も考慮する必要があります。</p>
<p id="33062554-e7ef-43b8-a1b9-6d436a4d4501">確認すべきなのは、</p>
<pre id="f246d788-6b9a-4274-8692-7ba07abc039f"><code>ファイルのread権限
        ＋
パス上の全ディレクトリのtraverse権限
        ＋
Fluent Bit自身のUID/GID
</code></pre>
<p id="bb1a45f2-a1b5-4776-8c35-d00086fa28ad">です。</p>
<p id="3acca8f7-05d9-4bb6-b622-a3f5e54ff59d">なお、Volumeをマウントしているパスより上位のディレクトリは、各コンテナイメージ側のファイルシステムです。同じVolumeを共有していても、その上位階層まで同じ状態になるわけではありません。</p>
<h2 id="6b39b218-8974-4629-be66-fce95a717261">chmod 777で原因を権限問題に絞り込んだ</h2>
<p id="91020fa4-edb8-4aa5-840d-77a52cfcec2d">切り分けとして、対象ログのpermissionを一時的に緩める確認を行いました。</p>
<p id="73fe1859-8b76-4db1-b139-af0c0fc250eb">777にするとFluent Bitからログを監視できるようになったため、</p>
<ul id="12ddeaf1-d60e-401d-a5d7-8761b2e5548d">
<li>
<p id="04eb1893-b83b-415e-b7eb-06913c776fa9">Fluent Bitのtail設定</p>
</li>
<li>
<p id="8d063b91-f912-4945-b94b-6f7b0b2bfbfe">対象ログのパス</p>
</li>
<li>
<p id="1cc9bea7-5e4e-42b9-853f-c165d93f3cda">Volumeの共有そのもの</p>
</li>
</ul>
<p id="07f6bb37-b39d-4368-8975-7fec5b854962">ではなく、ファイルシステム上のアクセス権限が原因であることを確認できました。</p>
<p id="cb271790-fbe6-4691-a2ad-7b6fde57b836">もちろん、</p>
<pre id="b430ad22-892e-4fa7-89d8-e42a61efe77b"><code>chmod -R 777 /var/log/tomcat/app01
</code></pre>
<p id="d2b91129-75e7-4e5a-aee7-48275319d2c4">を恒久対策にはしません。</p>
<p id="f9424cbe-0f14-44fd-888e-980b838c4478">777は、原因を切り分けるための確認方法です。</p>
<p id="32939cc4-681e-421b-bbf7-8ddea68986b5">さらにchmod -R 775のようにディレクトリと通常ファイルへ同じmodeを再帰的に設定する方法も避けます。通常のログファイルに実行ビットを付与する必要はないためです。</p>
<p id="0dac8fdc-47aa-4492-b24c-9e2053e9b0e2">恒久対策では、ディレクトリとファイルの権限を分けて考えます。</p>
<h2 id="e75a115d-6948-4528-abf1-01a46aa59fd7">直接原因と設計上の原因は分けて考える</h2>
<p id="89df5522-243e-41dc-8956-2dbfecf6568a">今回の問題には、二つの原因があります。</p>
<h3 id="1aaf5a0b-8173-42b2-ad2b-71bae4d62057">技術的な直接原因</h3>
<p id="506d6e64-50f2-4894-ac78-7528a6eac1e3">Tomcatが生成したログファイルのowner/groupとmodeが、Fluent Bit側の読み取り条件を満たしていませんでした。</p>
<p id="d7690f9e-2af7-4305-8e2d-6cc00872c19e">Tomcatから見れば書き込めるファイルでも、別UID/GIDで動作するFluent Bitから見れば読み取れない状態です。</p>
<h3 id="cefcc138-93e1-4311-888d-c0173a42b29b">設計上の原因</h3>
<p id="eb903bf1-5c7b-4e7f-bd83-d98dc1554eac">Tomcatがログを書けることを権限設計のゴールにしてしまい、共有Volumeを利用するFluent Bitまで含めたアクセス要件になっていませんでした。</p>
<p id="ae4c6f92-d4a0-4373-8801-d5d677864312">本来の要件は、</p>
<pre id="0cd44622-49d7-483d-a6f0-5251ac4b1a14"><code>Tomcatが書ける
</code></pre>
<p id="b6ee8b00-fad0-44e1-a1d2-52870bc17b8d">ではなく、</p>
<pre id="3fecfdcf-ace7-4cd2-825c-ad982c2699d5"><code>Tomcatがログを書く
        ↓
Fluent Bitがそのログを継続して読む
</code></pre>
<p id="77108a82-036a-457d-8808-b697c163a016">です。</p>
<p id="1e7c1ffe-39bc-4d48-ac72-0c3172fe199c">ここをコンテナ単体ではなく、ECSタスク全体の要件として扱う必要があります。</p>
<h2 id="d3e417b2-26c4-47e5-a07c-c7b5679f9951">共有VolumeではUID/GIDをコンテナ間インターフェースとして考える</h2>
<p id="5caa8f14-78c0-4b48-a0cc-73360017b004">一つの解決方法として、TomcatとFluent Bitが共有するGIDを決める設計が考えられます。</p>
<p id="19a30d93-05ba-4a06-a320-8be690e41cd0">例えば、</p>
<pre id="88da91f8-c0a8-41a1-8310-1a9aebb076b4"><code>Tomcat
UID = 1071
GID = 3000

Fluent Bit
UID = xxxx
GID = 3000
</code></pre>
<p id="75711c20-88aa-4c25-83d3-b7cd46598295">とします。</p>
<p id="76e563ca-eb45-462b-84c9-ab678bbf0ca9">共有Volumeのログディレクトリを、</p>
<pre id="99659b33-cb0d-443a-b001-37e6d3fdd5ea"><code>owner = 1071
group = 3000
</code></pre>
<p id="a0b8aad8-a7e7-4e18-844b-e0d5a10e1b74">とすれば、</p>
<ul id="306986f6-568f-49a5-a913-6d19fc3edbb6">
<li>
<p id="e40676d7-a220-4476-a36a-53d1b91fab38">Tomcatはownerとしてログを生成する</p>
</li>
<li>
<p id="8f421e44-2d9f-42db-9e0d-d14f2c34b7ae">Fluent Bitはgroupとしてログを読む</p>
</li>
</ul>
<p id="20e27a8f-4064-42c1-98e1-7367b6c915a2">という役割分担ができます。</p>
<p id="523a511b-ae1d-4964-bc85-c189ae8201a5">重要なのは、3000という数値そのものではありません。</p>
<p id="81b6c83c-7396-4275-bb16-ad74eba60862"><strong>共有Volumeを境界として、WriterとReader双方から成立するUID/GIDを決めること</strong>です。</p>
<p id="d2b55031-f721-4f39-a966-d5ec368f9711">ECSのタスク定義では、Linuxコンテナの実行ユーザーをuserで指定できます。</p>
<p id="eb904391-7133-470a-aff8-ab5ec1fc5121">Fluent Bitを共有GIDで実行する場合、例えば設計上は、</p>
<pre id="c8407075-b31c-454f-88d5-6571512df0fe"><code>"user": "2000:3000"
</code></pre>
<p id="02b12102-e97b-469b-85c9-efbe169b25a0">のようにUIDとプライマリGIDを指定する方法があります。</p>
<p id="1987565b-3fbf-404c-8efd-80ad60c981a1">ECSには、Kubernetesのように、プロセスへ補助グループを追加する supplementalGroups 相当の仕組みはありません。Volumeのgroup所有権を自動調整する仕組みについても、bind mountでは提供されていません。</p>
<p id="9023212a-92eb-4f47-ac99-05a4cfb550a1">必要に応じて、</p>
<ul id="298e420c-3cf9-43ed-b739-592e98f2f76c">
<li>
<p id="baeffa3f-6535-4d93-8270-a0852384db84">タスク定義のuser</p>
</li>
<li>
<p id="c1c1e13b-12b3-4c26-ab64-e373de7d21ec">Fluent Bitのカスタムイメージ</p>
</li>
<li>
<p id="b700a967-606b-4ef2-a926-9c396fad5f73">イメージ内のuser/group定義</p>
</li>
</ul>
<p id="17901a18-b68e-49d7-9b62-0ebee102ad46">などを使って実行UID/GIDを設計する必要があります。</p>
<p id="55b00d45-3614-4e17-8e8d-34c481f6dad7">実環境では、設定値を見るだけではなく、</p>
<pre id="ce236e12-55c3-4582-9f72-aa2e1f0f6952"><code>id
</code></pre>
<p id="56169d5a-f510-44fe-8533-38a5fb54d8fc">で実際にプロセスがどのUID/GID/groupsで動作しているか確認することが重要です。</p>
<p id="e41fad2a-62a6-4f93-b661-4d41979de91d">また、タスク定義でuserを指定すると、コンテナのentrypoint自体もそのユーザーで実行されます。イメージのentrypointがroot権限を前提としたディレクトリ操作などを行っている場合は、別の起動エラーを起こす可能性があるため、その点も確認します。</p>
<h2 id="aee11230-bd0a-40d5-a7f2-b1bfcdc3a7d0">setgidで新規ログのgroupを引き継ぐ</h2>
<p id="fb4ca864-4f59-4be7-99db-79998b08ec6a">共有Volumeのディレクトリを最初に、</p>
<pre id="bc1cae32-b442-4e9b-8e9e-8de07ffd4ca0"><code>owner = 1071
group = 3000
</code></pre>
<p id="be120e79-1f71-41a0-8627-923896c6aed4">としても、それだけでは十分ではありません。</p>
<p id="ccf1c1fb-06ae-43ac-9fb6-b25db17f94bc">Tomcatがその後に新しいログファイルを作成すると、新規ファイルのgroupが期待した値にならない可能性があります。</p>
<p id="c9f1c659-8b3d-4d36-a3c8-e2c244eb7308">そこで利用できるのが、ディレクトリのsetgidビットです。</p>
<p id="d13e454f-b8d9-4770-a822-f84c3136ca2f">例えば、</p>
<pre id="9b42879a-1944-4a0b-9c26-aa39262f8a49"><code>chown 1071:3000 /var/log/tomcat/app01
chmod 2750 /var/log/tomcat/app01
</code></pre>
<p id="dbbfd489-1cfc-4a74-a32f-79f5f0e0540a">とします。</p>
<p id="b20f8a1d-da0b-41e6-82a9-acf9b2f58524">先頭の2がsetgidです。</p>
<p class="PDq2pG_selectionAnchorContainer" dir="auto" data-start="935" data-end="1001">setgidを設定したディレクトリ配下で新しくファイルを作成すると、ファイルのgroupは親ディレクトリのgroupを引き継ぎます。</p>
<p dir="auto" data-start="1006" data-end="1178"><strong data-start="1006" data-end="1065">新しくサブディレクトリが作成された場合も、通常は親ディレクトリのgroupとsetgidビットを引き継ぎます。</strong> 例えば親ディレクトリにsetgidを設定し、Tomcat側の<code data-start="1096" data-end="1103">umask</code>を<code data-start="1104" data-end="1110">0027</code>としている場合、新規サブディレクトリは基本的に<code data-start="1133" data-end="1138">750</code>となり、共有groupに所属するReader側からもパスを辿れる構成にできます。</p>
<p dir="auto" data-start="1183" data-end="1277">そのため、Tomcatが日付別などのサブディレクトリを作成して、その配下にログを出力する構成でも、setgidとumaskを組み合わせることでgroupとアクセス権を維持しやすくなります。</p>
<p dir="auto" data-start="1282" data-end="1378">ただし、アプリケーション自身がディレクトリのmodeやgroupを明示的に変更する場合は、その設定が優先されるため、実際に生成されたディレクトリのowner/group/modeを確認します。</p>
<p id="ae950b06-b152-46de-8b64-1b37dd112656">概念的には、</p>
<pre id="ac2f73eb-fe06-4a05-896d-e3e51ee055cf"><code>/var/log/tomcat/app01
owner = 1071
group = 3000
setgid
        │
        │ Tomcatが新規作成
        ▼
catalina.2030-09-18.log
group = 3000
</code></pre>
<p id="5c1f1081-bddd-4f29-b9c6-d101008a23bc">となります。</p>
<p id="a51660d9-2222-4162-bebc-eab14d49ac04">これによって、日付が変わって新しいログファイルが作成された場合でも、共有GIDを維持しやすくなります。</p>
<h2 id="5e2608c9-a349-42a5-aefe-456e1380049a">umaskで新規ログのmodeを制御する</h2>
<p id="bab28eef-8d7a-4542-b9c2-54899604d55f">groupが正しくても、ファイルにgroupの読み取り権限がなければFluent Bitは読めません。</p>
<p id="147dccc2-732d-4896-94bf-33f06e018dd9">そこで次に考えるのがumaskです。</p>
<p id="356e4af0-e71f-4983-bc7a-f329bde0be67">Linuxで一般的なファイルが新規作成される場合、最終的なmodeにはプロセスのumaskが影響します。</p>
<p id="a43d12c4-f8ef-40f3-a40b-5e42050d45f9">例えば、</p>
<pre id="e6263633-8971-4cc2-bd61-2d66c1ef5d75"><code>umask 0027
</code></pre>
<p id="9cf1aa38-cb5a-451c-b0d9-947a7289787a">であれば、通常ファイルは基本的に、</p>
<pre id="5a21b257-b63b-46a3-8021-e67d14b2697b"><code>640
rw-r-----
</code></pre>
<p id="ecc110fc-72f3-46d8-98ac-008f7a196286">となります。</p>
<p id="057a1509-69f6-4c90-86d7-5f4ffd7e1f81">これなら、</p>
<pre id="480f6520-2e0b-4d64-b4f9-377e9b36c5eb"><code>owner = Tomcat
group = Fluent Bitと共有するgroup
</code></pre>
<p id="f8c0fca6-234a-497b-b5c8-9ae7c1333a17">という構成において、</p>
<pre id="df499f3d-c8f1-4de3-ad94-0b563cd3bcb4"><code>Tomcat      → read / write
Fluent Bit  → read
others      → accessなし
</code></pre>
<p id="b184eca1-9a98-40b4-ae73-4eef96c646a7">というアクセス制御ができます。</p>
<p id="e8a44480-223e-4db1-b0db-1d984ff25331">考え方としては、</p>
<pre id="aeb2401e-9d9e-4a5a-9316-3c9f94c5e4e6"><code>setgid
  ↓
誰のgroupになるか

umask
  ↓
そのgroupに何を許可するか
</code></pre>
<p id="0df2ae87-bbf7-46d3-9f5c-80eaf314aba6">です。</p>
<p id="f0498899-15fc-4b8d-ae69-819fb775a31d">共有Volumeでは、この二つをセットで考えると整理しやすくなります。</p>
<p id="7b68524b-ef47-450e-aadd-e6003f78729a">なお、アプリケーション自身が明示的にpermissionを変更する場合など、umaskだけでは決まらないケースもあります。実際に生成されたファイルのowner/group/modeは必ず確認します。</p>
<h2 id="48732a5e-ac9f-48cf-8771-eccd59711182">Volumeの初期権限を直すだけでは足りない</h2>
<p id="8f5514cf-716c-420b-9b55-e6110c72a063">既存記事では、権限設定用コンテナを先行起動してVolumeを初期化する方式を扱いました。</p>
<p id="3783de1f-f2e3-489d-800f-0a24093d6142">ECSにはKubernetesのような専用のinit container機能はありませんが、</p>
<pre id="49e00a27-d395-49ae-918e-767f67be2f56"><code>権限設定用コンテナ
        ↓ SUCCESS
Tomcat / Fluent Bit
</code></pre>
<p id="775828ce-dfd0-4c62-b036-50f0ce0cab14">という依存関係を作ることができます。</p>
<p id="a15915a8-f763-44e4-97b5-556d2c288fc2">SUCCESSやCOMPLETEを依存条件として使う場合、依存先コンテナをessentialコンテナにはできません。権限設定用コンテナはessential: falseとして定義する必要があります。</p>
<p id="783ad2b1-4a9c-4664-8a51-41da15a19351">この方式そのものについては既存記事で詳しく説明しているため、本記事では繰り返しません。</p>
<p id="bfe7f9c9-1d13-4ac7-87f6-1cdbca967c01">今回重要なのは、その<strong>次</strong>です。</p>
<p id="fdd12768-ee11-4c4a-b82f-57d2dfae5dee">権限設定用コンテナが変更できるのは、基本的にタスク起動時点のVolumeの状態です。</p>
<p id="2d1ec9bc-d1ca-4c14-907d-7ef693616794">その後にTomcatが作成するログファイルについては、</p>
<ul id="d5ab40c7-0358-4110-8f4e-18ef17f65596">
<li>
<p id="8f918c69-b307-4960-8878-5599a64582c7">TomcatのUID</p>
</li>
<li>
<p id="aed8e301-0840-4045-9362-1ad3af792c8c">TomcatのGID</p>
</li>
<li>
<p id="e710d6fc-cd87-4e3a-8e8a-daf31a5046c5">親ディレクトリのsetgid</p>
</li>
<li>
<p id="c3db5184-3080-443d-98d4-884cb2fbf4b0">プロセスのumask</p>
</li>
<li>
<p id="a108fb78-beec-4114-b634-387c5004796b">アプリケーション自身のファイル生成方法</p>
</li>
</ul>
<p id="40cef107-ba8c-45a4-8938-df8e0dff96f2">などによってowner/group/modeが決まります。</p>
<pre id="db3c5dfb-dfa1-46fa-a785-7ea9cc7d9ec3"><code>Volume初期化
    ↓
正しい権限になった
    ↓
完了
</code></pre>
<p id="f47a0bc2-e44c-426c-8640-a9b52f4558ac">ではありません。</p>
<pre id="ca3421ed-9cd5-44b8-903a-cc889cd4a5f5"><code>Volume初期化
    ↓
Tomcat起動
    ↓
ログ新規生成
    ↓
Fluent Bitから読み取り
    ↓
翌日のログ新規生成
    ↓
引き続き読み取り
</code></pre>
<p id="cd572505-62e3-45e0-bf21-c641e8b2b206">まで成立して、初めてタスク全体として権限設計が成立します。</p>
<h2 id="1e8dc7dd-add3-4cd4-ad81-7366228b8be5">恒久対策として考えられる構成</h2>
<p id="ffeb0022-bf2f-46a9-834c-c5c71eb801fd">今回確認した事象とLinuxの権限の仕組みから整理すると、恒久対策としては次の構成が考えられます。</p>
<h3 id="ae365a94-34ba-4fea-b8ef-c4e85f400261">1. 権限設定用コンテナでVolumeを初期化する</h3>
<p class="PDq2pG_selectionAnchorContainer" dir="auto" data-start="341" data-end="469">権限設定用コンテナでは、TomcatやFluent Bitと同じ共有Volumeを、権限変更用のマウントポイントとして<code data-start="400" data-end="406">/mnt</code>へマウントする想定です。<strong data-start="418" data-end="469">同じVolumeでも、コンテナごとに<code data-start="438" data-end="453">containerPath</code>は異なるパスを指定できます。</strong></p>
<p dir="auto" data-start="474" data-end="553">そのため、Tomcatからは<code data-start="488" data-end="512">/var/log/tomcat/app01/</code>として見えるVolumeを、権限設定用コンテナでは<code data-start="537" data-end="543">/mnt</code>として操作できます。</p>
<p dir="auto" data-start="558" data-end="562">例えば、</p>
<div class="relative w-full mt-4 mb-1">
<div class="">
<div class="contents">
<div class="border border-token-border-light border-radius-3xl corner-superellipse/1.1 rounded-3xl">
<div class="relative h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback">
<div class="relative">
<div class="h-full min-h-0 min-w-0">
<div class="h-full min-h-0 min-w-0">
<div class="">
<div class="relative">
<div class="">
<div class="relative z-0 flex max-w-full">
<div id="code-block-viewer" class="q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch ͼd ͼr" dir="ltr">
<div class="cm-scroller">
<pre class="cm-content q9tKkq_readonly m-0"><code><span class="ͼl">chown</span> <span class="ͼj">1071</span>:3000 /mnt
<span class="ͼl">chmod</span> <span class="ͼj">2750</span> /mnt</code></pre>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="">
<div>とします。</div>
<div>
<p id="57b6bf8c-1c07-4b6b-b19a-b8370e85302d">2750はあくまで一例です。</p>
<p>必要なアクセス要件に応じてmodeを決めます。</p>
<p id="cb809d46-5b8e-4cc0-b2e3-3cdea26c6393">複数階層を初期化する場合も、ディレクトリと通常ファイルを分けて設定します。</p>
<p id="50bd43d4-ac36-4c62-9d48-7e52aeae342d">例えば、</p>
<div class="code-block-container">
<pre id="22fa3a14-e17f-474b-af23-481907c2ba72" data-name="preCode"><code class="hljs rust" data-name="code">find /mnt -<span class="hljs-class"><span class="hljs-keyword">type</span> <span class="hljs-title">d</span></span> -exec chmod <span class="hljs-number">2750</span> {} +
find /mnt -<span class="hljs-class"><span class="hljs-keyword">type</span> <span class="hljs-title">f</span></span> -exec chmod <span class="hljs-number">640</span> {} +</code></pre>
<div class="a-button__inner" data-v-6d7b4d65="">のように扱えば、ログファイルへ不要な実行ビットを付与せずに済みます。</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<h3 id="17c76e39-92b7-450a-814d-37519215fb18">2. Tomcatを非rootで実行する</h3>
<p id="923a0d3b-76ac-4f4f-8d53-f99b62cc4d19">Volumeの初期化を別コンテナへ分離すれば、Tomcat自身を権限変更のためにrootで実行する必要はありません。</p>
<p id="203f40aa-46a5-463b-bff9-8bb68297194f">Tomcatはアプリケーション実行用のUID/GIDで起動します。</p>
<h3 id="002b12c1-cf7f-4c12-9aa2-ed9cac9fe368">3. Tomcat側でumaskを設定する</h3>
<p id="8d7c2a39-13ec-4a27-91d7-18fd677bda96">例えば、</p>
<pre id="dfeb8931-8a26-47d2-8adc-35e6e62d5479"><code>umask 0027
</code></pre>
<p id="ec6916f0-cb4b-4585-bfe4-b7f189d3f750">としてからTomcatを起動します。</p>
<p id="599a95a6-3004-4f88-a124-607154a551ac">これにより、Tomcatが新しく作成するログファイルについて、共有groupから読み取り可能なmodeにすることを狙います。</p>
<h3 id="2ee0eba0-15ef-4cb6-a25f-0031b3edd5d9">4. Fluent Bitを共有GIDから読み取れる状態にする</h3>
<p id="0c4bc7a2-21d1-4c1e-bb95-b90219f142c9">Fluent Bit側も、共有Volume上のログを読み取れるUID/GIDで実行します。</p>
<p id="26cae69c-100d-4756-a00a-73675e7aa234">タスク定義のuserを利用する場合は、例えば、</p>
<pre id="72bb39a6-36cc-4a9f-8447-88cbea8cd06b"><code>"user": "2000:3000"
</code></pre>
<p id="f9491f3d-1324-4af3-93db-b221ae80b58c">のような指定が候補になります。</p>
<p id="b58f5923-9c7c-448d-a027-7138ae93b092">実際に使用するUID/GIDは、利用しているFluent Bitイメージやその実行方式に合わせて決めます。</p>
<h3 id="e36eaad7-44fb-42a6-8eb0-7e9e7b269514">5. Fluent Bit側は可能ならread-onlyでマウントする</h3>
<p id="204c2ad1-bd0b-4f75-9eb0-ba860a663ec6">Fluent Bitはログを読むだけであれば、共有ログVolumeをread-onlyでマウントする方が役割を明確にできます。</p>
<pre id="10013fa7-6305-4543-9c9d-e1cc81fe61f9"><code>{
  "sourceVolume": "tomcat-logs",
  "containerPath": "/var/log/tomcat/app01",
  "readOnly": true
}
</code></pre>
<p id="1bf2b111-1bbe-481e-b153-cfd05c076447">Fluent BitのDBファイルなど書き込みが必要なファイルは、共有ログVolumeとは別の書き込み可能な場所へ配置する必要があります。</p>
<h3 id="a8ed1fca-9b41-4f4e-ade6-bec70e9d9ca0">6. 新しいログが生成された後まで確認する</h3>
<p id="10261414-0798-443a-805b-78800af0488a">起動直後のファイルだけではなく、Tomcatが新しくログを作成した後に、</p>
<pre id="e2defeac-a372-4d9d-a74e-aab9f45f1269"><code>ls -ld /var/log/tomcat/app01
ls -l /var/log/tomcat/app01
id
</code></pre>
<p id="2514e1cb-a2aa-4a78-a4e4-8c8ca091529a">などで、</p>
<ul id="fec6c1c9-dc10-40b7-a1f1-4c5da5f95816">
<li>
<p id="eb2576ee-92c3-4167-a0cc-ffa450152565">owner</p>
</li>
<li>
<p id="044df3cd-2289-4de9-94cb-a1e0e8138d15">group</p>
</li>
<li>
<p id="a905fc2e-1d30-4946-b8d0-4e0be84b342c">mode</p>
</li>
<li>
<p id="209aa1c8-c99e-41d2-a302-70c4a70a9db5">TomcatのUID/GID</p>
</li>
<li>
<p id="749d50e5-c3f7-443b-b4fb-3c3a997be434">Fluent BitのUID/GID</p>
</li>
</ul>
<p id="1f02449a-61b8-4cd0-b84e-e69df135e40c">を確認します。</p>
<p id="8f93a687-5fc2-425b-a7b8-afecbc41f5ec">特に日付が変わってcatalina.YYYY-MM-DD.logが新しく生成された後や、GCログが新しいファイルへ切り替わった後にもFluent Bitが継続して読み取れることを確認します。</p>
<h2 id="6a833d64-ab34-494b-940a-8a36971ad4d1">この構成は各環境で検証が必要</h2>
<p id="8b1c6362-2ea7-49f5-b22a-58ad012e4c29">ここまでの構成は、今回確認した事象とLinuxのファイル権限の仕組みから整理した恒久対策案です。</p>
<p id="8963a324-f06b-4c34-8404-2d25cd045008">実際に必要となる設定は、</p>
<ul id="bcd707de-4864-4183-a88f-b4ee42883a25">
<li>
<p id="6019b458-4293-4653-b789-557e754c1ef8">使用するコンテナイメージ</p>
</li>
<li>
<p id="51dff3d7-1452-4690-9ba5-536f5ed2c70e">Tomcat/JDKのバージョン</p>
</li>
<li>
<p id="05b86abf-5032-4ef9-a66f-02d836f39499">ログの生成方式</p>
</li>
<li>
<p id="1f404818-6f88-40ab-ae22-d5eb9eb8bc38">Fluent Bitの実行UID/GID</p>
</li>
<li>
<p id="39fbf6f2-6e6b-4b7c-874d-b806b64108f9">Fluent Bitのin_tail設定</p>
</li>
<li>
<p id="360cd4a1-b320-4833-b5b6-606739e80173">Volumeのマウントポイント</p>
</li>
</ul>
<p id="5a3ab633-3ed0-4839-a977-dc8455e8f2f1">などによって変わります。</p>
<p id="6a5c1536-f071-4a3e-a17b-196150d1f4aa">本記事のUID/GIDやmodeをそのまま適用するのではなく、<strong>各環境で実際に生成されたファイルのowner/group/modeと、各コンテナの実行UID/GIDを確認したうえで検証してください。</strong></p>
<h2 id="72d330b1-da69-4a6e-8d55-76a8d27e87bc">ECS/Fargateで共有Volumeを使うときの確認項目</h2>
<p id="c732a93e-0c31-4176-9f11-0900a633cb3b">共有Volumeの権限問題を確認する際は、Writer側だけを見るのではなく、実行UID/GID、Volumeとファイルの権限、その後のファイル生成まで順に確認します。今回の事象を踏まえて、確認項目を以下に整理しました。</p>
<figure class="wp-block-table">
<table>
<thead>
<tr>
<th>項番</th>
<th>確認項目</th>
<th>確認内容</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>WriterのUID/GID</td>
<td>ログを生成するコンテナを誰で実行するか</td>
</tr>
<tr>
<td>2</td>
<td>ReaderのUID/GID</td>
<td>ログを読むコンテナを誰で実行するか</td>
</tr>
<tr>
<td>3</td>
<td>実行時の<code>id</code></td>
<td>設定値ではなく、実際のUID/GID/groupsを確認する</td>
</tr>
<tr>
<td>4</td>
<td>Volumeのowner/group</td>
<td>マウント後の所有者・グループを確認する</td>
</tr>
<tr>
<td>5</td>
<td>ディレクトリ権限</td>
<td>Readerがパス上の各ディレクトリを辿り、必要に応じて列挙できるか</td>
</tr>
<tr>
<td>6</td>
<td>ファイル権限</td>
<td>Readerが実際のログファイルを読み取れるか</td>
</tr>
<tr>
<td>7</td>
<td>setgid</td>
<td>新規ファイルへ共有groupを引き継げるか</td>
</tr>
<tr>
<td>8</td>
<td>umask</td>
<td>新規ファイルに必要なgroup権限が付くか</td>
</tr>
<tr>
<td>9</td>
<td>新規ログ生成</td>
<td>日付切替やGCログ切替後も権限が維持されるか</td>
</tr>
<tr>
<td>10</td>
<td>起動順序</td>
<td>Volume初期化完了後に各コンテナが起動するか</td>
</tr>
<tr>
<td>11</td>
<td>root権限</td>
<td>権限初期化など、rootが必要な処理だけに限定できているか</td>
</tr>
<tr>
<td>12</td>
<td>read-only</td>
<td>Reader側から不要な書き込みを防止できるか</td>
</tr>
<tr>
<td>13</td>
<td>タスク再作成</td>
<td>新しいFargateタスクでも同じ状態を再現できるか</td>
</tr>
</tbody>
</table>
</figure>
<p id="a687798a-ca62-4ae2-a22c-022699d1a8fb">特に、起動時のVolumeのowner/groupが正しくても、その後に生成されるログのgroupとmodeがReaderの要件を満たすとは限りません。setgidとumask、新規ログ生成後の確認までを一連のテストとして扱うことが重要です。</p>
<h2 id="9ed9757d-d4f6-4ea5-aa66-9808f032622f">まとめ：共有Volumeはコンテナ間インターフェースとして設計する</h2>
<p id="22218c02-40b9-45b7-b058-3f59af54ea21">今回、Tomcatからログを書けるようになった時点では、権限問題を解決できたと思っていました。実際には、同じVolumeを利用するFluent Bitからログを読めず、タスク全体としてはまだ成立していませんでした。</p>
<p id="afb8b7a0-8fee-48bf-b3e4-1000c8a7170d">共有Volumeでは、マウント直後のowner/groupとpermissionを整えるだけでは不十分です。その後に生成されるファイルのgroupをどう引き継ぐか（setgid）、どのmodeで作成するか（umask）、Reader側のUID/GIDから読み取れるか、そしてログが新しく作り直された後も読み続けられるかまで確認する必要があります。</p>
<p id="b621282c-837a-448e-97da-36d47fac903c">TomcatとFluent Bitのように複数コンテナでVolumeを共有する場合、Volumeは単なる保存領域ではなく、コンテナ間でデータを受け渡すインターフェースになります。Writerが書けることではなく、Readerが継続して読めることが要件です。</p>
<p id="e4568da3-1aae-4c63-8501-c6ded112a086"><strong>コンテナ単体では正しい設定でも、ECSタスク全体では正しいとは限りません。</strong></p>
<hr id="d30c189c-ad11-4740-9123-7f1ea31c792b" />
<p id="16f455c4-af47-41de-bb4f-c4c3b8c314b5"><span style="font-size: 20px;">関連記事</span></p>
<p id="9e91710f-1903-4ece-8da4-72234df721c8">本記事の前段となった事象です。</p>
<p id="7ad6b663-6964-4d83-8203-4b99b5217cb0">DockerfileでchownしたディレクトリへECS/FargateのEmpty Volumeをマウントすると、なぜ設定したはずの権限が見えなくなるのか。ビルド時のファイルシステムと実行時のVolumeを分けて整理しています。</p>
<a href="https://sys-univ.com/incident/ecs-fargate-permission-denied/" title="ECS/FargateでDockerfileのchownが効かない｜非rootコンテナがPermission deniedになる理由" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img width="160" height="90" src="https://sys-univ.com/wp-content/uploads/2026/08/00cdb8a8005d127bdb22a70dc77243e1-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" loading="lazy" decoding="async" srcset="https://sys-univ.com/wp-content/uploads/2026/08/00cdb8a8005d127bdb22a70dc77243e1-160x90.png 160w, https://sys-univ.com/wp-content/uploads/2026/08/00cdb8a8005d127bdb22a70dc77243e1-120x68.png 120w, https://sys-univ.com/wp-content/uploads/2026/08/00cdb8a8005d127bdb22a70dc77243e1-320x180.png 320w, https://sys-univ.com/wp-content/uploads/2026/08/00cdb8a8005d127bdb22a70dc77243e1-376x212.png 376w" sizes="auto, (max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">ECS/FargateでDockerfileのchownが効かない｜非rootコンテナがPermission deniedになる理由</div><div class="blogcard-snippet internal-blogcard-snippet">ECS/Fargateで非rootコンテナを実行した際、Dockerfileでchown済みのログディレクトリがPermission deniedになった実例をもとに、空のデータVolume（Empty Volume）とbind mount、VOLUMEの仕様、対策、設計レビュー、事前PoCで確認すべき点を解説します。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img src="https://www.google.com/s2/favicons?domain=https://sys-univ.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" loading="lazy" decoding="async" /></div><div class="blogcard-domain internal-blogcard-domain">sys-univ.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2026.08.14</div></div></div></div></a>
]]></content:encoded>
					
					<wfw:commentRss>https://sys-univ.com/dev/ecs-fargate-fluent-bit-permission-denied/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>セキュリティ要件定義の進め方｜リスクアセスメントから対策・残存リスクを決める方法</title>
		<link>https://sys-univ.com/dev/security/</link>
					<comments>https://sys-univ.com/dev/security/#respond</comments>
		
		<dc:creator><![CDATA[ナギ]]></dc:creator>
		<pubDate>Thu, 17 Sep 2026 09:05:24 +0000</pubDate>
				<category><![CDATA[システム開発]]></category>
		<guid isPermaLink="false">https://sys-univ.com/?p=3333</guid>

					<description><![CDATA[はじめに セキュリティ要件を検討するとき、暗号化する、MFAを導入する、アクセス経路を制限する、ログを取得するといった、具体的な対策から考え始めてしまうことがあります。 もちろん、これらは重要なセキュリティ対策です。しか [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><strong>はじめに</strong></p>
<p>セキュリティ要件を検討するとき、暗号化する、MFAを導入する、アクセス経路を制限する、ログを取得するといった、<strong>具体的な対策から考え始めてしまう</strong>ことがあります。</p>
<p>もちろん、これらは重要なセキュリティ対策です。しかし、対策そのものを先に並べても、</p>
<blockquote>
<p>なぜ、この対策が必要なのか<br />
どこまで対策する必要があるのか<br />
なぜ、この対策は実施しないのか</p>
</blockquote>
<p>までは決まりません。</p>
<p>同じ「個人情報を扱うシステム」でも、インターネットへ公開するシステムと閉域網だけで利用するシステムでは、想定する攻撃経路が異なります。24時間停止できない基幹システムと、数時間停止しても業務影響が小さい情報提供サイトでは、可用性に対する要求も変わります。</p>
<p>暗号化やMFAといった対策が一般的に有効だからといって、すべてのシステムに同じ方式・同じ水準で実装すればよいわけではありません。</p>
<p>必要なのは、最初に、</p>
<blockquote>
<p><strong>何を守るのか</strong><br />
<strong>何が起こり得るのか</strong><br />
<strong>その結果、どの程度の影響があるのか</strong></p>
</blockquote>
<p>を明らかにすることです。</p>
<p>その中心になるのが、<strong>リスクアセスメント</strong>です。</p>
<p>本記事では、セキュリティ全体の評価・確認を広く「セキュリティアセスメント」と呼び、その中核となる<strong>リスクアセスメント</strong>を、脅威・脆弱性・影響からリスクを分析・評価するプロセスとして扱います。</p>
<p>具体的には、次の4ステップでセキュリティ要件を導きます。</p>
<p><div id="attachment_3397" style="width: 510px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-3397" class="wp-image-3397 size-medium" src="https://sys-univ.com/wp-content/uploads/2026/09/b8ede4b2b44ea1d44f608cfdbf5e5978-500x281.png" alt="" width="500" height="281" srcset="https://sys-univ.com/wp-content/uploads/2026/09/b8ede4b2b44ea1d44f608cfdbf5e5978-500x281.png 500w, https://sys-univ.com/wp-content/uploads/2026/09/b8ede4b2b44ea1d44f608cfdbf5e5978-800x450.png 800w, https://sys-univ.com/wp-content/uploads/2026/09/b8ede4b2b44ea1d44f608cfdbf5e5978-300x169.png 300w, https://sys-univ.com/wp-content/uploads/2026/09/b8ede4b2b44ea1d44f608cfdbf5e5978-768x432.png 768w, https://sys-univ.com/wp-content/uploads/2026/09/b8ede4b2b44ea1d44f608cfdbf5e5978-1536x864.png 1536w, https://sys-univ.com/wp-content/uploads/2026/09/b8ede4b2b44ea1d44f608cfdbf5e5978-120x68.png 120w, https://sys-univ.com/wp-content/uploads/2026/09/b8ede4b2b44ea1d44f608cfdbf5e5978-160x90.png 160w, https://sys-univ.com/wp-content/uploads/2026/09/b8ede4b2b44ea1d44f608cfdbf5e5978-320x180.png 320w, https://sys-univ.com/wp-content/uploads/2026/09/b8ede4b2b44ea1d44f608cfdbf5e5978-376x212.png 376w, https://sys-univ.com/wp-content/uploads/2026/09/b8ede4b2b44ea1d44f608cfdbf5e5978.png 1672w" sizes="auto, (max-width: 500px) 100vw, 500px" /><p id="caption-attachment-3397" class="wp-caption-text">図　セキュリティ要件を導く4ステップ</p></div></p>
<ol type="1">
<li>脅威を分析する</li>
<li>脆弱性・設定不備・統制不足を分析する</li>
<li>リスクを分析・評価する</li>
<li>リスク対応を決め、必要な対策へ落とす</li>
</ol>
<p>このうち、<strong>STEP1〜3がリスクアセスメント</strong>です。STEP4では、その評価結果をもとにリスクを低減・回避・移転・保有のどれで扱うかを決め、必要なセキュリティ対策へ落とします。</p>
<blockquote>
<p><strong>リスクアセスメント<br />
→ リスク対応<br />
→ セキュリティ要件</strong></p>
</blockquote>
<p>という順序です。</p>
<p>4ステップに入る前には、何を評価対象にするのか、誰がどのセキュリティコントロールを担うのかを明確にするため、<strong>対象範囲と責任分界</strong>を整理します。要件を決めたあとも、構成変更や新しい脅威に応じてリスクを見直します。</p>
<p class="PDq2pG_selectionAnchorContainer" dir="auto" data-start="176" data-end="208"><strong data-start="176" data-end="208">ここで「セキュリティ要件定義」の位置づけを確認しておく必要があります。</strong></p>
<p class="PDq2pG_selectionAnchorContainer" dir="auto" data-start="334" data-end="410">本記事では、<strong data-start="340" data-end="400">RFPや提案書、見積前提、顧客のセキュリティ標準、業界基準など、一定の上位要求が既にインプットとして存在すること</strong>を前提としています。</p>
<p dir="auto" data-start="415" data-end="530">ただし、これらの要求は、そのまま実装できる粒度まで具体化されているとは限りません。「強固な認証を行う」「通信を暗号化する」「災害時の業務継続を検討する」といった要求を、対象システムの構成やリスクに合わせて具体化する必要があります。</p>
<p dir="auto" data-start="535" data-end="621"><strong data-start="544" data-end="618">本記事で扱うのは、こうした上位要求を入力として、リスクアセスメントを行い、個々のセキュリティ要件、責任分界、上位基準との差異、残存リスクまで具体化していく工程</strong>です。</p>
<p dir="auto" data-start="556" data-end="639"><strong data-start="556" data-end="639">RFP・上位要求<br data-start="566" data-end="569" /><br />
→ 提案段階で主要な実現可能性を検討<br data-start="589" data-end="592" /><br />
→ 要件定義で要求・差異・責任分界を具体化<br data-start="615" data-end="618" /><br />
→ 基本設計以降で実装方式を具体化</strong></p>
<p dir="auto" data-start="644" data-end="665">という流れを前提に、以降の説明を進めます。</p>
<p class="PDq2pG_selectionAnchorContainer" dir="auto" data-start="133" data-end="152">要件定義と設計の役割も分けて考えます。</p>
<p dir="auto" data-start="157" data-end="224"><strong data-start="157" data-end="224">要件定義で決めるのは「どのリスクに、どこまで対応するか」です。基本設計以降では、その要求をどの方式で実現するかを具体化します。</strong></p>
<p dir="auto" data-start="229" data-end="288"><strong data-start="229" data-end="288">具体的な対策を先に選ぶのではなく、リスクアセスメントによってリスクを明らかにし、その結果から必要な対策を導く。</strong></p>
<p dir="auto" data-start="293" data-end="321">これが、本記事で説明するセキュリティ要件定義の基本です。</p>
<p dir="auto" data-start="326" data-end="458">要件定義全体の位置づけや、RFP・提案内容・見積前提との関係は、次の記事で整理しています。</p>
<a href="https://sys-univ.com/dev/requirements-definition/" title="要件定義とは何をする工程か｜RFP・見積前提から認識差を潰す実務" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img width="160" height="90" src="https://sys-univ.com/wp-content/uploads/2026/06/2d222665bad7a62379b769bded1c226a-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" loading="lazy" decoding="async" srcset="https://sys-univ.com/wp-content/uploads/2026/06/2d222665bad7a62379b769bded1c226a-160x90.png 160w, https://sys-univ.com/wp-content/uploads/2026/06/2d222665bad7a62379b769bded1c226a-500x281.png 500w, https://sys-univ.com/wp-content/uploads/2026/06/2d222665bad7a62379b769bded1c226a-800x450.png 800w, https://sys-univ.com/wp-content/uploads/2026/06/2d222665bad7a62379b769bded1c226a-300x169.png 300w, https://sys-univ.com/wp-content/uploads/2026/06/2d222665bad7a62379b769bded1c226a-768x432.png 768w, https://sys-univ.com/wp-content/uploads/2026/06/2d222665bad7a62379b769bded1c226a-1536x864.png 1536w, https://sys-univ.com/wp-content/uploads/2026/06/2d222665bad7a62379b769bded1c226a-120x68.png 120w, https://sys-univ.com/wp-content/uploads/2026/06/2d222665bad7a62379b769bded1c226a-320x180.png 320w, https://sys-univ.com/wp-content/uploads/2026/06/2d222665bad7a62379b769bded1c226a-376x212.png 376w, https://sys-univ.com/wp-content/uploads/2026/06/2d222665bad7a62379b769bded1c226a.png 1672w" sizes="auto, (max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">要件定義とは何をする工程か｜RFP・見積前提から認識差を潰す実務</div><div class="blogcard-snippet internal-blogcard-snippet">要件定義とは何をする工程なのか。RFP、質問回答、提案書、見積前提から認識差を潰し、スコープや責任分界を確定する実務を、大規模SIの具体的な失敗事例とともに解説します。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img src="https://www.google.com/s2/favicons?domain=https://sys-univ.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" loading="lazy" decoding="async" /></div><div class="blogcard-domain internal-blogcard-domain">sys-univ.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2026.08.12</div></div></div></div></a>
<h2 id="4ステップの前にセキュリティ対策の範囲と責任分界を決める">4ステップの前に、セキュリティ対策の範囲と責任分界を決める</h2>
<p>リスクアセスメントを始める前に、まず<strong>セキュリティ対策の対象範囲と責任分界</strong>を整理します。</p>
<p>どこまでを評価対象にするのか、誰がどのセキュリティコントロールを担うのかが曖昧なままだと、その後に脅威や脆弱性を洗い出しても検討漏れが生じます。</p>
<p>これは、後述するリスクアセスメントの前提条件を決める作業です。その前提を整理したうえで、「何を守るのか」「何から守るのか」を明確にしていきます。</p>
<h3 id="システム構成を俯瞰して対象を決める">システム構成を俯瞰して対象を決める</h3>
<p>Webシステムであれば、アプリケーションやサーバだけが対象ではありません。</p>
<p>利用端末、運用管理端末、ネットワーク、外部接続先、認証基盤、バックアップ、CI/CD、SaaSなど、対象システムに関係する構成要素を確認します。業務上重要な情報を紙で扱うのであれば、それも情報資産として評価対象になり得ます。</p>
<p>要件定義の段階では、詳細な物理構成図まで作る必要はありません。</p>
<p>主要な構成要素と接続関係、信頼境界、外部との接点が分かる程度の概念図を用意し、まだ決まっていない部分は想定であることを明記します。</p>
<p><div id="attachment_3394" style="width: 510px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-3394" class="wp-image-3394 size-medium" src="https://sys-univ.com/wp-content/uploads/2026/09/178e36dfc2ab783f4eae11b18235e6ae-500x281.png" alt="主要な構成要素、接続関係、信頼境界、外部との接点を示したWebシステム概念図の例" width="500" height="281" srcset="https://sys-univ.com/wp-content/uploads/2026/09/178e36dfc2ab783f4eae11b18235e6ae-500x281.png 500w, https://sys-univ.com/wp-content/uploads/2026/09/178e36dfc2ab783f4eae11b18235e6ae-800x450.png 800w, https://sys-univ.com/wp-content/uploads/2026/09/178e36dfc2ab783f4eae11b18235e6ae-300x169.png 300w, https://sys-univ.com/wp-content/uploads/2026/09/178e36dfc2ab783f4eae11b18235e6ae-768x432.png 768w, https://sys-univ.com/wp-content/uploads/2026/09/178e36dfc2ab783f4eae11b18235e6ae-1536x864.png 1536w, https://sys-univ.com/wp-content/uploads/2026/09/178e36dfc2ab783f4eae11b18235e6ae-120x68.png 120w, https://sys-univ.com/wp-content/uploads/2026/09/178e36dfc2ab783f4eae11b18235e6ae-160x90.png 160w, https://sys-univ.com/wp-content/uploads/2026/09/178e36dfc2ab783f4eae11b18235e6ae-320x180.png 320w, https://sys-univ.com/wp-content/uploads/2026/09/178e36dfc2ab783f4eae11b18235e6ae-376x212.png 376w, https://sys-univ.com/wp-content/uploads/2026/09/178e36dfc2ab783f4eae11b18235e6ae.png 1672w" sizes="auto, (max-width: 500px) 100vw, 500px" /><p id="caption-attachment-3394" class="wp-caption-text">図　主要な構成要素、接続関係、信頼境界、外部との接点を示したWebシステム構成例</p></div></p>
<p>この図のように、利用者からWeb/AP、DB、バックアップ、外部接続先までの経路だけでなく、運用管理端末からの管理経路も見えるようにしておくと、後の脅威分析で「どこから、どこへ到達できるのか」を考えやすくなります。</p>
<p>早い段階で実装方式まで固定しすぎると、後続の設計自由度を狭めます。</p>
<p>要件定義では、リスクを判断するために必要な粒度まで構成を見えるようにすることが目的です。</p>
<h3 id="クラウドでは誰が構築するかよりどの層で誰がコントロールするかを見る">クラウドでは「誰が構築するか」より「どの層で、誰がコントロールするか」を見る</h3>
<p>クラウドでは、マネージドサービスだから利用者側のセキュリティ検討対象外、とは考えられません。</p>
<p>クラウド事業者が物理設備やサービス基盤を管理していても、IAM権限、データ、ネットワーク公開範囲、暗号化設定、ログ、アプリケーションなどは利用者側に残ることがあります。</p>
<p>確認したいのは、</p>
<blockquote>
<p>このサービスを誰が作るのか</p>
</blockquote>
<p>だけではなく、</p>
<blockquote>
<p><strong>このリスクを、どの層で、誰がコントロールするのか</strong></p>
</blockquote>
<p>です。</p>
<p>例えば、外部からの攻撃を共通のCDNやWAF、ネットワーク基盤で十分に防御できるのであれば、同じ対策を個別システムごとに重複して実装する必要はありません。反対に、共通基盤では実現できない、あるいは構成上利用できない対策については、個別システム側で代替コントロールを検討します。</p>
<p>複数ベンダや共通基盤が関係する案件では、この責任分界が特に重要です。</p>
<p>端末は別ベンダ、ネットワークは共通基盤、アプリケーションは自チームという構成なら、セキュリティ要件ごとに実施主体が変わります。</p>
<p>責任分界が曖昧なままだと、</p>
<blockquote>
<p>相手が対応すると思っていた</p>
</blockquote>
<p>という「責任の空白」が生まれます。</p>
<p>アセスメントの開始時点で大まかな責任範囲を整理し、個々の対策を検討するときにも、必要に応じて担当主体を残しておきます。</p>
<h2 id="リスクアセスメントで理解しておく資産脅威脆弱性リスク">リスクアセスメントで理解しておく「資産・脅威・脆弱性・リスク」</h2>
<p>対象範囲と責任分界を整理したら、リスクアセスメントで使う基本用語を確認します。</p>
<h3 id="守る対象は機密性だけではない">守る対象は機密性だけではない</h3>
<p>情報セキュリティでは、機密性（Confidentiality）、完全性（Integrity）、可用性（Availability）の3つを基本的な観点として扱います。<strong data-start="455" data-end="490">この3つは、それぞれの英語の頭文字を取ってCIAと呼ばれます。</strong></p>
<p>これは、<strong>情報を守るには「漏れないこと」だけでは不十分だからです。</strong> 情報や処理結果が正しく保たれ、必要なときに利用できることまで含めて考える必要があります。</p>
<ul>
<li><strong>機密性</strong>：許可されていない人に情報を見せない</li>
<li><strong>完全性</strong>：情報や処理結果を不正に変更・破壊されない</li>
<li><strong>可用性</strong>：必要なときにシステムや情報を利用できる</li>
</ul>
<p>例えば、情報が外部へ漏れていなくても、不正に書き換えられていれば安全とはいえません。内容が正しくても、攻撃や障害によって必要なときに利用できなければ、業務を継続できません。</p>
<p>リスクアセスメントでは、この3つのうち<strong>何が失われるのか</strong>を見ながら、脅威と影響を整理します。</p>
<p>個人情報の漏洩は機密性の問題です。データの不正書き換えは完全性、DoS攻撃によるサービス停止は可用性に関係します。</p>
<p>災害や設備破壊も、可用性設計だけの話とは限りません。悪意ある破壊行為によってサービスを停止させるケースを含めれば、セキュリティの観点でも評価対象になります。</p>
<p>可用性とセキュリティを別々の非機能要求として整理する場合でも、実際のリスクは重なります。分類の境界より、<strong>どの事象によって何が失われるのか</strong>を見る方が重要です。</p>
<h3 id="脅威と脆弱性を混同しない">脅威と脆弱性を混同しない</h3>
<p>脅威は、情報資産へ悪影響を与える可能性がある事象や主体です。</p>
<p>例えば、不正アクセス、マルウェア、内部不正、DoS攻撃、災害、機器の破壊などが該当します。</p>
<p><strong>脆弱性は、脅威に利用される可能性のあるシステム・設定・運用上の弱点です。</strong></p>
<p>「機密性が低いこと」が脆弱性なのではありません。</p>
<p>例えば、</p>
<blockquote>
<p>外部の攻撃者が管理画面へ不正アクセスする</p>
</blockquote>
<p>という脅威に対して、</p>
<blockquote>
<p>MFAが設定されていない<br />
管理画面がインターネットから直接到達可能<br />
管理者権限が過大</p>
</blockquote>
<p>といった状態は、攻撃を成立させやすくする脆弱性・統制不足です。</p>
<p>ここでいう脆弱性は、ソフトウェアそのものの欠陥だけを指すわけではありません。</p>
<p>ソフトウェアの脆弱性には、<strong>CVE（Common Vulnerabilities and Exposures）<strong>という共通の識別番号が付与されて公表されるものがあります。CVEは脆弱性そのものの重大度を表す点数ではなく、既知の脆弱性を識別するための番号です。深刻度の評価には、0.0〜10.0で表す</strong>CVSS</strong>などが使われます。</p>
<p>セキュリティアセスメントでは、</p>
<p><strong>既知のソフトウェア脆弱性<br />
＋設定不備<br />
＋管理・運用上の統制不足</strong></p>
<p>まで見ます。</p>
<h3 id="リスクは脅威弱点影響で考える">リスクは「脅威＋弱点＋影響」で考える</h3>
<p>脅威や脆弱性を単独で並べても、対策の優先順位は決まりません。</p>
<p>例えば、管理画面にMFAがないという弱点があったとしても、その管理画面が外部から到達できるのか、どの情報へアクセスできるのか、侵害されたときにどの程度の影響が出るのかによってリスクは変わります。</p>
<p>実務では、</p>
<blockquote>
<p><strong>誰が、どこから、どの弱点を利用して、何を起こし、業務や情報資産にどのような影響を与えるのか</strong></p>
</blockquote>
<p>というシナリオとして整理すると、対策へつなげやすくなります。</p>
<p><div id="attachment_3396" style="width: 510px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-3396" class="wp-image-3396 size-medium" src="https://sys-univ.com/wp-content/uploads/2026/09/05837c14c167791a7ae350b04655831e-500x333.png" alt="" width="500" height="333" srcset="https://sys-univ.com/wp-content/uploads/2026/09/05837c14c167791a7ae350b04655831e-500x333.png 500w, https://sys-univ.com/wp-content/uploads/2026/09/05837c14c167791a7ae350b04655831e-800x533.png 800w, https://sys-univ.com/wp-content/uploads/2026/09/05837c14c167791a7ae350b04655831e-300x200.png 300w, https://sys-univ.com/wp-content/uploads/2026/09/05837c14c167791a7ae350b04655831e-768x512.png 768w, https://sys-univ.com/wp-content/uploads/2026/09/05837c14c167791a7ae350b04655831e.png 1536w" sizes="auto, (max-width: 500px) 100vw, 500px" /><p id="caption-attachment-3396" class="wp-caption-text">図　脅威からリスク対応までの評価フローイメージ</p></div></p>
<p>同じ脅威でも、実際に起きたときの影響によってリスクは変わります。</p>
<p>例えば、インターネット上ですでに公開している情報が第三者に閲覧されても、機密性の観点では大きな損失にはつながりません。反対に、顧客の個人情報や認証情報が漏洩すれば、顧客への被害、法令対応、信用低下など大きな影響が生じる可能性があります。</p>
<p>重要なのは、<strong>情報が重要そうだから一律に強い対策をするのではなく、その情報が漏れた、改ざんされた、利用できなくなったときに何が起こるのか</strong>を考えることです。</p>
<p>リスクの大きさは、発生可能性と影響度の2軸などを使って評価します。評価尺度や判定基準は組織やプロジェクトによって異なります。</p>
<p>対策を実施してもリスクが完全にゼロになるとは限りません。この「対策後にも残るリスク」が<strong>残存リスク</strong>です。残存リスクについては後半で具体例とともに説明します。</p>
<p>具体的な評価方法はSTEP3で説明します。</p>
<h2 id="セキュリティアセスメントはどこまでやればよいのか">セキュリティアセスメントはどこまでやればよいのか</h2>
<p>すべてのシステムに、同じ深さのアセスメントを行う必要はありません。</p>
<p>アセスメントの深さは、システム規模だけでなく、<strong>扱う情報の重要度、外部公開の有無、停止が許容できる時間、特権IDの有無、外部システムとの接続、法令・業界基準</strong>などによって変わります。</p>
<p>例えば、社内向けの小規模な情報提供システムと、顧客の個人情報を扱い24時間稼働する外部公開システムでは、求められるアセスメントの深さは異なります。</p>
<p>後者では、構成要素や接続経路を細かく分け、管理経路や可用性、バックアップ、特権権限まで含めて評価する必要があります。前者では、重要な資産と主要な攻撃経路に絞って評価する方が現実的な場合もあります。</p>
<p>アセスメントそのものにも、品質、時間、コストのバランスがあります。重要なのは、すべてを同じ粒度で調べることではなく、<strong>そのシステムで大きな影響につながるリスクを見落とさない粒度を選ぶこと</strong>です。</p>
<p>このあと例にするのは、<strong>顧客情報を保持し、インターネットへ公開するWebシステム</strong>です。小規模な社内ツールよりも、外部からの攻撃経路、内部者の権限、データ保護、復旧などを広く見る必要があるケースとして扱います。</p>
<h3 id="ゼロから項目を考えない">ゼロから項目を考えない</h3>
<p>実務では、白紙から脅威や対策を洗い出すより、組織内で実績のあるアセスメントシートや公的なガイドラインをベースラインとして使う方が効率的です。</p>
<p>ただし、過去のシートをそのままコピーして終わりにはしません。</p>
<p>クラウド管理プレーン、SaaS、API、CI/CD、サプライチェーンなど、対象システム固有の構成や現在の脅威に合わせて観点を追加します。</p>
<p>実績のあるシートを再利用する価値は、対策例が並んでいることだけではありません。</p>
<p><strong>「どの構成要素に対して、どの脅威を見るのか」という分析軸を再利用できること</strong>に大きな価値があります。</p>
<p>対策には技術的対策だけでなく、物理的対策、組織的な統制、運用手順、教育などもあります。すべてをシステム機能で解決しようとせず、リスクに対して適切な手段を組み合わせます。</p>
<h2 id="セキュリティ対策を導く4ステップ">セキュリティ対策を導く4ステップ</h2>
<p>セキュリティ対策の範囲と責任分界を決め、アセスメントの深さを決めたら、具体的なリスクアセスメントへ進みます。</p>
<p>中心となるのは、はじめにで述べた次の4ステップです。</p>
<p><div id="attachment_3397-2" style="width: 510px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-3397-2" class="wp-image-3397 size-medium" src="https://sys-univ.com/wp-content/uploads/2026/09/b8ede4b2b44ea1d44f608cfdbf5e5978-500x281.png" alt="" width="500" height="281" srcset="https://sys-univ.com/wp-content/uploads/2026/09/b8ede4b2b44ea1d44f608cfdbf5e5978-500x281.png 500w, https://sys-univ.com/wp-content/uploads/2026/09/b8ede4b2b44ea1d44f608cfdbf5e5978-800x450.png 800w, https://sys-univ.com/wp-content/uploads/2026/09/b8ede4b2b44ea1d44f608cfdbf5e5978-300x169.png 300w, https://sys-univ.com/wp-content/uploads/2026/09/b8ede4b2b44ea1d44f608cfdbf5e5978-768x432.png 768w, https://sys-univ.com/wp-content/uploads/2026/09/b8ede4b2b44ea1d44f608cfdbf5e5978-1536x864.png 1536w, https://sys-univ.com/wp-content/uploads/2026/09/b8ede4b2b44ea1d44f608cfdbf5e5978-120x68.png 120w, https://sys-univ.com/wp-content/uploads/2026/09/b8ede4b2b44ea1d44f608cfdbf5e5978-160x90.png 160w, https://sys-univ.com/wp-content/uploads/2026/09/b8ede4b2b44ea1d44f608cfdbf5e5978-320x180.png 320w, https://sys-univ.com/wp-content/uploads/2026/09/b8ede4b2b44ea1d44f608cfdbf5e5978-376x212.png 376w, https://sys-univ.com/wp-content/uploads/2026/09/b8ede4b2b44ea1d44f608cfdbf5e5978.png 1672w" sizes="auto, (max-width: 500px) 100vw, 500px" /><p id="caption-attachment-3397-2" class="wp-caption-text">（再掲）図　セキュリティ要件を導く4ステップ</p></div></p>
<ol type="1">
<li>脅威を分析する</li>
<li>脆弱性・設定不備・統制不足を分析する</li>
<li>リスクを分析・評価する</li>
<li>リスク対応を決め、必要な対策へ落とす</li>
</ol>
<p>ここで重要なのは、最初からWAF、MFA、暗号化といった対策を並べないことです。</p>
<p>まず何が起こり得るのかを考え、その事象を成立させる弱点を確認し、発生した場合のリスクを評価します。その結果として必要な対策を決めます。</p>
<p><strong>対策からリスクを考えるのではなく、リスクから対策を導く。</strong></p>
<p>これが4ステップをこの順番で行う理由です。</p>
<p>以降では、<strong>顧客情報を保持する外部公開Webシステム</strong>を一つの例として、4ステップを順番に追っていきます。</p>
<p><div id="attachment_3394-2" style="width: 510px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-3394-2" class="wp-image-3394 size-medium" src="https://sys-univ.com/wp-content/uploads/2026/09/178e36dfc2ab783f4eae11b18235e6ae-500x281.png" alt="主要な構成要素、接続関係、信頼境界、外部との接点を示したWebシステム概念図の例" width="500" height="281" srcset="https://sys-univ.com/wp-content/uploads/2026/09/178e36dfc2ab783f4eae11b18235e6ae-500x281.png 500w, https://sys-univ.com/wp-content/uploads/2026/09/178e36dfc2ab783f4eae11b18235e6ae-800x450.png 800w, https://sys-univ.com/wp-content/uploads/2026/09/178e36dfc2ab783f4eae11b18235e6ae-300x169.png 300w, https://sys-univ.com/wp-content/uploads/2026/09/178e36dfc2ab783f4eae11b18235e6ae-768x432.png 768w, https://sys-univ.com/wp-content/uploads/2026/09/178e36dfc2ab783f4eae11b18235e6ae-1536x864.png 1536w, https://sys-univ.com/wp-content/uploads/2026/09/178e36dfc2ab783f4eae11b18235e6ae-120x68.png 120w, https://sys-univ.com/wp-content/uploads/2026/09/178e36dfc2ab783f4eae11b18235e6ae-160x90.png 160w, https://sys-univ.com/wp-content/uploads/2026/09/178e36dfc2ab783f4eae11b18235e6ae-320x180.png 320w, https://sys-univ.com/wp-content/uploads/2026/09/178e36dfc2ab783f4eae11b18235e6ae-376x212.png 376w, https://sys-univ.com/wp-content/uploads/2026/09/178e36dfc2ab783f4eae11b18235e6ae.png 1672w" sizes="auto, (max-width: 500px) 100vw, 500px" /><p id="caption-attachment-3394-2" class="wp-caption-text">（再掲）図　主要な構成要素、接続関係、信頼境界、外部との接点を示したWebシステム構成例</p></div></p>
<p>この図を、以降のSTEP1〜4で共通して使います。利用者からの通常経路だけでなく、運用管理端末からの管理経路、バックアップ、外部接続先までをアセスメント対象として見ます。</p>
<h3 id="step1-脅威を分析する">STEP1　脅威を分析する</h3>
<p>最初に、対象となる資産やシステムに対して、どのような脅威が存在するのかを洗い出します。</p>
<p>今回のWebシステムで守るべき重要な資産の一つは顧客情報です。</p>
<p>ここで、</p>
<blockquote>
<p>不正アクセス</p>
</blockquote>
<p>とだけ書いても、何を設計すればよいのか分かりません。</p>
<p>もう少し具体化して、</p>
<blockquote>
<p><strong>外部の攻撃者がWebシステムへ侵入し、顧客情報を参照・持ち出す</strong></p>
</blockquote>
<p>という攻撃シナリオとして考えます。</p>
<p>外部からの攻撃だけではありません。</p>
<p>正規の権限を持つ内部者についても、</p>
<blockquote>
<p><strong>内部者が運用管理端末から必要以上の権限を利用し、顧客情報を取得する</strong></p>
</blockquote>
<p>というシナリオが成立する可能性があります。</p>
<p>同じ「情報流出」でも、外部攻撃者による侵入と、内部者による不正利用では攻撃経路が異なるため、必要な対策も変わります。</p>
<h4 id="構成要素--脅威で検討漏れを減らす">構成要素 × 脅威で検討漏れを減らす</h4>
<p>脅威を網羅的に考えるために、実務で有効なのが<strong>構成要素と脅威を掛け合わせる方法</strong>です。</p>
<p>私が実際に利用していたアセスメントでも、脅威だけを一覧にするのではなく、サーバ、利用端末、運用管理端末、ネットワークなどの構成要素ごとに確認していました。</p>
<p>例えば、次のように考えます。</p>
<div style="overflow-x: auto;">
<table>
<thead>
<tr class="header">
<th>構成要素</th>
<th>不正アクセスのシナリオ</th>
<th>情報流出のシナリオ</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>Web／AP</td>
<td>管理機能への不正ログイン</td>
<td>アプリケーション経由での顧客情報取得</td>
</tr>
<tr class="even">
<td>DB</td>
<td>DB管理権限の不正利用</td>
<td>DBデータの持ち出し</td>
</tr>
<tr class="odd">
<td>利用端末</td>
<td>他利用者の権限を使った操作</td>
<td>ダウンロードしたファイルの持ち出し</td>
</tr>
<tr class="even">
<td>運用管理端末</td>
<td>特権IDの不正利用</td>
<td>管理作業を利用した情報取得</td>
</tr>
<tr class="odd">
<td>ネットワーク</td>
<td>不正端末からの接続</td>
<td>通信の盗聴</td>
</tr>
</tbody>
</table>
</div>
<p>この表は、対策の要否を判定する表ではありません。</p>
<p><strong>「この構成要素について、この脅威を検討したか」を確認するための分析軸</strong>です。</p>
<p>例えばサーバ上の情報流出だけを考えていると、正規の操作で利用端末へダウンロードされたデータが持ち出されるシナリオを見落とす可能性があります。</p>
<p>実績のあるアセスメントシートを使う価値も、対策例が大量に書かれていることだけではありません。</p>
<p><strong>どの構成要素に対して、どの種類の脅威を見るのかという分析軸が既に整理されていること</strong>に価値があります。</p>
<h4 id="外部者だけでなく内部者第三者も見る">外部者だけでなく内部者・第三者も見る</h4>
<p>不正アクセスや情報流出では、外部攻撃者だけを想定すると検討が偏ります。</p>
<p>今回のWebシステムでも、</p>
<blockquote>
<p>外部攻撃者がインターネット経由で侵入する</p>
</blockquote>
<p>シナリオだけでなく、</p>
<blockquote>
<p>正規権限を持つ内部者が、その権限を不正に利用する</p>
</blockquote>
<p>シナリオを見る必要があります。</p>
<p>外部攻撃を防ぐネットワーク制御は、正規の経路からアクセスする内部者には効かない場合があります。</p>
<p>また、情報漏洩は悪意のある内部者だけが原因になるわけではありません。誤送付、誤操作、端末や書類の持ち出しなど、人的・運用上のミスからも発生します。</p>
<p><a rel="noopener" href="https://www.ppc.go.jp/news/press/2026/260707/" target="_blank">令和7年度（2025年度）個人情報保護委員会年次報告</a>では、行政機関等の漏えい等事案の発生原因について、誤交付、誤送付、誤廃棄、紛失といったヒューマンエラーが、国の行政機関等で54.8％、地方公共団体等で69.0％を占めています。</p>
<p>さらに、社員だけでなく、運用委託先や外部サービス事業者など正規の権限を持つ第三者、関係者を装って施設へ入り込む人物、利用者をだまして認証情報を取得するソーシャルエンジニアリングも考える必要があります。</p>
<p><strong>セキュリティ対策は、ファイアウォールや認証といったシステム上の対策だけでは完結しません。入退室管理、権限付与・剥奪、操作記録、教育、承認手続きなど、人と運用を含めて考えます。</strong></p>
<p>STEP1の目的は、脅威名を数多く挙げることではありません。</p>
<p><strong>誰が、どこから、どの資産に、どのような影響を与える可能性があるのかをシナリオとして整理すること</strong>です。</p>
<h3 id="step2-脆弱性設定不備統制不足を分析する">STEP2　脆弱性・設定不備・統制不足を分析する</h3>
<p>次に、STEP1で整理したシナリオを成立させる弱点を確認します。</p>
<p>今回の、</p>
<blockquote>
<p>外部攻撃者がWebシステムへ侵入し、顧客情報を取得する</p>
</blockquote>
<p>というシナリオを考えてみます。</p>
<p>例えば、</p>
<ul>
<li>管理機能へインターネットから到達できる</li>
<li>MFAが設定されていない</li>
<li>一つの管理者IDに必要以上の権限がある</li>
</ul>
<p>といった状態があれば、攻撃シナリオを成立させやすくなります。</p>
<p>内部者による情報持ち出しであれば、</p>
<ul>
<li>運用管理者に必要以上の参照権限がある</li>
<li>操作ログを取得していない</li>
<li>重要な操作を後から追跡できない</li>
</ul>
<p>といった統制不足が問題になります。</p>
<p>ここでいう「脆弱性」は、ソフトウェアそのものの欠陥だけを意味しません。</p>
<p>先ほど説明したように、既知のソフトウェア脆弱性にはCVEという識別番号が付くものがあります。実務では、それらの既知脆弱性に加えて、</p>
<p><strong>ソフトウェアの脆弱性<br />
＋設定不備<br />
＋管理・運用上の統制不足</strong></p>
<p>まで見ます。</p>
<p>例えばソフトウェア脆弱性についても、CVSSが高いから機械的にパッチを当てるのではなく、対象システムでその脆弱性が実際に悪用可能か、対象機能を利用しているか、外部から到達できるか、既存の対策があるかまで確認してリスクを評価します。</p>
<h4 id="機能が存在しているだけでは十分ではない">機能が存在しているだけでは十分ではない</h4>
<p>例えば操作ログを取得する機能があっても、必要な操作が記録されていなければ意味がありません。</p>
<p>ログを取得していても、異常を検知する必要があるのに誰も確認していなければ、早期発見には使えません。</p>
<p>アクセス権を適切に設定していても、異動や退職に伴う権限の棚卸しが行われなければ、時間の経過とともに不要な権限が残ります。</p>
<p>セキュリティ対策では、</p>
<blockquote>
<p>機能があるか</p>
</blockquote>
<p>だけでなく、</p>
<blockquote>
<p><strong>その機能によって必要な統制が実際に成立しているか</strong></p>
</blockquote>
<p>まで確認します。</p>
<h4 id="クラウドでは設定不備の観点が増える">クラウドでは設定不備の観点が増える</h4>
<p>クラウドでは、クラウド事業者が基盤を管理していても、利用者が設定するセキュリティ項目は数多く残っています。</p>
<p>今回のWebシステムをAWS上に構築するなら、IAMの権限、ネットワーク公開範囲、暗号化、ログ取得などは利用者側の設計対象になります。</p>
<p>クラウドサービス自体にソフトウェア脆弱性がなくても、利用者側の設定によって攻撃経路が作られる可能性があります。</p>
<p>代表的なのがIAMなどの権限設定です。「最小権限にする」だけではなく、<strong>誰に（Principal）、どの操作を（Action）、どのリソースまで（Resource）、どの条件で（Condition）許可しているのか</strong>を確認します。さらに、ロールを引き受けられる主体、認証情報の扱い、重要操作のログまで含めて見ます。</p>
<p>権限が過大であれば、一つの認証情報や実行環境が侵害されたときに、攻撃者が到達できる範囲も広がります。</p>
<p>オンプレミス向けの古いアセスメントシートをそのまま流用すると、OSやネットワーク機器は細かく確認しているのに、IAMやクラウド管理コンソールのような<strong>管理プレーン側の観点が抜ける</strong>ことがあります。</p>
<p>実績のあるシートはベースラインとして使いながら、対象システムの構成に合わせて更新する必要があります。</p>
<h3 id="step3-リスクを分析評価する">STEP3　リスクを分析・評価する</h3>
<p>ここまでで、今回のシナリオは次のように整理できます。</p>
<blockquote>
<p><strong>資産</strong>：顧客情報<br />
<strong>脅威</strong>：外部攻撃者による不正アクセス<br />
<strong>脆弱性・統制不足</strong>：管理機能へ外部から到達可能、MFA未設定、権限過大<br />
<strong>想定される事象</strong>：管理者権限を不正利用され、顧客情報が取得される<br />
<strong>リスク</strong>：顧客情報の漏洩</p>
</blockquote>
<p>ここから、そのリスクがどの程度重要なのかを評価します。</p>
<p>基本となるのが、<strong>発生可能性</strong>と<strong>影響度</strong>です。</p>
<div style="overflow-x: auto;">
<table>
<thead>
<tr class="header">
<th>想定リスク</th>
<th style="text-align: right;">発生可能性</th>
<th style="text-align: right;">影響度</th>
<th style="text-align: right;">リスク評価</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>管理機能への侵入による顧客情報の大量漏洩</td>
<td style="text-align: right;">中</td>
<td style="text-align: right;">高</td>
<td style="text-align: right;">高</td>
</tr>
<tr class="even">
<td>リージョン障害によるサービスの長期停止</td>
<td style="text-align: right;">低</td>
<td style="text-align: right;">高</td>
<td style="text-align: right;">中※</td>
</tr>
<tr class="odd">
<td>公開情報ページの短時間停止</td>
<td style="text-align: right;">中</td>
<td style="text-align: right;">低</td>
<td style="text-align: right;">低</td>
</tr>
</tbody>
</table>
</div>
<p>※発生可能性と影響度からリスク評価を決める基準は、組織やプロジェクトによって異なります。</p>
<p>この表で重要なのは、High／Middle／Lowという文字そのものではありません。</p>
<p><strong>なぜその評価になったのかを説明できること</strong>です。</p>
<h4 id="現行対策を考慮して評価する">現行対策を考慮して評価する</h4>
<p>次に、STEP1で挙げたもう一つのシナリオである、<strong>内部者による顧客情報の持ち出し</strong>を考えてみます。</p>
<p>仮に運用管理端末が自由に利用できるのであれば、発生可能性は高く評価されるかもしれません。</p>
<p>しかし、</p>
<ul>
<li>運用管理端末が限定されている</li>
<li>利用者が限定されている</li>
<li>操作記録を取得している</li>
</ul>
<p>といった現行対策が既に存在するのであれば、その効果を考慮します。</p>
<p>ここを無視すると、アセスメントシート上では常に最悪条件でリスクを評価することになり、必要以上の対策を導きやすくなります。</p>
<p>反対に、</p>
<blockquote>
<p>対策があるから安全</p>
</blockquote>
<p>と評価するだけでも不十分です。</p>
<p>その対策によって、</p>
<blockquote>
<p>発生可能性がどこまで下がったのか<br />
発生した場合の影響は変わるのか<br />
まだ何が残っているのか</p>
</blockquote>
<p>を見る必要があります。</p>
<h4 id="発生可能性が低く影響度が大きいリスク">発生可能性が低く、影響度が大きいリスク</h4>
<p>実務で判断が難しいのが、</p>
<blockquote>
<p>発生可能性は低いが、発生すれば影響が非常に大きい</p>
</blockquote>
<p>リスクです。</p>
<p>例えばリージョン全体の長期停止や、バックアップを含むデータの完全喪失などです。</p>
<p>この場合、</p>
<blockquote>
<p>発生可能性が低いから対策しない</p>
</blockquote>
<p>とも、</p>
<blockquote>
<p>影響が甚大だから最大限の対策を必ず行う</p>
</blockquote>
<p>とも機械的には決められません。</p>
<p>ただし、対策水準をゼロから自由に決めるわけではありません。まず、RFPや適用基準、顧客標準などの上位要求を確認します。</p>
<p>そのうえで、上位要求だけでは決まらない部分について、システムの重要度、復旧可能性、既存対策、追加対策によって得られるリスク低減効果や費用を踏まえて判断します。上位要求どおりに実現できない場合は、その差異によって何ができなくなり、どのリスクが残るのかまで評価します。</p>
<p>STEP4では、こうした評価結果をもとに、そのリスクを低減・回避・移転・保有のどれで扱うかを決めます。リージョン障害のような可用性リスクについては、後述する残存リスクの節で具体例を示します。</p>
<h3 id="step4-リスク対応を決めセキュリティ対策へ落とす">STEP4　リスク対応を決め、セキュリティ対策へ落とす</h3>
<p>リスクを評価したら、そのリスクをどのように扱うかを決めます。</p>
<p>代表的なリスク対応は、低減、回避、移転、保有の4種類です。</p>
<p id="低減"><strong>低減</strong></p>
<p>セキュリティ対策を実施し、リスクの発生可能性や影響度を小さくします。</p>
<p>今回の、</p>
<blockquote>
<p>外部から管理機能へ侵入され、顧客情報を取得される</p>
</blockquote>
<p>というリスクであれば、アクセス経路の限定、MFA、最小権限化、操作ログ取得などが候補になります。</p>
<p id="回避"><strong>回避</strong></p>
<p>リスクを発生させる活動自体をやめます。</p>
<p>例えば、インターネット公開によるリスクが許容できないため、サービスをインターネットへ公開しないという判断です。</p>
<p>インターネット公開を続けながらWAFなどを利用するのであれば、リスクそのものは残るため「低減」です。</p>
<p id="移転"><strong>移転</strong></p>
<p>契約や保険などによって、リスクによる金銭的な影響の一部を第三者へ移します。</p>
<p>ただし、保険へ加入したり外部事業者を利用したりしても、<strong>事故発生時の顧客や監督機関への説明責任まで移転できるわけではありません。</strong></p>
<p>クラウドサービスを利用する場合も、単純に「クラウド事業者へリスクを移転した」と考えるのではなく、<strong>事業者が担う範囲と利用者に残る範囲を責任分界に沿って切り分けます。</strong></p>
<p>基盤設備の管理などクラウド事業者が担うリスクもあれば、IAM、データ、アプリケーション、利用者側の設定など、利用者に残るリスクもあります。</p>
<p id="保有"><strong>保有</strong></p>
<p>リスクが残ることを理解したうえで、追加対策を行わず受け入れます。</p>
<p>これは、</p>
<blockquote>
<p>対策し忘れた</p>
</blockquote>
<p>こととは全く異なります。</p>
<p>リスクを認識し、既存対策、発生可能性、影響度、追加対策による効果や費用を評価したうえで、</p>
<blockquote>
<p>この水準の残存リスクなら許容する</p>
</blockquote>
<p>と判断することです。</p>
<p>例えば、DMZに配置したWebサーバが一般に公開されている情報だけを提供し、機密情報を保持せず、内部システムへの接続経路も持たないとします。さらに、侵害された場合でも初期状態から再構築できるようにしていれば、情報漏洩や内部システムへの横展開による影響は限定できます。</p>
<p>それでも、Webページの改ざんや一時的なサービス停止といったリスクは残ります。追加対策によるリスク低減効果と構築・運用コストを比較した結果、そこまでの対策は行わず、この残存リスクを保有する判断もあり得ます。</p>
<p><strong>リスクを保有するとは、「侵害されても構わない」と考えることではありません。侵害された場合の影響を把握し、既存対策で影響を限定したうえで、追加対策までは行わないと判断することです。</strong></p>
<p>この判断は技術者だけで完結させず、残るリスクを前提にどの方式で進めるのかを関係者で確認します。</p>
<h4 id="リスク対応を決めて初めて具体的な対策を選ぶ">リスク対応を決めて、初めて具体的な対策を選ぶ</h4>
<p>ここが4ステップの最終地点です。</p>
<p>今回のWebシステムについて、</p>
<blockquote>
<p>顧客情報漏洩のリスクを「低減」する</p>
</blockquote>
<p>と決めただけでは、まだ設計は終わっていません。</p>
<p>次に、</p>
<blockquote>
<p>どのリスクを<br />
どのコントロールによって<br />
どこまで下げるのか</p>
</blockquote>
<p>を決めます。</p>
<p>例えば、</p>
<ul>
<li>管理機能へのアクセス経路を限定する</li>
<li>管理者認証にMFAを要求する</li>
<li>管理者権限を必要最小限にする</li>
<li>重要操作を記録・監視する</li>
</ul>
<p>といったセキュリティ要件が導かれます。</p>
<p>AWSを利用するのであれば、ここで初めてIAMやSecurity Groupなどの具体的なサービスや機能が実装候補として登場します。</p>
<p>順番は、</p>
<blockquote>
<p>AWSにこの機能がある<br />
↓<br />
使っておこう</p>
</blockquote>
<p>ではありません。</p>
<blockquote>
<p>リスクを評価する<br />
↓<br />
リスク対応を決める<br />
↓<br />
必要なセキュリティコントロールを決める<br />
↓<br />
それを実現する方式・サービスを選ぶ</p>
</blockquote>
<p>です。</p>
<p><strong>AWSやサードパーティが提供する機能は、セキュリティ対策を実現するための手段です。機能を使うこと自体が目的ではありません。</strong></p>
<p>同じリスクでも、AWSネイティブの機能、サードパーティ製品、共通ネットワーク側の対策、運用統制など、複数の実現方式があります。重要なのは製品名ではなく、<strong>必要なセキュリティコントロールを満たし、責任分界や運用まで含めて成立すること</strong>です。</p>
<p>セキュリティ製品やクラウドサービスは、リスクアセスメントの出発点ではなく、<strong>設計判断の結果として選ばれるもの</strong>です。</p>
<h2 id="上位基準がある案件では差異をリスクとして評価する">上位基準がある案件では「差異」をリスクとして評価する</h2>
<p class="PDq2pG_selectionAnchorContainer" dir="auto" data-start="108" data-end="180">本記事で想定する案件では、法令や業界基準、組織のセキュリティ標準、顧客の標準仕様、上位システムの要求など、既に一定の上位基準が与えられています。</p>
<p dir="auto" data-start="185" data-end="312">ただし、これらはすべて同じ扱いではありません。<strong data-start="208" data-end="248">法令や契約上の義務は、リスクが低いという理由だけで不適用にはできません。</strong> 業界基準、顧客標準、組織内部の標準についても、差異を認める場合には、正式な例外承認や関係者との合意が必要になることがあります。</p>
<p dir="auto" data-start="317" data-end="388">まず、<strong data-start="326" data-end="381">その要求が何を根拠としているのか、変更や例外が認められるのか、認められる場合にはどの手続きが必要なのか</strong>を確認します。</p>
<p dir="auto" data-start="393" data-end="457">そのうえで重要なのが、<strong data-start="404" data-end="450">上位基準があるからといって、対象システムのリスクアセスメントが不要になるわけではない</strong>という点です。</p>
<p dir="auto" data-start="462" data-end="465">まず、</p>
<blockquote data-start="470" data-end="505">
<p dir="auto" data-start="472" data-end="505"><strong data-start="472" data-end="505">このシステムには、どのような脅威・脆弱性・リスクがあるのか</strong></p>
</blockquote>
<p dir="auto" data-start="510" data-end="517">を評価します。</p>
<p dir="auto" data-start="522" data-end="561">次に、上位基準が要求する対策と、本システムで採用する実現方式が異なる場合には、</p>
<blockquote data-start="566" data-end="607">
<p dir="auto" data-start="568" data-end="607"><strong data-start="568" data-end="607">その差異によって、新たなリスクが生じないか、既存のリスクが増加しないか</strong></p>
</blockquote>
<p dir="auto" data-start="612" data-end="619">を評価します。</p>
<p dir="auto" data-start="624" data-end="629">考え方は、</p>
<blockquote data-start="634" data-end="681">
<p dir="auto" data-start="636" data-end="681"><strong data-start="636" data-end="681">対象システムのリスクアセスメント<br data-start="654" data-end="657" /><br />
＋<br data-start="662" data-end="665" /><br />
上位基準との差異評価</strong></p>
</blockquote>
<p dir="auto" data-start="686" data-end="689">です。</p>
<p dir="auto" data-start="694" data-end="784">上位基準を単純に「準拠／非準拠」で確認するのではなく、<strong data-start="721" data-end="776">対象システム固有のリスクを評価したうえで、基準との差異がリスクにどのような影響を与えるのかまで確認する</strong>ことが重要です。</p>
<p dir="auto" data-start="694" data-end="784">○×チェックするだけでは、この差異によるリスク評価が抜けてしまいます。</p>
<h3 id="差異は7段階で評価する">差異は7段階で評価する</h3>
<p>上位基準で要求されている方式を、そのまま採用できないことがあります。</p>
<p>端末を複数システムで共用している、認証基盤を共通化している、ネットワークや端末を別の組織・ベンダが管理している、既存システムとの接続方式を変更できない、といった制約があるからです。</p>
<p>私が実際の案件で使っていたシートでも、単純な「準拠／非準拠」だけではなく、<strong>上位基準との差異の有無と、その差異に対する評価を別に管理していました。</strong></p>
<p>評価の流れを図にすると、次のようになります。</p>
<p><div id="attachment_3402" style="width: 510px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-3402" class="wp-image-3402 size-medium" src="https://sys-univ.com/wp-content/uploads/2026/09/9ef5dc2745d1f3566f7057ab144eda6c-500x375.png" alt="" width="500" height="375" srcset="https://sys-univ.com/wp-content/uploads/2026/09/9ef5dc2745d1f3566f7057ab144eda6c-500x375.png 500w, https://sys-univ.com/wp-content/uploads/2026/09/9ef5dc2745d1f3566f7057ab144eda6c-800x600.png 800w, https://sys-univ.com/wp-content/uploads/2026/09/9ef5dc2745d1f3566f7057ab144eda6c-300x225.png 300w, https://sys-univ.com/wp-content/uploads/2026/09/9ef5dc2745d1f3566f7057ab144eda6c-768x576.png 768w, https://sys-univ.com/wp-content/uploads/2026/09/9ef5dc2745d1f3566f7057ab144eda6c.png 1448w" sizes="auto, (max-width: 500px) 100vw, 500px" /><p id="caption-attachment-3402" class="wp-caption-text">図　上位基準と本システムの差異を評価する流れ</p></div></p>
<p>&nbsp;</p>
<p>この形にすると、「基準と違う」という事実を、セキュリティ要件定義上の判断へ変換できます。</p>
<h3 id="rfpの検討するという要求も実現可能性を評価して結論を出す">RFPの「検討する」という要求も、実現可能性を評価して結論を出す</h3>
<p>RFPでは、実現方式や実現可能性が確定していない要求について、</p>
<blockquote>
<p>監査ログの長期保管を検討する</p>
</blockquote>
<p>のように、「実現すること」ではなく「検討すること」と記載される場合があります。</p>
<p>この場合、提案段階で複数案を比較し、要件定義で実施範囲を確定します。例えば、</p>
<ul>
<li>すべてのログを長期間オンラインで検索できる状態にする</li>
<li>直近分だけをオンラインで保持し、古いログは低コストの保管領域へ移す</li>
<li>認証や特権操作など、監査上重要なログだけを長期保管する</li>
</ul>
<p>といった方式を比較できます。</p>
<p>保管期間を長くし、すべてのログを即時検索できるようにすれば調査性は高まりますが、保存容量、検索基盤、運用コストも増えます。逆に保管範囲を絞りすぎれば、インシデント発生時に必要な証跡が残っていない可能性があります。</p>
<p>そこで、法令・契約・上位基準で必須となる保存期間を確認したうえで、<strong>どのログを、どの期間、どの状態で保持すれば必要な調査・監査を成立させられるか</strong>を評価します。</p>
<p>検討の結果、例えば「認証・特権操作・重要データへのアクセスログは長期保管し、大量に出力されるデバッグログは短期間とする」といった結論にすることがあります。</p>
<p>これは「検討しなかった」のではありません。複数案の効果とコストを比較し、要求の目的を満たす範囲を要件として確定した、という提案・要件定義上の判断です。</p>
<h3 id="同じ方式を採用できなくてもそこで検討を終わらせない">同じ方式を採用できなくても、そこで検討を終わらせない</h3>
<p>例えば、上位基準で、</p>
<blockquote>
<p>ログの改ざんを即時に検知し、異常があれば通知する</p>
</blockquote>
<p>という要求があったとします。</p>
<p>対象システムでも同じ仕組みを導入したいところですが、端末を他システムと共用しており、その端末は別の組織やベンダの管理下にあるとします。</p>
<p>上位基準と同じ改ざん検知を実現するには、端末側へのエージェント導入や設定変更が必要ですが、自システムの判断だけでは変更できません。</p>
<p>このような場合に、</p>
<blockquote>
<p>上位基準と同じ方式を実現できないので非準拠</p>
</blockquote>
<p>として終わらせてはいけません。</p>
<p>確認するのは、</p>
<blockquote>
<p><strong>同じ方式を採用できないことで、何のリスクが増えるのか</strong></p>
</blockquote>
<p>です。</p>
<p>この例なら、ログが改ざんされた場合の発見が遅れ、不正操作の追跡やインシデント発生時の原因究明が困難になる可能性があります。</p>
<p>そこで、</p>
<ul>
<li>管理作業を行える経路や端末を限定する</li>
<li>管理者の操作を記録する</li>
<li>通常とは異なる時間帯などの操作を検知する</li>
<li>インシデント発生後に操作内容を追跡できる状態にする</li>
</ul>
<p>といった別のコントロールによって、増加するリスクをどこまで低減できるかを評価します。</p>
<p>ただし、代替コントロールを入れたからといって、上位基準との差異そのものが消えるわけではありません。</p>
<p>即時検知の範囲や検知精度などに違いが残るのであれば、それを<strong>残存リスク</strong>として明確にします。</p>
<p>最終的には、</p>
<blockquote>
<p>代替コントロールを実施したうえで、この残存リスクを許容できるか</p>
</blockquote>
<p>を判断します。</p>
<h3 id="方式ではなくその対策が何を守ろうとしているのかを見る">「方式」ではなく、その対策が何を守ろうとしているのかを見る</h3>
<p>上位基準には、具体的なセキュリティ方式まで指定されている場合があります。</p>
<p>例えば、</p>
<blockquote>
<p>生体認証を使用する</p>
</blockquote>
<p>という要求があるとします。</p>
<p>ここで確認したいのは、</p>
<blockquote>
<p>生体認証を導入しているか</p>
</blockquote>
<p>だけではありません。</p>
<p>なぜ生体認証を要求しているのかまで遡ります。</p>
<p>目的が、</p>
<blockquote>
<p>本人以外による認証突破の可能性を下げる</p>
</blockquote>
<p>ことであれば、本システムが既に共通認証基盤を経由し、利用端末やアクセス経路も限定されている場合、生体認証をさらに追加したときに<strong>どの程度の追加的なリスク低減効果が得られるのか</strong>を評価します。</p>
<p>追加効果が大きければ採用すべきでしょう。</p>
<p>既存の認証・端末・経路制御によって対象リスクが十分に低減されており、生体認証を加えてもリスク低減効果が限定的なのであれば、採用しないという判断もあり得ます。</p>
<p>ただし、</p>
<blockquote>
<p>別の認証方式があるから同等だろう</p>
</blockquote>
<p>と根拠なく判断することもできません。</p>
<p>比較するのは、認証方式の名称や機能数ではありません。</p>
<p><strong>どの攻撃シナリオに対して、どの程度リスクを低減できるのか</strong>です。</p>
<p>上位基準があっても、STEP1〜4で説明してきたリスクアセスメントの考え方は変わりません。</p>
<h3 id="準拠していると書くことの方が危険な場合がある">「準拠している」と書くことの方が危険な場合がある</h3>
<p>上位基準と異なる方式を採用すること自体が、直ちに問題になるわけではありません。</p>
<p>システム構成や責任分界が異なれば、同じ対策をそのまま適用できないことはあります。</p>
<p>むしろ問題なのは、</p>
<blockquote>
<p><strong>実際には差異があるのに、その差を評価しないまま「上位基準に準拠している」と扱うこと</strong></p>
</blockquote>
<p>です。</p>
<p>差異を明確にしておけば、</p>
<blockquote>
<p>なぜ同じ方式にできなかったのか<br />
何のリスクが増えるのか<br />
どの代替コントロールを採用したのか<br />
それでも何が残るのか<br />
その前提で、どの方式で進めると合意したのか</p>
</blockquote>
<p>を説明できます。</p>
<p>差異を認識していなければ、その説明自体ができません。</p>
<p><strong>セキュリティ標準への準拠とは、書かれている対策を機械的にコピーすることではありません。基準が求めるリスク低減の目的を理解し、本システムとの差異を評価したうえで、必要な対策と残存リスクを明確にすることが重要です。</strong></p>
<p>また、ここで行った差異評価は永久に有効なものではありません。上位基準が改定されることもあれば、「端末を限定している」「操作を記録している」といった代替コントロールの前提が運用中に崩れることもあります。</p>
<p><strong>差異評価は合意して終わりではなく、基準の改定と代替コントロールの実効性を継続的に確認する必要があります。</strong></p>
<p>この点は、後述する継続的なリスクアセスメントでも改めて扱います。</p>
<h2 id="2026年aiゼロデイ時代にリスクアセスメントはどう変わるか">2026年、AI・ゼロデイ時代にリスクアセスメントはどう変わるか</h2>
<p>ここまで説明してきたリスクアセスメントの考え方は、AIが普及する以前から使われてきたものです。</p>
<p>では、AIによって脆弱性の発見や攻撃作業が高速化している2026年現在、セキュリティ要件定義や設計の考え方そのものを大きく変える必要があるのでしょうか。</p>
<p>結論は、<strong>基本的な原則は変わりません。</strong></p>
<p>変化しているのは、</p>
<blockquote>
<p><strong>脆弱性を発見する速度、攻撃へ利用する速度、攻撃を並列化できる規模</strong></p>
</blockquote>
<p>です。</p>
<p>「侵入される可能性を前提に多層防御する」という考え方をAIが生み出したわけではありません。</p>
<p>ゼロデイ攻撃、ランサムウェア、サプライチェーン攻撃などを考えれば、以前から「既知の脆弱性をすべて修正すれば安全になる」という前提は成立していませんでした。</p>
<p>AIは、この前提をさらに厳しいものにしています。</p>
<h3 id="aiが攻撃工程そのものを高速化する">AIが攻撃工程そのものを高速化する</h3>
<p>2025年11月、Anthropicは「GTG-1002」と名付けたサイバースパイ活動について<a rel="noopener" href="https://www.anthropic.com/news/disrupting-AI-espionage" target="_blank">報告しました</a>。</p>
<p>Anthropicによれば、攻撃者はClaude Codeを利用し、偵察、脆弱性探索、攻撃試行、認証情報の取得、データ分析など複数の工程をAIに実行させていました。同社は、攻撃作業の80〜90％をAIが実行し、人間は重要な判断に関与していたと分析しています。</p>
<p>ただし、これは「AIが人間なしで高度な攻撃を完結させた」という意味ではありません。Anthropic自身も、Claudeが誤った情報を返す場面があり、人間による検証が必要だったと報告しています。<a rel="noopener" href="https://arstechnica.com/security/2025/11/researchers-question-anthropic-claim-that-ai-assisted-attack-was-90-autonomous/" target="_blank">外部研究者からも</a>、AIが従来にない攻撃手法そのものを発明したとまでは確認できないという慎重な見方が出ています。</p>
<p>ここで重要なのは「何％が自律だったか」ではありません。</p>
<p><strong>AIが攻撃を完全に自律化したというより、人間が時間をかけて行っていた偵察、脆弱性探索、攻撃試行、結果分析などを高速化・省力化した点</strong>です。</p>
<p>人間の作業時間が制約になっていた工程を短時間で繰り返せるようになれば、従来より多くの対象を並行して探索できます。</p>
<h3 id="脆弱性を発見する側でも速度が上がっている">脆弱性を「発見する側」でも速度が上がっている</h3>
<p>AIによる変化は攻撃側だけではありません。</p>
<p>2026年2月、AnthropicはClaude Opus 4.6を利用したOSSの脆弱性調査で、<a rel="noopener" href="https://www.anthropic.com/research/zero-days" target="_blank"><strong>500件を超える高深刻度の脆弱性を発見・検証した</strong></a>と報告しました。</p>
<p>主要なOSSの中には、異常な入力を大量に自動投入して不具合を探すファジングなどの自動検査を、長年継続して受けてきたものがあります。それでもAIを使った解析によって新たな脆弱性が発見されました。</p>
<p>重要なのは手法名そのものではなく、<strong>従来の自動検査とは異なる方法でもコードを調べられるようになり、脆弱性探索の速度と範囲が広がっていること</strong>です。</p>
<p>ここで「500件すべてがゼロデイだった」と読むべきではありません。</p>
<p>Anthropicは、報告前に各バグを検証し、初期の調査では自社のセキュリティ研究者が脆弱性を確認してパッチを作成し、件数が増えた後は外部の人間のセキュリティ研究者も検証とパッチ開発に加わったと説明しています。</p>
<p>AIが候補を大量に発見できても、内容の確認、修正、テスト、リリースには人間や開発チームの作業が残ります。</p>
<p>発見量が増えるほど、</p>
<blockquote>
<p>発見する<br />
↓<br />
検証する<br />
↓<br />
修正する<br />
↓<br />
テストする<br />
↓<br />
本番へ適用する</p>
</blockquote>
<p>という防御側の処理能力がボトルネックになります。</p>
<p>Anthropicも、従来の90日程度の脆弱性開示・修正サイクルが、LLMによる発見量と速度に対して維持しにくくなる可能性を指摘しています。</p>
<p>発見と公開の速度が上がるのであれば、<strong>緊急パッチの影響判断や適用までのリードタイムを、運用開始前に決めておく重要性も高まります。</strong></p>
<p>CVSSの数値だけでなく、実際の悪用実績や自システムでの利用状況、攻撃経路、パッチ適用の影響などを踏まえて判断します。具体的な判断基準と意思決定プロセスは、後半の脆弱性管理で説明します。</p>
<h3 id="未知の脆弱性はアセスメントシートに列挙できない">未知の脆弱性はアセスメントシートに列挙できない</h3>
<p>ここで、この記事のSTEP1が効いてきます。</p>
<p>未知の脆弱性を、</p>
<blockquote>
<p>CVE-XXXX-XXXX</p>
</blockquote>
<p>のようにアセスメントシートへ事前に書くことはできません。</p>
<p>しかし、<strong>未知の脆弱性が悪用された場合に、どのような攻撃経路が成立するか</strong>は考えることができます。</p>
<p>ここまで例として使ってきた顧客情報を保持するWebシステムなら、次のような攻撃経路を考えます。</p>
<p><div id="attachment_3404" style="width: 510px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-3404" class="wp-image-3404 size-medium" src="https://sys-univ.com/wp-content/uploads/2026/09/592f0478cbd772dc2cc825fa879f3a22-500x281.png" alt="" width="500" height="281" srcset="https://sys-univ.com/wp-content/uploads/2026/09/592f0478cbd772dc2cc825fa879f3a22-500x281.png 500w, https://sys-univ.com/wp-content/uploads/2026/09/592f0478cbd772dc2cc825fa879f3a22-800x450.png 800w, https://sys-univ.com/wp-content/uploads/2026/09/592f0478cbd772dc2cc825fa879f3a22-300x169.png 300w, https://sys-univ.com/wp-content/uploads/2026/09/592f0478cbd772dc2cc825fa879f3a22-768x432.png 768w, https://sys-univ.com/wp-content/uploads/2026/09/592f0478cbd772dc2cc825fa879f3a22-1536x864.png 1536w, https://sys-univ.com/wp-content/uploads/2026/09/592f0478cbd772dc2cc825fa879f3a22-120x68.png 120w, https://sys-univ.com/wp-content/uploads/2026/09/592f0478cbd772dc2cc825fa879f3a22-160x90.png 160w, https://sys-univ.com/wp-content/uploads/2026/09/592f0478cbd772dc2cc825fa879f3a22-320x180.png 320w, https://sys-univ.com/wp-content/uploads/2026/09/592f0478cbd772dc2cc825fa879f3a22-376x212.png 376w, https://sys-univ.com/wp-content/uploads/2026/09/592f0478cbd772dc2cc825fa879f3a22.png 1672w" sizes="auto, (max-width: 500px) 100vw, 500px" /><p id="caption-attachment-3404" class="wp-caption-text">図　侵入から情報持ち出しまでの攻撃経路と、各段階に配置する防御ポイント</p></div></p>
<p>&nbsp;</p>
<p>最初の侵入を完全に防げなかった場合でも、攻撃経路の途中で止めることはできます。</p>
<p>侵入後に不要な管理権限まで取得されないよう最小権限化し、認証情報を取得されても権限昇格や横展開が容易に成立しないよう、通信経路や信頼関係を制限します。</p>
<p>DBへ到達する段階では、<strong>通信経路と権限の両方を絞ります。</strong></p>
<p>例えば、Web/APとDBの間だけ必要な通信を許可するネットワークセグメントを設け、利用者側のネットワークからDBへ直接到達できないようにします。運用管理についても、管理用LANや踏み台などの管理経路からだけアクセスできる端末・サーバを分離します。</p>
<p>さらに、アプリケーションや管理者に与えるDB権限を必要最小限にし、不審なアクセスや重要操作を検知・記録します。DBの権限と監査ログについては、次の記事で具体例を紹介しています。</p>
<a href="https://sys-univ.com/dev/database-engineer-dba/" title="データベースエンジニア（DBA）の仕事｜止めない、失わない、遅くさせない" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img width="160" height="90" src="https://sys-univ.com/wp-content/uploads/2026/08/251be8c60a42d58dcec6615bfa7aa384-160x90.jpg" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" loading="lazy" decoding="async" srcset="https://sys-univ.com/wp-content/uploads/2026/08/251be8c60a42d58dcec6615bfa7aa384-160x90.jpg 160w, https://sys-univ.com/wp-content/uploads/2026/08/251be8c60a42d58dcec6615bfa7aa384-500x281.jpg 500w, https://sys-univ.com/wp-content/uploads/2026/08/251be8c60a42d58dcec6615bfa7aa384-800x450.jpg 800w, https://sys-univ.com/wp-content/uploads/2026/08/251be8c60a42d58dcec6615bfa7aa384-300x169.jpg 300w, https://sys-univ.com/wp-content/uploads/2026/08/251be8c60a42d58dcec6615bfa7aa384-768x432.jpg 768w, https://sys-univ.com/wp-content/uploads/2026/08/251be8c60a42d58dcec6615bfa7aa384-1536x864.jpg 1536w, https://sys-univ.com/wp-content/uploads/2026/08/251be8c60a42d58dcec6615bfa7aa384-120x68.jpg 120w, https://sys-univ.com/wp-content/uploads/2026/08/251be8c60a42d58dcec6615bfa7aa384-320x180.jpg 320w, https://sys-univ.com/wp-content/uploads/2026/08/251be8c60a42d58dcec6615bfa7aa384-376x212.jpg 376w, https://sys-univ.com/wp-content/uploads/2026/08/251be8c60a42d58dcec6615bfa7aa384.jpg 1672w" sizes="auto, (max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">データベースエンジニア（DBA）の仕事｜止めない、失わない、遅くさせない</div><div class="blogcard-snippet internal-blogcard-snippet">データベースエンジニア（DBA）は何をする職種なのか。Oracle DBAの実務経験をもとに、物理設計・構築、性能と容量管理、権限・監査、監視、バックアップ、障害復旧、データ移行まで、構築後も続く仕事と責任をわかりやすく解説します。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img src="https://www.google.com/s2/favicons?domain=https://sys-univ.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" loading="lazy" decoding="async" /></div><div class="blogcard-domain internal-blogcard-domain">sys-univ.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2026.08.03</div></div></div></div></a>
<p>バックアップも、本番環境が侵害されたときに同じ権限や攻撃経路から破壊されないよう分離します。</p>
<p><strong>攻撃シナリオの途中に複数の防御ポイントを置く</strong>ことが、未知の脆弱性を前提にした設計につながります。</p>
<h3 id="侵入させないだけではなく侵入された後まで設計する">「侵入させない」だけではなく「侵入された後」まで設計する</h3>
<p>セキュリティ対策というと、</p>
<blockquote>
<p>攻撃をどう防ぐか</p>
</blockquote>
<p>に目が向きやすくなります。</p>
<p>しかし未知の脆弱性を完全になくせないのであれば、予防だけでは設計が完結しません。</p>
<p>考える範囲を、</p>
<blockquote>
<p><strong>予防</strong><br />
↓<br />
<strong>検知</strong><br />
↓<br />
<strong>封じ込め</strong><br />
↓<br />
<strong>復旧</strong></p>
</blockquote>
<p>まで広げます。</p>
<p>例えばWebサーバへの侵入そのものを防げなかったとしても、権限昇格を防ぎ、横展開を制限し、異常操作を検知し、影響範囲を特定して安全な状態へ戻せれば、最終的な事業影響を小さくできます。</p>
<p>この考え方自体は2026年になって突然登場したものではありません。<a rel="noopener" href="https://www.nist.gov/publications/nist-cybersecurity-framework-csf-20" target="_blank">NIST Cybersecurity Framework 2.0</a>でも、サイバーセキュリティリスクへの対応をGovern、Identify、Protect、Detect、Respond、Recoverの6機能で整理し、ライフサイクル全体でリスクを管理する考え方を示しています。</p>
<p>AIによって変わったのは原則ではなく、<strong>各段階を攻撃者が通過する速度が上がる可能性</strong>です。</p>
<p>AI対応をうたう製品を追加する前に、まず攻撃シナリオのどの段階を止め、どこで検知し、どの状態まで復旧する必要があるのかを決めます。</p>
<p>AI Agentも同じです。AIだから特別な対策を足すのではなく、<strong>そのAgentがどの認証情報を使い、どのAPIを実行でき、どのリソースまで到達できるのか</strong>を確認し、必要な権限だけを与えます。AWS IAMでAI Agentへ与える権限の考え方は、次の記事で詳しく整理しています。</p>
<a href="https://sys-univ.com/tec/ai-agent-aws-security/" title="AI AgentのIAM権限はどこまで届くか｜OpenAI・Hugging Face侵害から考えるAWSセキュリティ設計" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img width="160" height="90" src="https://sys-univ.com/wp-content/uploads/2026/09/0169e920e59b365b8e57fa704cbb3ec2-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" loading="lazy" decoding="async" srcset="https://sys-univ.com/wp-content/uploads/2026/09/0169e920e59b365b8e57fa704cbb3ec2-160x90.png 160w, https://sys-univ.com/wp-content/uploads/2026/09/0169e920e59b365b8e57fa704cbb3ec2-120x68.png 120w, https://sys-univ.com/wp-content/uploads/2026/09/0169e920e59b365b8e57fa704cbb3ec2-320x180.png 320w, https://sys-univ.com/wp-content/uploads/2026/09/0169e920e59b365b8e57fa704cbb3ec2-376x212.png 376w" sizes="auto, (max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">AI AgentのIAM権限はどこまで届くか｜OpenAI・Hugging Face侵害から考えるAWSセキュリティ設計</div><div class="blogcard-snippet internal-blogcard-snippet">OpenAI・Hugging Face侵害を一次資料から検証し、AI Agentに与えるIAM権限、Workload Identity、ネットワーク境界、Read Only権限、検知・停止設計をAWSのセキュリティ要件として整理します。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img src="https://www.google.com/s2/favicons?domain=https://sys-univ.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" loading="lazy" decoding="async" /></div><div class="blogcard-domain internal-blogcard-domain">sys-univ.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2026.09.07</div></div></div></div></a>
<p>未知の脆弱性をすべて事前に把握できないからこそ、個々の脆弱性一覧だけではなく、<strong>資産・攻撃シナリオ・攻撃経路を基準にリスクを考える重要性が高まっています。</strong></p>
<p>次に問題になるのが、<strong>どこまで対策し、何を残存リスクとして扱うのか</strong>です。</p>
<h2 id="実施しない対策と残存リスクの扱いを決める">実施しない対策と残存リスクの扱いを決める</h2>
<p>ここまで、脅威と脆弱性からリスクを評価し、そのリスクに応じて必要なセキュリティ対策を導く方法を説明してきました。</p>
<p>リスクアセスメントの結果として考えられる対策を、すべて実施するわけではありません。</p>
<p>対策を実施してもリスクを完全にゼロにできない場合があります。追加対策によって得られるリスク低減効果に対して、構築費や運用負荷が大きすぎる場合もあります。</p>
<p>最後に必要になるのが、</p>
<blockquote>
<p><strong>どこまで対策し、何を残存リスクとして扱うのか</strong></p>
</blockquote>
<p>という判断です。</p>
<p>これは、対策を考えることと同じくらい重要なセキュリティ要件定義です。</p>
<h3 id="残存リスクは対策しなかったリスクだけではない">残存リスクは「対策しなかったリスク」だけではない</h3>
<p>残存リスクという言葉は、</p>
<blockquote>
<p>対策を実施しなかったために残ったリスク</p>
</blockquote>
<p>という意味に捉えられがちですが、それだけではありません。</p>
<p>対策を実施しても、リスクが完全になくなるとは限りません。</p>
<p>例えば、管理画面へのアクセスを管理ネットワークに限定し、MFAを導入し、管理者権限を必要最小限にして、操作ログも記録したとします。</p>
<p>これによって外部からの不正アクセスや、認証情報を盗まれた場合のリスクは大きく下げられます。</p>
<p>しかし、DBAのように業務上強い権限を持つ管理者であれば、正規の権限を利用して意図的にデータを取得する可能性まで完全になくすことは困難です。</p>
<p>そこで、</p>
<ul>
<li>特権IDの利用者や利用時間を限定する</li>
<li>重要操作を記録する</li>
<li>誰が、いつ、どのデータへアクセスしたのか追跡できるようにする</li>
<li>監査ログを管理対象のDBとは別の基盤へ転送する</li>
<li>必要に応じて承認手続きや操作監視を組み合わせる</li>
</ul>
<p>といった統制を行います。</p>
<p>ログを取得していても、そのログを同じDBA権限で消せるのであれば、証跡として十分とはいえません。<strong>管理者自身が容易に改ざん・削除できない場所へ証跡を残す</strong>ことも重要です。</p>
<p>それでも、正規権限を持つ内部者による不正利用の可能性がゼロになるわけではありません。</p>
<p><strong>対策を実施したあとにも残っているリスクが、残存リスクです。</strong></p>
<p>ここは、STEP4で説明した「保有」と区別しておきます。</p>
<p>「保有」はリスクへの対応方針です。残存リスクは、低減策を実施した場合にも存在します。</p>
<blockquote>
<p>リスクを低減する<br />
↓<br />
対策後のリスクを再評価する<br />
↓<br />
それでも残るリスクを把握する<br />
↓<br />
そのリスクを前提に、どの方式・運用で進めるかを判断する</p>
</blockquote>
<p>という流れになります。</p>
<p class="PDq2pG_selectionAnchorContainer" dir="auto" data-start="369" data-end="518">ここまでは、主に情報漏洩や不正利用といった<strong data-start="390" data-end="397">機密性</strong>に関する残存リスクを例にしてきました。</p>
<p class="PDq2pG_selectionAnchorContainer" dir="auto" data-start="369" data-end="518">しかし、情報セキュリティは機密性・完全性・可用性（CIA）の3つで考えます。<strong data-start="459" data-end="518">大規模障害や災害によって、必要なときにシステムを利用できなくなることも、可用性に関するセキュリティリスクです。</strong></p>
<p dir="auto" data-start="523" data-end="567">次に、CIAのうち<strong data-start="532" data-end="548">可用性に関する残存リスク</strong>の例として、リージョン障害を考えます。</p>
<h3 id="バックアップがあると災害対策先で業務継続できるは違う">「バックアップがある」と「災害対策先で安全に業務継続できる」は違う</h3>
<p class="PDq2pG_selectionAnchorContainer" dir="auto" data-start="260" data-end="319">別リージョンへデータや復旧資材を保管していても、<strong data-start="284" data-end="319">それだけで災害対策先から安全に業務を再開できるとは限りません。</strong></p>
<p dir="auto" data-start="321" data-end="457">DRでは可用性を回復することが目的になりますが、復旧先でも機密性や完全性を維持する必要があります。データを復旧できても、アクセス制御が効かず誰でも参照できる状態になったり、認証を省略しなければ利用できなかったりするのであれば、セキュリティ要件を満たした復旧とはいえません。</p>
<p dir="auto" data-start="459" data-end="532">例えば、セカンダリリージョンにWeb/AP、DB、バックアップを用意できても、<strong data-start="498" data-end="524">認証基盤がプライマリリージョンに依存している</strong>場合があります。</p>
<p dir="auto" data-start="534" data-end="565">AWSでCognitoを認証基盤として利用しているケースなら、</p>
<blockquote data-start="567" data-end="688">
<p dir="auto" data-start="569" data-end="688">セカンダリリージョンでWeb/APやDBは起動できる<br data-start="595" data-end="598" /><br />
↓<br data-start="601" data-end="604" /><br />
しかしログイン時の認証はプライマリリージョン側のCognitoに依存している<br data-start="644" data-end="647" /><br />
↓<br data-start="650" data-end="653" /><br />
プライマリリージョンが利用できなければ、正常な認証経路が成立しない</p>
</blockquote>
<p dir="auto" data-start="690" data-end="703">ということが起こり得ます。</p>
<p dir="auto" data-start="705" data-end="711">この状態で、</p>
<blockquote data-start="713" data-end="732">
<p dir="auto" data-start="715" data-end="732">認証を迂回してサービスだけ起動する</p>
</blockquote>
<p dir="auto" data-start="734" data-end="797">という対応をすれば可用性だけは回復できるかもしれませんが、<strong data-start="763" data-end="791">今度は認証・認可が成立せず、機密性を損なうリスク</strong>が生じます。</p>
<p dir="auto" data-start="799" data-end="811">DRで確認すべきなのは、</p>
<blockquote data-start="813" data-end="834">
<p dir="auto" data-start="815" data-end="834"><strong data-start="815" data-end="834">バックアップデータが存在するか</strong></p>
</blockquote>
<p dir="auto" data-start="836" data-end="843">だけではなく、</p>
<blockquote data-start="845" data-end="906">
<p dir="auto" data-start="847" data-end="906"><strong data-start="847" data-end="906">認証、DNS、鍵管理、外部接続、アクセス制御などを含め、一連の業務経路がセキュリティを維持した状態で成立するか</strong></p>
</blockquote>
<p dir="auto" data-start="908" data-end="911">です。</p>
<h3 id="上位基準との差異があれば残存リスクまで明確にする">上位基準との差異があれば、残存リスクまで明確にする</h3>
<p>前節で説明した差異評価も、最終的には同じところへ行き着きます。</p>
<p>上位基準と同じ方式を採用できなかった場合、</p>
<blockquote>
<p>差異がある</p>
</blockquote>
<p>と確認するだけでは不十分です。</p>
<p>差異によって増えるリスクを評価し、代替コントロールを実施したうえで、それでも何が残るのかを確認します。</p>
<p>例えば、上位基準と同じリアルタイムの検知方式を採用できず、別の監視や操作記録によってリスクを低減したとします。</p>
<p>代替コントロールによってリスクが下がっても、上位基準とまったく同じ検知能力になるとは限りません。</p>
<p>そこで、</p>
<blockquote>
<p><strong>代替コントロールを実施した結果、何のリスクがどの程度残るのか</strong></p>
</blockquote>
<p>まで明確にします。</p>
<p>ここまで整理して初めて、</p>
<blockquote>
<p>この差異を前提に、この方式で進めてよいか</p>
</blockquote>
<p>を判断できます。</p>
<h3 id="や対象外だけでは設計判断を残したことにならない">「×」や「対象外」だけでは、設計判断を残したことにならない</h3>
<p>セキュリティの確認表では、対策ごとに「○」「×」「対象外」と記録することがあります。</p>
<p>しかし、</p>
<blockquote>
<p>対策A：×</p>
</blockquote>
<p>だけでは、なぜ実施しなかったのか分かりません。</p>
<p>リスクを見落としていたのか。</p>
<p>追加対策による効果が小さいと判断したのか。</p>
<p>費用とのバランスを評価した結果なのか。</p>
<p>代替コントロールによって十分に低減できているのか。</p>
<p>その違いは、記号だけでは残りません。</p>
<p>「対象外」も同じです。</p>
<p>対象外は、本来、</p>
<blockquote>
<p>このシステムでは当該リスクが成立しない<br />
この構成要素には適用されない<br />
別の組織やシステムが責任を持つ範囲である</p>
</blockquote>
<p>など、<strong>評価した結果として適用対象から外した</strong>ことを意味します。</p>
<p>対象外にしたことと、リスクを認識したうえで追加対策を実施せず保有したことは別の判断です。</p>
<p>どちらの場合も、後から判断を再現できるように理由を残します。</p>
<h3 id="実施しないを技術者だけで決めない">「実施しない」を技術者だけで決めない</h3>
<p>残るリスクをどう扱うかは、セキュリティ担当者やシステム設計者だけで完結する判断ではありません。</p>
<p>例えば、DBAの不正利用リスクに対して、特権ID管理、二重承認、常時監視などを追加すれば、さらにリスクを下げられる可能性があります。</p>
<p>しかし、追加対策には費用と運用負荷が伴います。技術者は、</p>
<blockquote>
<p>現在の対策でどこまでリスクが下がっているか<br />
追加対策で何が改善するか<br />
それでも何が残るか</p>
</blockquote>
<p>を説明できます。</p>
<p>そのうえで、システムの重要性、業務影響、費用を踏まえ、<strong>残るリスクを前提にどの方式で進めるのかを、適切な責任者を含む関係者で決めます。</strong></p>
<p>理想的には、残存リスクとその扱いを成果物に明示し、受容主体まで残せるのが分かりやすい形です。</p>
<p>ただし、実務では必ずしもそうならないことがあります。</p>
<blockquote>
<p><strong>実務Tips：残存リスクは、必ずしも「受容」と明記されるとは限らない</strong></p>
</blockquote>
<p>私の経験では、発注者側が「このリスクを受容する」という表現や、リスクが顕在化した場合の結果を成果物へ明記することを避けるケースがありました。特に大規模案件や公共系の案件では、そのような場面もありました。</p>
<p>会議では、</p>
<blockquote>
<p>ここまでは対策する<br />
ここから先は実現しない<br />
このリスクは残る<br />
その前提でこの方式を採用する</p>
</blockquote>
<p>という議論が実際に行われていることがあります。</p>
<p>その場合、「残存リスクを受容した」と強い表現で書けなくても、</p>
<blockquote>
<p><strong>何が制約なのか</strong><br />
<strong>何が実現できないのか</strong><br />
<strong>その結果、何が起こり得るのか</strong><br />
<strong>どの代替策を採るのか</strong><br />
<strong>その前提でどの方式で進めると確認したのか</strong></p>
</blockquote>
<p>を、可能な範囲で記録に残します。</p>
<p>議事録は納品成果物に含まれない場合もありますが、会議後に関係者へ正式に共有される重要なプロジェクト記録です。計画時には想定していなかった緊急会議であっても、そこで何を説明し、何を確認したのかを議事録に残しておけば、後から判断経緯を追跡できます。</p>
<p>例えば、</p>
<blockquote>
<p>「○○の制約により△△は実施しない。代替策として□□を採用し、本方式で進めることを確認した。」</p>
</blockquote>
<p>という残し方です。</p>
<p>議事録が契約上の承認文書になるかどうかは案件の文書管理ルールによります。それでも、<strong>「説明した」「制約を共有した」「その前提で方式を確認した」という判断経緯を後から確認できる状態にしておく</strong>ことには大きな意味があります。</p>
<h3 id="事故後になぜ実施しなかったのかを説明できるか">事故後に「なぜ実施しなかったのか」を説明できるか</h3>
<p>セキュリティ事故が起きたあとに、</p>
<blockquote>
<p>「なぜ、この対策を実施していなかったのか」</p>
</blockquote>
<p>と問われることがあります。</p>
<p>そのとき、</p>
<blockquote>
<p>リスクを認識したうえで、既存対策と追加対策の効果を評価し、<strong>その残存リスクを前提にこの方式で進めることを関係者間で合意していた</strong></p>
</blockquote>
<p>と説明できる状態と、</p>
<blockquote>
<p>なぜ「×」になっているのか分からない</p>
</blockquote>
<p>状態では、大きな違いがあります。</p>
<p><strong>セキュリティ要件定義の品質は、実施した対策の数だけでは決まりません。</strong></p>
<p>必要な対策を導くこと。</p>
<p>実施しない対策についても判断理由を明確にすること。</p>
<p>対策後に残るリスクを把握すること。</p>
<p>そして、その残存リスクを前提に、どの方針で進めると決まったのかを追跡できるようにすること。</p>
<p>ここまで行って、リスクアセスメントによるセキュリティ要件の判断が一度閉じます。</p>
<hr />
<p>ここからは、決めたセキュリティ要件をプロジェクトの後工程でどう扱うかです。</p>
<h2 id="アセスメント結果を設計見積rfpへ引き継ぐ">アセスメント結果を設計・見積・RFPへ引き継ぐ</h2>
<p>前半で触れた要件定義と設計の境界を、後工程へ渡す観点から整理します。</p>
<p>要件定義では、リスク評価をもとに<strong>必要なリスク低減水準や満たすべきセキュリティ要求を決めます。</strong> 基本設計以降では、その要求を満たすネットワーク構成、認証方式、製品、クラウドサービス、運用方式を具体化します。基本設計で何を具体化するのかは、<a href="https://sys-univ.com/dev/basic-design-infrastructure/">基本設計で決めること｜画面設計だけでは終わらない基盤SEの設計工程</a>でも詳しく整理しています。</p>
<p>この境界を意識しないと、要件が粗すぎて見積前提が揃わないか、逆に要件定義で方式まで固定しすぎて設計の選択肢を失います。</p>
<p>また、セキュリティ要件は厳しく設定すればよいわけではありません。必要な権限を絞りながら、システムとして成立する実装方式へ落とす必要があります。</p>
<p>例えばECS/Fargateでコンテナを非rootで実行する設計にすると、共有VolumeのUID/GIDやファイル権限まで整合させなければ、アプリケーションやログ収集が<code>Permission denied</code>で動かなくなることがあります。<a href="https://sys-univ.com/dev/ecs-fargate-fluent-bit-permission-denied/">Fluent BitがPermission deniedでログを読めない｜ECS/Fargate共有VolumeのUID/GID設計</a>では、最小権限を実装レベルまで落としたときに何を設計する必要があるかを具体例で整理しています。</p>
<h3 id="step4で導いた要件を後工程の条件へ変換する">STEP4で導いた要件を後工程の条件へ変換する</h3>
<p>STEP4で導いたセキュリティ要件は、アセスメントシートの中に閉じ込めず、設計・見積・調達の条件へ変換して渡します。</p>
<p>ここで重要なのは、対策項目をもう一度並べることではありません。<strong>どのリスクをどこまで下げるための要求なのかという設計根拠を、後工程でも追跡できる状態にすること</strong>です。</p>
<h3 id="セキュリティ要件は見積条件でもある">セキュリティ要件は見積条件でもある</h3>
<p>セキュリティ要件をどこまで求めるかによって、構築費と運用費は変わります。</p>
<p>例えば、</p>
<blockquote>
<p>ログを保存する</p>
</blockquote>
<p>という要求と、</p>
<blockquote>
<p>セキュリティ上重要な操作を集中管理し、一定期間保存し、不審な操作を検知する</p>
</blockquote>
<p>という要求では、必要になる仕組みも運用も違います。</p>
<p>可用性についても、バックアップから復旧できればよいのか、別拠点や別リージョンへの切替まで求めるのかによって費用は大きく変わります。</p>
<p>要件定義で、</p>
<blockquote>
<p>高いセキュリティを確保すること</p>
</blockquote>
<p>とだけ書いても、見積条件にはなりません。</p>
<p><strong>費用に影響するセキュリティ要求は、ベンダが同じ前提で見積もれる粒度まで明確にする必要があります。</strong></p>
<p>同時に、実装方式まで不必要に固定しないことも重要です。</p>
<p>認証強度や監視範囲、保存期間など、費用やシステム構成へ大きく影響する要求は要件として定める。それをどの製品やクラウドサービスで実現するかは、設計に選択肢を残せるのであれば固定しない。</p>
<p><strong>見積可能な粒度まで要求を具体化しながら、実装方式まで不必要に縛らないこと</strong>がポイントです。</p>
<h3 id="rfpへ渡すなら対策だけでなく要求の背景も残す">RFPへ渡すなら「対策」だけでなく「要求の背景」も残す</h3>
<p>冒頭で説明したRFPは、本記事の要件定義へ入るための入力でした。工程ごとに調達を分ける案件では、要件定義の成果が<strong>次工程のRFPや見積条件</strong>になります。</p>
<p>要件定義と基本設計以降で契約や担当ベンダが変わる案件では、アセスメント結果を次工程へ渡せる形にしておく必要があります。</p>
<p>このとき、</p>
<blockquote>
<p>MFAを実装すること</p>
</blockquote>
<p>だけを渡すより、</p>
<blockquote>
<p>管理機能への不正アクセスによる顧客情報漏洩リスクを低減するため、管理者認証にはMFAを要求する</p>
</blockquote>
<p>と、要求の背景まで追跡できる方が設計しやすくなります。</p>
<p>後工程で方式変更が必要になった場合にも、</p>
<blockquote>
<p>MFAという方式を守れるか</p>
</blockquote>
<p>だけではなく、</p>
<blockquote>
<p>元々低減しようとしていたリスクを、変更後の方式でも十分に低減できるか</p>
</blockquote>
<p>という判断に戻れるからです。</p>
<p>要件定義工程と基本設計以降を別に調達する案件では、この粒度がそのまま次工程の入札条件になります。</p>
<p>要求が粗すぎれば、ある応札者は24時間監視まで含め、別の応札者はログ保存だけを想定するなど、見積前提がばらつきます。価格差が方式差なのか、単なる前提差なのか分からなくなり、比較そのものが難しくなります。</p>
<p>細かく書きすぎて製品名や実装方式まで固定すると、応札側がより適切な方式を提案できる余地を奪います。</p>
<p><strong>RFPでは、応札者が同じ要求水準を見積もれる具体性と、設計提案を可能にする自由度の両方が必要です。</strong></p>
<p>要求の背景にあるリスクを残しておけば、この2つを両立させやすくなります。</p>
<h3 id="未確定事項を決まったことにしない">未確定事項を「決まったこと」にしない</h3>
<p>要件定義ですべての実装方式まで決められるとは限りません。</p>
<p>詳細な製品仕様や他システムとの調整結果を見なければ判断できない項目もあります。</p>
<p>その場合、無理に○や×を付けて確定させるより、</p>
<blockquote>
<p>要件として必要なこと<br />
現時点で決まっていること<br />
基本設計以降で継続して検討すること</p>
</blockquote>
<p>を分けておきます。</p>
<p>未確定事項を未確定のまま明示することは、設計品質が低いことを意味しません。</p>
<p><strong>判断に必要な情報がまだ揃っていないことを明確にし、誰がどの工程で判断するのかを後工程へ渡す方が安全です。</strong></p>
<p>アセスメント結果は、セキュリティ部門だけが保管する資料ではありません。</p>
<p>設計条件、見積条件、調達条件へ変換されて初めて、プロジェクト全体で使えるセキュリティ要件になります。</p>
<h2 id="セキュリティアセスメントは一度実施して終わりではない">セキュリティアセスメントは一度実施して終わりではない</h2>
<p>要件定義でリスクアセスメントを実施し、必要な対策と残存リスクの扱いを決めても、その評価がシステム廃止まで有効なわけではありません。</p>
<p>システム構成も脅威も変化します。</p>
<p>特に確認しなければならないのが、</p>
<blockquote>
<p><strong>評価した当時の前提が、現在も成立しているか</strong></p>
</blockquote>
<p>です。</p>
<h3 id="代替コントロールの前提が崩れれば差異評価も変わる">代替コントロールの前提が崩れれば、差異評価も変わる</h3>
<p>上位基準との差異評価では、同じ方式を採用できない場合に、別のコントロールでリスクを低減する方法を説明しました。</p>
<p>例えば、</p>
<blockquote>
<p>利用できる管理端末を限定している<br />
管理操作を記録している</p>
</blockquote>
<p>ことを前提に、上位基準との差異による残存リスクを許容したとします。</p>
<p>その後の運用変更によって、管理端末が増えたり、操作ログの監視が実施されなくなったりすれば、当初の差異評価を支えていた前提が崩れます。</p>
<p>評価表に書かれた結論が同じでも、実際のリスクは既に変わっています。</p>
<p>上位基準自体が改定される場合もあります。</p>
<p><strong>差異評価では、差異そのものだけでなく、代替コントロールが現在も有効に機能しているかを継続して確認する必要があります。</strong></p>
<h3 id="システム変更はリスクの変更でもある">システム変更は、リスクの変更でもある</h3>
<p>機能追加や構成変更でもリスクは変化します。</p>
<p>例えば、当初は社内ネットワークからだけ利用していたシステムを、インターネットから利用できるように変更すれば、同じアプリケーションでも脅威への露出が変わります。</p>
<p>外部SaaSとのAPI連携を追加すれば、新しい通信経路、認証情報、責任分界が生まれます。</p>
<p>IAM権限を変更したり、運用端末を追加したりした場合も、以前とは異なる攻撃経路が成立する可能性があります。</p>
<p>設計変更を、</p>
<blockquote>
<p>機能が動くか</p>
</blockquote>
<p>だけで確認するのではなく、</p>
<blockquote>
<p><strong>既存のリスク評価に影響しないか</strong></p>
</blockquote>
<p>まで確認します。</p>
<p>リスクアセスメントは、要件定義時に一度作って保管する資料ではありません。システムや外部環境が変われば、前提となるリスクも変わるため、必要に応じて見直します。具体的な見直しの契機は後述します。</p>
<h3 id="脆弱性の深刻度だけでなく実際に悪用されているかを見る">脆弱性の「深刻度」だけでなく、実際に悪用されているかを見る</h3>
<p>運用開始後には、多数の脆弱性情報が継続的に公開されます。</p>
<p>すべての脆弱性を同じ速度で修正することは、現実には困難です。</p>
<p>CVSSなどの深刻度は重要な判断材料ですが、それだけで対応順位を決める必要はありません。</p>
<p>CISAは、実際の攻撃で悪用された脆弱性を<a rel="noopener" href="https://www.cisa.gov/known-exploited-vulnerabilities-catalog" target="_blank">Known Exploited Vulnerabilities（KEV）Catalog</a>として継続的に管理・公開しており、組織の脆弱性管理における優先順位付けの入力としてKEVを利用するよう案内しています。</p>
<p>例えば、</p>
<blockquote>
<p>CVSSは高いが、自システムでは該当機能を使用しておらず外部からも到達できない脆弱性</p>
</blockquote>
<p>と、</p>
<blockquote>
<p>深刻度だけを見れば同程度でも、実際の攻撃で悪用されており、自システムが外部へ公開している機能に存在する脆弱性</p>
</blockquote>
<p>では、対応優先度が同じとは限りません。</p>
<p>ここでも見るのは、</p>
<blockquote>
<p>脆弱性の点数</p>
</blockquote>
<p>だけではありません。</p>
<p><strong>その脆弱性が、自システムのどの資産に対して、どの攻撃シナリオを成立させるのか</strong>です。</p>
<p>KEVに掲載されているから無条件に自システムの最優先になるわけでもありません。対象製品を利用しているか、脆弱な機能が有効か、攻撃経路が存在するかといった、自システム側の条件と組み合わせて判断します。</p>
<h3 id="脆弱性管理では何日で判断し何日で適用するかも設計する">脆弱性管理では「何日で判断し、何日で適用するか」も設計する</h3>
<p>AI節では、脆弱性を発見する量と速度が上がれば、人間側の検証・修正・適用能力がボトルネックになる可能性について触れました。</p>
<p>この問題は、運用開始後に初めて考えるものではありません。運用開始後の監視・ログ・バックアップ・判断体制まで含めた設計については、次の記事で説明した論点ともつながります。</p>
<a href="https://sys-univ.com/dev/opedesign/" title="運用設計とは？運用設計書の目次サンプルと項目一覧｜システム基盤エンジニア視点" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img width="160" height="90" src="https://sys-univ.com/wp-content/uploads/2026/07/7a689f13e1c38b90b6e6b1584b241588-160x90.jpg" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" loading="lazy" decoding="async" srcset="https://sys-univ.com/wp-content/uploads/2026/07/7a689f13e1c38b90b6e6b1584b241588-160x90.jpg 160w, https://sys-univ.com/wp-content/uploads/2026/07/7a689f13e1c38b90b6e6b1584b241588-120x68.jpg 120w, https://sys-univ.com/wp-content/uploads/2026/07/7a689f13e1c38b90b6e6b1584b241588-320x180.jpg 320w, https://sys-univ.com/wp-content/uploads/2026/07/7a689f13e1c38b90b6e6b1584b241588-376x212.jpg 376w" sizes="auto, (max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">運用設計とは？運用設計書の目次サンプルと項目一覧｜システム基盤エンジニア視点</div><div class="blogcard-snippet internal-blogcard-snippet">運用設計とは何かをシステム基盤エンジニアの実務目線で解説します。運用設計書の目次サンプルと検討項目一覧を示し、監視・ログ・バックアップ・ジョブ管理、誰がやるのか、要件定義・基本設計との関係、処理方式設計との双方向連携を整理します。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img src="https://www.google.com/s2/favicons?domain=https://sys-univ.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" loading="lazy" decoding="async" /></div><div class="blogcard-domain internal-blogcard-domain">sys-univ.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2026.08.14</div></div></div></div></a>
<p>重大な脆弱性が見つかったとき、CVSSの数値だけで「9.0以上なら即適用」のように機械的に決めるのではなく、例えば次の観点をあらかじめ判断基準として決めておきます。</p>
<ul>
<li>CVSSなどの脆弱性の深刻度</li>
<li>実際の攻撃で悪用されているか</li>
<li>脆弱性の対象となる製品・サービス・機能を自システムで利用しているか</li>
<li>外部から到達可能か、攻撃経路が成立するか</li>
<li>WAF、アクセス制御、ネットワーク分離など既存対策でどこまで抑えられているか</li>
<li>パッチ適用による停止や互換性への影響</li>
<li>すぐ適用できない場合の代替コントロールがあるか</li>
</ul>
<p>こうした情報をもとに、セキュリティ、基盤、アプリケーション、運用などの有識者で評価し、</p>
<blockquote>
<p>緊急で適用する<br />
通常の保守タイミングで適用する<br />
代替対策で一時的にリスクを下げる<br />
自システムには影響しないと判断する</p>
</blockquote>
<p>といった対応方針を決めます。</p>
<p>さらに、</p>
<blockquote>
<p>重大な脆弱性は何時間・何日以内に影響判断するのか<br />
緊急適用が必要な場合、何日以内を目標にするのか<br />
システム停止を誰が承認するのか<br />
適用できない場合、誰が代替策と残存リスクを判断するのか</p>
</blockquote>
<p>まで運用として決めておくと、脆弱性が公表されてから毎回ゼロから相談する必要がありません。</p>
<p>ここでは責任分界も重要です。OSやミドルウェアの脆弱性について、影響調査、適用判断、パッチ作業のどこまでを保守ベンダ、運用委託先、利用者側が担うのかを決めていなければ、緊急時に判断が止まります。</p>
<p>パッチを急いで適用すれば、変更による障害リスクも高まります。十分な検証を優先しすぎれば、既に悪用されている脆弱性を長期間残すことになります。</p>
<p>ここにも、<strong>セキュリティと安定運用のトレードオフ</strong>があります。</p>
<p>重要なのは、脆弱性の点数だけを見るのではなく、<strong>その脆弱性が自システムでどのリスクを成立させるのかを評価し、判断基準と意思決定プロセスを事前に決めておくこと</strong>です。</p>
<h3 id="再アセスメントする契機を決めておく">再アセスメントする契機を決めておく</h3>
<p>毎日すべてのリスクを最初から評価し直す必要はありません。</p>
<p>再評価の契機は、大きく3種類に整理できます。</p>
<p><strong>1つ目はシステム側の変化です。</strong> 構成やインターネット公開範囲を変更した、外部サービスや接続先を追加した、IAMや管理経路を変更した、新しいAPIを公開した、保持するデータを変更した、といった場合です。</p>
<p><strong>2つ目は外部環境の変化です。</strong> 上位基準やセキュリティ標準が改定された、重大な脆弱性が発見された、実際の攻撃で悪用されていることが確認された、といった変化が該当します。</p>
<p><strong>3つ目は評価の前提そのものの変化です。</strong> 代替コントロールの運用方法や実効性が変わった、セキュリティインシデントが発生して従来の想定が不十分だと分かった、といった場合です。</p>
<p><div id="attachment_3406" style="width: 510px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-3406" class="wp-image-3406 size-medium" src="https://sys-univ.com/wp-content/uploads/2026/09/cc919bc25bab34a188eb47884ee67f02-500x333.png" alt="" width="500" height="333" srcset="https://sys-univ.com/wp-content/uploads/2026/09/cc919bc25bab34a188eb47884ee67f02-500x333.png 500w, https://sys-univ.com/wp-content/uploads/2026/09/cc919bc25bab34a188eb47884ee67f02-800x533.png 800w, https://sys-univ.com/wp-content/uploads/2026/09/cc919bc25bab34a188eb47884ee67f02-300x200.png 300w, https://sys-univ.com/wp-content/uploads/2026/09/cc919bc25bab34a188eb47884ee67f02-768x512.png 768w, https://sys-univ.com/wp-content/uploads/2026/09/cc919bc25bab34a188eb47884ee67f02.png 1536w" sizes="auto, (max-width: 500px) 100vw, 500px" /><p id="caption-attachment-3406" class="wp-caption-text">図　システム・外部環境・前提条件の変化を契機に再アセスメントし、要件・設計・運用を更新する循環イメージ</p></div></p>
<p>&nbsp;</p>
<p>実務では、仕様変更が入ったときに、変更対象のプログラムだけを見るのではありません。</p>
<p>変更管理委員会などで、</p>
<blockquote>
<p><strong>変更内容<br />
→ 影響する構成要素・関連チーム<br />
→ 変化する脅威・脆弱性<br />
→ リスク再評価<br />
→ 必要な要件・設計・運用・テストの見直し</strong></p>
</blockquote>
<p>まで確認します。</p>
<p>例えば、外部接続の追加であれば、ネットワークチームだけでなく、認証、IAM、ログ監視、運用手順、障害時の切り分けまで影響する可能性があります。セキュリティに影響する変更であれば、関連するリスクアセスメントも見直します。</p>
<p>何かが変わるたびにアセスメントシート全体を作り直すのではなく、<strong>変化によって影響を受ける資産、脅威、攻撃シナリオ、既存対策、残存リスクを見直す</strong>という考え方です。</p>
<p>ウォーターフォール型の大規模開発では、後工程になるほど要件、設計、試験、運用手順など複数の成果物へ影響が波及するため、変更時の見直しは大きな作業になります。前工程へ戻るコストが大きいからこそ、変更管理の中にセキュリティ影響確認を組み込んでおく必要があります。</p>
<p>アジャイル開発でも原理は同じです。大きな工程へまとめて戻るのではなく、機能追加や変更のサイクルごとにセキュリティ影響を確認し、必要に応じてリスク評価や対策を更新します。</p>
<p><strong>開発手法にかかわらず、変更によって以前のリスク評価の前提が変わっていないかを確認することが重要です。</strong></p>
<p>セキュリティアセスメントは単なる成果物ではなく、<strong>システムの変化に対してセキュリティ判断を更新するための基準</strong>として使うものです。</p>
<h2 id="まとめセキュリティ要件はリスクから必要な対策を導く">まとめ｜セキュリティ要件は、リスクから必要な対策を導く</h2>
<p>セキュリティ要件は、暗号化、MFA、WAF、ログ管理といった具体的な対策を先に選んで決めるものではありません。</p>
<p>RFP、顧客標準、業界基準などの上位要求を入力として、まず対象範囲と責任分界を整理し、</p>
<blockquote>
<p><strong>脅威を分析する</strong><br />
↓<br />
<strong>脆弱性・設定不備・統制不足を分析する</strong><br />
↓<br />
<strong>リスクを分析・評価する</strong><br />
↓<br />
<strong>リスク対応を決め、必要な対策へ落とす</strong></p>
</blockquote>
<p>という流れでセキュリティ要件を導きます。</p>
<p>脅威を検討するときには、構成要素と脅威を掛け合わせ、外部攻撃者だけでなく、内部者、委託先、人的ミス、物理的な侵入まで見ます。</p>
<p>上位基準がある案件でも、基準への○×判定だけでは終わりません。</p>
<blockquote>
<p><strong>上位基準の要求</strong><br />
↓<br />
<strong>本システムの実現方式</strong><br />
↓<br />
<strong>差異</strong><br />
↓<br />
<strong>差異によって増えるリスク</strong><br />
↓<br />
<strong>代替コントロール</strong><br />
↓<br />
<strong>残存リスク</strong><br />
↓<br />
<strong>合意</strong></p>
</blockquote>
<p>まで評価します。</p>
<p>AIによって脆弱性の発見や攻撃作業の速度が上がっても、この順序は変わりません。</p>
<p>未知の脆弱性をすべて事前に列挙することはできないため、個々のCVEだけを見るのではなく、資産と攻撃シナリオを基準に、侵入後の権限昇格、横展開、情報取得まで含めて考えます。</p>
<p>必要な対策を実施しても、リスクを完全にゼロにはできません。</p>
<p>最後に必要なのは、</p>
<blockquote>
<p><strong>何を実施し、何を実施しないのか。</strong><br />
<strong>その結果、何のリスクが残るのか。</strong><br />
<strong>その前提で、どの方式・運用で進めると決まったのか。</strong></p>
</blockquote>
<p>を説明できる状態にすることです。</p>
<p>理想的には残存リスクの受容主体まで明文化します。実務上それが難しい場合でも、制約、代替策、残るリスク、判断経緯を成果物や議事録などで追跡できる状態にしておくことが重要です。</p>
<p>そして、そこで判断を終わらせません。</p>
<p>要件定義で決めた内容を設計、見積、次工程のRFP、運用へ引き継ぎ、システム構成や脅威、上位基準、代替コントロールの前提が変われば、リスクを再評価します。</p>
<p>公的なガイドラインや組織標準、過去のアセスメントシートは、検討漏れを防ぐための重要な材料です。ただし、それ自体が対象システムの答えになるわけではありません。</p>
<p>セキュリティ要件定義で本当に必要なのは、</p>
<blockquote>
<p><strong>何を守るのかを明確にし、脅威と弱点からリスクを評価し、そのシステムに必要な対策と残るリスクの扱いを判断すること</strong></p>
</blockquote>
<p>です。</p>
<p>この判断過程まで説明できて初めて、セキュリティ要件が<strong>設計根拠を持った要求</strong>になります。</p>
<hr />
<h2 id="実務で使うためのアセスメントシートと差異評価">実務で使うためのアセスメントシートと差異評価</h2>
<p>ここまでで、セキュリティ対策をリスクから導き、実施しない対策と残存リスクまで判断する考え方を説明しました。</p>
<p>実際の案件でこの方法を回すには、判断結果を残すためのアセスメントシートと、上位基準との差異・代替コントロール・残存リスクを記録する型が必要になります。</p>
<p>今後公開予定の実務編では、<strong>リスクアセスメントシートと差異評価シートの具体的な記入方法、差異ステータスの判定、判断理由・残存リスクの書き方、顧客説明資料への落とし込み方</strong>を、実務で使える形にまとめるます。</p>
<h2 id="参考資料">参考資料</h2>
<ul>
<li>Anthropic, “Disrupting the first reported AI-orchestrated cyber espionage campaign”<br />
<a rel="noopener" href="https://www.anthropic.com/news/disrupting-AI-espionage" title="Disrupting the first reported AI-orchestrated cyber espionage campaign" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img src="https://www.anthropic.com/api/opengraph-illustration?name=Object%20Lock&#038;backgroundColor=fig" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="160" height="90" loading="lazy" decoding="async" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">Disrupting the first reported AI-orchestrated cyber espionage campaign</div><div class="blogcard-snippet external-blogcard-snippet">A report describing an a highly sophisticated AI-led cyberattack</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img src="https://www.google.com/s2/favicons?domain=https://www.anthropic.com/news/disrupting-AI-espionage" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" loading="lazy" decoding="async" /></div><div class="blogcard-domain external-blogcard-domain">www.anthropic.com</div></div></div></div></a></li>
<li>Ars Technica, “Researchers question Anthropic claim that AI-assisted attack was 90% autonomous”<br />
<a rel="noopener" href="https://arstechnica.com/security/2025/11/researchers-question-anthropic-claim-that-ai-assisted-attack-was-90-autonomous/" title="Researchers question Anthropic claim that AI-assisted attack was 90% autonomous" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img src="https://sys-univ.com/wp-content/uploads/cocoon-resources/blog-card-cache/ac4c29262ba3b0e9c9c3e362bd432eea.jpg" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="160" height="90" loading="lazy" decoding="async" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">Researchers question Anthropic claim that AI-assisted attack was 90% autonomous</div><div class="blogcard-snippet external-blogcard-snippet">The results of AI-assisted hacking aren&#039;t as impressive as many might have us believe.</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img src="https://www.google.com/s2/favicons?domain=https://arstechnica.com/security/2025/11/researchers-question-anthropic-claim-that-ai-assisted-attack-was-90-autonomous/" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" loading="lazy" decoding="async" /></div><div class="blogcard-domain external-blogcard-domain">arstechnica.com</div></div></div></div></a></li>
<li>Anthropic, “Evaluating and mitigating the growing risk of LLM-discovered 0-days”<br />
<a rel="noopener" href="https://www.anthropic.com/research/zero-days" title="LLM-discovered 0 days" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img src="https://sys-univ.com/wp-content/uploads/cocoon-resources/blog-card-cache/8229b1ae7d5d156bf4e2b787d0ccc3a0.jpg" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="160" height="90" loading="lazy" decoding="async" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">LLM-discovered 0 days</div><div class="blogcard-snippet external-blogcard-snippet">AI models can now find high-severity vulnerabilities at scale. This is a moment to empower defenders. We&#039;re now using Claude to find and help fix vulnerabilitieReadMore...</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img src="https://www.google.com/s2/favicons?domain=https://www.anthropic.com/research/zero-days" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" loading="lazy" decoding="async" /></div><div class="blogcard-domain external-blogcard-domain">www.anthropic.com</div></div></div></div></a></li>
<li>NIST, “The NIST Cybersecurity Framework (CSF) 2.0”<br />
<a rel="noopener" href="https://www.nist.gov/publications/nist-cybersecurity-framework-csf-20" title="The NIST Cybersecurity Framework (CSF) 2.0" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img src="https://sys-univ.com/wp-content/uploads/cocoon-resources/blog-card-cache/c917091b3739f63eb6354d4ba48e9639.png" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="160" height="90" loading="lazy" decoding="async" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">The NIST Cybersecurity Framework (CSF) 2.0</div><div class="blogcard-snippet external-blogcard-snippet">The NIST Cybersecurity Framework (CSF) 2.0 provides guidance to industry, government agencies, and other organizations to manage cybersecurity risks.</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img src="https://www.google.com/s2/favicons?domain=https://www.nist.gov/publications/nist-cybersecurity-framework-csf-20" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" loading="lazy" decoding="async" /></div><div class="blogcard-domain external-blogcard-domain">www.nist.gov</div></div></div></div></a></li>
<li>CISA, “Known Exploited Vulnerabilities Catalog”<br />
<a rel="noopener" href="https://www.cisa.gov/known-exploited-vulnerabilities-catalog" title="https://www.cisa.gov/known-exploited-vulnerabilities-catalog" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img src="https://s.wordpress.com/mshots/v1/https%3A%2F%2Fwww.cisa.gov%2Fknown-exploited-vulnerabilities-catalog?w=160&#038;h=90" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="160" height="90" loading="lazy" decoding="async" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">https://www.cisa.gov/known-exploited-vulnerabilities-catalog</div><div class="blogcard-snippet external-blogcard-snippet"></div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img src="https://www.google.com/s2/favicons?domain=https://www.cisa.gov/known-exploited-vulnerabilities-catalog" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" loading="lazy" decoding="async" /></div><div class="blogcard-domain external-blogcard-domain">www.cisa.gov</div></div></div></div></a></li>
<li>個人情報保護委員会, 「令和7年度（2025年度）個人情報保護委員会年次報告」<br />
<a rel="noopener" href="https://www.ppc.go.jp/news/press/2026/260707/" title="&#20491;&#20154;&#24773;&#22577;&#20445;&#35703;&#22996;&#21729;&#20250;&#12288;&#20196;&#21644;&#65303;&#24180;&#24230;&#24180;&#27425;&#22577;&#21578;&#12398;&#20844;&#34920;&#12395;&#12388;&#12356;&#12390;&#65288;&#20196;&#21644;&#65304;&#24180;&#65303;&#26376;&#65303;&#26085;&#65289; &#65372;&#20491;&#20154;&#24773;&#22577;&#20445;&#35703;&#22996;&#21729;&#20250;" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img src="https://s.wordpress.com/mshots/v1/https%3A%2F%2Fwww.ppc.go.jp%2Fnews%2Fpress%2F2026%2F260707%2F?w=160&#038;h=90" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="160" height="90" loading="lazy" decoding="async" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">&#20491;&#20154;&#24773;&#22577;&#20445;&#35703;&#22996;&#21729;&#20250;&#12288;&#20196;&#21644;&#65303;&#24180;&#24230;&#24180;&#27425;&#22577;&#21578;&#12398;&#20844;&#34920;&#12395;&#12388;&#12356;&#12390;&#65288;&#20196;&#21644;&#65304;&#24180;&#65303;&#26376;&#65303;&#26085;&#65289; &#65372;&#20491;&#20154;&#24773;&#22577;&#20445;&#35703;&#22996;&#21729;&#20250;</div><div class="blogcard-snippet external-blogcard-snippet">個人情報保護委員会のホームページです。令和７年度個人情報保護委員会年次報告の概要等の公表について掲載しています。</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img src="https://www.google.com/s2/favicons?domain=https://www.ppc.go.jp/news/press/2026/260707/" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" loading="lazy" decoding="async" /></div><div class="blogcard-domain external-blogcard-domain">www.ppc.go.jp</div></div></div></div></a></li>
<li>AWS, “Shared responsibility &#8211; Security Pillar”<br />
<a rel="noopener" href="https://docs.aws.amazon.com/ja_jp/wellarchitected/latest/security-pillar/shared-responsibility.html" title="&#36012;&#20219;&#20849;&#26377; - &#12475;&#12461;&#12517;&#12522;&#12486;&#12451;&#12398;&#26609;" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img src="https://s.wordpress.com/mshots/v1/https%3A%2F%2Fdocs.aws.amazon.com%2Fja_jp%2Fwellarchitected%2Flatest%2Fsecurity-pillar%2Fshared-responsibility.html?w=160&#038;h=90" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="160" height="90" loading="lazy" decoding="async" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">&#36012;&#20219;&#20849;&#26377; - &#12475;&#12461;&#12517;&#12522;&#12486;&#12451;&#12398;&#26609;</div><div class="blogcard-snippet external-blogcard-snippet">セキュリティとコンプライアンスに関して、AWS とお客様の間で責任を共有します。この共有モデルにより、ホストオペレーティングシステムや仮想化レイヤーからサービスが運用されている施設の物理的なセキュリティに至るまで、さまざまなコンポーネントを AWS が運用、管理、制御するため、お客様の運用の負担が軽減されます。お客様はReadMore...</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img src="https://www.google.com/s2/favicons?domain=https://docs.aws.amazon.com/ja_jp/wellarchitected/latest/security-pillar/shared-responsibility.html" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" loading="lazy" decoding="async" /></div><div class="blogcard-domain external-blogcard-domain">docs.aws.amazon.com</div></div></div></div></a></li>
<li>IPA, “システム構築の上流工程強化（非機能要求グレード）紹介ページ”<br />
<a rel="noopener" href="https://www.ipa.go.jp/archive/digital/iot-en-ci/jyouryuu/hikinou/ent03-b.html" title="システム構築の上流工程強化（非機能要求グレード）紹介ページ | アーカイブ | IPA 独立行政法人 情報処理推進機構" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img src="https://sys-univ.com/wp-content/uploads/cocoon-resources/blog-card-cache/106c80e94e5936d7a98ee8247f6cfc94.jpg" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="160" height="90" loading="lazy" decoding="async" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">システム構築の上流工程強化（非機能要求グレード）紹介ページ | アーカイブ | IPA 独立行政法人 情報処理推進機構</div><div class="blogcard-snippet external-blogcard-snippet">情報処理推進機構（IPA）の「システム構築の上流工程強化（非機能要求グレード）紹介ページ」に関する情報です。
</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img src="https://www.google.com/s2/favicons?domain=https://www.ipa.go.jp/archive/digital/iot-en-ci/jyouryuu/hikinou/ent03-b.html" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" loading="lazy" decoding="async" /></div><div class="blogcard-domain external-blogcard-domain">www.ipa.go.jp</div></div></div></div></a></li>
</ul>
]]></content:encoded>
					
					<wfw:commentRss>https://sys-univ.com/dev/security/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>運用設計とは？運用設計書の目次サンプルと項目一覧｜システム基盤エンジニア視点</title>
		<link>https://sys-univ.com/dev/opedesign/</link>
					<comments>https://sys-univ.com/dev/opedesign/#respond</comments>
		
		<dc:creator><![CDATA[ナギ]]></dc:creator>
		<pubDate>Fri, 14 Aug 2026 03:39:42 +0000</pubDate>
				<category><![CDATA[システム開発]]></category>
		<guid isPermaLink="false">https://sys-univ.com/?p=1040</guid>

					<description><![CDATA[はじめに 大手SIerで20年以上、システム基盤エンジニアとしてプロジェクトに参画してきました。その中で繰り返し遭遇してきたのが、運用設計の漏れや、処理方式設計との不整合を原因とするトラブルです。 運用設計とは、本番稼働 [&#8230;]]]></description>
										<content:encoded><![CDATA[<p id="e3f9d207-0676-4910-aba6-3b5a997ee710" data-pm-slice="0 0 []"><strong>はじめに</strong></p>
<p id="aa2339a9-1bae-4ab5-9f99-e400c8f0d90c">大手SIerで20年以上、システム基盤エンジニアとしてプロジェクトに参画してきました。その中で繰り返し遭遇してきたのが、運用設計の漏れや、処理方式設計との不整合を原因とするトラブルです。</p>
<p id="458ecb94-ff9e-4686-b73d-e1907de8eaef">運用設計とは、本番稼働後に必要となる作業、判断基準、体制を整理し、それをシステムの処理方式や構成と結びつける設計です。</p>
<ul id="fc41343c-8f38-48eb-8d3a-e601774b5294">
<li>
<p id="27714832-103c-4bcd-8c28-b5f74a3a8ded">監視対象は定義されているのに、何を異常とみなすのか決まっていない。</p>
</li>
<li>
<p id="1da93718-2a31-442b-b2b4-efcae508a4e4">ログは出力されているのに、保持期間や削除方法が決まっていない。</p>
</li>
<li>
<p id="656b1a12-2b99-4a86-8964-c12c0dda6064">バックアップは取得しているのに、必要な時間内にリストアできるか確認されていない。</p>
</li>
<li>
<p id="6701f869-b5a0-431d-9769-27dd3c03c396">ジョブネットは作られているのに、実行するスクリプトが存在しない。</p>
</li>
</ul>
<p id="6069f190-484b-4b44-b78f-eb7cb6f77e1d">こうした設計不備は、重大な障害の見逃しや復旧の遅れにつながります。システムを利用するお客様だけでなく、その先にいる利用者や社会へのサービス提供を損なう事態にもなりかねません。</p>
<p id="6f382857-21a0-482e-9b01-73fb6c1d5316">それほど重要な設計領域であるにもかかわらず、運用設計は多くのプロジェクトで軽視されてきました。</p>
<p id="bf2bcc0d-f477-4cb1-b445-49985eb6cba3">なぜでしょうか。</p>
<p id="efd12ae4-c022-49b3-b433-81c0c428470a">100のシステムがあれば、運用の形も100通りあります。運用・保守に関する確認観点を整理したフレームワークや標準はありますが、それをそのまま適用すれば運用設計が完成するわけではありません。</p>
<p id="95344c22-0432-46cf-90d5-d32edca3e9e4">サービス時間、業務日付、外部連携、夜間バッチ、監視、バックアップ、障害時の判断、運用体制は、システムごとに具体化する必要があります。</p>
<p id="b1015e32-1efe-4d0d-a878-97930889c1a8">非機能要件だけでなく、業務運用や組織の役割分担にもまたがるため、定型の設計書に集約しにくく、見える化しづらい設計領域だといえます。</p>
<p id="4529424a-a1a1-4d72-9dcc-988f25c845bb">もう一つ、情報の偏りという問題もあります。</p>
<p id="ebb4480a-e5c6-43d5-8e74-29546c3cc42d">世の中の技術情報を見渡すと、logrotateの設定方法やクラウドサービスの使い方といった処理方式寄りの解説か、ITILに基づく管理プロセスといった組織・サービス管理寄りの解説か、そのどちらかに偏っています。現場のSEが本当に苦労するのは、その中間にある領域です。</p>
<p id="42acb837-8490-472f-87a6-66f21e9672b6">運用要件をどの仕組みで実現し、どの設定値、スクリプト、ジョブ、監視条件に落とし込むのか。ここを扱った情報は、驚くほど少ないのが実情です。</p>
<p id="33a4078e-8ee6-4fc9-92de-7db81ce047cb">この記事では、システム基盤から見た運用設計を中心に、共通化しやすい検討項目を<strong>「運用設計書の目次サンプル」</strong>として示します。</p>
<p id="9e95b363-5d24-4146-b841-14c8fd371324">あわせて、運用設計が処理方式設計と切り離せない理由と、運用設計が要件定義から始まり、基本設計の段階で骨格が決まることを、現場の経験から整理します。</p>
<h2 id="d98b9154-87e5-497b-b34f-691bc12ec1af">実際にあった運用設計漏れによるトラブル</h2>
<p id="ff2cab21-7332-41f9-9622-c21ab28db787">まず、運用設計漏れによって発生したトラブルの例を見てみます。</p>
<p id="adfe03f6-c30c-46ed-984e-7e1c9d53cb42">あるサーバでは、syslogファイルをローテーションしないまま、ログが出力され続けていました。</p>
<p id="2bea0022-8fec-42a4-9901-60ff73e03ef8">このまま運用を続ければ、syslogファイルはパーティションの空き容量を消費し続けます。それがルート領域であれば、OSやミドルウェアが正常に動作できなくなり、ログインやプロセス起動にも支障が出る可能性があります。</p>
<p id="50c38d56-e220-4205-8fc2-55c8bb645bf7">ログ管理設計の漏れがどのように障害へつながるのかを、図にすると次のとおりです。</p>
<figure id="19315dff-6cba-4fc9-bc36-90ec6d42080a"><img loading="lazy" decoding="async" class="aligncenter size-medium wp-image-3088" src="https://sys-univ.com/wp-content/uploads/2026/07/335db251eca127e36a4630a26bd6ee3b-500x333.png" alt="" width="500" height="333" srcset="https://sys-univ.com/wp-content/uploads/2026/07/335db251eca127e36a4630a26bd6ee3b-500x333.png 500w, https://sys-univ.com/wp-content/uploads/2026/07/335db251eca127e36a4630a26bd6ee3b-800x533.png 800w, https://sys-univ.com/wp-content/uploads/2026/07/335db251eca127e36a4630a26bd6ee3b-300x200.png 300w, https://sys-univ.com/wp-content/uploads/2026/07/335db251eca127e36a4630a26bd6ee3b-768x512.png 768w, https://sys-univ.com/wp-content/uploads/2026/07/335db251eca127e36a4630a26bd6ee3b.png 1536w" sizes="auto, (max-width: 500px) 100vw, 500px" /><figcaption></figcaption></figure>
<p id="52b26d50-dc71-4801-b27f-37e364b26a0e">ディスクの空き容量を監視していれば、容量が枯渇する前に検知できたかもしれません。</p>
<p id="a3d782fe-dd34-458d-9567-7763d8bcd5a9">ただ、これは監視だけの問題ではありません。空き容量の監視は、容量逼迫という状態を検知する仕組みです。</p>
<p id="0c700396-5656-4445-a49e-e957f6fa4910">根本原因は、ログの増加を前提に、保持、退避、圧縮、削除を設計していなかったことにあります。</p>
<p id="b7fd5b16-549d-47b8-a8f6-ae40e437c8fa">ログ管理を運用設計項目として定義し、</p>
<ul id="8336a99c-17ee-439f-92ac-6a637caf10d8">
<li>
<p id="f782642a-16af-4f16-b3de-b87cd9d55a1e">どのログを管理対象とするのか、</p>
</li>
<li>
<p id="80300a08-1250-4d81-a272-520e87105375">何の目的で保存するのか、</p>
</li>
<li>
<p id="b325c1ac-a620-48c1-948d-b9ef42515ad2">どの期間保持するのか、</p>
</li>
<li>
<p id="42a1ce9a-c360-4a45-8e7e-04cbbccba730">即時に参照できる必要があるのか、</p>
</li>
<li>
<p id="54d0c770-e03d-4e03-9bf6-3f0a28e02792">いつ外部領域へ退避するのか、</p>
</li>
<li>
<p id="77f9448f-4114-4186-a7b9-c68328d1f518">いつ圧縮・削除するのか、</p>
</li>
<li>
<p id="7782d857-ccf1-45b9-a5b4-cb582a115fa4">誰が参照できるのか</p>
</li>
</ul>
<p id="07025643-f798-496f-9c51-ea27a15a2ce7">これらを決めていれば避けられたトラブルです。</p>
<p id="158cb9cd-c7f8-40b9-b67e-8569cd5d07cf">その運用設計を入力として、処理方式側では、logrotateを使うのかジョブで退避するのか、どのパーティションへ保存するのか、どれだけの容量が必要なのかを具体化します。</p>
<p id="964d4a3e-f7be-4de2-940e-1a9910f9397d">一見すると「検討していて当然」と思われる内容です。それでも、ログ管理を運用設計の対象として認識していないプロジェクトでは、実際に漏れます。</p>
<h2 id="61dca466-858c-42f8-9c28-1c8f2e07e362">運用設計はいつやるのか｜要件定義から始まり基本設計で骨格が決まる</h2>
<p id="3929b092-4527-4495-9b94-ea52282edf5f">運用設計のプロセスを理解するには、システム開発全体の中での位置づけを押さえる必要があります。</p>
<p id="b7f670c2-7675-46d2-afbf-c2744e1ef6e4">ウォーターフォール型の開発プロセスは、要件定義、設計、製造、試験、移行、保守・運用という流れで説明されることが多いと思います。</p>
<p id="a80f6c13-55cd-4b0d-a8cd-cfbbe80d4156">このモデルでは工程の最後に「保守・運用」が置かれているため、運用に関する検討もシステムが完成してから行えばよい、という誤解が生じます。</p>
<p id="47117c33-a32a-4d82-a708-57dc6a6f579f">最後に置かれているのは、完成したシステムを実際に維持管理する運用工程です。そのシステムをどのように運用するのかを決める運用設計は、設計工程の中にあります。</p>
<p id="71806233-ecea-4deb-b6aa-c01ebf37614e">運用設計を設計工程として扱わないプロジェクトでは、サービス開始直前になって検討不足が表面化します。</p>
<ul id="a04d94e9-ddf3-4703-8e25-dbba99c8510b">
<li>
<p id="fc8fc8f6-daac-454c-b397-105246760fb9">ログがローテーションされない。</p>
</li>
<li>
<p id="ed3054c9-f9cc-44f4-8d16-e2316d4d433c">バックアップはあるのに戻せない。</p>
</li>
<li>
<p id="f8e28fef-a6c5-4272-aab5-ef60d9fc7bc8">ジョブは定義されているのに実行するスクリプトがない。</p>
</li>
<li>
<p id="7f2f07ec-8da9-4820-b52a-c5d1764a4982">監視アラートは出るのに一次対応者が決まっていない。</p>
</li>
<li>
<p id="2496075a-2509-4b7a-a609-9aaa3d579ba1">夜間処理は終了したのに、業務を開始してよいか判断できない。</p>
</li>
</ul>
<p id="820e02c1-4dce-4459-b987-a48498160349">私はそうした現場を数多く見てきました。</p>
<p id="a149c48b-6cd3-4353-9c70-53272bd1dbd2">これらは、運用開始後に考える問題ではありません。工程初期から、処理方式とセットで具体化すべき設計事項です。</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-medium wp-image-3087" src="https://sys-univ.com/wp-content/uploads/2026/07/6d3f1339281885cc3addec93de4fb974-500x281.png" alt="" width="500" height="281" srcset="https://sys-univ.com/wp-content/uploads/2026/07/6d3f1339281885cc3addec93de4fb974-500x281.png 500w, https://sys-univ.com/wp-content/uploads/2026/07/6d3f1339281885cc3addec93de4fb974-800x450.png 800w, https://sys-univ.com/wp-content/uploads/2026/07/6d3f1339281885cc3addec93de4fb974-300x169.png 300w, https://sys-univ.com/wp-content/uploads/2026/07/6d3f1339281885cc3addec93de4fb974-768x432.png 768w, https://sys-univ.com/wp-content/uploads/2026/07/6d3f1339281885cc3addec93de4fb974-1536x864.png 1536w, https://sys-univ.com/wp-content/uploads/2026/07/6d3f1339281885cc3addec93de4fb974-120x68.png 120w, https://sys-univ.com/wp-content/uploads/2026/07/6d3f1339281885cc3addec93de4fb974-160x90.png 160w, https://sys-univ.com/wp-content/uploads/2026/07/6d3f1339281885cc3addec93de4fb974-320x180.png 320w, https://sys-univ.com/wp-content/uploads/2026/07/6d3f1339281885cc3addec93de4fb974-376x212.png 376w, https://sys-univ.com/wp-content/uploads/2026/07/6d3f1339281885cc3addec93de4fb974.png 1672w" sizes="auto, (max-width: 500px) 100vw, 500px" /></p>
<h2 id="63d5bba2-522a-4b81-a959-d89d61d91085">処理方式設計と運用設計は双方向でつながっている</h2>
<p id="dee88b64-64f7-425d-8ea4-5d78d931afa6">ここからが、この記事で最も伝えたい内容です。</p>
<p id="df036e8f-8a9b-4afc-be76-cbc5d6c71ad3">運用設計で最も重要なのは、処理方式設計との接続です。<br />
運用設計は単独では成立せず、処理方式設計と対になって、初めて本番で運用できる設計になります。</p>
<p id="451258f1-c4e1-44b1-aff5-ea4f100ddca2">処理方式設計とは、要件をどのような仕組みで実現するかを具体化する設計です。運用設計とは、その仕組みを実際の運用の中でどのように扱うかを具体化する設計です。</p>
<p id="ffb6b292-3ef5-4c20-9ad5-f8b39b519cf8">この2つは別の設計領域ですが、完全に分けて考えることはできません。</p>
<p id="4d5278e5-4217-4f10-8360-4a58149603af">ログ管理を例に考えます。</p>
<p id="b3e593d8-5024-4514-8ebb-576044ddb0ea">運用設計側では、管理対象とするログ、利用目的、保持期間、参照要件、退避・削除方針、アクセス権限を決めます。</p>
<p id="803cbf2c-12b3-453c-98a0-6d2a9467d3e3">「syslogを1か月保持する」と運用設計で決めたとします。この決定だけでは、1か月保持は実現できません。</p>
<ul id="0262699a-e710-4600-b078-46acad01f5c7">
<li>
<p id="05003cde-8b8b-479f-8911-ae054d771fe9">処理方式側で、</p>
</li>
<li>
<p id="956baff9-cafe-4676-b049-ec106fa5157f">日次と週次のどちらでローテーションするのか、</p>
</li>
<li>
<p id="235620a8-9fc5-4b53-9d32-c4fdf257e852">Linuxのlogrotateで実現するのか</p>
</li>
<li>
<p id="0d21d906-5784-4a9e-a04b-2c5c58e7ad1a">ジョブ管理製品で退避するのか、</p>
</li>
<li>
<p id="2742d562-8f0b-437e-9cb8-61e51ad8eb41">退避先ディレクトリをどこにするのか、</p>
</li>
<li>
<p id="1c64fd1f-f85e-4746-aa99-285c0212583f">圧縮するのか、</p>
</li>
<li>
<p id="a1bd212a-99db-406a-9981-b9499310691d">外部のログ管理基盤へ転送するのか、</p>
</li>
<li>
<p id="a3fe4af9-783b-4d5b-89a9-352ce46e4261">必要なディスク容量はいくらか、</p>
</li>
<li>
<p id="16a7cb6b-6608-44f9-9f4d-c71d75dd1582">容量逼迫をどの条件で検知するのか</p>
</li>
</ul>
<p id="ca5cd914-d29b-47d3-a67d-839535f9ee9a">これらを設計する必要があります。運用設計の決定が、Linuxや監視製品、ログ管理製品の処理方式設計への入力になるわけです。</p>
<p id="a5c90fa5-31f5-4c29-af37-672774ce7b53">逆方向の流れもあります。Linux設計側でログの退避先を決めたなら、その情報は運用設計側へ伝えなければなりません。</p>
<p id="8050fd1a-6363-45ca-96c8-39a394142d9b">ログは、要件に応じてバックアップや外部保管の対象になります。退避先が運用設計側へ伝わっていなければ、バックアップ対象やログ収集対象から漏れる可能性があります。</p>
<p id="b240e7b7-7722-4da9-a8ca-7d05ae606e58">障害調査に必要なログが残っていない、という事態はこうして生まれます。</p>
<p id="4285aa4d-ecbe-4246-8a3f-b1ff3bd81f34">運用設計側が「何を、どれくらい、何の目的で管理したいのか」を決める。処理方式設計側が「それをどの仕組みで実現するのか」を決める。運用要件が処理方式に影響し、処理方式の制約が運用設計に戻ってくる。</p>
<p id="c296273e-0b39-4b6c-8ddf-504e53685e6c">この関係は一方向の受け渡しではなく、レビューやウォークスルーを通じて、相互に入力とフィードバックを繰り返しながら固めていくものです。</p>
<p id="6fb33042-44be-4f6b-817d-9faa349444e4">どちらを先に検討するかは状況によって異なりますが、運用設計者と処理方式設計者の間で認識齟齬を残さないことが重要です。</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-medium wp-image-3086" src="https://sys-univ.com/wp-content/uploads/2026/07/d96bfb6de6e0fb23335ea1483379f6d0-500x375.png" alt="" width="500" height="375" srcset="https://sys-univ.com/wp-content/uploads/2026/07/d96bfb6de6e0fb23335ea1483379f6d0-500x375.png 500w, https://sys-univ.com/wp-content/uploads/2026/07/d96bfb6de6e0fb23335ea1483379f6d0-800x600.png 800w, https://sys-univ.com/wp-content/uploads/2026/07/d96bfb6de6e0fb23335ea1483379f6d0-300x225.png 300w, https://sys-univ.com/wp-content/uploads/2026/07/d96bfb6de6e0fb23335ea1483379f6d0-768x576.png 768w, https://sys-univ.com/wp-content/uploads/2026/07/d96bfb6de6e0fb23335ea1483379f6d0.png 1448w" sizes="auto, (max-width: 500px) 100vw, 500px" /></p>
<p id="b3058153-6f2a-4e9e-82b2-3beef6d9694b">現場では、構築チームと運用準備チームが分かれ、ドキュメントも処理方式設計書と運用設計書に分断されることがあります。</p>
<p id="ddeed669-a848-4a36-84d9-2be3d3cf86fa">その結果、ログ保持期間を満たすためにどの設定と容量設計が必要なのか、という両者の紐付けが、設計者の頭の中にしか存在しない状態になりがちです。</p>
<p id="8e74ff27-685f-4723-ad2b-164850fadeae">この紐付けを設計書、課題管理、レビューの仕組みで見える化できるかどうかが、運用設計の品質を左右します。</p>
<h2 id="7bf23986-114b-4526-baf4-7a36e3260d36">運用スクリプトは運用設計で横断的に洗い出す</h2>
<p id="fd8576a9-fada-4a8d-be44-0769eb03c11b">処理方式設計と運用設計の双方向連携を示す例として、運用スクリプトを考えます。</p>
<p id="03e14e6e-e367-49d7-9f51-b5f03615cd76">バックアップ要件をジョブネットで実現するとします。</p>
<ul id="a1362b90-31f4-4aa2-9473-8a5f8ceeefd5">
<li>
<p id="4449dc37-239a-4cd6-8a76-4157640ae9d3">ジョブネットには、</p>
</li>
<li>
<p id="bf69330a-d7a8-4aa8-ab82-f5f6a94e12a2">バックアップ取得、</p>
</li>
<li>
<p id="1e6874ef-bee0-4e88-894d-bef3a8bce981">ログ退避、</p>
</li>
<li>
<p id="fa09f135-b9e4-4db7-bfb1-fce3f3d9b8a6">世代削除、</p>
</li>
<li>
<p id="b35d1567-971f-4cf8-8b97-533f10cca4b8">整合性確認、</p>
</li>
<li>
<p id="9497e1b8-612e-4098-9401-df730bd2de1e">後処理</p>
</li>
</ul>
<p id="f6a253a4-6dad-4be9-b9b4-8de1cea4a6a8">といった個別ジョブが登録されます。それぞれのジョブでは、実行対象となるスクリプト、コマンド、プログラム、製品機能が必要です。</p>
<p id="25c57b13-abf1-4311-82e7-95136ab0ecd6">ここで問題になるのが、必要な実行部品を誰が洗い出すのかという点です。</p>
<p id="af9d77b7-4df1-4c02-81ee-1f2d5af7eabf">バックアップ方式だけを設計していると、バックアップ製品の設定は完了していても、ジョブから呼び出すスクリプトや終了判定処理が漏れることがあります。</p>
<p id="05544696-0378-4a4f-a503-a806deedaa06">ジョブネットだけを設計していると、ジョブの箱は並んでいるのに、中で何を実行するのか決まっていないことがあります。</p>
<p id="71363cdb-7d26-4be8-b724-7c6d868d22f7">運用で必要になるスクリプトや実行処理は、運用設計の中で横断的に洗い出す必要があります。</p>
<p id="94f4b498-4ff0-4e1b-91fc-cf79c9b52c6a">運用設計で横断的に洗い出すことと、運用設計担当がすべてのスクリプトを作成することは別です。</p>
<p id="310946b2-4edb-46c5-a772-abd5551b01f1">バックアップスクリプトはバックアップ方式の担当、ログ退避スクリプトはログ管理方式の担当、ジョブ制御スクリプトはジョブ設計の担当、起動停止スクリプトはOS・ミドルウェアの担当というように、実際の設計、製造、単体試験は、その仕組みを設計した担当が行うのが基本です。</p>
<p id="3ce37a64-3810-429f-adc3-5db6de913757">運用設計側で行うのは横断管理です。</p>
<p id="5b35a5fb-7895-4fde-b12f-237c3f949623">必要なスクリプトを一覧化し、</p>
<ul id="9abdf658-e15c-485c-ae60-b761b1de4626">
<li>
<p id="72757a06-8b2a-4f1a-a5f6-7b7935ee553d">用途、</p>
</li>
<li>
<p id="389606b1-4da7-4c05-a1b1-eecfc2f24cbc">呼び出し元となるジョブ・手順・他スクリプト、</p>
</li>
<li>
<p id="1bf9f970-8e2b-4cda-a6a2-7a221d641ec7">関連する運用作業、</p>
</li>
<li>
<p id="97970160-941d-44c9-816b-8f0d6b67dc79">作成担当、</p>
</li>
<li>
<p id="eb5386fb-04fb-4710-97a0-160c604802b6">完成時期、</p>
</li>
<li>
<p id="f79c7c83-8e6b-4e12-b0d7-f3e992f0f4d8">後続テストでの確認方法</p>
</li>
</ul>
<p id="e32effd0-ac57-4ec5-8651-84a0c1e91fa2">それらを明確にします。そして、スクリプトの設計、製造、単体試験、ジョブ登録をWBSへ反映し、結合テスト、システムテスト、運用テストに間に合わせます。</p>
<p id="1053c8ab-3bcd-428b-bd8a-60204be9b298">この横断管理がないプロジェクトでは、個別の方式設計は完了しているのに、実際の運用に必要なスクリプトだけが作られていない、という事態が起こります。</p>
<p id="349c8941-b196-4325-8468-df7c785ff4d5">サービス開始直前になって発覚するスクリプト不足やジョブネットの実行エラーの多くは、この横断管理が不足した結果です。</p>
<p id="8dae74ea-9bc1-4e5d-84d0-680bd2c1cce5">運用設計で必要な実行部品を早期に洗い出し、処理方式の担当へ返すことが重要です。</p>
<h2 id="c73ec5dc-4c03-47b4-bfe7-6c20f9e24290">運用設計の全体像</h2>
<p id="2a48dea4-2cdf-4e3e-ab2d-c52d5574833c">システム運用とは、利用者へ提供しているサービスを安定して継続するために、システムを維持管理していく活動です。その運用を成立させるための設計が、運用設計です。全体像は、次の3つに分けて考えると理解しやすくなります。</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-medium wp-image-3085" src="https://sys-univ.com/wp-content/uploads/2026/07/9039a3ef8c27c16fb5cc57a64f1ee213-500x354.png" alt="" width="500" height="354" srcset="https://sys-univ.com/wp-content/uploads/2026/07/9039a3ef8c27c16fb5cc57a64f1ee213-500x354.png 500w, https://sys-univ.com/wp-content/uploads/2026/07/9039a3ef8c27c16fb5cc57a64f1ee213-800x566.png 800w, https://sys-univ.com/wp-content/uploads/2026/07/9039a3ef8c27c16fb5cc57a64f1ee213-300x212.png 300w, https://sys-univ.com/wp-content/uploads/2026/07/9039a3ef8c27c16fb5cc57a64f1ee213-768x543.png 768w, https://sys-univ.com/wp-content/uploads/2026/07/9039a3ef8c27c16fb5cc57a64f1ee213.png 1491w" sizes="auto, (max-width: 500px) 100vw, 500px" />業務運用設計は、業務機能や実際の業務作業と結びつく領域です。</p>
<p id="ba907b90-8735-4722-8512-4d5e99eb010e">システム基盤運用設計は、サーバ、ネットワーク、ストレージ、ジョブ、監視、ログ、バックアップといった、システムを支える仕組みと強く結びつきます。</p>
<p id="28bd916d-0916-4b9e-b5d2-edaa1b95dc3a">全体運用設計は、ITILのプラクティスと重なる領域が多く、体制や責任分界、障害・変更管理、サービスレベル管理を扱います。この記事では、主にシステム基盤運用設計を対象とします。</p>
<p id="e960c4f7-8c8c-4bec-9b5c-d1605eb7aaf9">なお、運用手順書一覧、運用スクリプト一覧、ジョブ一覧は、特定の区分だけに属するものではありません。3つの領域で必要になる成果物を横断的に洗い出し、作成担当と期限を管理する必要があります。</p>
<p id="311c0222-3458-419a-979c-46d4d8d769fa">関連する工程に、運用テストがあります。</p>
<p id="b2f5fed1-fe6a-429e-94d9-25a9c1219c12">運用テストでは、ここで設計した運用フロー、判断基準、承認フロー、復旧方法が実際に運用可能かを確認します。</p>
<p id="da69795d-48a9-4d3e-87fd-4f9e308e8ea9">運用設計の品質が低ければ、運用テスト自体が成立しません。</p>
<p id="d3a72fb3-c60c-45e9-b655-16f1ee7272b1">障害時の連絡先が分からない、問い合わせの受付方法が決まっていない、誰が業務開始可否を判断するのか分からない。こうした状態を、サービス開始後に残してはいけません。</p>
<p id="3134e7c0-30bb-4ee8-ab81-e83cf37a06dc">運用テストを含むテスト工程の考え方は、以下の記事で解説しています。</p>
<a href="https://sys-univ.com/dev/v-model-quality-assurance/" title="Vモデルは古くない｜設計とテストをつなぐ品質保証の考え方" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img width="160" height="90" src="https://sys-univ.com/wp-content/uploads/2022/12/9bc6ac64c2c9eff90c882e3211abf571-160x90.webp" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" loading="lazy" decoding="async" srcset="https://sys-univ.com/wp-content/uploads/2022/12/9bc6ac64c2c9eff90c882e3211abf571-160x90.webp 160w, https://sys-univ.com/wp-content/uploads/2022/12/9bc6ac64c2c9eff90c882e3211abf571-120x68.webp 120w, https://sys-univ.com/wp-content/uploads/2022/12/9bc6ac64c2c9eff90c882e3211abf571-320x180.webp 320w, https://sys-univ.com/wp-content/uploads/2022/12/9bc6ac64c2c9eff90c882e3211abf571-376x212.webp 376w" sizes="auto, (max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">Vモデルは古くない｜設計とテストをつなぐ品質保証の考え方</div><div class="blogcard-snippet internal-blogcard-snippet">Vモデルは古い開発手法の話ではなく、要件・設計で決めたことをテストで確認する品質保証の考え方です。バックアップ要件の具体例で各工程の対応関係を整理します。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img src="https://www.google.com/s2/favicons?domain=https://sys-univ.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" loading="lazy" decoding="async" /></div><div class="blogcard-domain internal-blogcard-domain">sys-univ.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2026.07.13</div></div></div></div></a>
<h2 id="995db2cf-c627-49c1-bfbf-0f64e00ddd9b">システム基盤運用設計書の目次サンプル</h2>
<p id="7af51830-2502-4c8a-969b-f58e35a41a10">運用設計について調べている人が最も知りたいのは、運用設計書で検討すべき「項目」ではないでしょうか。以下に、システム基盤運用設計書の目次サンプルを示します。</p>
<div style="overflow-x: auto; margin: 24px 0;">
<table style="width: 100%; border-collapse: collapse; font-size: 15px; line-height: 1.8; border: 1px solid #b8b8b8;">
<thead>
<tr style="background: #eef3f8;">
<th style="width: 5.7363%; padding: 8px; border: 1px solid #b8b8b8; text-align: center;">No.</th>
<th style="width: 14.8973%; padding: 8px; border: 1px solid #b8b8b8; text-align: center;">項目</th>
<th style="padding: 8px; border: 1px solid #b8b8b8; width: 37.1575%; text-align: center;">設計内容</th>
<th style="padding: 8px; border: 1px solid #b8b8b8; width: 42.2089%; text-align: center;">留意事項</th>
</tr>
</thead>
<tbody>
<tr>
<td style="padding: 8px; border: 1px solid #b8b8b8; text-align: center; vertical-align: top; width: 5.7363%;">1</td>
<td style="padding: 8px; border: 1px solid #b8b8b8; vertical-align: top; width: 14.8973%;">システム運転スケジュール</td>
<td style="padding: 8px; border: 1px solid #b8b8b8; vertical-align: top; width: 37.1575%;">オンライン時間帯、夜間バッチ、バックアップ、保守作業、開局前確認などの実行時間を確定する</td>
<td style="padding: 8px; border: 1px solid #b8b8b8; vertical-align: top; width: 42.2089%;">日次、週次、月次、年次、特定日運用を分けて検討する。処理の競合や保守可能時間も確認する</td>
</tr>
<tr>
<td style="padding: 8px; border: 1px solid #b8b8b8; text-align: center; vertical-align: top; width: 5.7363%;">2</td>
<td style="padding: 8px; border: 1px solid #b8b8b8; vertical-align: top; width: 14.8973%;">ジョブ管理</td>
<td style="padding: 8px; border: 1px solid #b8b8b8; vertical-align: top; width: 37.1575%;">運転スケジュールをジョブ・ジョブネットへ落とし込み、起動条件、前後関係、異常時分岐、再実行条件を確定する</td>
<td style="padding: 8px; border: 1px solid #b8b8b8; vertical-align: top; width: 42.2089%;">ジョブ異常終了だけでなく、開始遅延、終了遅延、長時間実行、後続処理への影響も考慮する</td>
</tr>
<tr>
<td style="padding: 8px; border: 1px solid #b8b8b8; text-align: center; vertical-align: top; width: 5.7363%;">3</td>
<td style="padding: 8px; border: 1px solid #b8b8b8; vertical-align: top; width: 14.8973%;">システム監視</td>
<td style="padding: 8px; border: 1px solid #b8b8b8; vertical-align: top; width: 37.1575%;">死活、リソース、プロセス、ログ、ジョブ遅延などの監視対象と、注意・警告・異常の判定条件、通知先、一次対応を確定する</td>
<td style="padding: 8px; border: 1px solid #b8b8b8; vertical-align: top; width: 42.2089%;">CPUやディスク使用率は、しきい値だけでなく継続時間、業務時間帯、繰り返し通知の抑止も検討する</td>
</tr>
<tr>
<td style="padding: 8px; border: 1px solid #b8b8b8; text-align: center; vertical-align: top; width: 5.7363%;">4</td>
<td style="padding: 8px; border: 1px solid #b8b8b8; vertical-align: top; width: 14.8973%;">ログ管理</td>
<td style="padding: 8px; border: 1px solid #b8b8b8; vertical-align: top; width: 37.1575%;">管理対象、出力先、ログレベル、退避、転送、圧縮、保持、削除、参照権限を確定する</td>
<td style="padding: 8px; border: 1px solid #b8b8b8; vertical-align: top; width: 42.2089%;">出力量を見積もり、保存先ごとの容量を算出する。障害調査・監査で必要な期間との整合も確認する</td>
</tr>
<tr>
<td style="padding: 8px; border: 1px solid #b8b8b8; text-align: center; vertical-align: top; width: 5.7363%;">5</td>
<td style="padding: 8px; border: 1px solid #b8b8b8; vertical-align: top; width: 14.8973%;">バックアップ・リストア管理</td>
<td style="padding: 8px; border: 1px solid #b8b8b8; vertical-align: top; width: 37.1575%;">バックアップ対象、取得時点、整合性、世代、保管先、リストア方式、復旧所要時間、復旧試験方針を確定する</td>
<td style="padding: 8px; border: 1px solid #b8b8b8; vertical-align: top; width: 42.2089%;">業務データだけでなく、設定ファイル、ログ、ジョブ定義などの復旧要否も確認する</td>
</tr>
<tr>
<td style="padding: 8px; border: 1px solid #b8b8b8; text-align: center; vertical-align: top; width: 5.7363%;">6</td>
<td style="padding: 8px; border: 1px solid #b8b8b8; vertical-align: top; width: 14.8973%;">起動停止</td>
<td style="padding: 8px; border: 1px solid #b8b8b8; vertical-align: top; width: 37.1575%;">システム全体の起動停止対象、順序、実行方法、正常性確認、異常時の扱いを確定する</td>
<td style="padding: 8px; border: 1px solid #b8b8b8; vertical-align: top; width: 42.2089%;">OS、ミドルウェア、DB、アプリケーション、監視機能の依存関係を考慮する</td>
</tr>
<tr>
<td style="padding: 8px; border: 1px solid #b8b8b8; text-align: center; vertical-align: top; width: 5.7363%;">7</td>
<td style="padding: 8px; border: 1px solid #b8b8b8; vertical-align: top; width: 14.8973%;">開局・閉塞</td>
<td style="padding: 8px; border: 1px solid #b8b8b8; vertical-align: top; width: 37.1575%;">業務開始・終了の条件、確認項目、実施者、判断者、異常時の対応を確定する</td>
<td style="padding: 8px; border: 1px solid #b8b8b8; vertical-align: top; width: 42.2089%;">ジョブ終了だけでなく、運用日付、外部連携、アプリケーション、ミドルウェア、監視再開を確認する</td>
</tr>
<tr>
<td style="padding: 8px; border: 1px solid #b8b8b8; text-align: center; vertical-align: top; width: 5.7363%;">8</td>
<td style="padding: 8px; border: 1px solid #b8b8b8; vertical-align: top; width: 14.8973%;">運用日付管理</td>
<td style="padding: 8px; border: 1px solid #b8b8b8; vertical-align: top; width: 37.1575%;">運用日付の切替時刻、業務日付・締め処理・夜間バッチとの関係、切替失敗時の扱いを確定する</td>
<td style="padding: 8px; border: 1px solid #b8b8b8; vertical-align: top; width: 42.2089%;">日付の不整合は、締め処理、帳票、外部連携、再実行に影響する</td>
</tr>
<tr>
<td style="padding: 8px; border: 1px solid #b8b8b8; text-align: center; vertical-align: top; width: 5.7363%;">9</td>
<td style="padding: 8px; border: 1px solid #b8b8b8; vertical-align: top; width: 14.8973%;">異常時運用・エスカレーション</td>
<td style="padding: 8px; border: 1px solid #b8b8b8; vertical-align: top; width: 37.1575%;">ジョブ異常、処理遅延、バックアップ未取得、監視アラート発生時の一次対応、通知先、判断者、顧客連絡、承認ルートを確定する</td>
<td style="padding: 8px; border: 1px solid #b8b8b8; vertical-align: top; width: 42.2089%;">継続、打ち切り、スキップ、業務開始可否などの判断基準は、業務側・システム管理者との合意が必要</td>
</tr>
<tr>
<td style="padding: 8px; border: 1px solid #b8b8b8; text-align: center; vertical-align: top; width: 5.7363%;">10</td>
<td style="padding: 8px; border: 1px solid #b8b8b8; vertical-align: top; width: 14.8973%;">ユーザ・アカウント管理</td>
<td style="padding: 8px; border: 1px solid #b8b8b8; vertical-align: top; width: 37.1575%;">ユーザ情報の受領、登録、変更、削除、棚卸、認証方式、休職・退職時の扱いを確定する</td>
<td style="padding: 8px; border: 1px solid #b8b8b8; vertical-align: top; width: 42.2089%;">人事異動時期など、大量更新が集中する時期の処理能力と作業体制を確認する</td>
</tr>
<tr>
<td style="padding: 8px; border: 1px solid #b8b8b8; text-align: center; vertical-align: top; width: 5.7363%;">11</td>
<td style="padding: 8px; border: 1px solid #b8b8b8; vertical-align: top; width: 14.8973%;">アクセス・特権ID管理</td>
<td style="padding: 8px; border: 1px solid #b8b8b8; vertical-align: top; width: 37.1575%;">管理者権限、リモート接続、DBアクセス、ネットワークアクセス、特権IDの利用・承認・記録方法を確定する</td>
<td style="padding: 8px; border: 1px solid #b8b8b8; vertical-align: top; width: 42.2089%;">操作可能な経路、端末、アカウントを限定し、証跡の取得と定期的な棚卸を行う</td>
</tr>
<tr>
<td style="padding: 8px; border: 1px solid #b8b8b8; text-align: center; vertical-align: top; width: 5.7363%;">12</td>
<td style="padding: 8px; border: 1px solid #b8b8b8; vertical-align: top; width: 14.8973%;">パッチ・脆弱性管理</td>
<td style="padding: 8px; border: 1px solid #b8b8b8; vertical-align: top; width: 37.1575%;">パッチや脆弱性情報の入手、評価、検証、承認、適用、適用後確認、緊急時対応を確定する</td>
<td style="padding: 8px; border: 1px solid #b8b8b8; vertical-align: top; width: 42.2089%;">CVSSだけでなく、対象システムへの影響、攻撃可能性、停止可能時間を考慮する</td>
</tr>
<tr>
<td style="padding: 8px; border: 1px solid #b8b8b8; text-align: center; vertical-align: top; width: 5.7363%;">13</td>
<td style="padding: 8px; border: 1px solid #b8b8b8; vertical-align: top; width: 14.8973%;">マルウェア対策</td>
<td style="padding: 8px; border: 1px solid #b8b8b8; vertical-align: top; width: 37.1575%;">パターンファイルやエンジンの更新、スキャン、検知時の隔離・駆除・報告方法を確定する</td>
<td style="padding: 8px; border: 1px solid #b8b8b8; vertical-align: top; width: 42.2089%;">スキャン時間や負荷が運転スケジュールと競合しないか確認する</td>
</tr>
<tr>
<td style="padding: 8px; border: 1px solid #b8b8b8; text-align: center; vertical-align: top; width: 5.7363%;">14</td>
<td style="padding: 8px; border: 1px solid #b8b8b8; vertical-align: top; width: 14.8973%;">時刻同期</td>
<td style="padding: 8px; border: 1px solid #b8b8b8; vertical-align: top; width: 37.1575%;">同期先、冗長化、許容時刻差、同期状態の監視、同期異常時の対応を確定する</td>
<td style="padding: 8px; border: 1px solid #b8b8b8; vertical-align: top; width: 42.2089%;">ネットワーク経路、認証、仮想環境やクラウド側の時刻同期方式との整合を確認する</td>
</tr>
<tr>
<td style="padding: 8px; border: 1px solid #b8b8b8; text-align: center; vertical-align: top; width: 5.7363%;">15</td>
<td style="padding: 8px; border: 1px solid #b8b8b8; vertical-align: top; width: 14.8973%;">変更・リリース管理</td>
<td style="padding: 8px; border: 1px solid #b8b8b8; vertical-align: top; width: 37.1575%;">アプリケーション、設定ファイル、DB変更、ジョブ、スクリプト、クラウド設定などの変更・配布・切り戻し方法を確定する</td>
<td style="padding: 8px; border: 1px solid #b8b8b8; vertical-align: top; width: 42.2089%;">承認、事前確認、バックアップ、リリース後確認、切り戻し条件、構成情報の更新まで含める</td>
</tr>
<tr>
<td style="padding: 8px; border: 1px solid #b8b8b8; text-align: center; vertical-align: top; width: 5.7363%;">16</td>
<td style="padding: 8px; border: 1px solid #b8b8b8; vertical-align: top; width: 14.8973%;">証明書・鍵・シークレット管理</td>
<td style="padding: 8px; border: 1px solid #b8b8b8; vertical-align: top; width: 37.1575%;">証明書、秘密鍵、APIキー、パスワードなどの発行、保管、配布、更新、失効、棚卸方法を確定する</td>
<td style="padding: 8px; border: 1px solid #b8b8b8; vertical-align: top; width: 42.2089%;">有効期限切れの事前検知、更新担当、保管場所、アクセス権限、自動更新の可否を確認する</td>
</tr>
<tr>
<td style="padding: 8px; border: 1px solid #b8b8b8; text-align: center; vertical-align: top; width: 5.7363%;">17</td>
<td style="padding: 8px; border: 1px solid #b8b8b8; vertical-align: top; width: 14.8973%;">構成・資産管理</td>
<td style="padding: 8px; border: 1px solid #b8b8b8; vertical-align: top; width: 37.1575%;">サーバ、ミドルウェア、クラウドリソース、設定、バージョン、ライセンスなどの構成情報と更新方法を確定する</td>
<td style="padding: 8px; border: 1px solid #b8b8b8; vertical-align: top; width: 42.2089%;">実環境と構成管理情報の乖離を防ぎ、変更・障害調査・監査で参照できる状態を維持する</td>
</tr>
<tr>
<td style="padding: 8px; border: 1px solid #b8b8b8; text-align: center; vertical-align: top; width: 5.7363%;">18</td>
<td style="padding: 8px; border: 1px solid #b8b8b8; vertical-align: top; width: 14.8973%;">キャパシティ管理</td>
<td style="padding: 8px; border: 1px solid #b8b8b8; vertical-align: top; width: 37.1575%;">CPU、メモリ、ディスク、DB、ネットワーク、処理件数などの収集、評価、予測、増強判断方法を確定する</td>
<td style="padding: 8px; border: 1px solid #b8b8b8; vertical-align: top; width: 42.2089%;">平常時だけでなく、月次、年次、繁忙期、特定時間帯の傾向を確認する</td>
</tr>
</tbody>
</table>
</div>
<p id="ccdd30e4-b7d5-4fad-af5d-67cc71c8b866">この目次は、IPAの非機能要求グレードなどの確認観点を参考にしながら、実際のプロジェクトで扱いやすい運用作業単位に整理したものです。</p>
<p id="7a8efe3d-a6cc-48eb-9eba-c12435638634">非機能要件の項目をそのまま設計書の章立てにしても、実際の運用作業との対応が見えにくいことがあります。</p>
<p id="f4060c5a-4222-436f-acc4-41eb38fe1feb">プロジェクト参画経験から、システム運転、監視、ログ、バックアップ、起動停止といった、実際に発生する運用作業を目次の単位にすることで、検討漏れを減らせると考えています。</p>
<p id="8daa486c-4646-4072-b0d8-8a4fe4a84f73">表の「項目」は、運用設計書の章や節を組み立てる際のたたき台として使えます。</p>
<p id="15de7982-8331-4cab-8a62-17c21fb7eba3">ただし、設計内容だけを書いて終わりではありません。</p>
<p id="c0d487c0-1006-4166-bf56-fe8bc6ea1126">各項目について、実施主体、実施契機・頻度、正常・異常の判断条件、承認者・判断者、入出力情報、運用フロー、必要な手順書、必要なスクリプト・ジョブ、処理方式設計への申し送りも、必要に応じて整理します。</p>
<p id="9c9cb515-363b-4c77-8b58-d9130e16953f">要件定義で合意した内容を、どの運用設計項目へ反映するのかを確認しながら進めることが重要です。</p>
<p>ここで挙げた項目は、一般的なシステムにおける最大公約数です。</p>
<p id="89f662ae-565f-45bb-bd30-a08ed31284cc">すべてのシステムに同じ項目を適用すればよいわけではありません。外部公開サービスであれば、DDoS対策やWAF運用が必要になるかもしれません。</p>
<p id="4be1aeeb-9c99-4e15-8e1f-4d6f40cd8abe">クラウドネイティブなシステムであれば、オートスケーリング、マネージドサービスのメンテナンス通知、クラウドコスト管理を追加することもあります。</p>
<p id="d40e2fec-7c3d-4fa1-8c27-92bc7f29a3f7">反対に、小規模なシステムでは、複数の項目を一つの章にまとめることもあります。</p>
<p id="b7e72788-7c7f-437f-9c3f-88ee6d283675">重要なのは、テンプレートにシステムを合わせることではありません。システム運用で発生する作業と判断を洗い出し、必要な項目を追加・統合することです。</p>
<p id="c52adaa4-2af2-4d3a-926e-ca63849423cc">ここで示した運用設計の項目は、基本設計の段階で方針が決まっていることが前提です。</p>
<p id="6a7c7ff3-5935-425c-8e2b-9c13b472fe39">運転スケジュール、監視、ログ、バックアップ、開局判定の方針を基本設計でどう決めるのか、基盤SEが見ている設計の全体像は、以下の記事で解説しています。</p>
<p id="2d797b38-e171-494b-b9f6-2c9c27c02da4">基本設計書の目次と、各章で作成すべき成果物を1つの表で対応させたExcelファイル付きです。運用設計書目次サンプルと2点セットで、設計書の抜け漏れ確認に使えます。</p>
<a href="https://sys-univ.com/dev/basic-design-infrastructure/" title="基本設計で決めること｜画面設計だけでは終わらない基盤SEの設計工程" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img width="160" height="90" src="https://sys-univ.com/wp-content/uploads/2026/06/4d96d0a5b250d4d64675183a265ba8a6-160x90.jpg" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" loading="lazy" decoding="async" srcset="https://sys-univ.com/wp-content/uploads/2026/06/4d96d0a5b250d4d64675183a265ba8a6-160x90.jpg 160w, https://sys-univ.com/wp-content/uploads/2026/06/4d96d0a5b250d4d64675183a265ba8a6-500x281.jpg 500w, https://sys-univ.com/wp-content/uploads/2026/06/4d96d0a5b250d4d64675183a265ba8a6-800x450.jpg 800w, https://sys-univ.com/wp-content/uploads/2026/06/4d96d0a5b250d4d64675183a265ba8a6-300x169.jpg 300w, https://sys-univ.com/wp-content/uploads/2026/06/4d96d0a5b250d4d64675183a265ba8a6-768x432.jpg 768w, https://sys-univ.com/wp-content/uploads/2026/06/4d96d0a5b250d4d64675183a265ba8a6-1536x864.jpg 1536w, https://sys-univ.com/wp-content/uploads/2026/06/4d96d0a5b250d4d64675183a265ba8a6-120x68.jpg 120w, https://sys-univ.com/wp-content/uploads/2026/06/4d96d0a5b250d4d64675183a265ba8a6-320x180.jpg 320w, https://sys-univ.com/wp-content/uploads/2026/06/4d96d0a5b250d4d64675183a265ba8a6-376x212.jpg 376w, https://sys-univ.com/wp-content/uploads/2026/06/4d96d0a5b250d4d64675183a265ba8a6.jpg 1672w" sizes="auto, (max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">基本設計で決めること｜画面設計だけでは終わらない基盤SEの設計工程</div><div class="blogcard-snippet internal-blogcard-snippet">基本設計は画面設計だけでは終わらない。ログ・バックアップ・ジョブ・監視など、本番運用を見据えた基盤設計の論点を、ファイルアップロードや夜間バッチの実例で整理します。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img src="https://www.google.com/s2/favicons?domain=https://sys-univ.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" loading="lazy" decoding="async" /></div><div class="blogcard-domain internal-blogcard-domain">sys-univ.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2026.06.20</div></div></div></div></a>
<h2 id="1c3db3a4-135d-4528-b65e-9292f67d2501">運用設計は誰がやるのか｜4つの役割と責務分界</h2>
<p id="f172e31d-6f47-4a48-b535-aad02d070eb1">システムは構築して終わりではありません。</p>
<p id="acc5585f-3c43-424a-90c4-becb1ea98672">想定した運用を実行できる状態で運用担当へ引き継いで、初めて開発プロジェクトの役割を果たしたといえます。運用設計では、作業内容だけでなく、誰が実施するのかを明確にする必要があります。</p>
<p id="1e5855de-93fc-43ca-9a81-dcbf9c2582e7">役割は契約形態や組織によって異なりますが、一般的には次のように整理できます。</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-medium wp-image-3083" src="https://sys-univ.com/wp-content/uploads/2026/07/825577744192b0dc8f4305e4ec3e9fe6-500x281.png" alt="" width="500" height="281" srcset="https://sys-univ.com/wp-content/uploads/2026/07/825577744192b0dc8f4305e4ec3e9fe6-500x281.png 500w, https://sys-univ.com/wp-content/uploads/2026/07/825577744192b0dc8f4305e4ec3e9fe6-800x450.png 800w, https://sys-univ.com/wp-content/uploads/2026/07/825577744192b0dc8f4305e4ec3e9fe6-300x169.png 300w, https://sys-univ.com/wp-content/uploads/2026/07/825577744192b0dc8f4305e4ec3e9fe6-768x432.png 768w, https://sys-univ.com/wp-content/uploads/2026/07/825577744192b0dc8f4305e4ec3e9fe6-1536x864.png 1536w, https://sys-univ.com/wp-content/uploads/2026/07/825577744192b0dc8f4305e4ec3e9fe6-120x68.png 120w, https://sys-univ.com/wp-content/uploads/2026/07/825577744192b0dc8f4305e4ec3e9fe6-160x90.png 160w, https://sys-univ.com/wp-content/uploads/2026/07/825577744192b0dc8f4305e4ec3e9fe6-320x180.png 320w, https://sys-univ.com/wp-content/uploads/2026/07/825577744192b0dc8f4305e4ec3e9fe6-376x212.png 376w, https://sys-univ.com/wp-content/uploads/2026/07/825577744192b0dc8f4305e4ec3e9fe6.png 1672w" sizes="auto, (max-width: 500px) 100vw, 500px" /></p>
<p id="b67005d4-6429-43f0-9545-a37bc61ce534">同じ組織や担当者が複数の役割を兼ねる場合もあります。</p>
<p id="ca996da5-f2bf-4898-8632-2c24d7ad32c4">大切なのは、組織名ではなく責務を明確にすることです。監視アラートが発生したとき、誰が最初に確認するのか。原因調査は誰へ依頼するのか。業務影響は誰が判断するのか。処理を打ち切るかどうかを誰が承認するのか。</p>
<p id="943857df-840a-4c0b-8007-d5e7b2259211">ここが曖昧なままでは、連絡先一覧があっても運用は回りません。</p>
<p id="8edd85a2-876a-4e7b-b7a7-5541aef15c43">また、すべての作業を自動化すればよいわけでもありません。</p>
<p id="0b2aa755-3fda-4a20-b53b-8a46673e5986">頻度が低く、計画時間内に安全に実施できる作業であれば、手動運用を選ぶこともあります。</p>
<p id="a49faec2-994b-4af0-88b5-06e9eec3702c">ただし、手動で行う場合でも、実施者、実施時期、必要な権限、作業手順、正常性の確認方法、作業証跡、異常時の対応、承認・報告方法は設計する必要があります。</p>
<p id="523b343c-2b7e-46d5-bae8-ee6a74ed9f17">自動化するか手動で残すかを、頻度、工数、リスク、ミスの影響、開発・保守コストから判断すること自体が、運用設計の重要な役割です。</p>
<h2 id="53f124df-c94a-4bbe-accf-cba390b1df13">まとめ｜運用設計は要件定義から始まっている</h2>
<p id="6733dd99-7557-493a-b629-f0a14b12674d">運用設計の目的は、システム利用者、運用担当、開発・保守担当、システムオーナーが、それぞれの役割を果たしながら、システムを安定して利用・維持できる状態をつくることです。</p>
<p id="d1c10711-dc5c-42a6-bab2-c5e0626c9828">運用設計は、運用フェーズに入ってから考えるものではありません。要件定義からすでに始まっており、その骨格は基本設計の段階で決まります。</p>
<p id="6caf39a6-84ec-49c7-9af8-ac1bb8766402">運転スケジュール、ジョブ、監視、ログ、バックアップ・リストア、起動停止、開局・閉塞、運用日付、異常時運用、エスカレーション、運用スクリプト。</p>
<p id="a54bb1b6-cd0e-41bb-a5e7-c19dea009e1c">これらの方針は、システム構成や処理方式とセットで具体化する必要があります。</p>
<p id="eba0e57c-0511-48da-86e9-1ee231ffbc3a">運用設計側が、何をどのように運用したいかを決める。</p>
<p id="c7c5f1c3-b0fb-493b-917b-e91a12cee440">処理方式設計側が、それをどの仕組みで実現するかを決める。処理方式上の制約が分かれば、運用設計側が運用方法や判断基準を見直す。</p>
<p id="b880fbd5-051a-4afa-a08a-9aef4475ffac">この双方向の関係を基本設計で押さえていなければ、詳細設計以降でどれだけ頑張っても、本番直前の</p>
<p>「必要なスクリプトがない」<br />
「ジョブネットが動かない」<br />
「バックアップから戻せない」<br />
「アラート発生後の対応者がいない」<br />
「夜間処理後に業務を開始してよいか判断できない」</p>
<p id="d2bb0519-3792-4bc1-b92a-49d5cdc57075">は防げません。</p>
<p id="11faaa9a-3eb9-463c-a38e-7fd2eabbbb09">運用設計は、運用担当へ仕事を押しつけるための設計ではありません。</p>
<p id="3b4cab76-08a9-4f9f-9e6f-3df56454193f">本番稼働後に発生する作業、判断、障害、変更を想定し、システムの仕組みとプロジェクト計画へ反映する設計であり、処理方式と運用設計をつなぎ、本番で運用できるシステムを設計することです。</p>
<hr id="22b77849-0c98-48a6-a37e-6fda83f9a5f2" />
<p id="c663d7d3-f7f2-47c9-898a-39733319d0b4"><strong>関連記事</p>
<p></strong>運用設計は、単独で完結する工程ではありません。要件定義で決めた内容を基本設計・詳細設計へ落とし込み、さらにテストや運用へつなげていく必要があります。<br />
運用設計の前提となる要件の考え方から、要件定義、基本設計、詳細設計、テストまでのつながりを確認したい方は、以下の記事もあわせてご覧ください。</p>
<p id="cf907ed1-8039-43bb-9f66-3216336a1322"><strong>機能要件と非機能要件の違い｜「機能が動く」と「本番で使える」は違う</strong><br />
要件定義で整理する「機能要件」と「非機能要件」の違いを、実務で使える視点から解説しています。</p>
<a href="https://sys-univ.com/dev/functional-nonfunctional-requirements/" title="機能要件と非機能要件の違い｜「機能が動く」と「本番で使える」は違う" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img width="160" height="90" src="https://sys-univ.com/wp-content/uploads/2026/06/b9c93881b11465fd6ccbf91142947faa-160x90.jpg" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" loading="lazy" decoding="async" srcset="https://sys-univ.com/wp-content/uploads/2026/06/b9c93881b11465fd6ccbf91142947faa-160x90.jpg 160w, https://sys-univ.com/wp-content/uploads/2026/06/b9c93881b11465fd6ccbf91142947faa-500x281.jpg 500w, https://sys-univ.com/wp-content/uploads/2026/06/b9c93881b11465fd6ccbf91142947faa-800x450.jpg 800w, https://sys-univ.com/wp-content/uploads/2026/06/b9c93881b11465fd6ccbf91142947faa-300x169.jpg 300w, https://sys-univ.com/wp-content/uploads/2026/06/b9c93881b11465fd6ccbf91142947faa-768x432.jpg 768w, https://sys-univ.com/wp-content/uploads/2026/06/b9c93881b11465fd6ccbf91142947faa-1536x864.jpg 1536w, https://sys-univ.com/wp-content/uploads/2026/06/b9c93881b11465fd6ccbf91142947faa-120x68.jpg 120w, https://sys-univ.com/wp-content/uploads/2026/06/b9c93881b11465fd6ccbf91142947faa-320x180.jpg 320w, https://sys-univ.com/wp-content/uploads/2026/06/b9c93881b11465fd6ccbf91142947faa-376x212.jpg 376w, https://sys-univ.com/wp-content/uploads/2026/06/b9c93881b11465fd6ccbf91142947faa.jpg 1672w" sizes="auto, (max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">機能要件と非機能要件の違い｜「機能が動く」と「本番で使える」は違う</div><div class="blogcard-snippet internal-blogcard-snippet">「機能が動く」と「本番で使える」は違う。機能要件と非機能要件の違いを、購入申請システムの具体例と現場の失敗パターンから整理します。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img src="https://www.google.com/s2/favicons?domain=https://sys-univ.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" loading="lazy" decoding="async" /></div><div class="blogcard-domain internal-blogcard-domain">sys-univ.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2026.06.19</div></div></div></div></a>
<p><strong>要件定義とは何をする工程か｜RFP・見積前提から認識差を潰す実務<br />
</strong>RFP・質問回答・提案書・見積前提を起点に、認識差を潰しながらスコープと責任分界を確定する要件定義の実務を解説しています。</p>
<a href="https://sys-univ.com/dev/requirements-definition/" title="要件定義とは何をする工程か｜RFP・見積前提から認識差を潰す実務" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img width="160" height="90" src="https://sys-univ.com/wp-content/uploads/2026/06/2d222665bad7a62379b769bded1c226a-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" loading="lazy" decoding="async" srcset="https://sys-univ.com/wp-content/uploads/2026/06/2d222665bad7a62379b769bded1c226a-160x90.png 160w, https://sys-univ.com/wp-content/uploads/2026/06/2d222665bad7a62379b769bded1c226a-500x281.png 500w, https://sys-univ.com/wp-content/uploads/2026/06/2d222665bad7a62379b769bded1c226a-800x450.png 800w, https://sys-univ.com/wp-content/uploads/2026/06/2d222665bad7a62379b769bded1c226a-300x169.png 300w, https://sys-univ.com/wp-content/uploads/2026/06/2d222665bad7a62379b769bded1c226a-768x432.png 768w, https://sys-univ.com/wp-content/uploads/2026/06/2d222665bad7a62379b769bded1c226a-1536x864.png 1536w, https://sys-univ.com/wp-content/uploads/2026/06/2d222665bad7a62379b769bded1c226a-120x68.png 120w, https://sys-univ.com/wp-content/uploads/2026/06/2d222665bad7a62379b769bded1c226a-320x180.png 320w, https://sys-univ.com/wp-content/uploads/2026/06/2d222665bad7a62379b769bded1c226a-376x212.png 376w, https://sys-univ.com/wp-content/uploads/2026/06/2d222665bad7a62379b769bded1c226a.png 1672w" sizes="auto, (max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">要件定義とは何をする工程か｜RFP・見積前提から認識差を潰す実務</div><div class="blogcard-snippet internal-blogcard-snippet">要件定義とは何をする工程なのか。RFP、質問回答、提案書、見積前提から認識差を潰し、スコープや責任分界を確定する実務を、大規模SIの具体的な失敗事例とともに解説します。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img src="https://www.google.com/s2/favicons?domain=https://sys-univ.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" loading="lazy" decoding="async" /></div><div class="blogcard-domain internal-blogcard-domain">sys-univ.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2026.08.12</div></div></div></div></a>
<p id="23d672cb-aa11-4646-8e6a-cfccf7fe9767"><strong>基本設計で決めること｜画面設計だけでは終わらない基盤SEの設計工程</strong><br />
要件定義で決めた内容を、システム全体の構成や方式へ落とし込む基本設計について解説しています。</p>
<a href="https://sys-univ.com/dev/basic-design-infrastructure/" title="基本設計で決めること｜画面設計だけでは終わらない基盤SEの設計工程" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img width="160" height="90" src="https://sys-univ.com/wp-content/uploads/2026/06/4d96d0a5b250d4d64675183a265ba8a6-160x90.jpg" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" loading="lazy" decoding="async" srcset="https://sys-univ.com/wp-content/uploads/2026/06/4d96d0a5b250d4d64675183a265ba8a6-160x90.jpg 160w, https://sys-univ.com/wp-content/uploads/2026/06/4d96d0a5b250d4d64675183a265ba8a6-500x281.jpg 500w, https://sys-univ.com/wp-content/uploads/2026/06/4d96d0a5b250d4d64675183a265ba8a6-800x450.jpg 800w, https://sys-univ.com/wp-content/uploads/2026/06/4d96d0a5b250d4d64675183a265ba8a6-300x169.jpg 300w, https://sys-univ.com/wp-content/uploads/2026/06/4d96d0a5b250d4d64675183a265ba8a6-768x432.jpg 768w, https://sys-univ.com/wp-content/uploads/2026/06/4d96d0a5b250d4d64675183a265ba8a6-1536x864.jpg 1536w, https://sys-univ.com/wp-content/uploads/2026/06/4d96d0a5b250d4d64675183a265ba8a6-120x68.jpg 120w, https://sys-univ.com/wp-content/uploads/2026/06/4d96d0a5b250d4d64675183a265ba8a6-320x180.jpg 320w, https://sys-univ.com/wp-content/uploads/2026/06/4d96d0a5b250d4d64675183a265ba8a6-376x212.jpg 376w, https://sys-univ.com/wp-content/uploads/2026/06/4d96d0a5b250d4d64675183a265ba8a6.jpg 1672w" sizes="auto, (max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">基本設計で決めること｜画面設計だけでは終わらない基盤SEの設計工程</div><div class="blogcard-snippet internal-blogcard-snippet">基本設計は画面設計だけでは終わらない。ログ・バックアップ・ジョブ・監視など、本番運用を見据えた基盤設計の論点を、ファイルアップロードや夜間バッチの実例で整理します。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img src="https://www.google.com/s2/favicons?domain=https://sys-univ.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" loading="lazy" decoding="async" /></div><div class="blogcard-domain internal-blogcard-domain">sys-univ.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2026.06.20</div></div></div></div></a>
<p id="1905a602-c433-4c79-9516-793d50462e85"><strong>詳細設計で決めること｜基本設計を「構築・テスト・運用できる形」に落とし込む工程</strong><br />
基本設計で決めた方式を、実際に構築できる設定値や設計内容まで具体化する工程を解説しています。</p>
<a href="https://sys-univ.com/dev/detailed-design-overview/" title="【全3回・第1部】詳細設計とは何を決める工程か｜パラメータ表で終わらせないための設計の考え方" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img width="160" height="90" src="https://sys-univ.com/wp-content/uploads/2026/06/a6c056b838ba24669f57a7e23dae134f-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" loading="lazy" decoding="async" srcset="https://sys-univ.com/wp-content/uploads/2026/06/a6c056b838ba24669f57a7e23dae134f-160x90.png 160w, https://sys-univ.com/wp-content/uploads/2026/06/a6c056b838ba24669f57a7e23dae134f-120x68.png 120w, https://sys-univ.com/wp-content/uploads/2026/06/a6c056b838ba24669f57a7e23dae134f-320x180.png 320w, https://sys-univ.com/wp-content/uploads/2026/06/a6c056b838ba24669f57a7e23dae134f-376x212.png 376w" sizes="auto, (max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【全3回・第1部】詳細設計とは何を決める工程か｜パラメータ表で終わらせないための設計の考え方</div><div class="blogcard-snippet internal-blogcard-snippet">詳細設計とは、基本設計で決めた方式を構築・テスト・運用できる粒度に落とし込む工程です。OS、ミドルウェア、DB、ジョブ、監視、バックアップなどを、単なるパラメータ表ではなく品質保証ストーリーとして設計する考え方を基盤SEの目線で解説します。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img src="https://www.google.com/s2/favicons?domain=https://sys-univ.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" loading="lazy" decoding="async" /></div><div class="blogcard-domain internal-blogcard-domain">sys-univ.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2026.08.20</div></div></div></div></a>
<p id="b312fc36-2f96-43cc-9a71-321c77c71180"><strong>Vモデルは古くない｜設計とテストをつなぐ品質保証の考え方</strong><br />
要件定義・基本設計・詳細設計の内容が、後工程のテストとどう対応するのかを整理しています。</p>
<a href="https://sys-univ.com/dev/v-model-quality-assurance/" title="Vモデルは古くない｜設計とテストをつなぐ品質保証の考え方" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img width="160" height="90" src="https://sys-univ.com/wp-content/uploads/2022/12/9bc6ac64c2c9eff90c882e3211abf571-160x90.webp" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" loading="lazy" decoding="async" srcset="https://sys-univ.com/wp-content/uploads/2022/12/9bc6ac64c2c9eff90c882e3211abf571-160x90.webp 160w, https://sys-univ.com/wp-content/uploads/2022/12/9bc6ac64c2c9eff90c882e3211abf571-120x68.webp 120w, https://sys-univ.com/wp-content/uploads/2022/12/9bc6ac64c2c9eff90c882e3211abf571-320x180.webp 320w, https://sys-univ.com/wp-content/uploads/2022/12/9bc6ac64c2c9eff90c882e3211abf571-376x212.webp 376w" sizes="auto, (max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">Vモデルは古くない｜設計とテストをつなぐ品質保証の考え方</div><div class="blogcard-snippet internal-blogcard-snippet">Vモデルは古い開発手法の話ではなく、要件・設計で決めたことをテストで確認する品質保証の考え方です。バックアップ要件の具体例で各工程の対応関係を整理します。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img src="https://www.google.com/s2/favicons?domain=https://sys-univ.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" loading="lazy" decoding="async" /></div><div class="blogcard-domain internal-blogcard-domain">sys-univ.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2026.07.13</div></div></div></div></a>
<p id="de9934e4-cfac-4941-ba43-a0bf92ffee7c">開発工程全体の流れから確認したい方は、以下の記事も参考にしてください。</p>
<p id="7f44d1f6-bb2b-4710-a151-b06c7a61cd1e"><strong>システム開発の流れを現場目線で理解する【前編】</strong></p>
<a href="https://sys-univ.com/dev/system-dev-overview/" title="システム開発の全体像｜アプリ・基盤・非機能はどうつながるのか" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img width="160" height="90" src="https://sys-univ.com/wp-content/uploads/2026/08/7bef9f366cb7c5feb05b75b01a4ea2da-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" loading="lazy" decoding="async" srcset="https://sys-univ.com/wp-content/uploads/2026/08/7bef9f366cb7c5feb05b75b01a4ea2da-160x90.png 160w, https://sys-univ.com/wp-content/uploads/2026/08/7bef9f366cb7c5feb05b75b01a4ea2da-120x68.png 120w, https://sys-univ.com/wp-content/uploads/2026/08/7bef9f366cb7c5feb05b75b01a4ea2da-320x180.png 320w, https://sys-univ.com/wp-content/uploads/2026/08/7bef9f366cb7c5feb05b75b01a4ea2da-376x212.png 376w" sizes="auto, (max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">システム開発の全体像｜アプリ・基盤・非機能はどうつながるのか</div><div class="blogcard-snippet internal-blogcard-snippet">システム開発は、アプリケーションだけで成立するものではありません。システム基盤、性能・可用性などの非機能、テスト、移行、運用がどのようにつながって一つのシステムを成立させるのかを、現場目線で整理します。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img src="https://www.google.com/s2/favicons?domain=https://sys-univ.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" loading="lazy" decoding="async" /></div><div class="blogcard-domain internal-blogcard-domain">sys-univ.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2026.08.26</div></div></div></div></a>
<p id="938170c5-5f76-47be-8d33-93e190ae7797"><strong>システム開発の各工程や設計・テスト・運用に関する記事は、以下のカテゴリにまとめています。</strong></p>
<a href="https://sys-univ.com/category/dev/" title="システム開発" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img src="https://sys-univ.com/wp-content/themes/cocoon-master/images/no-image-160.png" alt="" class=" internal-blogcard-thumb-image" width="160" height="90" loading="lazy" decoding="async" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">システム開発</div><div class="blogcard-snippet internal-blogcard-snippet"><p>システム開発に関する開発プロセス、プロジェクトマネージメントの解説</p>
</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img src="https://www.google.com/s2/favicons?domain=https://sys-univ.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" loading="lazy" decoding="async" /></div><div class="blogcard-domain internal-blogcard-domain">sys-univ.com</div></div></div></div></a>
<div id="gtx-trans" style="position: absolute; left: 292px; top: 94px;">
<div class="gtx-trans-icon"> </div>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://sys-univ.com/dev/opedesign/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>システム開発の工程はつながっている｜前工程の判断が後工程の手戻りにつながる理由</title>
		<link>https://sys-univ.com/dev/system-dev-overview-2/</link>
					<comments>https://sys-univ.com/dev/system-dev-overview-2/#respond</comments>
		
		<dc:creator><![CDATA[ナギ]]></dc:creator>
		<pubDate>Tue, 25 Aug 2026 03:01:52 +0000</pubDate>
				<category><![CDATA[システム開発]]></category>
		<guid isPermaLink="false">https://sys-univ.com/?p=2595</guid>

					<description><![CDATA[はじめに システム開発は、要件定義、設計、開発・構築、テスト、移行、運用保守といった工程に分けて進みます。 工程表だけを見ると、それぞれが順番に並んだ独立した作業のように見えるかもしれません。 実際のプロジェクトでは、そ [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-heading"><strong>はじめに</strong></p>


<p class="wp-block-paragraph">システム開発は、要件定義、設計、開発・構築、テスト、移行、運用保守といった工程に分けて進みます。</p>


<p class="wp-block-paragraph">工程表だけを見ると、それぞれが順番に並んだ独立した作業のように見えるかもしれません。</p>


<p class="wp-block-paragraph">実際のプロジェクトでは、そうではありません。</p>


<p class="wp-block-paragraph">要件定義で曖昧なまま残した条件は、設計で判断に迷います。設計で見落とした条件は、テストで問題として表面化します。移行や運用を十分に考えずに作ったシステムは、本番切替や稼働後に手戻りを生みます。</p>


<p class="wp-block-paragraph"><strong>前工程で何を決めたかが、次工程の前提条件になります。</strong></p>


<p class="wp-block-paragraph">この記事では、要件定義で何を決め、それを基本設計・詳細設計へどう落とし込み、開発・構築したシステムをどのようにテストし、本番へ移行して運用につなげるのかを整理します。</p>


<p class="wp-block-paragraph">工程の名前を覚えることが目的ではありません。<strong>前工程の判断が次工程へどう引き継がれ、どこで認識差や設計漏れが手戻りにつながるのか</strong>を、アプリケーションとシステム基盤の両面から見ていきます。</p>


<p class="wp-block-paragraph">システム開発を、プログラミングだけでなくアプリケーション、システム基盤、非機能まで含めた全体像から整理したい方は、以下の記事も参考にしてください。</p>
<a href="https://sys-univ.com/dev/system-dev-overview/" title="システム開発の全体像｜アプリ・基盤・非機能はどうつながるのか" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img width="160" height="90" src="https://sys-univ.com/wp-content/uploads/2026/08/7bef9f366cb7c5feb05b75b01a4ea2da-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" loading="lazy" decoding="async" srcset="https://sys-univ.com/wp-content/uploads/2026/08/7bef9f366cb7c5feb05b75b01a4ea2da-160x90.png 160w, https://sys-univ.com/wp-content/uploads/2026/08/7bef9f366cb7c5feb05b75b01a4ea2da-120x68.png 120w, https://sys-univ.com/wp-content/uploads/2026/08/7bef9f366cb7c5feb05b75b01a4ea2da-320x180.png 320w, https://sys-univ.com/wp-content/uploads/2026/08/7bef9f366cb7c5feb05b75b01a4ea2da-376x212.png 376w" sizes="auto, (max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">システム開発の全体像｜アプリ・基盤・非機能はどうつながるのか</div><div class="blogcard-snippet internal-blogcard-snippet">システム開発は、アプリケーションだけで成立するものではありません。システム基盤、性能・可用性などの非機能、テスト、移行、運用がどのようにつながって一つのシステムを成立させるのかを、現場目線で整理します。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img src="https://www.google.com/s2/favicons?domain=https://sys-univ.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" loading="lazy" decoding="async" /></div><div class="blogcard-domain internal-blogcard-domain">sys-univ.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2026.08.26</div></div></div></div></a>



<h2 class="wp-block-heading">要件定義・設計・開発の流れ</h2>


<h3 class="wp-block-heading">要件定義：何を実現し、どの水準で成立させるかを決める</h3>


<p class="wp-block-paragraph">要件定義は、システムで何を実現するのかを具体化し、後続の設計・開発・構築・テストができる状態にする工程です。</p>


<p class="wp-block-paragraph">ここで決めるのは、画面や業務機能だけではありません。要件は大きく、<strong>機能要件</strong>と<strong>非機能要件</strong>に分けて考えます。</p>


<p class="wp-block-paragraph">機能要件は、利用者から見えるシステムの機能です。</p>


<ul class="wp-block-list">
	<li>申請を登録できる</li>


	<li>承認・差戻しができる</li>


	<li>承認履歴を確認できる</li>


	<li>申請一覧を検索できる</li>
</ul>


<p class="wp-block-paragraph">非機能要件は、その機能を本番環境で継続して使うための条件です。</p>


<ul class="wp-block-list">
	<li>平日8時から22時まで利用できる</li>


	<li>画面応答を原則3秒以内とする</li>


	<li>サーバ1台の障害では業務を停止させない</li>


	<li>障害発生後1時間以内に復旧する</li>


	<li>バックアップを毎日取得する</li>


	<li>監視アラートを運用担当へ通知する</li>


	<li>個人情報を暗号化する</li>


	<li>本番移行に失敗した場合は旧システムへ切り戻せる</li>
</ul>


<p class="wp-block-paragraph">要件定義で注意したいのは、「お客様の要望を聞いて機能一覧を作れば終わり」と考えないことです。</p>


<p class="wp-block-paragraph">実際の利用部門から出てくるのは、「止まらないようにしてほしい」「普通に使える速度にしてほしい」「障害時は早く戻してほしい」「安全なシステムにしてほしい」といった言葉であることも少なくありません。</p>


<p class="wp-block-paragraph">これだけでは設計できません。</p>


<p class="wp-block-paragraph">「止まらない」とは、サーバ1台の障害までなのか、拠点やAZ単位の障害まで考えるのか。「早く復旧」とは10分なのか1時間なのか。「普通の速度」とは画面応答1秒なのか3秒なのか。</p>


<p class="wp-block-paragraph"><strong>曖昧な要求を、設計・試験で確認できる具体的な水準へ落とすことが要件定義です。</strong></p>


<p class="wp-block-paragraph">ここを曖昧なまま進めると、設計工程だけでなく、テストや本番稼働後まで影響が残ります。</p>


<h3 class="wp-block-heading">要件定義は白紙から始まるとは限らない</h3>


<p class="wp-block-paragraph">実際のシステム開発では、受注後にゼロから自由に要件を考える案件ばかりではありません。</p>


<p class="wp-block-paragraph">特に大規模案件では、事前にRFP（提案依頼書）が提示され、必要な機能、外部連携、性能、運用、セキュリティ、移行などの条件がある程度示されています。</p>


<p class="wp-block-paragraph">ベンダーはRFPを読み、不明点を質問し、必要に応じて前提条件を置いたうえで提案・見積を行います。受注後の要件定義では、それらを起点として、設計・開発できる粒度まで内容を具体化していきます。</p>


<p class="wp-block-paragraph">たとえばRFPに、次のような記載があったとします。</p>


<ul class="wp-block-list">
	<li>高い可用性を確保すること</li>


	<li>必要なログを保管すること</li>


	<li>既存システムと連携すること</li>


	<li>適切なセキュリティ対策を実施すること</li>
</ul>


<p class="wp-block-paragraph">一見すると要件らしく見えますが、このままでは設計できません。</p>


<p class="wp-block-paragraph">どこまで冗長化するのか。ログを何年間、どこへ保存するのか。外部連携で文字コード変換や異常データの再取込まで必要なのか。セキュリティ対策の対象範囲をどこまで含めるのか。</p>


<p class="wp-block-paragraph">こうした条件を具体化し、発注者と受注者の認識を合わせていきます。</p>


<h3 class="wp-block-heading">RFPだけでは現場の実態まで分からない</h3>


<p class="wp-block-paragraph">RFPは重要な出発点ですが、そこに業務や運用のすべてが書かれているとは限りません。</p>


<p class="wp-block-paragraph">大規模案件では、コンサルティング会社や外部アドバイザーがRFP作成を支援することもあります。文書としてきれいに整理されていても、実際の業務担当者や運用担当者が行っている作業まで完全に反映されているとは限りません。</p>


<p class="wp-block-paragraph">「既存運用を踏襲する」と書かれていても、月末だけ手作業でデータを補正しているかもしれません。「外部データを取り込む」と書かれていても、実際には文字コード変換、例外データの補正、再取込が必要かもしれません。</p>


<p class="wp-block-paragraph"><strong>要件定義では、RFP、提案内容、見積前提、実際の業務・運用をすり合わせ、後工程で「聞いていない」「想定していなかった」をできるだけ残さない状態まで具体化します。</strong></p>


<p class="wp-block-paragraph">要件定義の進め方や、RFP・質問回答・提案内容・見積前提との関係については、以下の記事で詳しく整理しています。</p>
<a href="https://sys-univ.com/dev/requirements-definition/" title="要件定義とは何をする工程か｜RFP・見積前提から認識差を潰す実務" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img width="160" height="90" src="https://sys-univ.com/wp-content/uploads/2026/06/2d222665bad7a62379b769bded1c226a-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" loading="lazy" decoding="async" srcset="https://sys-univ.com/wp-content/uploads/2026/06/2d222665bad7a62379b769bded1c226a-160x90.png 160w, https://sys-univ.com/wp-content/uploads/2026/06/2d222665bad7a62379b769bded1c226a-500x281.png 500w, https://sys-univ.com/wp-content/uploads/2026/06/2d222665bad7a62379b769bded1c226a-800x450.png 800w, https://sys-univ.com/wp-content/uploads/2026/06/2d222665bad7a62379b769bded1c226a-300x169.png 300w, https://sys-univ.com/wp-content/uploads/2026/06/2d222665bad7a62379b769bded1c226a-768x432.png 768w, https://sys-univ.com/wp-content/uploads/2026/06/2d222665bad7a62379b769bded1c226a-1536x864.png 1536w, https://sys-univ.com/wp-content/uploads/2026/06/2d222665bad7a62379b769bded1c226a-120x68.png 120w, https://sys-univ.com/wp-content/uploads/2026/06/2d222665bad7a62379b769bded1c226a-320x180.png 320w, https://sys-univ.com/wp-content/uploads/2026/06/2d222665bad7a62379b769bded1c226a-376x212.png 376w, https://sys-univ.com/wp-content/uploads/2026/06/2d222665bad7a62379b769bded1c226a.png 1672w" sizes="auto, (max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">要件定義とは何をする工程か｜RFP・見積前提から認識差を潰す実務</div><div class="blogcard-snippet internal-blogcard-snippet">要件定義とは何をする工程なのか。RFP、質問回答、提案書、見積前提から認識差を潰し、スコープや責任分界を確定する実務を、大規模SIの具体的な失敗事例とともに解説します。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img src="https://www.google.com/s2/favicons?domain=https://sys-univ.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" loading="lazy" decoding="async" /></div><div class="blogcard-domain internal-blogcard-domain">sys-univ.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2026.08.12</div></div></div></div></a>


<h3 class="wp-block-heading">基本設計・詳細設計：要件を実装できる形へ落とし込む</h3>


<p class="wp-block-paragraph">要件定義で確定した内容を、実際に作れる形へ変換するのが設計工程です。</p>


<p class="wp-block-paragraph">基本設計では、利用者から見える仕様とシステム構成の大枠を決めます。</p>


<p class="wp-block-paragraph">アプリケーション側では、画面レイアウト、入力項目、検索条件、帳票、メール通知、外部システム連携などを設計します。システム基盤側では、Web/AP/DBをどう構成するか、サーバを何台にするか、どこを冗長化するか、ネットワークをどう接続するか、監視やバックアップをどう実現するかといった全体構成を決めます。</p>


<p class="wp-block-paragraph">ここで重要なのは、アプリケーションとシステム基盤を別々に設計しすぎないことです。</p>


<p class="wp-block-paragraph">たとえば、「大量のファイルをアップロードできる」という機能を追加するとします。</p>


<p class="wp-block-paragraph">アプリケーション側ではアップロード処理を実装すれば終わりに見えますが、システム基盤側では、ファイル保存先の容量、通信量、タイムアウト、ウイルスチェック、バックアップ、保管期間、削除方法、ストレージ障害時の扱いまで検討する必要があります。</p>


<p class="wp-block-paragraph"><strong>アプリケーションの要件は基盤設計に影響し、基盤側の制約もアプリケーション設計に影響します。</strong></p>


<p class="wp-block-paragraph">詳細設計では、基本設計で決めた方針を、実際に開発・構築・テストできる粒度まで具体化します。</p>


<p class="wp-block-paragraph">アプリケーション側なら、処理ロジック、SQL、API、エラー処理、データ更新条件などです。システム基盤側なら、サーバ名、IPアドレス、CPU、メモリ、ディスク構成、OS設定、ミドルウェア設定、DBパラメータ、ジョブスケジュール、監視閾値、ログ出力先、バックアップ取得時刻、ファイアウォールルールなどに落とし込みます。</p>


<h3 class="wp-block-heading">詳細設計で初めて決めてはいけないこともある</h3>


<p class="wp-block-paragraph">詳細設計で具体的な値を決めるからといって、その前提条件まで詳細設計で決めればよいわけではありません。</p>


<p class="wp-block-paragraph">たとえば、ログの保管を考えます。</p>


<p class="wp-block-paragraph">監査のために7年間必要なのか、障害調査用として数か月あればよいのか。すべてオンラインで検索できる必要があるのか、一定期間を過ぎたら安価なストレージへ退避できるのか。改ざん防止まで求められるのか。</p>


<p class="wp-block-paragraph">この違いによって、必要なディスク容量、ストレージ性能、バックアップ容量、運用方法、コストは大きく変わります。</p>


<p class="wp-block-paragraph">RFPに「必要なログを保管すること」とだけ書かれた状態で詳細設計まで進み、後から「監査で7年間必要だった」「すべて検索できる状態で残してほしい」と判明すれば、容量やコストの前提が崩れます。</p>


<p class="wp-block-paragraph"><strong>詳細設計で決めるのは実装値です。その値を決めるための業務要件や非機能要件は、上流工程で明確にしておく必要があります。</strong></p>


<p class="wp-block-paragraph">基本設計については、以下の記事で詳しく整理しています。</p>
<a href="https://sys-univ.com/dev/basic-design-infrastructure/" title="基本設計で決めること｜画面設計だけでは終わらない基盤SEの設計工程" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img width="160" height="90" src="https://sys-univ.com/wp-content/uploads/2026/06/4d96d0a5b250d4d64675183a265ba8a6-160x90.jpg" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" loading="lazy" decoding="async" srcset="https://sys-univ.com/wp-content/uploads/2026/06/4d96d0a5b250d4d64675183a265ba8a6-160x90.jpg 160w, https://sys-univ.com/wp-content/uploads/2026/06/4d96d0a5b250d4d64675183a265ba8a6-500x281.jpg 500w, https://sys-univ.com/wp-content/uploads/2026/06/4d96d0a5b250d4d64675183a265ba8a6-800x450.jpg 800w, https://sys-univ.com/wp-content/uploads/2026/06/4d96d0a5b250d4d64675183a265ba8a6-300x169.jpg 300w, https://sys-univ.com/wp-content/uploads/2026/06/4d96d0a5b250d4d64675183a265ba8a6-768x432.jpg 768w, https://sys-univ.com/wp-content/uploads/2026/06/4d96d0a5b250d4d64675183a265ba8a6-1536x864.jpg 1536w, https://sys-univ.com/wp-content/uploads/2026/06/4d96d0a5b250d4d64675183a265ba8a6-120x68.jpg 120w, https://sys-univ.com/wp-content/uploads/2026/06/4d96d0a5b250d4d64675183a265ba8a6-320x180.jpg 320w, https://sys-univ.com/wp-content/uploads/2026/06/4d96d0a5b250d4d64675183a265ba8a6-376x212.jpg 376w, https://sys-univ.com/wp-content/uploads/2026/06/4d96d0a5b250d4d64675183a265ba8a6.jpg 1672w" sizes="auto, (max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">基本設計で決めること｜画面設計だけでは終わらない基盤SEの設計工程</div><div class="blogcard-snippet internal-blogcard-snippet">基本設計は画面設計だけでは終わらない。ログ・バックアップ・ジョブ・監視など、本番運用を見据えた基盤設計の論点を、ファイルアップロードや夜間バッチの実例で整理します。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img src="https://www.google.com/s2/favicons?domain=https://sys-univ.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" loading="lazy" decoding="async" /></div><div class="blogcard-domain internal-blogcard-domain">sys-univ.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2026.06.20</div></div></div></div></a>


<h3 class="wp-block-heading">開発・構築：アプリと基盤を同じゴールへ向けて形にする</h3>


<p class="wp-block-paragraph">設計が固まると、アプリケーション開発とシステム基盤の構築が進みます。</p>


<p class="wp-block-paragraph">アプリケーション側では、画面、業務ロジック、API、バッチ、SQLなどを実装します。システム基盤側では、設計書に基づいてサーバ、OS、ミドルウェア、DB、ネットワーク、ロードバランサ、監視、バックアップ、ジョブ、セキュリティなどを構築します。</p>


<p class="wp-block-paragraph">両者は別チームで進むことが多いものの、独立しているわけではありません。アプリケーションが動くためには基盤が必要で、基盤側の結合試験や性能試験には、アプリケーションや疑似アプリケーションが必要になる場合があります。</p>

<div id="attachment_3271" style="width: 510px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-3271" class="wp-image-3271 size-medium" src="https://sys-univ.com/wp-content/uploads/2026/08/6b46ee5421bc830f68f31b27705e46e5-500x281.png" alt="" width="500" height="281" srcset="https://sys-univ.com/wp-content/uploads/2026/08/6b46ee5421bc830f68f31b27705e46e5-500x281.png 500w, https://sys-univ.com/wp-content/uploads/2026/08/6b46ee5421bc830f68f31b27705e46e5-800x450.png 800w, https://sys-univ.com/wp-content/uploads/2026/08/6b46ee5421bc830f68f31b27705e46e5-300x169.png 300w, https://sys-univ.com/wp-content/uploads/2026/08/6b46ee5421bc830f68f31b27705e46e5-768x432.png 768w, https://sys-univ.com/wp-content/uploads/2026/08/6b46ee5421bc830f68f31b27705e46e5-1536x864.png 1536w, https://sys-univ.com/wp-content/uploads/2026/08/6b46ee5421bc830f68f31b27705e46e5-120x68.png 120w, https://sys-univ.com/wp-content/uploads/2026/08/6b46ee5421bc830f68f31b27705e46e5-160x90.png 160w, https://sys-univ.com/wp-content/uploads/2026/08/6b46ee5421bc830f68f31b27705e46e5-320x180.png 320w, https://sys-univ.com/wp-content/uploads/2026/08/6b46ee5421bc830f68f31b27705e46e5-376x212.png 376w, https://sys-univ.com/wp-content/uploads/2026/08/6b46ee5421bc830f68f31b27705e46e5.png 1672w" sizes="auto, (max-width: 500px) 100vw, 500px" /><p id="caption-attachment-3271" class="wp-caption-text">図　システム開発フローの全体像</p></div>



<p class="wp-block-paragraph">アプリケーション側とシステム基盤側では、担当する領域や成果物は異なります。各エンジニアが設計・構築・テストでどのような役割を担うのかについては、以下の記事で詳しく整理しています。</p>
<a href="https://sys-univ.com/dev/application-engineer/" title="アプリケーションエンジニアの仕事｜決める、そろえる、動かし続ける" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img width="160" height="90" src="https://sys-univ.com/wp-content/uploads/2026/08/ad98a3ef5d9f4217bfc19895031dc0cf-160x90.jpg" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" loading="lazy" decoding="async" srcset="https://sys-univ.com/wp-content/uploads/2026/08/ad98a3ef5d9f4217bfc19895031dc0cf-160x90.jpg 160w, https://sys-univ.com/wp-content/uploads/2026/08/ad98a3ef5d9f4217bfc19895031dc0cf-500x281.jpg 500w, https://sys-univ.com/wp-content/uploads/2026/08/ad98a3ef5d9f4217bfc19895031dc0cf-800x450.jpg 800w, https://sys-univ.com/wp-content/uploads/2026/08/ad98a3ef5d9f4217bfc19895031dc0cf-300x169.jpg 300w, https://sys-univ.com/wp-content/uploads/2026/08/ad98a3ef5d9f4217bfc19895031dc0cf-768x432.jpg 768w, https://sys-univ.com/wp-content/uploads/2026/08/ad98a3ef5d9f4217bfc19895031dc0cf-1536x864.jpg 1536w, https://sys-univ.com/wp-content/uploads/2026/08/ad98a3ef5d9f4217bfc19895031dc0cf-120x68.jpg 120w, https://sys-univ.com/wp-content/uploads/2026/08/ad98a3ef5d9f4217bfc19895031dc0cf-320x180.jpg 320w, https://sys-univ.com/wp-content/uploads/2026/08/ad98a3ef5d9f4217bfc19895031dc0cf-376x212.jpg 376w, https://sys-univ.com/wp-content/uploads/2026/08/ad98a3ef5d9f4217bfc19895031dc0cf.jpg 1672w" sizes="auto, (max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">アプリケーションエンジニアの仕事｜決める、そろえる、動かし続ける</div><div class="blogcard-snippet internal-blogcard-snippet">アプリケーションエンジニアの仕事内容を、SIerでの実務経験をもとに解説。曖昧な要望を仕様へ変換する設計、画面・帳票・バッチ・API、テスト、性能問題、障害対応まで、担当範囲と責任を具体例で整理します。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img src="https://www.google.com/s2/favicons?domain=https://sys-univ.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" loading="lazy" decoding="async" /></div><div class="blogcard-domain internal-blogcard-domain">sys-univ.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2026.08.05</div></div></div></div></a>
<a href="https://sys-univ.com/dev/system-infrastructure-engineer/" title="システム基盤・クラウドエンジニアの仕事｜整える、保つ、戻す" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img width="160" height="90" src="https://sys-univ.com/wp-content/uploads/2026/08/769693434e6531947a35f1606041df3d-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" loading="lazy" decoding="async" srcset="https://sys-univ.com/wp-content/uploads/2026/08/769693434e6531947a35f1606041df3d-160x90.png 160w, https://sys-univ.com/wp-content/uploads/2026/08/769693434e6531947a35f1606041df3d-120x68.png 120w, https://sys-univ.com/wp-content/uploads/2026/08/769693434e6531947a35f1606041df3d-320x180.png 320w, https://sys-univ.com/wp-content/uploads/2026/08/769693434e6531947a35f1606041df3d-376x212.png 376w" sizes="auto, (max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">システム基盤・クラウドエンジニアの仕事｜整える、保つ、戻す</div><div class="blogcard-snippet internal-blogcard-snippet">システム基盤エンジニアの仕事内容を、インフラエンジニアとの違いから実務まで解説。サイジング、標準化、監視、可用性、バックアップ、AWS移行、障害対応を大規模SIの実例を交えて紹介します。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img src="https://www.google.com/s2/favicons?domain=https://sys-univ.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" loading="lazy" decoding="async" /></div><div class="blogcard-domain internal-blogcard-domain">sys-univ.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2026.08.17</div></div></div></div></a>
<p>システム開発では、接続先URL、ポート番号、タイムアウト値、ファイル配置先、DB接続情報、ジョブ起動時刻、ログ出力先、文字コードなど、アプリケーションと基盤の境界に多くの調整事項があります。</p>


<p class="wp-block-paragraph">こうした値を「少し変えるだけ」と考えるのは危険です。</p>


<p class="wp-block-paragraph">1つの変更が、アプリケーション、基盤、DB、ネットワーク、運用、外部システムのテスト前提に影響することがあります。</p>


<p class="wp-block-paragraph">仕様や設定を変更するときは、影響範囲を確認し、関係チームと認識を合わせ、必要に応じて変更管理のプロセスを通します。</p>


<p class="wp-block-paragraph">システム開発では、<strong>作る技術だけでなく、変更を管理することも品質を守る仕事です。</strong></p>


<h2 class="wp-block-heading">テスト・移行・運用保守の流れ</h2>


<h3 class="wp-block-heading">テスト：動くことではなく、本番で使えることを確認する</h3>


<p class="wp-block-paragraph">テストは「バグを見つける作業」だけではありません。</p>


<p class="wp-block-paragraph">作ったシステムが、要件どおりに動き、本番環境で業務に使える状態になっていることを確認する工程です。</p>


<p class="wp-block-paragraph">プロジェクトによって名称や切り分けは異なりますが、単体テスト、結合テスト、システムテスト、性能テスト、障害復旧テスト、運用テスト、移行テストなどがあります。</p>


<p class="wp-block-paragraph">テストでは、まず次の2つの観点を押さえます。</p>


<ul class="wp-block-list">
	<li><strong>機能が正しく動くか</strong></li>


	<li><strong>本番環境で継続して運用できるか</strong></li>
</ul>


<p class="wp-block-paragraph">アプリケーション側では、申請、承認、差戻し、検索、帳票出力などの業務機能を確認します。</p>


<p class="wp-block-paragraph">システム基盤・非機能の観点では、本番相当のデータ量で性能が出るか、アクセス集中に耐えられるか、サーバ障害時にも業務を継続できるか、DB障害から復旧できるか、バックアップからリストアできるか、監視やジョブの異常を検知して対応できるかを確認します。</p>


<p class="wp-block-paragraph">特に重要なのは、正常時だけを確認しないことです。</p>


<p class="wp-block-paragraph">サーバが1台停止したらどうなるのか。DBとの接続が切れたらどうなるのか。夜間ジョブが途中で異常終了したらどこから再開するのか。バックアップから戻したデータの整合性は保たれるのか。</p>


<p class="wp-block-paragraph"><strong>「壊れないか」だけでなく、「壊れたときにどうなるか」を確認することが、本番運用を想定したテストです。</strong></p>


<p class="wp-block-paragraph">設計とテストの対応関係については、以下の記事で詳しく整理しています。</p>
<a href="https://sys-univ.com/dev/v-model-quality-assurance/" title="Vモデルは古くない｜設計とテストをつなぐ品質保証の考え方" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img width="160" height="90" src="https://sys-univ.com/wp-content/uploads/2022/12/9bc6ac64c2c9eff90c882e3211abf571-160x90.webp" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" loading="lazy" decoding="async" srcset="https://sys-univ.com/wp-content/uploads/2022/12/9bc6ac64c2c9eff90c882e3211abf571-160x90.webp 160w, https://sys-univ.com/wp-content/uploads/2022/12/9bc6ac64c2c9eff90c882e3211abf571-120x68.webp 120w, https://sys-univ.com/wp-content/uploads/2022/12/9bc6ac64c2c9eff90c882e3211abf571-320x180.webp 320w, https://sys-univ.com/wp-content/uploads/2022/12/9bc6ac64c2c9eff90c882e3211abf571-376x212.webp 376w" sizes="auto, (max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">Vモデルは古くない｜設計とテストをつなぐ品質保証の考え方</div><div class="blogcard-snippet internal-blogcard-snippet">Vモデルは古い開発手法の話ではなく、要件・設計で決めたことをテストで確認する品質保証の考え方です。バックアップ要件の具体例で各工程の対応関係を整理します。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img src="https://www.google.com/s2/favicons?domain=https://sys-univ.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" loading="lazy" decoding="async" /></div><div class="blogcard-domain internal-blogcard-domain">sys-univ.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2026.07.13</div></div></div></div></a>



<h3 class="wp-block-heading">運用テスト：手順書と運用ワークフローが本当に回るかを確認する</h3>


<p class="wp-block-paragraph">運用テストは、本番稼働後の作業や手続きが、設計したとおりに実行できるかを確認するテストです。</p>


<p class="wp-block-paragraph">運用というと、サーバへログインしてコマンドを実行する、ジョブを起動する、ログを見る、といった技術作業を想像しやすいかもしれません。</p>


<p class="wp-block-paragraph">実際の運用では、その前後に作業申請、承認、関係者への連絡、実施可否判断、証跡取得、異常時のエスカレーションなどがあります。</p>


<p class="wp-block-paragraph">運用テストでは、たとえば次のような観点を確認します。</p>


<ul class="wp-block-list">
	<li>日次・月次・年次ジョブが前提条件と順序を含めて実行できるか</li>


	<li>外部システムから受領したデータを所定の手順で取り込めるか</li>


	<li>ジョブ異常や監視アラートを運用担当者が検知し、一次切り分けできるか</li>


	<li>異常終了後のリスタートポイントと復旧手順が決まっているか</li>


	<li>バックアップ取得だけでなく、実際にリストアできるか</li>


	<li>定常・臨時作業の申請、承認、実施、証跡取得まで流れるか</li>


	<li>障害時のエスカレーション先と判断者が明確になっているか</li>


	<li>夜間・休日でも連絡・承認・判断の流れが成立するか</li>
</ul>


<p class="wp-block-paragraph">たとえば、外部システムから月1回ファイルを受領し、夜間バッチで取り込む業務を考えます。</p>


<p class="wp-block-paragraph">「取込ジョブが正常終了する」だけでは、運用テストとして十分ではありません。</p>


<p class="wp-block-paragraph">外部システム側の処理完了を確認し、対象ファイルの到着と件数・形式を確認し、取込ジョブを起動する。結果を確認して後続処理へつなぎ、異常があれば運用担当者が検知して復旧する。</p>


<p class="wp-block-paragraph"><strong>個々の機能が動くだけでなく、その前後を含めた一連の運用が成立するか</strong>を確認します。</p>


<p class="wp-block-paragraph">特にジョブネットがあるシステムでは、<strong>日次、月次、年次の運用を疑似的に流し、処理順序や前提条件、異常時の復旧まで確認することが重要です。</strong></p>


<p class="wp-block-paragraph">運用テストを軽視すると、本番稼働後に「システムは動いているのに、運用が回らない」という問題が起きます。</p>
<p class="PDq2pG_selectionAnchorContainer" data-start="929" data-end="1060">運用テストで確認する内容は、テスト工程になってから考えるものではありません。ジョブ管理、監視、ログ、バックアップ・リストア、起動停止、開局・閉塞、運用日付管理など、<strong data-start="1011" data-end="1060">本番稼働後にどう運用するかを事前に設計しているからこそ、運用テストで成立性を確認できます。</strong></p>
<p data-start="1065" data-end="1116">運用設計で検討する項目や、運用設計書の構成については、以下の記事で目次サンプルとともに整理しています。</p>
<a href="https://sys-univ.com/dev/opedesign/" title="運用設計とは？運用設計書の目次サンプルと項目一覧｜システム基盤エンジニア視点" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img width="160" height="90" src="https://sys-univ.com/wp-content/uploads/2026/07/7a689f13e1c38b90b6e6b1584b241588-160x90.jpg" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" loading="lazy" decoding="async" srcset="https://sys-univ.com/wp-content/uploads/2026/07/7a689f13e1c38b90b6e6b1584b241588-160x90.jpg 160w, https://sys-univ.com/wp-content/uploads/2026/07/7a689f13e1c38b90b6e6b1584b241588-120x68.jpg 120w, https://sys-univ.com/wp-content/uploads/2026/07/7a689f13e1c38b90b6e6b1584b241588-320x180.jpg 320w, https://sys-univ.com/wp-content/uploads/2026/07/7a689f13e1c38b90b6e6b1584b241588-376x212.jpg 376w" sizes="auto, (max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">運用設計とは？運用設計書の目次サンプルと項目一覧｜システム基盤エンジニア視点</div><div class="blogcard-snippet internal-blogcard-snippet">運用設計とは何かをシステム基盤エンジニアの実務目線で解説します。運用設計書の目次サンプルと検討項目一覧を示し、監視・ログ・バックアップ・ジョブ管理、誰がやるのか、要件定義・基本設計との関係、処理方式設計との双方向連携を整理します。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img src="https://www.google.com/s2/favicons?domain=https://sys-univ.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" loading="lazy" decoding="async" /></div><div class="blogcard-domain internal-blogcard-domain">sys-univ.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2026.08.14</div></div></div></div></a>


<h3 class="wp-block-heading">移行：新システムへ切り替えるだけではない</h3>


<p class="wp-block-paragraph">移行は、旧システムから新システムへデータをコピーするだけの工程ではありません。</p>


<p class="wp-block-paragraph">本番切替では、データ移行以外にも多くの作業を決められた時間内に実施します。</p>


<ul class="wp-block-list">
	<li>旧システムのデータを新システムへ移行する</li>


	<li>ユーザー情報を登録・移行する</li>


	<li>権限を設定する</li>


	<li>外部システムとの接続先を切り替える</li>


	<li>DNSやネットワーク経路を切り替える</li>


	<li>ジョブを有効化する</li>


	<li>監視を開始する</li>


	<li>旧システムを停止する</li>


	<li>問い合わせ窓口や運用体制を新システムへ切り替える</li>
</ul>


<p class="wp-block-paragraph">移行の難しさは、こうした複数の作業を限られた時間で連携させる必要があり、失敗した場合の業務影響も大きいことにあります。</p>


<p class="wp-block-paragraph">たとえば、次のような問題が起こります。</p>


<ul class="wp-block-list">
	<li>データ移行に想定以上の時間がかかる</li>


	<li>移行前後で件数や金額が一致しない</li>


	<li>文字化けやコード変換の問題が発生する</li>


	<li>ユーザーや権限が正しく移行されていない</li>


	<li>外部システムとの接続が切り替わらない</li>


	<li>新システムで重大障害が見つかる</li>


	<li>切り戻し手順が成立しない</li>
</ul>


<p class="wp-block-paragraph">移行では、旧システムに蓄積されたデータそのものも大きなリスクになります。</p>


<p class="wp-block-paragraph">実際の現場では、古いシステムの日付項目に「昭和70年」のような存在しない日付が残っていることもあります。旧システムでは登録できていた値でも、新システムの入力チェックやDB制約では受け付けられないことがあります。</p>


<p class="wp-block-paragraph">この場合、移行前にデータを補正するのか、変換ルールを設けるのか、移行対象外にするのかを業務担当者と決めなければなりません。</p>


<p class="wp-block-paragraph">本番移行当日に初めて見つけるのでは遅いため、事前に実データを確認し、存在しない日付、必須項目の空欄、コード値の不整合、桁数オーバー、文字化け、移行前後の件数・金額差異などを洗い出します。</p>


<p class="wp-block-paragraph"><strong>移行とは、旧システムに残っている過去の運用、例外データ、入力ミス、暫定対応を、新システムでどう扱うかまで決める工程です。</strong></p>


<p class="wp-block-paragraph">設計書だけでなく、実際のデータを見る必要があります。</p>


<h3 class="wp-block-heading">本番稼働・運用保守：リリース後に設計の結果が見える</h3>


<p class="wp-block-paragraph">本番リリースは開発プロジェクトの大きな節目ですが、システムそのものにとっては運用の開始点です。</p>


<p class="wp-block-paragraph">本番環境では、テスト環境では再現できなかったことが起きます。想定以上の利用者がアクセスする、データ量が増える、外部システムの応答が遅れる、監視アラートが多発する、夜間バッチが長時間化するといった事象です。</p>


<p class="wp-block-paragraph">本番稼働直後には初期流動期間を設け、通常より厚い体制で監視、問い合わせ、障害対応を行うことがあります。</p>


<p class="wp-block-paragraph">その後は運用保守へ移ります。</p>


<p class="wp-block-paragraph">運用保守では、障害対応、問い合わせ対応、監視、バックアップ・ジョブ確認、パッチ適用、証明書更新、権限変更、性能監視、セキュリティ対応、小規模改修などを継続して行います。</p>


<h3 class="wp-block-heading">「問題なく動いている」ことを説明できるようにする</h3>


<p class="wp-block-paragraph">運用では、単にシステムが停止していなければよいわけではありません。</p>


<p class="wp-block-paragraph">月次や週次の運用報告では、システム稼働率、障害件数、アラート件数、バックアップ結果、ジョブ結果、外部データ取込状況、CPU・メモリ・ディスク使用率、問い合わせ件数などを確認します。</p>


<p class="wp-block-paragraph">「今月も問題ありませんでした」と口頭で伝えるだけではなく、<strong>SLAを満たしていることや、システムが正常に運用されていることを数字と記録で示す</strong>必要があります。</p>


<p class="wp-block-paragraph">運用保守には、システムを動かすだけでなく、正常に動いていることを説明できる状態を維持する役割もあります。</p>


<h3 class="wp-block-heading">キャパシティ管理で将来の変化を見る</h3>


<p class="wp-block-paragraph">運用中は、CPU、メモリ、ディスク、ネットワーク、DB接続数などの利用状況を継続的に確認します。</p>


<p class="wp-block-paragraph">リソース使用率が増え続けていれば、将来的な性能不足を予測して増強を検討します。クラウド環境でCPUやメモリが長期間ほとんど使われていないのであれば、インスタンスタイプや台数、稼働時間を見直す余地があります。</p>


<p class="wp-block-paragraph">本番運用で得られた実績は、次の更改や設計変更の重要な入力情報になります。</p>


<p class="wp-block-paragraph"><strong>運用保守は設計品質の答え合わせであり、同時にシステムを継続的に改善していく工程です。</strong></p>


<h2 class="wp-block-heading">工程をまたいで見るための3つの視点</h2>


<p class="wp-block-paragraph">ここまで各工程を見てきましたが、個々の作業だけを覚えても、プロジェクト全体の動きは見えにくいままです。</p>


<p class="wp-block-paragraph">工程同士のつながりを見るために、次の3つを意識すると整理しやすくなります。</p>


<h3 class="wp-block-heading">1. 今どの工程で、何を決めるべきかを見る</h3>


<p class="wp-block-paragraph">要件定義、基本設計、詳細設計、構築、テスト、移行、運用では、判断すべき内容が違います。</p>


<p class="wp-block-paragraph">会議や設計書を見るときに、「これはどの工程で、何を決めるための話なのか」を意識すると、プロジェクト全体の中で自分の作業を位置づけやすくなります。</p>


<h3 class="wp-block-heading">2. 自分の担当領域だけで完結させない</h3>


<p class="wp-block-paragraph">アプリケーションの要件は基盤へ影響し、基盤の制約はアプリケーションへ影響します。DB、ネットワーク、運用、外部システムも同じです。</p>


<p class="wp-block-paragraph">すべての専門技術を自分で実装できる必要はありません。</p>


<p class="wp-block-paragraph">重要なのは、<strong>自分の設計や変更が、隣の領域に何を要求するのかを見ること</strong>です。</p>


<h3 class="wp-block-heading">3. 「動くか」ではなく「本番で使えるか」を考える</h3>


<p class="wp-block-paragraph">機能が動いても、性能が出ない、障害から復旧できない、バックアップから戻せない、運用担当者が対応できないのであれば、本番システムとしては不十分です。</p>


<p class="wp-block-paragraph">設計やテストで迷ったときは、</p>
<p><strong>「この状態で実際の業務を継続できるか」</strong></p>
<p>と考えると、見るべき論点が見えやすくなります。</p>


<h2 class="wp-block-heading">まとめ：工程をまたいで見ると、手戻りが起きる理由が分かる</h2>


<p class="wp-block-paragraph">システム開発は、要件定義、設計、開発・構築、テスト、移行、運用保守という工程に分けて進みます。</p>


<p class="wp-block-paragraph">各工程が独立しているわけではありません。</p>


<p class="wp-block-paragraph">要件定義で曖昧だった条件は設計で判断に迷い、設計で残した抜けはテストで不具合や手戻りとして表面化します。移行や運用を十分に考えずに作ったシステムは、本番切替や稼働後に問題を残します。</p>


<p class="wp-block-paragraph">逆に、前工程で決めた内容が次の工程へ正しく引き継がれ、アプリケーション、システム基盤、DB、ネットワーク、運用などの各領域がつながっていれば、問題を早い段階で見つけやすくなります。</p>


<p class="wp-block-paragraph">すべての技術を一人で深く理解する必要はありません。</p>


<p class="wp-block-paragraph">まずは、<strong>いま何を決めているのか、その判断が次の工程や別の担当領域にどう影響するのかを見ること</strong>が重要です。</p>


<p class="wp-block-paragraph">工程同士のつながりが見えるようになると、会議、設計書、テスト、移行、運用で行っていることが一本の線としてつながります。</p>


<p class="wp-block-paragraph">それが、システム開発を「自分の担当作業」ではなく、<strong>プロジェクト全体として理解するための土台</strong>になります。</p>


<p class="wp-block-heading"><strong><span style="font-size: 20px;">関連記事</span></strong></p>


<p class="wp-block-paragraph">システム開発の各工程や設計・テスト・運用に関する記事は、以下のカテゴリにまとめています。</p>
<a href="https://sys-univ.com/category/dev/" title="システム開発" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img src="https://sys-univ.com/wp-content/themes/cocoon-master/images/no-image-160.png" alt="" class=" internal-blogcard-thumb-image" width="160" height="90" loading="lazy" decoding="async" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">システム開発</div><div class="blogcard-snippet internal-blogcard-snippet"><p>システム開発に関する開発プロセス、プロジェクトマネージメントの解説</p>
</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img src="https://www.google.com/s2/favicons?domain=https://sys-univ.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" loading="lazy" decoding="async" /></div><div class="blogcard-domain internal-blogcard-domain">sys-univ.com</div></div></div></div></a>
]]></content:encoded>
					
					<wfw:commentRss>https://sys-univ.com/dev/system-dev-overview-2/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>RDS for OracleのDBリンクは暗号化されているのか｜KMS暗号化とOracle Net通信は別物</title>
		<link>https://sys-univ.com/tec/rds-oracle-dblink-encryption/</link>
					<comments>https://sys-univ.com/tec/rds-oracle-dblink-encryption/#respond</comments>
		
		<dc:creator><![CDATA[ナギ]]></dc:creator>
		<pubDate>Tue, 25 Aug 2026 01:50:26 +0000</pubDate>
				<category><![CDATA[AWS]]></category>
		<category><![CDATA[テクノロジー]]></category>
		<guid isPermaLink="false">https://sys-univ.com/?p=3215</guid>

					<description><![CDATA[はじめに ある異なるAWSアカウントにある2台のRDS for OracleをDatabase Link（以下、DBリンク）で接続する構成を検討していたときの話です。 一方はAWS KMSによるストレージ暗号化あり、もう [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph"><strong>はじめに</strong></p>
<p>ある異なるAWSアカウントにある2台のRDS for OracleをDatabase Link（以下、DBリンク）で接続する構成を検討していたときの話です。</p>


<p class="wp-block-paragraph">一方はAWS KMSによるストレージ暗号化あり、もう一方は暗号化なし。</p>


<p class="wp-block-paragraph">注：本記事では、<strong data-start="571" data-end="615">KMS暗号化ありのRDS AをDBリンク元、暗号化なしのRDS BをDBリンク先</strong>として説明します。NNEではDBリンク元とDBリンク先で設定するパラメータが異なるためです。</p>

<div id="attachment_3220" style="width: 510px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-3220" class="wp-image-3220 size-medium" src="https://sys-univ.com/wp-content/uploads/2026/08/23552a73b1be90387fdff6aba0e64c7c-500x354.png" alt="" width="500" height="354" srcset="https://sys-univ.com/wp-content/uploads/2026/08/23552a73b1be90387fdff6aba0e64c7c-500x354.png 500w, https://sys-univ.com/wp-content/uploads/2026/08/23552a73b1be90387fdff6aba0e64c7c-800x566.png 800w, https://sys-univ.com/wp-content/uploads/2026/08/23552a73b1be90387fdff6aba0e64c7c-300x212.png 300w, https://sys-univ.com/wp-content/uploads/2026/08/23552a73b1be90387fdff6aba0e64c7c-768x543.png 768w, https://sys-univ.com/wp-content/uploads/2026/08/23552a73b1be90387fdff6aba0e64c7c.png 1491w" sizes="auto, (max-width: 500px) 100vw, 500px" /><p id="caption-attachment-3220" class="wp-caption-text">クロスアカウントRDS for OracleのDBリンク構成</p></div>



<p class="wp-block-paragraph">つまり、A側に作成したDBリンクからBへ接続します。</p>


<p class="wp-block-paragraph">ここでいう「DBリンクの方向」は<strong>接続を開始する方向</strong>です。AからBの表をSELECTすれば結果データはBからAへ返るため、DBリンクの向きとデータが流れる向きは同じとは限りません。</p>


<p class="wp-block-paragraph">最初に疑問だったのは、</p>


<p class="wp-block-paragraph"><strong>「KMSで暗号化されたRDSから、暗号化されていないRDSへDBリンクを張って問題ないのか」</strong></p>


<p class="wp-block-paragraph">ということでした。</p>


<p class="wp-block-paragraph">問い合わせでは「データが文字化けしないか」という表現も使いました。しかし今振り返ると、本当に確認したかったのは文字コードの問題ではありません。</p>


<p class="wp-block-paragraph"><strong>ストレージ上で暗号化されたデータがOracle Databaseからどう見え、DBリンクではどの状態で扱われるのか</strong></p>


<p class="wp-block-paragraph">という疑問でした。</p>


<p class="wp-block-paragraph">さらに、</p>


<ul class="wp-block-list">
	<li>相手AWSアカウントへKMSキーを共有する必要があるのか</li>


	<li>別VPC間でDBリンクを成立させるには何が必要なのか</li>
</ul>


<p class="wp-block-paragraph">も確認しました。</p>


<p class="wp-block-paragraph">このとき印象的だったのが、AWSサポートから最初に、</p>


<p class="wp-block-paragraph"><strong>「今回の暗号化とは、RDSのストレージボリューム暗号化という理解でよいか」</strong></p>


<p class="wp-block-paragraph">という趣旨の確認が入ったことです。</p>


<p class="wp-block-paragraph">この確認が、今回の記事の本質です。</p>


<p class="wp-block-paragraph">RDS for Oracleで「暗号化」と言っても、実際には複数のレイヤーがあります。</p>


<ul class="wp-block-list">
	<li>AWS KMSによるRDSストレージ暗号化</li>


	<li>Oracle Transparent Data Encryption（TDE）</li>


	<li>Oracle NetのNNE／SSL/TLS</li>


	<li>AWSネットワーク基盤側の通信暗号化</li>
</ul>


<p class="wp-block-paragraph"><strong>「RDSが暗号化されている」ことと「DBリンク通信が暗号化されている」ことは別の話です。</strong></p>


<p class="wp-block-paragraph">本記事では、2026年8月時点のAWS公式仕様も確認しながら、この違いを整理します。</p>


<h2 class="wp-block-heading">結論｜KMSによるRDS暗号化はDBリンクへ引き継がれない</h2>


<p class="wp-block-paragraph">結論から言えば、AWS KMSによるRDSストレージ暗号化が原因で、DBリンクのSELECT結果が暗号文になることはありません。</p>


<p class="wp-block-paragraph">そもそも、DBリンク先のOracle Databaseがリンク元RDSのKMSキーを使ってデータを復号する仕組みではありません。</p>


<p class="wp-block-paragraph">AWSサポートからも、KMSによる暗号化はストレージレイヤーで処理され、ストレージから読み出す際には透過的に復号されるため、<strong>ストレージ暗号化を原因として</strong>DBリンクのデータが文字化けすることはない、という回答を得ています。</p>


<p class="wp-block-paragraph">この「ストレージ暗号化を原因として」という限定も重要です。文字コードやOracle Netなど、別の原因による問題まで否定しているわけではありません。</p>


<p class="wp-block-paragraph">AWS公式でも、RDSの保存時暗号化は基盤ストレージ、ログ、自動バックアップ、Read Replica、スナップショットなどを対象とし、RDSが復号を透過的に処理すると説明されています。</p>
<p>概念的には次の関係です。</p>


<div id="attachment_3222" style="width: 510px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-3222" class="wp-image-3222 size-medium" src="https://sys-univ.com/wp-content/uploads/2026/08/9bc1f9d12c1a3c91b326451dc0773bc2-500x375.png" alt="" width="500" height="375" srcset="https://sys-univ.com/wp-content/uploads/2026/08/9bc1f9d12c1a3c91b326451dc0773bc2-500x375.png 500w, https://sys-univ.com/wp-content/uploads/2026/08/9bc1f9d12c1a3c91b326451dc0773bc2-800x600.png 800w, https://sys-univ.com/wp-content/uploads/2026/08/9bc1f9d12c1a3c91b326451dc0773bc2-300x225.png 300w, https://sys-univ.com/wp-content/uploads/2026/08/9bc1f9d12c1a3c91b326451dc0773bc2-768x576.png 768w, https://sys-univ.com/wp-content/uploads/2026/08/9bc1f9d12c1a3c91b326451dc0773bc2.png 1448w" sizes="auto, (max-width: 500px) 100vw, 500px" /><p id="caption-attachment-3222" class="wp-caption-text">KMSによるRDS暗号化とOracle Database／DBリンクの関係</p></div>



<p class="wp-block-paragraph">Oracle Database自身が、KMSで暗号化されたストレージブロックを受け取ってKMSキーで復号しているわけではありません。</p>


<p class="wp-block-paragraph">したがって、<strong>DBリンク接続のためにA側のKMSキーをB側AWSアカウントへ共有する必要もありません。</strong></p>


<p class="wp-block-paragraph">また、AからDBリンク経由でBへデータを書き込んだ場合、A側のストレージ暗号化属性がBへ引き継がれるわけでもありません。Bへ保存されたデータを暗号化するかどうかは、B自身のRDS暗号化設定で決まります。</p>


<p class="wp-block-paragraph">なお、既存の非暗号化RDS DBインスタンスを、そのまま後から暗号化済みに変更することはできません。暗号化したスナップショットコピーを作成し、そこから新しいDBインスタンスをリストアする必要があります。</p>


<p class="wp-block-paragraph">つまり、</p>


<p class="wp-block-paragraph"><strong>「必要になったら後から暗号化をONにすればよい」</strong></p>


<p class="wp-block-paragraph">という設計にはできません。</p>


<h2 class="wp-block-heading">RDS for Oracleで分けて考える4つの暗号化レイヤー</h2>


<p class="wp-block-paragraph">今回の話は、次の4レイヤーに分けると整理できます。</p>


<figure class="wp-block-table">
<table class="has-fixed-layout">
<thead>
<tr>
<th>レイヤー</th>
<th>何を保護するか</th>
<th>主な仕組み</th>
<th>DBリンクとの関係</th>
<th>設計上のポイント</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>RDSストレージ</strong></td>
<td>ストレージ、ログ、バックアップ、スナップショット等</td>
<td>AWS KMSを利用したRDS暗号化</td>
<td>KMSキーや暗号化属性はDBリンク先へ伝播しない</td>
<td>encryption at rest。Oracle Net通信とは別</td>
</tr>
<tr>
<td><strong>Oracle Database</strong></td>
<td>Oracleが管理する保存データ</td>
<td>Oracle TDE</td>
<td>復号後の論理データがOracle Netへ渡る</td>
<td>Enterprise Edition＋BYOL。KMS暗号化とは別レイヤー</td>
</tr>
<tr>
<td><strong>Oracle Net</strong></td>
<td>DB間・クライアント間の通信</td>
<td>NNEまたはSSL/TLS</td>
<td><strong>DBリンク通信そのものをOracleレイヤーで暗号化する</strong></td>
<td>NNEとSSL/TLSは同一DBインスタンスで併用不可</td>
</tr>
<tr>
<td><strong>AWSネットワーク基盤</strong></td>
<td>AWS基盤を流れる通信</td>
<td>Nitro、VPC Encryption Controls等</td>
<td>DBリンク通信も下位レイヤーで暗号化される場合がある</td>
<td>基盤側とOracle Net側の暗号化状態は別であり、一方の証跡だけでもう一方を証明・否定できない</td>
</tr>
</tbody>
</table>
</figure>


<p class="wp-block-paragraph">ポイントは、<strong>どれか一つを有効にすれば他のレイヤーまで暗号化されるわけではない</strong>ことです。</p>


<h2 class="wp-block-heading">KMS暗号化はどこまでの話なのか｜TDEとの違いとKMSキー共有</h2>


<h3 class="wp-block-heading">Oracle TDEはKMS暗号化とは別物</h3>


<p class="wp-block-paragraph">Oracle Transparent Data Encryption（TDE）は、Oracle Database側でデータを暗号化する仕組みです。</p>


<p class="wp-block-paragraph">RDSのKMS暗号化がOracleより下のストレージレイヤーで処理されるのに対し、TDEではOracle Databaseがデータを書き込む前に暗号化し、読み出す際に復号します。</p>


<p class="wp-block-paragraph">RDS for OracleでTDEを利用できるのはOracle Enterprise Edition＋BYOLです。Oracle WalletとTDE master keyはAmazon RDSが管理します。</p>


<p class="wp-block-paragraph">TDEには設計時に注意すべき制約があります。</p>


<p class="wp-block-paragraph">AWSではRDS for OracleのTDEをpermanent／persistentなオプションとして扱っており、一度有効にすると無効化できず、TDEを含まないOption Groupへ変更することもできません。<strong>TDEを利用するDBスナップショットは共有できません。</strong></p>


<p class="wp-block-paragraph">つまり、TDEは後から簡単に外せるオプションではありません。</p>
<p>RDS for Oracleには、TDE以外にもオンプレOracleの前提をそのまま持ち込めない制約があります。詳しくは「RDS for Oracleを採用したら、オンプレ運用の前提が通用しなかった」で整理しています。</p>
<a href="https://sys-univ.com/aws/rdsforora/" title="RDS for Oracleを採用したら、オンプレ運用の前提が通用しなかった｜開発中に見えた設計ギャップと代替アプローチ" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img width="160" height="90" src="https://sys-univ.com/wp-content/uploads/2026/07/b87f444ed45d88e81401b2fbbfe2b0c1-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" loading="lazy" decoding="async" srcset="https://sys-univ.com/wp-content/uploads/2026/07/b87f444ed45d88e81401b2fbbfe2b0c1-160x90.png 160w, https://sys-univ.com/wp-content/uploads/2026/07/b87f444ed45d88e81401b2fbbfe2b0c1-120x68.png 120w, https://sys-univ.com/wp-content/uploads/2026/07/b87f444ed45d88e81401b2fbbfe2b0c1-320x180.png 320w, https://sys-univ.com/wp-content/uploads/2026/07/b87f444ed45d88e81401b2fbbfe2b0c1-376x212.png 376w" sizes="auto, (max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">RDS for Oracleを採用したら、オンプレ運用の前提が通用しなかった｜開発中に見えた設計ギャップと代替アプローチ</div><div class="blogcard-snippet internal-blogcard-snippet">RDS for Oracleではオンプレ運用の前提が通用しない。Storage-Full、アーカイブログ、SSH不可など、開発中に見えた9つの設計ギャップと代替アプローチを整理します。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img src="https://www.google.com/s2/favicons?domain=https://sys-univ.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" loading="lazy" decoding="async" /></div><div class="blogcard-domain internal-blogcard-domain">sys-univ.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2026.08.30</div></div></div></div></a>


<p class="wp-block-paragraph">また、TDEで保護されたデータも、暗号文のままDBリンクへ流れるわけではありません。Oracleが論理データへ復号した後、Oracle Netへ渡されます。</p>


<p class="wp-block-paragraph">その先の通信を暗号化するのはNNEまたはSSL/TLSです。</p>


<p class="wp-block-paragraph"><strong>RDSのKMS暗号化 ≠ Oracle TDE ≠ DBリンク通信の暗号化</strong></p>


<p class="wp-block-paragraph">という関係です。</p>


<h3 class="wp-block-heading">DBリンク接続ではKMSキー共有は不要</h3>


<p class="wp-block-paragraph">DBリンクでは、各RDSの保存時暗号化は各RDS内で処理されます。</p>


<p class="wp-block-paragraph">A側OracleがB側のKMSキーを使うわけでも、B側OracleがA側のKMSキーを使うわけでもありません。</p>


<p class="wp-block-paragraph">したがって、<strong>クロスアカウントDBリンクのためにKMSキーを共有する必要はありません。</strong></p>


<p class="wp-block-paragraph">一方、暗号化されたDBスナップショットそのものを別AWSアカウントへ共有する場合は、KMSキーへのクロスアカウントアクセスが関係します。</p>


<p class="wp-block-paragraph">AWSアカウントのデフォルトKMSキーで暗号化されたスナップショットはそのまま共有できません。AWS公式では、対象アカウントへアクセスを許可したcustomer managed keyを用意し、そのキーでスナップショットをコピーして共有し、共有先でも自アカウントのKMSキーを指定してコピーする手順が案内されています。</p>


<p class="wp-block-paragraph">DBリンクとスナップショット共有では、</p>


<p class="wp-block-paragraph"><strong>論理データへアクセスするのか、暗号化されたAWSリソース自体を共有するのか</strong></p>


<p class="wp-block-paragraph">が違います。</p>


<h2 class="wp-block-heading">別AWSアカウントのRDS間でDBリンクを成立させる条件</h2>


<p class="wp-block-paragraph">KMSキー共有が不要でも、別AWSアカウントのRDSへそのままDBリンクを張れるわけではありません。</p>


<p class="wp-block-paragraph">先に、AからBへOracle Netで到達できるネットワークを作る必要があります。</p>


<p class="wp-block-paragraph">確認順序は、</p>


<p class="wp-block-paragraph"><strong>VPC間接続 → Route → Security Group／NACL → DNS → Oracle Net → Database Link</strong></p>


<p class="wp-block-paragraph">と考えると分かりやすいです。</p>


<p class="wp-block-paragraph">AWSサポートからはVPC Peeringが例示されました。AWS公式のRDS for Oracle DBリンク手順でも、同一VPCまたはピア接続されたVPC間で、有効なルート、ACL、Security Group、名前解決を確認するよう案内されています。</p>


<p class="wp-block-paragraph">ただし、Database LinkというOracle機能自体がVPC Peeringを要求しているわけではありません。</p>


<p class="wp-block-paragraph">本質的な要件は、<strong>DBリンク元からDBリンク先のRDS endpointとOracle Listenerポートへ到達できること</strong>です。</p>


<p class="wp-block-paragraph">本記事ではAをDBリンク元としているため、基本となる通信方向は、</p>


<ul class="wp-block-list">
	<li>A側：Bへのoutbound</li>


	<li>B側：AからOracle Listenerポートへのinbound</li>
</ul>


<p class="wp-block-paragraph">です。</p>


<p class="wp-block-paragraph">Security Groupはstatefulなので、戻り通信のためだけに対称のinboundルールを追加する必要はありません。一方、Network ACLを独自に制限している場合はstatelessなので、復路も確認します。</p>


<p class="wp-block-paragraph">接続先にはIPアドレスを固定せず、RDS endpointのDNS名を使用します。RDS自身も、基盤IPはフェイルオーバー等で変わり得るため、DNS名を利用することを推奨しています。</p>


<p class="wp-block-paragraph">別VPCの場合はDNSも確認します。</p>


<p class="wp-block-paragraph">VPC Peering越しでAmazon提供DNSを利用する場合は、VPC側の<code>enableDnsSupport</code>と、Peering接続側のDNS解決サポートを確認します。カスタムDNSを利用している場合は、そのDNSサーバーがDBリンク先を解決できる必要があります。</p>


<p class="wp-block-paragraph">つまり、</p>


<p class="wp-block-paragraph"><strong>Routeがある／SGが通る／DNSが引ける</strong></p>


<p class="wp-block-paragraph">を分けて確認する必要があります。</p>


<h2 class="wp-block-heading">DBリンク通信の暗号化はKMSとは別に構成する｜NNEの設計</h2>


<p class="wp-block-paragraph">DBリンクのOracle Net通信を暗号化する方法の一つがNative Network Encryption（NNE）です。</p>


<p class="wp-block-paragraph">RDS for Oracleでは、Option Groupへ<code>NATIVE_NETWORK_ENCRYPTION</code>を追加して利用します。NNEはOracle Databaseの全エディションで利用できます。</p>


<p class="wp-block-paragraph">ここで重要なのは、</p>


<p class="wp-block-paragraph"><strong>NNEオプションを追加しただけで「暗号化を必須にした」と考えてはいけない</strong></p>


<p class="wp-block-paragraph">ことです。</p>


<h3 class="wp-block-heading">DBリンク元RDSはOracle Net clientになる</h3>


<p class="wp-block-paragraph">本記事の構成では、</p>


<ul class="wp-block-list">
	<li>A：DBリンク元 → Oracle Net client</li>


	<li>B：DBリンク先 → Oracle Net server</li>
</ul>


<p class="wp-block-paragraph">です。</p>


<p class="wp-block-paragraph">AWS公式も、DBインスタンスがDatabase Linkを利用するとき、そのDBインスタンスはクライアントとして動作すると明記しています。</p>


<p class="wp-block-paragraph">したがって主に確認するのは、</p>


<p class="wp-block-paragraph">A側：</p>


<p class="wp-block-paragraph"><code>SQLNET.*CLIENT</code></p>


<p class="wp-block-paragraph">B側：</p>


<p class="wp-block-paragraph"><code>SQLNET.*SERVER</code></p>


<p class="wp-block-paragraph">です。</p>


<h3 class="wp-block-heading">Requestedは「必須」ではない</h3>


<p class="wp-block-paragraph">RDSのNNE Optionでは、<code>SQLNET.ENCRYPTION_CLIENT</code>と<code>SQLNET.ENCRYPTION_SERVER</code>の既定値はいずれも<code>Requested</code>です。</p>


<p class="wp-block-paragraph">ただし、この既定値は<strong>NNEオプションを追加した後の話</strong>です。NNEオプションを追加していないRDSが、最初からNNEで通信しているという意味ではありません。</p>


<p class="wp-block-paragraph">また、<code>Requested</code>だから暗号化されないという意味でもありません。</p>


<p class="wp-block-paragraph">CLIENT／SERVERともに<code>Requested</code>で双方がNNEを利用できれば暗号化は成立します。</p>


<p class="wp-block-paragraph">問題は、<strong>相手が暗号化に対応しなくても、暗号化なしで接続できる場合がある</strong>ことです。</p>


<p class="wp-block-paragraph">つまり、</p>


<p class="wp-block-paragraph"><strong>「暗号化されることがある」と「暗号化を必須条件として保証する」は別です。</strong></p>


<p class="wp-block-paragraph">AからBへのDBリンクについて暗号化を必須にしたい場合、A側を例えば、</p>


<p class="wp-block-paragraph"><code>SQLNET.ENCRYPTION_CLIENT=Required</code></p>


<p class="wp-block-paragraph">とします。</p>


<p class="wp-block-paragraph">B側が<code>Requested</code>でも、接続が成立すれば暗号化されます。暗号化条件を満たせなければ接続自体が失敗します。</p>


<p class="wp-block-paragraph">一方、B側を、</p>


<p class="wp-block-paragraph"><code>SQLNET.ENCRYPTION_SERVER=Required</code></p>


<p class="wp-block-paragraph">とすると、DBリンクだけでなくBへ接続する他のOracle Netクライアントにも暗号化を要求します。</p>


<p class="wp-block-paragraph">したがって、</p>


<p class="wp-block-paragraph"><strong>DBリンクだけを暗号化したいのか、RDSへの全接続を暗号化したいのか</strong></p>


<p class="wp-block-paragraph">を分けて設計します。</p>


<h3 class="wp-block-heading">Requiredだけでなく暗号方式も確認する</h3>


<p class="wp-block-paragraph">さらに注意したいのが暗号アルゴリズムです。</p>


<p class="wp-block-paragraph">Oracle Database 19cなどのRDS NNE設定では、既定候補にAESだけでなくRC4、3DES、DESも含まれ、既定リストは<code>RC4_256</code>から始まります。AWSはDES、3DES、RC4をsecure encryption methodとは扱っていません。</p>


<p class="wp-block-paragraph">そのため、</p>


<p class="wp-block-paragraph"><code>SQLNET.ENCRYPTION_CLIENT=Required</code></p>


<p class="wp-block-paragraph">だけでは、使用する暗号方式まで安全なものへ限定したことにはなりません。</p>


<p class="wp-block-paragraph">例えばAES256へ限定する設計なら、</p>


<p class="wp-block-paragraph">A側：</p>


<p class="wp-block-paragraph"><code>SQLNET.ENCRYPTION_CLIENT=Required</code><br />
<code>SQLNET.ENCRYPTION_TYPES_CLIENT=AES256</code></p>


<p class="wp-block-paragraph">B側：</p>


<p class="wp-block-paragraph"><code>SQLNET.ENCRYPTION_SERVER=Requested</code> または <code>Required</code><br />
<code>SQLNET.ENCRYPTION_TYPES_SERVER=AES256</code></p>


<p class="wp-block-paragraph">のように、CLIENT／SERVER双方で共通する方式を設定します。</p>


<p class="wp-block-paragraph"><code>SQLNET.ALLOW_WEAK_CRYPTO</code>と<code>SQLNET.ALLOW_WEAK_CRYPTO_CLIENTS</code>はいずれも既定値が<code>TRUE</code>です。弱い方式を禁止する場合はこちらも確認しますが、既存クライアントのパッチレベルや互換性へ影響するため、接続元を確認した上で変更する必要があります。</p>


<h3 class="wp-block-heading">暗号化と整合性チェックは別設定</h3>


<p class="wp-block-paragraph">NNEでは、通信の暗号化とは別にデータ改ざんを検知するチェックサムも設定できます。</p>


<p class="wp-block-paragraph"><code>SQLNET.ENCRYPTION_*</code>を<code>Required</code>にしても、<code>SQLNET.CRYPTO_CHECKSUM_*</code>が自動的に<code>Required</code>になるわけではありません。</p>


<p class="wp-block-paragraph"><strong>盗聴対策と改ざん検知は別々に設計する</strong>必要があります。</p>


<h3 class="wp-block-heading">「暗号化されているか」だけでなく方式まで確認する</h3>


<p class="wp-block-paragraph">設定後は<code>V$SESSION_CONNECT_INFO</code>を確認し、実際にネゴシエーションされた暗号方式を確認できます。</p>


<pre class="wp-block-code"><code>SELECT NETWORK_SERVICE_BANNER
FROM V$SESSION_CONNECT_INFO
WHERE SID = SYS_CONTEXT('USERENV', 'SID');
</code></pre>


<p class="wp-block-paragraph">NNEが有効なら<code>encryption service adapter</code>を含む行が表示され、<code>AES256</code>など実際にネゴシエーションされた方式を確認できます。</p>


<p class="wp-block-paragraph">見るべきなのは、</p>


<p class="wp-block-paragraph"><strong>「暗号化されているか」だけではなく「何で暗号化されているか」</strong></p>


<p class="wp-block-paragraph">です。</p>


<p class="wp-block-paragraph">既定候補にはRC4_256も含まれるため、AES256など設計時に想定した方式が実際に使われているところまで確認する必要があります。</p>


<p class="wp-block-paragraph">なお、DBリンクによって生成されたリモートセッションをどのように特定し、証跡化するかについては、DBリンク固有の実機確認が必要です。</p>


<h2 class="wp-block-heading">RDS間DBリンクはSSL/TLSでも暗号化できる</h2>


<p class="wp-block-paragraph">DBリンクの暗号化方式はNNEだけではありません。</p>


<p class="wp-block-paragraph">AWS公式には、<strong>Oracle DBインスタンス間では、各インスタンスにOracle SSLオプションが構成されていれば、SSL/TLS endpoint経由でDatabase Linkを確立でき、追加構成は不要</strong>と明記されています。</p>


<p class="wp-block-paragraph">つまり、本記事のA→B構成でも、両RDS for OracleへSSLオプションを設定することでDBリンク通信をTLS化できます。</p>


<h3 class="wp-block-heading">SSLオプションを入れただけでは全通信TLSにはならない</h3>


<p class="wp-block-paragraph">RDS for Oracleでは、SSL接続用に通常接続とは別の第2ポートを利用します。</p>


<p class="wp-block-paragraph">そのため、</p>


<ul class="wp-block-list">
	<li>通常ポート：非SSL通信</li>


	<li>SSLポート：SSL/TLS通信</li>
</ul>


<p class="wp-block-paragraph">を同じDBインスタンスで併存できます。</p>


<p class="wp-block-paragraph">つまり、<strong>SSLオプションを追加しただけでは、そのRDSへの全通信がTLS必須になるわけではありません。</strong></p>


<p class="wp-block-paragraph">TLSを必須にする場合は、SSL/TLS endpointを利用することに加えて、Security Group等で非SSL経路を許可していないかも確認する必要があります。</p>


<p class="wp-block-paragraph">NNEはOracle Netのネゴシエーションで<code>Required</code>を使って強制し、TLSは<strong>ポートと接続経路で強制する</strong>という違いがあります。</p>


<h3 class="wp-block-heading">TLSバージョンとCipher Suiteも確認する</h3>


<p class="wp-block-paragraph">2026年8月時点で、RDS for Oracleの19c／21cはTLS 1.0と1.2をサポートしています。</p>


<p class="wp-block-paragraph">特に既存のOracle SSLオプションでは、<code>SQLNET.SSL_VERSION</code>が自動的に<code>1.0</code>へ設定されています。既存環境では「SSLを使っている＝TLS 1.2」と判断せず、設定値を確認する必要があります。26aiではTLS 1.2のみがサポートされています。</p>


<p class="wp-block-paragraph">Cipher Suiteも同様です。</p>


<p class="wp-block-paragraph">19c／21cの既定Cipher Suiteである<code>SSL_RSA_WITH_AES_256_CBC_SHA</code>はFIPS対応ですが、AWS公式表ではFedRAMP準拠ではありません。つまり、<strong>既定値のままで自分たちのセキュリティ要件を満たすとは限りません。</strong></p>


<p class="wp-block-paragraph">また、RDS for OracleではRSA証明書とECDSA証明書をサポートしており、<code>SQLNET.CIPHER_SUITE</code>へ指定する方式はDBインスタンスの証明書タイプと互換である必要があります。互換性のないCipher Suiteしか設定していないOption GroupはDBインスタンスへの関連付けに失敗します。</p>


<h3 class="wp-block-heading">NNEとSSL/TLSは併用できない</h3>


<p class="wp-block-paragraph">NNEとSSL/TLSは、同じRDS for Oracle DBインスタンスで併用できません。</p>


<p class="wp-block-paragraph">したがって、</p>


<p class="wp-block-paragraph"><strong>NNEで暗号化した上にTLSを重ねる</strong></p>


<p class="wp-block-paragraph">という構成にはできません。</p>


<figure class="wp-block-table">
<table class="has-fixed-layout">
<thead>
<tr>
<th>観点</th>
<th>NNE</th>
<th>SSL/TLS</th>
</tr>
</thead>
<tbody>
<tr>
<td>方式</td>
<td>Oracle独自</td>
<td>業界標準</td>
</tr>
<tr>
<td>証明書</td>
<td>不要</td>
<td>使用</td>
</tr>
<tr>
<td>DBリンクで利用</td>
<td>可能</td>
<td>可能</td>
</tr>
<tr>
<td>強制方法</td>
<td><code>Required</code>によるOracle Netネゴシエーション</td>
<td>SSLポートと接続経路</td>
</tr>
<tr>
<td>CLIENT／SERVER設定</td>
<td>区別あり</td>
<td>両RDSにSSLオプション</td>
</tr>
<tr>
<td>併用</td>
<td>TLSと併用不可</td>
<td>NNEと併用不可</td>
</tr>
</tbody>
</table>
</figure>


<p class="wp-block-paragraph">どちらを採用するかは、既存の接続方式、証明書管理、接続クライアント、セキュリティ基準から判断します。</p>


<p class="wp-block-paragraph">重要なのは、</p>


<p class="wp-block-paragraph"><strong>KMSによるRDS暗号化とは別に、Oracle Net通信の暗号化方式を選ぶ</strong></p>


<p class="wp-block-paragraph">ことです。</p>


<h2 class="wp-block-heading">AWS基盤側の通信暗号化とOracle Net暗号化は分けて考える</h2>


<p class="wp-block-paragraph">AWSネットワーク基盤側にも通信暗号化の仕組みがあります。</p>


<p class="wp-block-paragraph">Amazon RDSでは、一部のインスタンスタイプについてNitro Systemによるインスタンス間通信の自動暗号化が提供されています。ただし、対象インスタンスタイプ、同一Region、同一VPCまたはVPC Peering、Transit Gateway等の仮想ネットワークサービスを経由しないことなどの条件があります。</p>


<p class="wp-block-paragraph">RDS for Oracleでは、<strong>Oracleで利用可能なインスタンスクラスと、Nitroによる自動暗号化の対象一覧を別々に確認する必要があります。</strong></p>


<p class="wp-block-paragraph">例えば、RDS全体の自動暗号化対象一覧に含まれるM7g／R7gはRDS for Oracleの利用可能クラスには含まれていません。一方、RDS for Oracleで利用可能なM7i／R7i／M8i／R8iは、2026年8月時点の自動暗号化対象一覧には列挙されていません。</p>


<p class="wp-block-paragraph">したがって、<strong>「新しい世代だから自動的に暗号化される」とは判断できません。</strong></p>


<p class="wp-block-paragraph">さらに2025年11月にはVPC Encryption Controlsが追加され、AWS基盤側の転送時暗号化をMonitor／Enforceで監視・強制できるようになりました。RDS公式でも、Enforce VPCでは転送時暗号化をサポートするNitroベースのDBインスタンスのみ新規プロビジョニングできるとされています。既存VPCをEnforceへ移行する際は、まずMonitorで非準拠リソースを確認・是正する必要があります。</p>
<p>VPC Encryption ControlsのMonitor／Enforceの違い、Flow Logsの<code data-start="968" data-end="987">encryption-status</code>の読み方、ExclusionやTransit Gatewayを含むEnforce移行時の注意点は、「VPC Encryption Controlsとは｜Monitor／EnforceとFlow Logsの読み方」で整理しています。</p>
<a href="https://sys-univ.com/tec/vpc-encryption-controls/" title="VPC Encryption Controlsの落とし穴｜Flow Logsの暗号化判定とEnforce判定は別物" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img width="160" height="90" src="https://sys-univ.com/wp-content/uploads/2026/08/bdefc8469bee66f11e3530b7a3fa8b76-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" loading="lazy" decoding="async" srcset="https://sys-univ.com/wp-content/uploads/2026/08/bdefc8469bee66f11e3530b7a3fa8b76-160x90.png 160w, https://sys-univ.com/wp-content/uploads/2026/08/bdefc8469bee66f11e3530b7a3fa8b76-120x68.png 120w, https://sys-univ.com/wp-content/uploads/2026/08/bdefc8469bee66f11e3530b7a3fa8b76-320x180.png 320w, https://sys-univ.com/wp-content/uploads/2026/08/bdefc8469bee66f11e3530b7a3fa8b76-376x212.png 376w" sizes="auto, (max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">VPC Encryption Controlsの落とし穴｜Flow Logsの暗号化判定とEnforce判定は別物</div><div class="blogcard-snippet internal-blogcard-snippet">VPC Encryption Controlsでは、Flow Logsで暗号化と表示されてもEnforceで許可されるとは限りません。encryption-statusと準拠判定の違い、既存Flow Logsにフィールドが自動追加されない点、ExclusionやTGWの注意点をAWS公式仕様から整理します。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img src="https://www.google.com/s2/favicons?domain=https://sys-univ.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" loading="lazy" decoding="async" /></div><div class="blogcard-domain internal-blogcard-domain">sys-univ.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2026.08.27</div></div></div></div></a>


<p class="wp-block-paragraph">ただし、ここでDBリンクの記事として重要なのは、<strong>AWS基盤側の証跡とOracle Net側の証跡は同じではない</strong>ことです。</p>


<p class="wp-block-paragraph">VPC Flow Logsでは<code>encryption-status</code>として、</p>


<ul class="wp-block-list">
	<li><code>0</code>：not encrypted</li>


	<li><code>1</code>：nitro-encrypted</li>


	<li><code>2</code>：application-encrypted</li>


	<li><code>3</code>：両方</li>


	<li><code>-</code>：状態不明、またはVPC Encryption Controlsが無効</li>
</ul>


<p class="wp-block-paragraph">を記録できます。</p>


<p class="wp-block-paragraph">ただしAWSが<code>application-encrypted</code>として認識する通信は限定されています。interface endpointやgateway endpointについては、AWS自身が<strong>パケット内容ではなく使用ポートから暗号化状態を推定している</strong>と説明しています。</p>


<p class="wp-block-paragraph">したがって、</p>


<p class="wp-block-paragraph"><strong>Flow Logsが<code>1: nitro-encrypted</code>だから、Oracle NetもNNE/TLSで暗号化されている</strong></p>


<p class="wp-block-paragraph">とは言えません。</p>


<p class="wp-block-paragraph">逆に、Oracle NetをNNEで暗号化していても、Flow Logsがそれを<code>application-encrypted</code>として認識するとは限りません。Nitro暗号化も適用されない経路では、Flow Logs側で<code>0: not encrypted</code>と評価される可能性があります。</p>


<p class="wp-block-paragraph">つまり、</p>


<p class="wp-block-paragraph"><strong>一方のレイヤーの証跡だけで、もう一方の暗号化状態を証明も否定もできません。</strong></p>


<p class="wp-block-paragraph">VPC Flow Logsが答えるのは、</p>


<p class="wp-block-paragraph"><strong>「AWS基盤から見て、このフローをどの暗号化状態として扱っているか」</strong></p>


<p class="wp-block-paragraph">です。</p>


<p class="wp-block-paragraph">NNEで<code>V$SESSION_CONNECT_INFO</code>から確認するのは、</p>


<p class="wp-block-paragraph"><strong>「このOracle Netセッションで、どの暗号方式がネゴシエーションされたか」</strong></p>


<p class="wp-block-paragraph">です。</p>


<p class="wp-block-paragraph">対象も粒度も異なります。</p>


<h2 class="wp-block-heading">まとめ｜「暗号化されているか」ではなく「どのレイヤーか」で考える</h2>


<p class="wp-block-paragraph">今回の疑問は、</p>


<p class="wp-block-paragraph"><strong>KMSで暗号化したRDS for Oracleと、暗号化されていない別AWSアカウントのRDSをDBリンクで接続するとどうなるのか</strong></p>


<p class="wp-block-paragraph">というところから始まりました。</p>


<p class="wp-block-paragraph">結論は3つです。</p>


<ul class="wp-block-list">
	<li><strong>KMSによるRDS暗号化は保存時の暗号化であり、暗号化属性やKMSキーがDBリンク先へ伝播するわけではない</strong></li>


	<li><strong>DBリンクのOracle Net通信を暗号化するなら、NNEまたはSSL/TLSを別途設計する</strong></li>


	<li><strong>AWS基盤側の暗号化とOracle Net暗号化は別レイヤーであり、一方の証跡だけでもう一方を証明・否定できない</strong></li>
</ul>


<p class="wp-block-paragraph">設計時に確認するべきなのは、</p>


<p class="wp-block-paragraph"><strong>「暗号化されているか、いないか」</strong></p>


<p class="wp-block-paragraph">という二択ではありません。</p>


<p class="wp-block-paragraph"><strong>「どのデータを、どのレイヤーで、どの仕組みによって暗号化し、それをどの方法で確認するのか」</strong></p>


<p class="wp-block-paragraph">まで分けて考える必要があります。</p>


<p class="wp-block-paragraph">今回AWSサポートが問い合わせの冒頭で、</p>


<p class="wp-block-paragraph"><strong>「今回の暗号化とは、RDSのストレージボリューム暗号化という理解でよいか」</strong></p>


<p class="wp-block-paragraph">という趣旨の確認をしてきた理由も、ここにあります。</p>


<p class="wp-block-paragraph">KMS、TDE、Oracle Net、AWSネットワーク基盤。</p>


<p class="wp-block-paragraph">すべて「暗号化」ですが、守っている場所も確認方法も異なります。</p>


<p class="wp-block-paragraph">RDS for OracleでDBリンクを設計するときは、まずこの境界を分けるところから始めるのがよいでしょう。</p>
<hr />

<p class="wp-block-paragraph"><strong><span style="font-size: 20px;">関連記事</span></strong></p>
<p>RDS for Oracleでは、暗号化以外にもオンプレミスOracleの前提をそのまま持ち込めない制約があります。また、こうしたクラウド固有の差異は、構築段階ではなく要件定義や基本設計の段階で確認しておくことが重要です。あわせて確認したい方は、以下の記事も参考にしてください。</p>
<ul>
	<li><strong>RDS for Oracleを採用したら、オンプレ運用の前提が通用しなかった<br />
</strong>SYS権限やOSアクセス、ログ確認など、オンプレミスOracleからRDS for Oracleへ移行するときに変わる運用・設計上の前提を、実案件で直面した制約から整理しています。</li>
</ul>
<a href="https://sys-univ.com/aws/rdsforora/" title="RDS for Oracleを採用したら、オンプレ運用の前提が通用しなかった｜開発中に見えた設計ギャップと代替アプローチ" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img width="160" height="90" src="https://sys-univ.com/wp-content/uploads/2026/07/b87f444ed45d88e81401b2fbbfe2b0c1-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" loading="lazy" decoding="async" srcset="https://sys-univ.com/wp-content/uploads/2026/07/b87f444ed45d88e81401b2fbbfe2b0c1-160x90.png 160w, https://sys-univ.com/wp-content/uploads/2026/07/b87f444ed45d88e81401b2fbbfe2b0c1-120x68.png 120w, https://sys-univ.com/wp-content/uploads/2026/07/b87f444ed45d88e81401b2fbbfe2b0c1-320x180.png 320w, https://sys-univ.com/wp-content/uploads/2026/07/b87f444ed45d88e81401b2fbbfe2b0c1-376x212.png 376w" sizes="auto, (max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">RDS for Oracleを採用したら、オンプレ運用の前提が通用しなかった｜開発中に見えた設計ギャップと代替アプローチ</div><div class="blogcard-snippet internal-blogcard-snippet">RDS for Oracleではオンプレ運用の前提が通用しない。Storage-Full、アーカイブログ、SSH不可など、開発中に見えた9つの設計ギャップと代替アプローチを整理します。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img src="https://www.google.com/s2/favicons?domain=https://sys-univ.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" loading="lazy" decoding="async" /></div><div class="blogcard-domain internal-blogcard-domain">sys-univ.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2026.08.30</div></div></div></div></a>
<ul>
	<li><strong>基本設計で決めること｜画面設計だけでは終わらない基盤SEの設計工程<br />
</strong>サーバー、データベース、ネットワーク、セキュリティ、監視、バックアップ、運用など、システム基盤の基本設計で何を決めておくべきかを整理しています。</li>
</ul>
<a href="https://sys-univ.com/dev/basic-design-infrastructure/" title="基本設計で決めること｜画面設計だけでは終わらない基盤SEの設計工程" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img width="160" height="90" src="https://sys-univ.com/wp-content/uploads/2026/06/4d96d0a5b250d4d64675183a265ba8a6-160x90.jpg" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" loading="lazy" decoding="async" srcset="https://sys-univ.com/wp-content/uploads/2026/06/4d96d0a5b250d4d64675183a265ba8a6-160x90.jpg 160w, https://sys-univ.com/wp-content/uploads/2026/06/4d96d0a5b250d4d64675183a265ba8a6-500x281.jpg 500w, https://sys-univ.com/wp-content/uploads/2026/06/4d96d0a5b250d4d64675183a265ba8a6-800x450.jpg 800w, https://sys-univ.com/wp-content/uploads/2026/06/4d96d0a5b250d4d64675183a265ba8a6-300x169.jpg 300w, https://sys-univ.com/wp-content/uploads/2026/06/4d96d0a5b250d4d64675183a265ba8a6-768x432.jpg 768w, https://sys-univ.com/wp-content/uploads/2026/06/4d96d0a5b250d4d64675183a265ba8a6-1536x864.jpg 1536w, https://sys-univ.com/wp-content/uploads/2026/06/4d96d0a5b250d4d64675183a265ba8a6-120x68.jpg 120w, https://sys-univ.com/wp-content/uploads/2026/06/4d96d0a5b250d4d64675183a265ba8a6-320x180.jpg 320w, https://sys-univ.com/wp-content/uploads/2026/06/4d96d0a5b250d4d64675183a265ba8a6-376x212.jpg 376w, https://sys-univ.com/wp-content/uploads/2026/06/4d96d0a5b250d4d64675183a265ba8a6.jpg 1672w" sizes="auto, (max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">基本設計で決めること｜画面設計だけでは終わらない基盤SEの設計工程</div><div class="blogcard-snippet internal-blogcard-snippet">基本設計は画面設計だけでは終わらない。ログ・バックアップ・ジョブ・監視など、本番運用を見据えた基盤設計の論点を、ファイルアップロードや夜間バッチの実例で整理します。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img src="https://www.google.com/s2/favicons?domain=https://sys-univ.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" loading="lazy" decoding="async" /></div><div class="blogcard-domain internal-blogcard-domain">sys-univ.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2026.06.20</div></div></div></div></a>
]]></content:encoded>
					
					<wfw:commentRss>https://sys-univ.com/tec/rds-oracle-dblink-encryption/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【AWS】別AZで起動したWindowsが通信不能に｜原因はVPCではなく「OS内のルート情報」だった</title>
		<link>https://sys-univ.com/incident/addroute/</link>
					<comments>https://sys-univ.com/incident/addroute/#respond</comments>
		
		<dc:creator><![CDATA[ナギ]]></dc:creator>
		<pubDate>Sun, 12 Jul 2026 03:00:28 +0000</pubDate>
				<category><![CDATA[AWS]]></category>
		<category><![CDATA[トラブル]]></category>
		<guid isPermaLink="false">https://sys-univ.com/?p=1493</guid>

					<description><![CDATA[はじめに セキュリティグループも見た。 NACLも見た。 VPCルートテーブルも見た。 それでも通信できない。 そんなとき、原因はAWSコンソールの中ではなく、OSの中にあるかもしれません。 今回扱うのは、EC2を別AZ [&#8230;]]]></description>
										<content:encoded><![CDATA[<p id="520c1fbf-2ede-41b1-994c-13ebd9a6950e"><strong>はじめに</strong></p>
<p>セキュリティグループも見た。<br />
NACLも見た。<br />
VPCルートテーブルも見た。</p>
<p id="bdf24a40-c78c-4282-a5dd-f17d3711dca3">それでも通信できない。</p>
<p id="54740cae-ca78-4bfe-a5b6-705cfb958d64">そんなとき、原因はAWSコンソールの中ではなく、OSの中にあるかもしれません。</p>
<p id="e309d140-47b7-4e48-9bfa-f53bd87488d2">今回扱うのは、EC2を別AZで起動した際に、Windows ServerのOS内ルート情報が更新されず、通信できなくなった事象です。</p>
<p id="2443481b-b38c-4cd5-9218-cd644f43373a">この記事では、単なるルート設定の話ではなく、EC2Launch、User Data、AMI再利用、DR設計で見落としやすい「起動後のOS状態」について整理します。</p>
<h2 id="c8671a81-fd99-4eed-8b0b-16236561ffb3" tabindex="-1">EC2は起動した。でも通信できない</h2>
<p id="ac9bf7a0-d792-4e16-b53c-53a92e61f89b">EC2インスタンスを別AZで起動した。</p>
<p id="56009cfd-145a-4a49-a20c-ec797d51d345">インスタンスの起動は成功している。<br />
OSも上がっている。<br />
しかし、通信できない。</p>
<p id="33d27af2-9d34-4b3e-9f5d-007a1e39d3ed">このような事象が起きると、まずAWS側の設定を疑うと思います。</p>
<p id="f122f626-784b-427d-b739-6aa4455103b4">セキュリティグループがおかしいのか。<br />
NACLで止められているのか。<br />
サブネットのルートテーブルが間違っているのか。</p>
<p id="6fd185d9-7227-4a8d-b05b-3524bf620ee8">もちろん、それらは確認すべきです。</p>
<p id="97be70f4-ab23-4f38-b041-1e5864d48c7c">しかし、今回の原因はそこではありませんでした。</p>
<p id="7128f477-a6cd-4887-831f-b67500912c9c">問題は、Windows OS内のルーティング情報が、移動先AZに合わせて更新されていなかったことでした。</p>
<h2 id="a3a5eaa4-c886-4635-bde5-7da292d728fd" tabindex="-1">AZ移動後、Windowsサーバが通信できない</h2>
<p id="8be28339-3a1a-4d0a-9219-76da3f8698d7">今回の事象は、AZ障害時の切替を想定した環境で発生しました。</p>
<p id="59bb9556-58f5-43f8-88c8-322329457d7e">通常時は、あるAZでWindows ServerのEC2インスタンスを稼働させています。</p>
<p id="da117454-26d7-4584-bed8-181589631070">障害時には、別AZでインスタンスを起動し、業務を継続する想定でした。</p>
<p id="99a6c266-c60f-4a74-b71f-f4ec02836cc9">構成としては、クラウドではよくある考え方です。</p>
<figure id="c4b2b1e1-5f67-43f6-bc8a-0236391e1678">
<div style="width: 630px" class="wp-caption aligncenter"><a href="https://assets.st-note.com/img/1780473466-Rbf2paQvm8dgSjYeAcN19LlP.png?width=2000&amp;height=2000&amp;fit=bounds&amp;quality=85" aria-label="画像を拡大表示"><img loading="lazy" decoding="async" class="is-slide" src="https://assets.st-note.com/img/1780473466-Rbf2paQvm8dgSjYeAcN19LlP.png?width=1200" alt="画像" width="620" height="439" data-modal="true" /></a><p class="wp-caption-text">図　別AZでEC2を起動できても、起動後に通信できるとは限らない</p></div><br />
</figure>
<p id="c1be95ca-8ac6-4547-b9ff-57afc1258861">ただし、この構成で注意すべきなのは、「別AZでEC2が起動できること」と「起動後に業務通信が成立すること」は別問題だという点です。</p>
<p id="f2598e8d-5c12-42cd-88f0-be155b8b78ff">今回も、インスタンスの起動自体は成功していました。</p>
<p id="695718a0-cbf9-4a6e-b4eb-866039f64326">OSも起動していました。</p>
<p id="f8eacf54-fb85-415b-a364-3dbabf6d0731">ところが、正常なネットワーク通信ができませんでした。</p>
<p id="d3d10523-d178-4f61-bfa1-e114d517222b">AWS側の設定だけを見れば、サブネット、セキュリティグループ、NACL、VPCルートテーブルを疑いたくなります。</p>
<p id="1df1b1ab-d696-4ef8-a1a8-acb0c2d8ea39">しかし、調査していくと、問題はWindows OS内部のルーティング情報にありました。</p>
<p id="66ba10a6-bae5-4343-ae15-8c486fa08344">移動先AZで必要となるルート情報が、OS起動時に追加されていなかったのです。</p>
<p id="dfc6dca6-adf2-4a12-9188-a28a1c22db3d">ここで重要なのは、VPCのルートテーブルではなく、Windows OS内のルート情報だという点です。</p>
<p id="33322f9d-1790-43cf-aa11-e1863b2d4044">では、なぜOS内にルート情報が必要になるのでしょうか。</p>
<p id="8c305441-a343-4c47-8ae7-007810946f97">たとえば、次のような構成を考えてみます。</p>
<p id="4cdbe14f-e1d8-4b46-bd7e-6fbd6f755d0c">通常の業務通信は、デフォルトゲートウェイから出す。<br />
一方で、監視サーバ向けのセグメント 172.16.10.0/24 には、2枚目のNIC、つまり別ENI側の経路を使って通信させる。</p>
<p id="98542b5a-80a3-47db-9711-5d897318ef13">この場合、Windows OS内には、</p>
<div class="code-block-container">
<pre id="46d69c23-cf13-40a2-8ebb-c072fbf2aee7" data-name="preCode"><code class="hljs" data-name="code">172.16.10.0/24 は、2枚目のNIC側の経路へ向ける
</code></pre>
<div class="a-button__inner" data-v-00506f85="">というスタティックルートが必要になります。</div>
</div>
<p id="558bd618-473e-4872-b4f1-c98941fdd35e">VPCルートテーブルが正しくても、Windows OS内にこのルートがなければ、監視サーバ向けの通信は期待した経路に流れません。</p>
<p id="d28e64a9-5ed9-4074-811c-634190aecfa4">EC2はクラウド上の仮想サーバです。</p>
<p id="6420f64d-4848-4fcc-b51d-885a1590558c">しかし、サーバである以上、OSの中にもネットワーク設定があります。</p>
<p id="287de988-c449-45bd-933f-f4daa1edf4b4">クラウド側の設定だけでは、通信は完結しません。</p>
<p id="714591fe-82e4-43d5-a195-bcbebdccdcce">さらに、別AZで起動すると、通常は起動先のサブネットも変わります。</p>
<p id="c67abc63-67e0-435e-b423-e1903ea6e1af">サブネットやENI構成が変われば、OS内のスタティックルートで前提にしていたネクストホップ（次に経由するルーターやゲートウェイのIPアドレス）　　やインターフェースが、移動先の環境と合わなくなることがあります。</p>
<p id="2e61561a-0f65-42b6-b5b9-713341bd8895">しかし、AMIを取得した時点のOS内ルート情報には、旧環境を前提にした経路が残っている場合があります。</p>
<p id="b24f9cda-53c0-47b5-8c77-eb1426745f06">そのまま別AZで起動すると、ルートのエントリは存在しているのに、実際には期待した経路へ到達できない。</p>
<p id="6c8da315-1f88-4c00-b62e-8e52f9d0880a">これが、</p>
<p id="de020489-a57e-4e8b-849d-4db0decf00a5">「設定した覚えはあるのに通信できない」</p>
<p id="04d9981e-06be-48eb-9e9c-eba36d62f716">という事象の正体です。</p>
<h2 id="99877098-61b6-496c-848d-5dd548e51304" tabindex="-1">原因はEC2Launchの起動時処理だった</h2>
<p id="b48b74a5-65a3-4e18-9b13-bda3220b0a70">原因は、Windows Serverの起動時に動く初期化処理でした。</p>
<p id="18317afc-79f3-4f82-a242-aed5963f82af">Windows Server 2012 R2以前では、EC2Configというサービスが使われていました。</p>
<p id="ac3131f8-dfdc-4399-a5dd-b3c6834e78d7">一方、Windows Server 2016 / 2019では、EC2Launch v1が使われる構成があります。</p>
<p id="8d0a940b-bc2d-4b5d-a36f-27b49ffb694b">ここで見落としやすいのは、</p>
<p id="48da3542-dbca-4370-9abe-edd7ecdc348a">「Windows Serverなら、起動時に毎回同じ初期化処理が走る」</p>
<p id="858ea04d-9c9a-43ba-9a03-e9bc1e26eca1">とは限らないことです。</p>
<p id="4c1c9119-37e9-4b70-8d94-a8cb3f4e45f8">今回のポイントはここです。</p>
<p id="041b0076-981e-4bad-9489-1765f91126a6">AMIを取得する前のインスタンスで、すでに初回起動時の処理が終わっている。<br />
その状態をAMIとして固める。<br />
そのAMIから別AZで起動する。<br />
しかし、OSや初期化エージェントの状態としては、必要な処理が「初回起動時のみ実行済み」と扱われる。<br />
その結果、別AZで起動したときに、ルート追加処理が走らない。</p>
<p id="41cc4ac3-908f-4b8b-8fb7-18b291af7f98">このような流れになると、EC2自体は起動しているのに、OS内のルート情報が移動先AZに合わないまま残ります。</p>
<p id="290b3c4f-ad31-4814-be17-76c2d6054a39">その結果、サーバは起動したのに通信できない、という状態になります。</p>
<p id="41d6073d-d6ec-47c3-81a0-db5ec5d68053">若手SEがここで学ぶべきなのは、OSの設定そのものだけではありません。</p>
<p id="0db4176e-26e0-42cc-a8c0-ea7c85ded38a">「その設定は、いつ、どの仕組みによって入るのか」</p>
<p id="89352f38-55e4-4543-9e66-648f12fbfa74">を見る必要があるということです。</p>
<p id="46863647-a47d-4a45-b7a0-99eb63d5563a"><strong>EC2Config、EC2Launch v1、EC2Launch v2をざっくり押さえる</strong></p>
<p id="c6e08fd5-bcb1-42c3-b0f4-69a1e9e4bb19">細かい仕様をすべて暗記する必要はありません。</p>
<p id="618b2056-2e7a-4003-8d36-db5d1f9e9707">ただ、Windows EC2の初期化エージェントには世代差があることは押さえておくべきです。</p>
<div class="code-block-container">
<pre id="215f7c23-ee25-42a0-b706-21d6c14f0329" data-name="preCode"><code class="hljs" data-name="code">Windows Server 2012 R2以前
  → EC2Config

Windows Server 2016 / 2019の一部AMI
  → EC2Launch v1

Windows Server 2022 / 2025、
一部のWindows Server 2016 / 2019 AMI
  → EC2Launch v2
</code></pre>
<div class="a-button__inner" data-v-00506f85="">現在は、EC2Launch v2への移行が進んでいます。</div>
</div>
<p id="0cbdd46c-2d54-4c1c-ad7b-25048e174389">EC2Launch v2では、「どのタスクを、どのステージで、どの頻度で実行するか」を管理する考え方になります。</p>
<p id="56e59873-f8b1-4f9e-9428-6c2b298e2a85">見るべきポイントは、バージョン名そのものではありません。</p>
<p id="8916d201-98b3-4ee3-84a0-3fcde6a88e2b">実務では、以下を確認します。</p>
<div class="code-block-container">
<pre id="4bbbaade-a532-4ed3-b45d-9601e4422c4f" data-name="preCode"><code class="hljs" data-name="code">・対象OSは何か
・EC2Config、EC2Launch v1、EC2Launch v2のどれか
・User Dataは初回だけか、毎回か
・起動時タスクは有効か
・タスクの実行頻度は once か always か
・初期化処理のログにエラーは出ていないか
</code></pre>
<div class="a-button__inner" data-v-00506f85="">特にEC2Launch v2では、User Dataもタスクとして扱われるため、実行頻度が once なのか always なのかを確認する必要があります。</div>
</div>
<p id="2434891b-d0f2-4600-897d-a014256aabb0">ここを確認しないままDR設計や移行設計を進めると、机上では成立しているのに、切替時に通信できないサーバが立ち上がることがあります。</p>
<p id="48dd7e54-4fbf-4684-a2c2-b8a735faddc2">なお、EC2Launch v2には agent-config.yml などの設定ファイルがありますが、この記事では詳細な設定手順までは踏み込みません。</p>
<p id="9236ab5f-5d3b-4392-b644-d9a4dd5b615e">ここで重要なのは、ファイル名を暗記することではなく、起動時に実行されるタスクと実行頻度を確認する、という考え方です。</p>
<p id="5e6fb7ed-ef69-4bb7-8d94-1a669b884a22"><strong>なぜ永続ルートではなく、起動ごとの処理なのか</strong></p>
<p id="13927e36-ea3c-4e62-a312-d57257a46815">ここで、こう思う人もいるかもしれません。</p>
<p id="3666f2cf-9f9e-4b60-b988-7b15a9961709">「Windowsなら route add -p で永続ルートにすればよいのでは？」</p>
<p id="50f1ad2d-7685-4627-b4dc-4491a3121ad9">たしかに、固定的な経路であれば、それで済む場合もあります。</p>
<p id="09e30b34-392f-4089-854c-8e0a56a90a7f">route add -p は、Windowsで再起動後も残るルートを登録する方法です。</p>
<p id="c1bc12c6-6759-4387-abd1-f8ece513f74f">しかし、クラウド移行やAZ切替では、単純な永続ルートだけでは不十分な場合があります。</p>
<p id="b16c09d2-221c-457a-b387-e34f7e44bcc1">なぜなら、起動先のAZ、サブネット、ENI構成、ゲートウェイ、経路設計によって、追加すべきルートが変わることがあるからです。</p>
<p id="672a0c0f-57b1-4f93-8326-28f5d4815a21">AMIに固定ルートを焼き込んでしまうと、元のAZでは正しくても、別AZでは古い経路を引きずる可能性があります。</p>
<p id="defa0de7-9de4-4b96-b717-63719bece69d">たとえば、元の環境では `10.0.1.1` 側を通る前提でOS内にルートを持っていたとします。</p>
<p id="2f1e7c26-126f-41ab-b46d-65fd68a70832">しかし、別AZで起動した後は、サブネットやENI構成が変わり、`10.0.2.1` 側を通すべき構成になっているかもしれません。</p>
<p id="f6adfcbc-97ec-40c2-a19c-850f7dd3340a">このとき、OS内に旧環境のルートが残ったままだと、設定は存在しているのに、移動先環境では正しい経路に通信が流れません。</p>
<p id="c0f012db-e45f-4526-a8e7-84fc922b3805">一方、起動ごとのスクリプトでルートを追加する方式なら、起動先の環境に合わせて必要なルートを入れ直す設計にできます。</p>
<p id="fdfd37e4-556b-491d-9966-08f4b296a18b">もちろん、その分だけスクリプト設計は慎重に行う必要があります。</p>
<p id="272f33d3-2e68-4fcd-a812-c24db7c26af6">特に重要なのが、冪等性です。</p>
<p id="c66f034f-4e56-426a-9401-23e0235104a5">冪等性とは<strong>「同じ処理を何度実行しても、結果が壊れず同じ状態に収まる性質のこと」</strong>です。</p>
<p id="83472d99-91b3-472a-b240-2ea13f788f0d">起動のたびに実行される処理は、何度実行しても壊れないように作る必要があります。</p>
<p id="4c7ca025-bd64-4f21-bcc9-fd6f6cd9f7eb">たとえば、同じルートを毎回追加しようとしてエラーになる。<br />
既存設定を無条件で上書きしてしまう。<br />
途中で失敗したときに中途半端な状態が残る。</p>
<p id="595cc8a9-9868-46e0-bb64-254f2601bf48">こうした作りになっていると、初期化処理そのものが新しい障害原因になります。</p>
<h2 id="ffb4b76d-d9d7-4cd8-ac35-4ea4923847d2" tabindex="-1">対策は「OS起動ごとに必要な処理を実行させる」こと</h2>
<p id="b99140a8-5071-4048-ba68-94bf2247b63a">今回の対策は、OS起動ごとに必要なルート追加処理が実行されるようにすることでした。</p>
<p id="d9074ce8-8323-4a49-98dc-1ddfdc458a6d">EC2Launch v1の場合、単に「起動すれば自動で全部整う」と考えるのではなく、起動時に必要な処理が実行される状態になっているかを確認する必要があります。</p>
<p id="2ca816d6-31b8-44a9-bf5b-239ca6df67de">たとえば、今回のようなルート追加であれば、User DataからEC2Launchのモジュールを読み込み、`Add-Routes` を呼び出す方法があります。</p>
<div class="code-block-container">
<pre id="3c15d7d2-f4b4-4fbd-bff8-b73d09d6d9da" data-name="preCode"><code class="hljs ruby" data-name="code">Import-Module (Join-Path $env<span class="hljs-symbol">:ProgramData</span> <span class="hljs-string">'Amazon\EC2-Windows\Launch\Module\Ec2Launch.psd1'</span>)
Add-Routes</code></pre>
<div class="a-button__inner" data-v-00506f85="">さらに、User Dataを起動ごとに実行したい場合は、persist を有効にします。</div>
</div>
<div class="code-block-container">
<pre id="fc69529c-b693-4730-9298-0452a352f91e" data-name="preCode"><code class="hljs javascript" data-name="code">&lt;persist&gt;<span class="hljs-literal">true</span>&lt;<span class="hljs-regexp">/persist&gt;</span></code></pre>
<div class="a-button__inner" data-v-00506f85="">これにより、インスタンス起動時にUser Dataの処理が繰り返し実行され、移動先環境に合わせたルート追加処理を走らせることができます。</div>
</div>
<p id="ebfe3831-d78c-4893-bf03-78d06e21cb52">重要なのは、コマンドそのものを暗記することではありません。</p>
<p id="cce9e892-0477-43e2-920e-934e57f50d92">タスクスケジューラ、User Data、EC2Launchのどの仕組みによって、起動時の処理を実行させているのかを理解することです。</p>
<p id="f01fcead-b950-40a8-bbd7-63ae65fbff3b">EC2Launch v2では、この種の起動時タスクの扱いが整理されており、同じ問題が起きにくい構成になっています。</p>
<p id="49cb7bbc-6b39-4a46-b3b3-d1077715a9ee">ただし、実際の挙動は、AMIの世代、EC2Launchのバージョン、User Data、タスクの実行頻度に依存します。</p>
<p id="454bb55a-a98e-48f6-a49f-b2ba01163394">そのため、v2だから確認不要、とは考えない方が安全です。</p>
<p id="9546e064-917d-45a0-98e6-6e575ffea0c9">環境によって確認ポイントは変わります。</p>
<p id="a1d6843a-1495-48f5-ae71-174cb79e8f15">しかし、共通する考え方は同じです。</p>
<p id="fe9f05a2-93ed-42d5-afce-876646e15a59">「起動時に、必要なOS設定が、確実に反映される状態になっているか」</p>
<p id="5f4a3331-5b6a-4ff0-991c-3d41e67d7027">ここを確認する必要があります。</p>
<h2 id="a646f83e-76e1-4a3d-9fdf-5207130cc22e" tabindex="-1">AWS側の設定だけ見ても足りない</h2>
<p id="9cd7c1d7-ec90-419e-8ba4-2800e2e09d7c">若手SEにとって、EC2の通信不可というと、どうしてもAWS側の設定に目が行きます。</p>
<p id="eb2369b5-f961-4003-9a70-46c60b5bba5a">それ自体は間違いではありません。</p>
<p id="1cf8e9b7-0c39-4958-8d5e-1c4dd771fbd5">実際、通信不可の原因として、セキュリティグループ、NACL、VPCルートテーブル、サブネット、ENI、DNS設定などはよくあります。</p>
<p id="bb05981f-4562-4edd-b493-22f488800052">しかし、それだけでは足りません。</p>
<p id="8b8feb07-8fb6-4dc9-9b56-1ebcca31342c">今回のように、OS内部の設定が原因になることもあります。</p>
<p id="70f08156-abe7-412c-8fd0-8122ff77b59c">今回の切り分けは、3つの層で見ると整理しやすくなります。</p>
<div class="code-block-container">
<pre id="b657639a-00e7-41bc-a6c0-708533387c30" data-name="preCode"><code class="hljs" data-name="code">AWSインフラ層
  → セキュリティグループ、NACL、VPCルートテーブルを見る

初期化エージェント層
  → EC2LaunchやUser Dataが期待どおり実行されたかを見る

OS設定層
  → Windowsのルーティングテーブルが移動先環境に合っているかを見る
</code></pre>
<div class="a-button__inner" data-v-00506f85="">今回の原因は、AWSインフラ層ではなく、初期化エージェント層とOS設定層の間にありました。</div>
</div>
<p id="008ff45d-0f6d-4718-876c-921dbe2ac2e2">EC2の通信確認では、AWS側の設定、クラウド初期化処理、OS内部の設定を一連の流れとして見る必要があります。</p>
<figure id="34ae7188-7c91-481f-b108-8c5b3bed636f">
<div style="width: 630px" class="wp-caption aligncenter"><a href="https://assets.st-note.com/img/1780473510-jpmDS8wUoYf6e4PZRXhbilrK.png?width=2000&amp;height=2000&amp;fit=bounds&amp;quality=85" aria-label="画像を拡大表示"><img loading="lazy" decoding="async" class="is-slide" src="https://assets.st-note.com/img/1780473510-jpmDS8wUoYf6e4PZRXhbilrK.png?width=1200" alt="画像" width="620" height="439" data-modal="true" /></a><p class="wp-caption-text">図　AWS側の設定だけ見ても足りない</p></div><figcaption></figcaption></figure>
<p id="b7610046-233b-42f1-bfec-c32ee4771b31">この図で言いたいのは、EC2が起動した時点で確認が終わるわけではない、ということです。</p>
<p id="e8bd6263-71e5-47d2-bd61-a81e6efae9c3">AWS側の設定が正しく、インスタンスが起動していても、その後に動く初期化処理やOS内部の設定が想定どおりでなければ、業務通信は成立しません。</p>
<p id="a433a55b-2556-4ce8-bcff-6360b67c154c">サーバが起動していることと、業務通信が成立していることは別です。</p>
<p id="944bd7c5-1a7c-4b0b-a392-5a53b6845d77">ここを混同すると、DRテストや移行リハーサルで痛い目を見ます。</p>
<h2 id="88eefb7d-79fc-49c6-a6f2-2becfa26dfe3" tabindex="-1">これはルーティングだけの話ではない</h2>
<p id="b497ca4f-e0f8-4987-8d88-7c06627610d7">今回の事象は、Windows Serverのルーティング情報が更新されなかった、という個別トラブルに見えます。</p>
<p id="b5187475-b14b-4be9-930e-2fc920563bba">しかし、これはルーティングだけの話ではありません。</p>
<p id="c8fd7ac7-e7f6-473b-a32b-382e493bb8c0">以前扱ったような、MTU設定が戻る、SSHでログインできない、OS起動後に想定した設定になっていない、といった事象にも共通する構造があります。</p>
<p id="e48a4680-2290-4c0f-b16d-332b33aa3e16">共通しているのは、初期化エージェントがOS設定を書き換える、または書き換えないことで、起動後のOS状態が想定とずれる点です。</p>
<p id="e0ca0382-7430-4122-a56e-d4da26079a32">ある設定は、初期化エージェントによって上書きされます。</p>
<p id="7f3b890b-44f6-43bf-9d76-02ffedd1bcc3">別の設定は、初期化エージェントが実行されないために更新されません。</p>
<p id="a72179eb-5b83-4733-9aa9-a9bcd559fad8">つまり、</p>
<p id="9e46566e-43e3-496b-a39f-cf69a57d9efe">「書き換えられて困る」</p>
<p id="cc4dbf88-fc42-4ff6-af57-eba774015879">場合もあれば、</p>
<p id="5868f75e-2a3d-411e-ab45-1ab4d8565d1c">「書き換えてほしいのに書き換わらない」</p>
<p id="bfe239b1-65a2-4b53-9f94-a1f495208493">場合もあります。</p>
<p id="53112035-682e-4cf2-90b3-f101574ce9dd">どちらも、クラウド初期化処理がOS設定に関与していることを理解していないと、原因にたどり着きにくくなります。</p>
<h2 id="dcdadf47-4d5e-4dce-a98a-1a1492e0fc38" tabindex="-1">なぜクラウドはOS設定を書き換えるのか</h2>
<p id="bbeff4ac-5424-42b8-ab0a-6a307b935a90">では、なぜクラウド環境では、起動時にOS設定へ手を入れるのでしょうか。</p>
<p id="58d5f910-b76e-487d-ab97-293c79dbb820">理由は大きく3つあります。</p>
<p id="b6c55e9e-0fe0-4c4d-92ca-22e64e4833c0">1つ目は、セキュリティです。</p>
<p id="fcb37893-80de-4380-b1e7-cd7ae76ff846">クラウド環境では、インターネットや社内ネットワークから到達可能なサーバを短時間で作成できます。</p>
<p id="6d53b24d-3481-46ab-a6b0-f532e7144bf0">そのため、初期状態をできるだけ安全側に寄せる必要があります。</p>
<p id="84296913-9871-4a5a-90fb-eddaba2fa80f">SSHのパスワード認証を無効にし、公開鍵認証を前提にするような考え方は、その典型です。</p>
<p id="84a5be44-9c7f-41ff-9c54-5f29122d3230">パスワード総当たり攻撃の入口を減らすためです。</p>
<p id="c708c9e1-ca21-4ac9-bb86-ad5a74f9ef80">これは、クラウド環境におけるベストプラクティスに寄せた挙動と考えると理解しやすいです。</p>
<p id="edea57d0-7873-44a6-b2ab-05acc0a6add7">2つ目は、クラウド環境に合わせてOSを自動適応させるためです。</p>
<p id="7ce72a7a-dc57-464e-bdad-25fb05d79ced">EC2インスタンスは、起動時にインスタンスメタデータ、User Data、ネットワーク情報などを利用します。</p>
<p id="4ac540b9-3bf1-4074-b261-717feb53e0d3">OSは、起動した場所、割り当てられたIP、ホスト名、初期化スクリプトなどをもとに、クラウド上で動ける状態に整えられます。</p>
<p id="0a9081b5-8ac6-4e2f-8a59-715d9edf847d">3つ目は、AMIを再利用するためです。</p>
<p id="6c15de6b-8039-46ad-8a09-0a0693308b8d">AMIは、ある時点のOS状態を固めたものです。</p>
<p id="5ad2e64b-b093-46e1-acc2-736f84bd576c">しかし、そのAMIから起動されるインスタンスは、元の環境と同じとは限りません。</p>
<p id="b6bfb5bd-75c8-4069-8c9f-647670e014e4">別AZかもしれません。<br />
別サブネットかもしれません。<br />
別IPかもしれません。<br />
別用途のサーバとして起動されるかもしれません。</p>
<p id="378eaf36-6e37-457d-8b0f-10597b76aa4f">そのため、AMIに残っているOS設定をそのまま信じるだけでは危険です。</p>
<p id="8969a507-91c0-4c74-937f-a00445e05ca1">クラウドでは、起動時にメタデータやUser Dataを参照し、起動先の環境に合わせて初期化する仕組みが用意されています。</p>
<p id="7edb6bb8-fc76-4064-b0aa-3622d63f9413">ただし、その初期化処理が「いつ」「どの条件で」「何を」実行するかは、OS、エージェント、設定によって変わります。</p>
<p id="0af63280-b917-4939-b3ef-073b2b8886e0">ここを理解していないと、</p>
<div class="code-block-container">
<pre id="b0ac7176-e1d2-44f3-ba45-16fbbeb48224" data-name="preCode"><code class="hljs" data-name="code">設定したはずなのに戻った
自動で入ると思っていたのに入らなかった
AMIから起動したら前の状態を引きずった
</code></pre>
<div class="a-button__inner" data-v-00506f85="">という事象が起こります。</div>
</div>
<h2 id="b7c0ad2b-c423-4958-afa9-7e572f0397e9" tabindex="-1">DR設計では「起動できる」だけでは足りない</h2>
<p id="afc653c5-4207-47b0-a738-535870392c7b">今回の話は、DR設計やAZ障害時の切替設計にも直結します。</p>
<p id="c2c4b579-673b-495e-98fe-3a17340222b6">DR設計では、次のような確認をしがちです。</p>
<div class="code-block-container">
<pre id="f4c89edf-77dc-429b-b9c6-b920af551280" data-name="preCode"><code class="hljs" data-name="code">・別AZでEC2が起動できる
・AMIからインスタンスを作成できる
・EBSを付け替えられる
・IPやDNSを切り替えられる
</code></pre>
<div class="a-button__inner" data-v-00506f85="">もちろん、これらは重要です。</div>
</div>
<p id="ddc3a103-b93b-45fb-8caa-0dbc7eab78a4">しかし、これだけでは不十分です。</p>
<p id="1fdcd319-d5ff-4c51-b638-4167d25baded">本当に確認すべきなのは、起動後に業務通信が成立するかです。</p>
<p id="2c4f0a7c-ae0a-4b07-8ca2-214a0f14de29">実務では、少なくとも以下を確認した方がよいです。</p>
<div class="code-block-container">
<pre id="8c663d5a-3d2d-470a-9c70-75d2c24301ff" data-name="preCode"><code class="hljs" data-name="code">・OS内のルート情報は正しいか
・DNS名前解決はできるか
・ADや認証基盤へ到達できるか
・業務アプリの接続先へ通信できるか
・監視、バックアップ、ジョブ管理エージェントは動くか
・User Dataや起動時スクリプトは期待どおり実行されたか
・初期化処理のログにエラーは出ていないか
</code></pre>
<div class="a-button__inner" data-v-00506f85="">DRテストで見るべきなのは、インスタンスの起動成功ではありません。</div>
</div>
<p id="379cbc44-b2bc-41a5-9ea6-7e07a84e199d">業務として使える状態になったかどうかです。</p>
<p id="fbff3646-bde5-4ded-8371-a0b34e6dd069">ここを間違えると、テストでは成功したように見えても、本番障害時に通信できないサーバが立ち上がることになります。</p>
<h2 id="83a8c398-c306-41d8-80e1-51081f7e5856" tabindex="-1">まとめ</h2>
<p id="34fed3d6-cb18-4f15-bdf5-a17a80deb49f">今回は、EC2を別AZで起動した際に、Windows Serverのルーティング情報が更新されず、通信できなくなった事象を扱いました。</p>
<p id="44c32348-a128-4031-8d0a-ecb02e906184">原因は、AWS側のセキュリティグループやVPCルートテーブルではなく、OS内部のルート情報でした。</p>
<p id="86459391-867b-46b3-91ce-30bc7f9c85f9">そして、その背景には、EC2Config、EC2Launch、EC2Launch v2といったクラウド初期化エージェントの挙動差がありました。</p>
<p id="48b161c5-54db-4119-9265-4b695fe8f2ba">クラウドでは、サーバを起動するだけなら簡単です。</p>
<p id="0c7a2496-9c90-4c6b-ad64-66cf3d3315f0">しかし、起動したサーバが業務として使える状態になっているかは、別の問題です。</p>
<p id="0b4034bf-072e-4182-a173-6b62449b2431">若手SEは、EC2が起動したかどうかだけで安心してはいけません。</p>
<p id="7a7fab07-c8c1-4567-9597-8d002965293a">見るべきなのは、起動後に、どの設定が、どのタイミングで、どの仕組みによって反映されるのかです。</p>
<p id="a76a836c-421f-499b-b667-c3be5c8485ce">サーバは起動した。<br />
でも通信できない。</p>
<p id="3441d922-79bb-40c4-b038-e0ea5edd8f60">その原因は、AWS側ではなく、OSの中にあるかもしれません。</p>
<hr id="fd9b46d7-9522-49ac-8bb8-743c2079c671" />
<p id="bad0c73b-5e79-4e8d-8a38-c9d8c1a681bc"><strong>関連記事</strong></p>
<p>今回のようなトラブルは、AWSやOSの設定だけを個別に見るのではなく、切替後にシステム全体が業務として使える状態になっているかまで確認する必要があります。</p>
<p><strong>システム基盤・クラウドエンジニアの仕事</strong><br />
サーバー、OS、監視、バックアップ、可用性、クラウドなどを横断し、<br />
システムを「整える・保つ・戻す」ための基盤設計・運用・障害対応を解説しています。</p>
<a href="https://sys-univ.com/dev/system-infrastructure-engineer/" title="システム基盤・クラウドエンジニアの仕事｜整える、保つ、戻す" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img width="160" height="90" src="https://sys-univ.com/wp-content/uploads/2026/08/769693434e6531947a35f1606041df3d-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" loading="lazy" decoding="async" srcset="https://sys-univ.com/wp-content/uploads/2026/08/769693434e6531947a35f1606041df3d-160x90.png 160w, https://sys-univ.com/wp-content/uploads/2026/08/769693434e6531947a35f1606041df3d-120x68.png 120w, https://sys-univ.com/wp-content/uploads/2026/08/769693434e6531947a35f1606041df3d-320x180.png 320w, https://sys-univ.com/wp-content/uploads/2026/08/769693434e6531947a35f1606041df3d-376x212.png 376w" sizes="auto, (max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">システム基盤・クラウドエンジニアの仕事｜整える、保つ、戻す</div><div class="blogcard-snippet internal-blogcard-snippet">システム基盤エンジニアの仕事内容を、インフラエンジニアとの違いから実務まで解説。サイジング、標準化、監視、可用性、バックアップ、AWS移行、障害対応を大規模SIの実例を交えて紹介します。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img src="https://www.google.com/s2/favicons?domain=https://sys-univ.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" loading="lazy" decoding="async" /></div><div class="blogcard-domain internal-blogcard-domain">sys-univ.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2026.08.17</div></div></div></div></a>
<p><strong>詳細設計とは何を決める工程か｜パラメータ表で終わらせないための設計の考え方</strong><br />
基本設計で決めた内容を、構築・テスト・運用できる具体的な設定や手順へどう落とし込むかを整理しています。</p>
<a href="https://sys-univ.com/dev/detailed-design-overview/" title="【全3回・第1部】詳細設計とは何を決める工程か｜パラメータ表で終わらせないための設計の考え方" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img width="160" height="90" src="https://sys-univ.com/wp-content/uploads/2026/06/a6c056b838ba24669f57a7e23dae134f-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" loading="lazy" decoding="async" srcset="https://sys-univ.com/wp-content/uploads/2026/06/a6c056b838ba24669f57a7e23dae134f-160x90.png 160w, https://sys-univ.com/wp-content/uploads/2026/06/a6c056b838ba24669f57a7e23dae134f-120x68.png 120w, https://sys-univ.com/wp-content/uploads/2026/06/a6c056b838ba24669f57a7e23dae134f-320x180.png 320w, https://sys-univ.com/wp-content/uploads/2026/06/a6c056b838ba24669f57a7e23dae134f-376x212.png 376w" sizes="auto, (max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【全3回・第1部】詳細設計とは何を決める工程か｜パラメータ表で終わらせないための設計の考え方</div><div class="blogcard-snippet internal-blogcard-snippet">詳細設計とは、基本設計で決めた方式を構築・テスト・運用できる粒度に落とし込む工程です。OS、ミドルウェア、DB、ジョブ、監視、バックアップなどを、単なるパラメータ表ではなく品質保証ストーリーとして設計する考え方を基盤SEの目線で解説します。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img src="https://www.google.com/s2/favicons?domain=https://sys-univ.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" loading="lazy" decoding="async" /></div><div class="blogcard-domain internal-blogcard-domain">sys-univ.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2026.08.20</div></div></div></div></a>
<p><strong>シリーズ全体は「実務で使えるシステム開発方法論」マガジンにまとめています。</strong></p>
<a rel="noopener" href="https://note.com/k_s7906/m/mc19593a012e2" title="実務で使えるシステム開発方法論｜ナギ ＠ 氷河期SEの知見録｜note" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img src="https://sys-univ.com/wp-content/uploads/cocoon-resources/blog-card-cache/0f32eea23c3fec6193dcd0147c80e86d.png" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="160" height="90" loading="lazy" decoding="async" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">実務で使えるシステム開発方法論｜ナギ ＠ 氷河期SEの知見録｜note</div><div class="blogcard-snippet external-blogcard-snippet">要件定義、基本設計、詳細設計、テスト、移行、運用保守まで、システム開発の流れを実務目線で体系化するマガジンです。教科書には書かれにくい、設計漏れ、手戻り、品質保証、運用で詰まるポイントを、現場経験に基づいて整理します。若手SEだけでなく、開発プロセスを改めて見直したい中堅・ベテランSEにも向けた内容です。</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img src="https://www.google.com/s2/favicons?domain=https://note.com/k_s7906/m/mc19593a012e2" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" loading="lazy" decoding="async" /></div><div class="blogcard-domain external-blogcard-domain">note.com</div></div></div></div></a>
<p>&nbsp;</p>
]]></content:encoded>
					
					<wfw:commentRss>https://sys-univ.com/incident/addroute/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【前編】システム監視の基本｜ping・エージェント・SNMP監視を整理する</title>
		<link>https://sys-univ.com/tec/monitor/</link>
					<comments>https://sys-univ.com/tec/monitor/#respond</comments>
		
		<dc:creator><![CDATA[ナギ]]></dc:creator>
		<pubDate>Wed, 09 Sep 2026 09:56:28 +0000</pubDate>
				<category><![CDATA[テクノロジー]]></category>
		<guid isPermaLink="false">https://sys-univ.com/?p=1252</guid>

					<description><![CDATA[この記事は「システム監視の基本」全2回シリーズの第1部です。 本シリーズでは、システム監視を「何を、どのように監視し、検知後の対応につなげるか」という観点から、前編・後編に分けて整理しています。 【第1部】この記事 シス [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="isSelectedEnd wp-block-paragraph"><strong>この記事は「システム監視の基本」全2回シリーズの第1部です。</strong></p>
<p class="isSelectedEnd">本シリーズでは、システム監視を「何を、どのように監視し、検知後の対応につなげるか」という観点から、前編・後編に分けて整理しています。</p>
<ul data-spread="false">
	<li><strong>【第1部】この記事</strong><br />
システム監視の基本構造／死活監視／エージェント監視・エージェントレス監視／SNMP監視／MIB・OIDなど、監視を理解するための基礎</li>
	<li><a href="https://sys-univ.com/tec/monitoring-cloud-fit-gap/">【第2部】クラウド監視と「運用で使える監視設計」</a><br />
AWS CloudWatch・OCI Monitoring／既存監視のFit &amp; Gap／監視対象・閾値・通知・一次対応まで含めた監視設計</li>
</ul>


<hr class="wp-block-separator has-alpha-channel-opacity" />

<p class="wp-block-paragraph"><strong>はじめに</strong></p>
<p>システム開発や基盤設計に関わっていると、「監視」という言葉は必ず出てきます。</p>


<p class="wp-block-paragraph">「サーバは生きています。 `ping` は通っています」</p>


<p class="wp-block-paragraph">そう報告した10分後に、業務が止まった。</p>


<p class="wp-block-paragraph">原因は、Webサーバのプロセス停止だった。</p>


<p class="wp-block-paragraph">サーバ自体にはネットワーク的に到達できていたため、 `ping` 監視では異常を検知できなかった。</p>


<p class="wp-block-paragraph">答えは単純です。 `ping` <strong>が通ることと、システムが業務として使える状態であることは、まったく別の話だから</strong>です。</p>


<p class="wp-block-paragraph">死活監視。リソース監視。ログ監視。プロセス監視。ジョブ監視。URL監視。SNMP監視。</p>


<p class="wp-block-paragraph">言葉としては聞いたことがあっても、実際に「監視の仕組み」を説明しようとすると、意外と難しいものです。</p>


<p class="wp-block-paragraph">若手SEの中には、監視を「サーバが落ちたらアラートが出る仕組み」「CPUやメモリが高くなったら通知する仕組み」「ログにエラーが出たらメールが飛ぶ仕組み」と理解している人もいます。</p>


<p class="wp-block-paragraph">もちろん、間違いではありません。</p>


<p class="wp-block-paragraph">ただし、それだけでは監視設計はできません。</p>


<p class="wp-block-paragraph">監視では、何を監視するのか、どこから監視するのか、どの方式で監視するのか、どの条件で異常と判断するのか、誰に通知するのか、通知を受けた人が何を確認するのかまで決める必要があります。</p>


<p class="wp-block-paragraph">監視とは、単にアラートを出す仕組みではありません。</p>


<p class="wp-block-paragraph">システムの異常や異常予兆を、運用で対応できる形で検知する仕組みです。</p>


<p class="wp-block-paragraph">前編では、監視サーバー、監視対象サーバー、死活監視、エージェント監視、エージェントレス監視、SNMP監視、MIB/OIDの基本を整理します。</p>


<p class="wp-block-paragraph">監視を「設定」ではなく「運用で使える仕組み」として理解するために、まずは基本構造から見ていきます。</p>


<h2 class="wp-block-heading">システム監視とは何か</h2>


<p class="wp-block-paragraph">監視をしていなければ、障害が起きても運用側は気づけません。</p>


<p class="wp-block-paragraph">利用者から「画面が開かない」と問い合わせが来て、初めて障害を認識する。これは運用の失敗です。</p>


<p class="wp-block-paragraph">システムが正常に稼働しているか。障害の予兆がないか。それを運用で対応できる形で検知する仕組みです。</p>


<p class="wp-block-paragraph">システム監視の目的は、大きく2つあります。</p>


<ul id="9ab67f89-05a4-4ba7-8787-68937562185b" class="wp-block-list">
	<li>システムが正常に稼働しているかを確認する</li>


	<li>システムに障害予兆となる兆候がないかを確認する</li>
</ul>


<p class="wp-block-paragraph">業務システムでは、障害そのものを完全にゼロにすることはできません。</p>


<p class="wp-block-paragraph">だからこそ、障害が発生したときに早く気づく。<br />
影響範囲を把握する。<br />
一次対応につなげる。<br />
必要に応じてエスカレーションする。</p>


<p class="wp-block-paragraph">そのために監視があります。</p>


<h2 class="wp-block-heading">監視には「監視する側」と「監視される側」がある</h2>


<p class="wp-block-paragraph">まず押さえるべき基本は、監視には「監視する側」と「監視される側」があるということです。</p>


<p class="wp-block-paragraph">一般的なオンプレミスや仮想基盤の監視構成では、次のような役割があります。</p>


<ul id="7b9660f1-f90d-4efa-a7d3-b5c5ea173fef" class="wp-block-list">
	<li>監視サーバー</li>


	<li>監視マネージャー</li>


	<li>監視対象サーバー</li>


	<li>監視エージェント</li>


	<li>運用端末</li>


	<li>通知先</li>
</ul>


<p class="wp-block-paragraph">監視サーバー、または監視マネージャーは、監視する側です。</p>


<p class="wp-block-paragraph">監視対象サーバーは、監視される側です。</p>


<p class="wp-block-paragraph">Webサーバ、APサーバ、DBサーバ、ジョブ管理サーバ、ストレージ、ネットワーク機器などが該当します。</p>


<p class="wp-block-paragraph">監視サーバーは、監視対象に対して定期的に確認を行います。</p>


<p class="wp-block-paragraph">たとえば、Web/APサーバとの通信状況、DBサーバのCPU負荷、共有ストレージのディスク容量、ログの異常メッセージなどを収集し、異常があれば運用者や管理者へ通知します。</p>


<figure id="3d474914-d411-49d9-aab4-f7f35f63a6e5" class="wp-block-image"><a href="https://assets.st-note.com/img/1779864633-8jFXUzkivH3N6WQYcmx2IurB.png?width=2000&amp;height=2000&amp;fit=bounds&amp;quality=85"><img decoding="async" src="https://assets.st-note.com/img/1779864633-8jFXUzkivH3N6WQYcmx2IurB.png?width=1200" alt="画像" /></a><br />
　　　　　　　　　　　　　　　　　　図：監視サーバーと監視対象サーバー・機器の関係</figure>


<p class="wp-block-paragraph">ここで重要なのは、監視は「何となく全体を見ている」のではないということです。</p>


<p class="wp-block-paragraph">監視対象ごとに、何を、どの方式で、どの周期で、どの閾値で、どの通知先へ送るかを細かく決めています。</p>


<p class="wp-block-paragraph"><strong>前編では、まず代表的な監視方式として、死活監視、エージェント監視、エージェントレス監視、SNMP監視を整理します。</strong></p>


<figure id="03bb1cc0-8c9b-4d90-8a50-22fe45e6eff4" class="wp-block-image"><a href="https://assets.st-note.com/img/1779897647-hTx0ODvJqKzkj8aLl1XVZF5E.png?width=2000&amp;height=2000&amp;fit=bounds&amp;quality=85"><img decoding="async" src="https://assets.st-note.com/img/1779897647-hTx0ODvJqKzkj8aLl1XVZF5E.png?width=1200" alt="画像" /></a></figure>


<p class="wp-block-paragraph">これらは、どれか1つだけを選ぶものではありません。</p>


<p class="wp-block-paragraph">実際のシステムでは、複数の方式を組み合わせます。</p>


<p class="wp-block-paragraph">たとえば、次のような組み合わせです。</p>


<ul id="305fb14a-ebee-43fd-bd2b-511063e4f5f6" class="wp-block-list">
	<li>ネットワーク疎通は死活監視</li>


	<li>OS内部のCPU、メモリ、ディスクはエージェント監視</li>


	<li>ネットワーク機器やストレージはSNMP監視</li>


	<li>Webサービスの応答はURL監視</li>


	<li>クラウドリソースはCloudWatchやOCI Monitoring</li>


	<li>アプリケーションログはログ監視</li>


	<li>バッチ処理はジョブ監視</li>
</ul>


<p class="wp-block-paragraph">つまり、監視方式は「どれが正解か」ではありません。</p>


<p class="wp-block-paragraph">そのシステムで何を知りたいのか。<br />
どこまで異常を検知したいのか。<br />
どのタイミングで誰が対応するのか。</p>


<p class="wp-block-paragraph">これに応じて選びます。</p>


<h2 class="wp-block-heading">死活監視とは何か</h2>


<p class="wp-block-paragraph">死活監視とは、監視対象が生きているかどうかを確認する監視です。</p>


<p class="wp-block-paragraph">代表的には、監視サーバーから監視対象サーバーへ `ping` を実行し、応答があるかを確認します。</p>


<p class="wp-block-paragraph">システム開発では、死活監視というと、まず `ping` による疎通確認をイメージすることが多いです。</p>


<p class="wp-block-paragraph">`ping` は、監視サーバーから監視対象のIPアドレスへ到達できるか、相手が応答を返すかを確認するためによく使われます。</p>


<p class="wp-block-paragraph">ここで注意が必要です。</p>


<p class="wp-block-paragraph">`ping` が通ることは、システムが正常に動いていることを意味しません。</p>


<p class="wp-block-paragraph">少しネットワークの階層で見ると、`ping` で確認しているのは、ざっくり言えばネットワーク層レベルの到達性です。</p>


<p class="wp-block-paragraph"><strong>つまり、監視サーバーから監視対象のIPアドレスへ届き、相手が応答している、ということを確認しているに過ぎません。</strong></p>


<p class="wp-block-paragraph">その上で動いているWebサーバ、APサーバ、DB、ジョブ、業務アプリケーションまで正常であることを確認しているわけではありません。</p>


<p class="wp-block-paragraph">たとえば、次のような状態でも `ping` は通ることがあります。</p>


<ul id="7884b479-7556-44e5-8906-c7c4cd28ac5e" class="wp-block-list">
	<li>Webサーバプロセスが停止している</li>


	<li>APサーバのスレッドが枯渇している</li>


	<li>DBリスナーが停止している</li>


	<li>DB表領域が枯渇している</li>


	<li>業務APが内部エラーを返している</li>


	<li>ログイン画面は開くが検索処理が失敗する</li>


	<li>バッチジョブが異常終了している</li>


	<li>ディスク使用率が100%に近い</li>


	<li>メモリ不足で処理が極端に遅い</li>
</ul>


<figure id="81e8024c-56e0-4719-9e3e-cd337d10e037" class="wp-block-image"><a href="https://assets.st-note.com/img/1779867087-uK3yV49B0gN67l2mEXGnPsWt.png?width=2000&amp;height=2000&amp;fit=bounds&amp;quality=85"><img decoding="async" src="https://assets.st-note.com/img/1779867087-uK3yV49B0gN67l2mEXGnPsWt.png?width=1200" alt="画像" /></a>
<figcaption class="wp-element-caption">　　　　　　　　　　　　　　　　　　　　　　　　　　図：`ping` で分かる範囲</figcaption>
</figure>


<p class="wp-block-paragraph">つまり、死活監視は重要ですが、それだけでは不十分です。</p>


<p class="wp-block-paragraph">`ping` による死活監視で分かるのは、「ネットワーク的に到達できるか」「機器やOSが応答しているか」という入口の状態です。</p>


<p class="wp-block-paragraph">一方で、業務として使える状態かどうかを確認するには、ポート監視、プロセス監視、URL監視、ログ監視、DB接続監視、ジョブ監視など、より上位の状態を見る監視が必要になります。</p>


<p class="wp-block-paragraph">なお、死活監視は `ping` だけとは限りません。</p>


<p class="wp-block-paragraph">SNMPを使って機器の稼働状態を確認する場合もあります。ネットワーク機器やストレージ、UPSなどでは、SNMPでインターフェース状態、電源状態、ファン、温度、装置状態などを取得したり、SNMP Trapで機器側から異常通知を受けたりします。</p>


<h2 class="wp-block-heading">エージェント監視とは何か</h2>


<p class="wp-block-paragraph">エージェント監視とは、監視対象サーバーに監視用ソフトウェアを導入し、そのエージェントがサーバ内部の状態を収集する方式です。</p>


<p class="wp-block-paragraph">監視対象サーバーの中に入って、CPU、メモリ、ディスク、プロセス、ログ、サービス状態などを確認するイメージです。</p>


<figure id="79cd6ccd-cbb9-4852-9385-9e13e5eaad60" class="wp-block-image"><a href="https://assets.st-note.com/img/1779867540-23SOQ7sP068aNKFiUfCtwj9h.png?width=2000&amp;height=2000&amp;fit=bounds&amp;quality=85"><img decoding="async" src="https://assets.st-note.com/img/1779867540-23SOQ7sP068aNKFiUfCtwj9h.png?width=1200" alt="画像" /></a>
<figcaption class="wp-element-caption">　　　　　　　　　　　　　　　　　　　　　　　　　　　　　図：エージェント監視のイメージ</figcaption>
</figure>


<p class="wp-block-paragraph">たとえば、次のような情報は、エージェントを入れた方が取得しやすくなります。</p>


<ul id="0c384743-a9f6-4b0a-8bbf-2acde8ca3319" class="wp-block-list">
	<li>CPU使用率</li>


	<li>メモリ使用率</li>


	<li>ディスク使用率</li>


	<li>ディスクI/O</li>


	<li>特定プロセスの起動状態</li>


	<li>特定サービスの状態</li>


	<li>OSログの特定メッセージ</li>


	<li>ミドルウェアログのエラー</li>


	<li>アプリケーションログの異常</li>


	<li>ファイル数やファイルサイズ</li>


	<li>独自スクリプトの実行結果</li>
</ul>


<p class="wp-block-paragraph">商用監視製品であれば、JP1、Systemwalker、Hinemosなどが代表例です。</p>


<p class="wp-block-paragraph">エージェント監視のメリットは、監視対象サーバーの内部情報を細かく取得できることです。</p>


<p class="wp-block-paragraph">たとえば、単にDBサーバに `ping` が通るかだけでなく、DBプロセスが起動しているか、DB関連ログにエラーが出ていないか、CPUやメモリが逼迫していないか、といった情報を取得できます。</p>


<p class="wp-block-paragraph">一方で、デメリットもあります。</p>


<p class="wp-block-paragraph">エージェントをインストールする必要があります。<br />
監視対象サーバーのリソースを使います。<br />
バージョン管理が必要です。<br />
OS更改やパッチ適用時に影響確認が必要です。<br />
エージェント自体が停止すると監視できません。<br />
セキュリティ上、導入や通信許可の調整が必要です。</p>


<p class="wp-block-paragraph">そのため、エージェント監視を使う場合は、「何を監視したいからエージェントが必要なのか」を明確にします。</p>


<p class="wp-block-paragraph">一方、エージェント監視のデメリットを見ると、「エージェントを入れずに済む方法はないか」という発想が生まれます。それがエージェントレス監視です。</p>


<h2 class="wp-block-heading">エージェントレス監視とは何か</h2>


<p class="wp-block-paragraph">エージェントレス監視とは、監視対象サーバーに監視用エージェントを導入せず、監視サーバー側からリモートで状態を確認する方式です。たとえば、サーバに到達できるかを確認するだけなら `ping` で確認できます。</p>


<p class="wp-block-paragraph"><strong>プロセス起動確認とWebサービス応答確認は違う</strong></p>


<p class="wp-block-paragraph">Webシステムでは、Apacheの `httpd` やTomcatのプロセスが起動していることを確認して、Web/APサーバが正常だと判断してしまうケースがあります。</p>


<p class="wp-block-paragraph">しかし、プロセスが起動していることと、Webサービスが正常に応答していることは別です。</p>


<p class="wp-block-paragraph">`httpd` が起動していても、アプリケーションのデプロイに失敗しているかもしれません。Tomcatが起動していても、DB接続でエラーになっているかもしれません。ロードバランサやリバースプロキシの経路が誤っていて、利用者から見ると画面に到達できないこともあります。</p>


<p class="wp-block-paragraph">そのため、Webサービスの正常性を確認するには、HTTP/HTTPSで対象URLへアクセスし、HTTPステータスコードやレスポンス内容を確認することがあります。</p>


<p class="wp-block-paragraph">たとえば、監視サーバーから `/healthcheck` や `/login` などのURLへHTTP GETリクエストを送り、HTTPステータスコードが `200` で返るか、レスポンス本文に想定した文字列が含まれるか、応答時間が閾値内かを確認します。</p>


<p class="wp-block-paragraph">この考え方は、現在でもWebサービスの正常性確認として一般的に使われます。</p>


<figure id="745a92ff-b41d-4285-b989-df5012617e4d" class="wp-block-image"><a href="https://assets.st-note.com/img/1779869601-Sz6LB0dpbAsxoPiXDWuqOfnI.png?width=2000&amp;height=2000&amp;fit=bounds&amp;quality=85"><img decoding="async" src="https://assets.st-note.com/img/1779869601-Sz6LB0dpbAsxoPiXDWuqOfnI.png?width=1200" alt="画像" /></a>
<figcaption class="wp-element-caption">　　　　　　　　　　　　　　　　　　　　　　　　　図：Webサービスの正常性確認のイメージ</figcaption>
</figure>


<p class="wp-block-paragraph">ただし、最近のシステムでは、確認の粒度を分けることが増えています。</p>


<p class="wp-block-paragraph">ロードバランサでは、配下のサーバへHTTP/HTTPSのヘルスチェックを行い、正常なターゲットだけにリクエストを振り分けます。</p>


<p class="wp-block-paragraph">コンテナやKubernetes環境では、コンテナが生きているか、リクエストを受け付けられる状態か、起動完了しているかを分けて確認します。</p>


<p class="wp-block-paragraph">また、より利用者目線で確認したい場合は、単一URLのGET確認だけでなく、外形監視やSynthetic Monitoringを使い、ログイン、検索、API呼び出しなど、実際の利用者操作に近いシナリオを定期実行することもあります。</p>


<p class="wp-block-paragraph">つまり、`/healthcheck` や `/login` のHTTP応答確認は今でも有効です。</p>


<p class="wp-block-paragraph">ただし、それだけで十分かは、システムの特性によります。</p>


<p class="wp-block-paragraph">重要なのは、`httpd` やTomcatのプロセス起動確認だけで「Webサービスが正常」と判断しないことです。</p>


<p class="wp-block-paragraph">Webサービスが業務として使えるかを確認するには、少なくともHTTP/HTTPSで実際にアクセスし、期待した応答が返ることを確認する必要があります。</p>


<p class="wp-block-paragraph">ネットワーク機器やストレージの状態を確認する場合は、SNMPで情報を取得できることもあります。クラウドサービスであれば、APIやクラウド側のメトリクスから状態を取得できる場合もあります。</p>


<p class="wp-block-paragraph">つまり、監視対象の内部にエージェントを入れなくても、監視サーバー側からリモートで確認できる内容であれば、エージェントレス監視を選択できます。</p>


<p class="wp-block-paragraph">一方で、OSログの詳細確認、独自スクリプトの実行結果、アプリケーションログの細かな異常検知、サーバ内部の詳細なメトリクス取得などは、エージェントを入れた方が扱いやすい場合があります。</p>


<p class="wp-block-paragraph">そのため、エージェントレス監視は「エージェントを入れなくて済むから楽」というだけではありません。</p>


<p class="wp-block-paragraph">監視したい内容が外部から取得できるのか。<br />
取得に必要な認証や権限をどう管理するのか。<br />
通信経路やファイアウォール設定はどうするのか。<br />
取得できる情報の粒度で運用判断できるのか。</p>


<p class="wp-block-paragraph">ここまで考えたうえで、エージェント監視にするのか、エージェントレス監視にするのかを決めます。</p>


<p class="wp-block-paragraph">代表的には、次のような方式があります。</p>


<ul id="19f65089-d6bf-49dc-af23-e33701e51e8a" class="wp-block-list">
	<li>ping</li>


	<li>TCPポート監視</li>


	<li>HTTP/HTTPS監視</li>


	<li>SNMP監視</li>


	<li>SSH経由のコマンド実行</li>


	<li>Windows WMIによる情報取得</li>


	<li>APIによる状態取得</li>


	<li>クラウドサービスのメトリクス取得</li>
</ul>


<p class="wp-block-paragraph">エージェントレス監視のメリットは、監視対象サーバーにソフトウェアを導入しなくてもよいことです。</p>


<p class="wp-block-paragraph">サーバ台数が多い場合、エージェント導入やバージョン管理の負荷を抑えられます。</p>


<p class="wp-block-paragraph">また、ネットワーク機器、ストレージ、アプライアンス製品、クラウドサービス、マネージドサービスでは、そもそもエージェントを入れられないこともあります。</p>


<p class="wp-block-paragraph">その場合は、SNMP、API、クラウドメトリクスなどを利用して監視します。</p>


<p class="wp-block-paragraph">ただし、エージェントレス監視には制約があります。</p>


<p class="wp-block-paragraph">外側から見える状態は分かるが、OS内部やアプリケーション内部の詳細までは見えないことがあります。<br />
ログファイルの中身までは見にくいことがあります。<br />
独自スクリプトの実行や詳細なメトリクス取得に制約が出ることがあります。<br />
監視サーバーやネットワーク経路に障害があると、監視できないことがあります。</p>


<p class="wp-block-paragraph">つまり、エージェントレス監視は「エージェントが不要だから簡単」という話ではありません。</p>


<p class="wp-block-paragraph">エージェントを入れない代わりに、監視サーバー側の接続方式、認証、通信経路、権限、取得できるメトリクスの範囲を設計する必要があります。</p>


<h2 class="wp-block-heading">SNMP監視とは何か</h2>


<p class="wp-block-paragraph">オンプレミスの監視やネットワーク機器監視でよく出てくるのが、SNMPです。</p>


<p class="wp-block-paragraph">SNMPは、Simple Network Management Protocolの略です。</p>


<p class="wp-block-paragraph">ネットワーク機器、サーバ、ストレージ、UPS、アプライアンスなどの状態を監視・管理するために使われるプロトコルです。SNMPの管理情報を扱うMIBについては、RFC 3418でもSNMPエンティティの動作を説明する管理オブジェクトとして定義されています。(<a rel="noopener" href="https://datatracker.ietf.org/doc/html/rfc3418?utm_source=chatgpt.com" target="_blank">IETF Datatracker</a>)</p>


<p class="wp-block-paragraph">SNMP監視では、一般的に次のような役割があります。</p>


<ul id="0deaf5dd-8f46-4e15-97c5-f688f2b2e994" class="wp-block-list">
	<li>SNMPマネージャー</li>


	<li>SNMPエージェント</li>


	<li>MIB</li>


	<li>OID</li>


	<li>SNMP Get</li>


	<li>SNMP Trap</li>
</ul>


<figure id="0011e75c-9e38-4623-bd1b-39a229524bca" class="wp-block-image"><a href="https://assets.st-note.com/img/1779870234-LcWArTznZi5odl42ERh9Bjwm.png?width=2000&amp;height=2000&amp;fit=bounds&amp;quality=85"><img decoding="async" src="https://assets.st-note.com/img/1779870234-LcWArTznZi5odl42ERh9Bjwm.png?width=1200" alt="画像" /></a>
<figcaption class="wp-element-caption">　　　　　　　　　　　　　　　　　　　　　　　　　　　　　図：SNMP監視のイメージ</figcaption>
</figure>


<p class="wp-block-paragraph">SNMPマネージャーは、監視する側です。</p>


<p class="wp-block-paragraph">SNMPエージェントは、監視される機器側で動作し、機器の状態情報を持っています。</p>


<p class="wp-block-paragraph">SNMP Getは、マネージャーがエージェントに対して「この情報を教えて」と問い合わせる方式です。</p>


<p class="wp-block-paragraph">SNMP Trapは、機器側からマネージャーへ「異常が起きた」と通知する方式です。</p>


<p class="wp-block-paragraph">たとえば、ネットワーク機器でインターフェースがDownした場合、機器側からSNMP Trapが飛ぶことがあります。</p>


<p class="wp-block-paragraph">監視サーバーはそのTrapを受け取り、アラートとして運用者へ通知します。</p>


<h2 class="wp-block-heading">SNMP監視でつまずきやすいOIDとMIB</h2>


<p class="wp-block-paragraph">SNMPの説明では、OIDやMIBという言葉が当たり前のように出てきます。</p>


<p class="wp-block-paragraph">しかし、これを正しく理解していないと、</p>


<p class="wp-block-paragraph">「MIBファイルを監視製品に読み込ませれば、監視できるんですよね」</p>


<p class="wp-block-paragraph">という誤解につながります。</p>


<p class="wp-block-paragraph">これは危険です。</p>


<p class="wp-block-paragraph">まず、OIDから整理します。</p>


<p class="wp-block-paragraph">OIDは、Object Identifierの略です。</p>


<p class="wp-block-paragraph">一言でいえば、監視対象機器の中にある<strong>データの住所</strong>です。</p>


<p class="wp-block-paragraph">ネットワーク機器やサーバは、人間が話すように「CPU使用率を教えてください」と理解してくれるわけではありません。</p>


<p class="wp-block-paragraph">SNMPでは、監視マネージャーが、監視対象機器に対して、</p>


<p class="wp-block-paragraph">「この番号の情報をください」</p>


<p class="wp-block-paragraph">と問い合わせます。</p>


<p class="wp-block-paragraph">たとえば、あるネットワーク機器のCPU使用率を表すOIDが、次のような番号だったとします。</p>


<pre class="wp-block-code"><code>1.3.6.1.4.1.9.9.109.1.1.1.1.5</code></pre>



<p class="wp-block-paragraph">監視マネージャーは、このOIDを指定して、監視対象機器に問い合わせます。</p>


<p class="wp-block-paragraph">すると、機器側のSNMPエージェントは、</p>


<pre class="wp-block-code"><code>80</code></pre>



<p class="wp-block-paragraph">のように値を返します。</p>


<p class="wp-block-paragraph">この場合、人間から見ると「CPU使用率が80%」という意味です。</p>


<p class="wp-block-paragraph">しかし、機器や監視マネージャーのやり取りとしては、基本的には「どのOIDの値を取るか」という話になります。</p>


<p class="wp-block-paragraph">つまり、OIDは、監視対象機器の中にある監視項目の住所です。</p>


<p class="wp-block-paragraph">次にMIBです。</p>


<p class="wp-block-paragraph">MIBは、Management Information Baseの略です。</p>


<p class="wp-block-paragraph">一言でいえば、<strong>OIDという数字の住所と、人間が理解できる意味を対応づける辞書</strong>です。</p>


<figure id="0f702ce6-df03-45e0-84a6-af46607db64e" class="wp-block-image"><a href="https://assets.st-note.com/img/1779871713-k9XwrUd2tsmnZzRebYSNLOEl.png?width=2000&amp;height=2000&amp;fit=bounds&amp;quality=85"><img decoding="async" src="https://assets.st-note.com/img/1779871713-k9XwrUd2tsmnZzRebYSNLOEl.png?width=1200" alt="画像" /></a>
<figcaption class="wp-element-caption">　　　　　　　　　　　　　　　　　　　　　　　　　　図：MIBとOIDを使った監視のイメージ</figcaption>
</figure>


<p class="wp-block-paragraph">人間が、毎回、</p>


<pre class="wp-block-code"><code>1.3.6.1.4.1.9.9.109.1.1.1.1.5</code></pre>



<p class="wp-block-paragraph">という数字を見ても、それが何を意味するのかは分かりません。</p>


<p class="wp-block-paragraph">そこで、ベンダーが提供するMIBファイルを使います。</p>


<p class="wp-block-paragraph">MIBには、たとえば次のような対応関係が定義されています。</p>


<pre class="wp-block-code"><code>1.3.6.1.4.1.9.9.109.1.1.1.1.5
=
CPUの5分平均使用率</code></pre>



<p class="wp-block-paragraph">実際には、製品ごとの正式な項目名や階層構造で定義されていますが、考え方としてはこのようなものです。</p>


<p class="wp-block-paragraph">つまり、OIDは「住所」です。<br />
MIBは「住所録」または「辞書」です。</p>


<p class="wp-block-paragraph">OIDが分かれば、監視マネージャーは対象機器から値を取得できます。<br />
MIBがあれば、そのOIDが何を意味するのかを人間が理解しやすくなります。</p>


<p class="wp-block-paragraph">ここまでは、SNMP監視の基本です。</p>


<p class="wp-block-paragraph">ただし、実務で本当に重要なのはここからです。</p>


<p class="wp-block-paragraph"><strong>MIBを登録しただけでは監視設計は終わらない</strong></p>


<p class="wp-block-paragraph">MIBファイルを監視製品に読み込ませると、製品固有のOIDやTrapの意味を解釈できるようになります。</p>


<p class="wp-block-paragraph">しかし、それだけでは監視設計は終わりません。</p>


<p class="wp-block-paragraph">MIBは、あくまで辞書です。</p>


<p class="wp-block-paragraph">辞書を入れただけでは、</p>


<ul id="6054cf22-62b5-4bed-9acd-3bfb6b4e9daa" class="wp-block-list">
	<li>どのOIDを監視するのか</li>


	<li>どの値を警告とするのか</li>


	<li>どの値を異常とするのか</li>


	<li>どのTrapを通知対象にするのか</li>


	<li>どのTrapは通知しないのか</li>


	<li>何分継続したら異常にするのか</li>


	<li>誰に通知するのか</li>


	<li>通知を受けた人が何を確認するのか</li>
</ul>


<p class="wp-block-paragraph">は決まりません。</p>


<p class="wp-block-paragraph">ここを決めるのが監視設計です。</p>


<p class="wp-block-paragraph">たとえば、CPU使用率のOIDを監視するとします。</p>


<p class="wp-block-paragraph">CPU使用率が80%になったら、必ず異常でしょうか。</p>


<p class="wp-block-paragraph">そうとは限りません。</p>


<p class="wp-block-paragraph">夜間バッチの時間帯だけ一時的にCPUが上がるシステムもあります。<br />
バックアップ処理中だけCPUやI/Oが上がることもあります。<br />
短時間のスパイクであれば、業務影響がない場合もあります。<br />
一方で、CPU使用率が70%程度でも、長時間継続すれば性能劣化の予兆かもしれません。</p>


<p class="wp-block-paragraph">つまり、単に「CPU使用率のOIDを監視する」だけでは不十分です。</p>


<p class="wp-block-paragraph">次のように、運用で判断できる条件まで落とす必要があります。</p>


<pre class="wp-block-code"><code>CPU使用率が90%以上
かつ
5分以上継続した場合は警告

CPU使用率が95%以上
かつ
10分以上継続した場合は異常

ただし、夜間バッチ時間帯は別閾値とする</code></pre>



<p class="wp-block-paragraph">もちろん、これは例です。</p>


<p class="wp-block-paragraph">実際の閾値は、システムの特性、性能要件、通常時の負荷、ピーク時間帯、バッチ処理、運用体制に応じて決めます。</p>


<p class="wp-block-paragraph"><strong>MIBを入れただけで監視を始めると何が起きるか</strong></p>


<p class="wp-block-paragraph">よくない進め方は、ベンダーのMIBファイルを監視サーバーに登録し、デフォルト設定に近い形で対象機器の監視を一斉に始めてしまうことです。</p>


<p class="wp-block-paragraph">この場合、運用開始後にアラートが大量に出ることがあります。</p>


<p class="wp-block-paragraph">いわゆる、アラートの大洪水です。</p>


<p class="wp-block-paragraph">なぜそうなるのか。</p>


<p class="wp-block-paragraph">主な理由は3つあります。</p>


<p class="wp-block-paragraph">1つ目は、<strong>通知すべきイベントと、通知しなくてよいイベントを分けていない</strong>ことです。</p>


<p class="wp-block-paragraph">機器や製品は、さまざまなTrapや状態変化を出します。</p>


<p class="wp-block-paragraph">その中には、本当に即時対応が必要な障害もあります。</p>


<p class="wp-block-paragraph">一方で、単なる情報通知、状態変化、復旧通知、一時的な警告、運用上は無視してよいメッセージもあります。</p>


<p class="wp-block-paragraph">これらをすべて同じように通知すると、運用者は大量のアラートを受けることになります。</p>


<p class="wp-block-paragraph">2つ目は、<strong>閾値や継続時間をシステム特性に合わせていない</strong>ことです。</p>


<p class="wp-block-paragraph">CPU、メモリ、ディスクI/O、ネットワーク使用率などは、システムによって通常値が違います。</p>


<p class="wp-block-paragraph">業務ピーク時にCPUが高くなるシステムもあります。<br />
夜間バッチ中にI/Oが急増するシステムもあります。<br />
月次処理の日だけ負荷が上がるシステムもあります。</p>


<p class="wp-block-paragraph">それを考慮せず、一般的な閾値だけで監視すると、正常な業務処理まで異常として検知してしまいます。</p>


<p class="wp-block-paragraph">3つ目は、<strong>テスト工程で実際のログやアラートを精査していない</strong>ことです。</p>


<p class="wp-block-paragraph">監視条件は、設計時点の机上検討だけでは決めきれません。</p>


<p class="wp-block-paragraph">特に、ログ監視やTrap監視は、実際にシステムを動かしてみないと、どのメッセージがどれくらい出るのか分からないことがあります。</p>


<p class="wp-block-paragraph">システムテスト、運用テスト、本番リハーサルで、業務データ、日次処理、月次処理、ピーク時のトランザクション、バックアップ、ジョブ、外部連携などを動かして初めて、大量のログやイベントが出てきます。</p>


<p class="wp-block-paragraph">その中から、</p>


<ul id="17fc5f4a-a5db-4403-8071-0f27f566e94c" class="wp-block-list">
	<li>本当に通知すべきもの</li>


	<li>通知は不要だが記録しておくもの</li>


	<li>除外してよいもの</li>


	<li>閾値や継続時間を見直すべきもの</li>


	<li>一次対応手順に落とすべきもの</li>
</ul>


<p class="wp-block-paragraph">を精査する必要があります。</p>


<p class="wp-block-paragraph">これをやらずに本番稼働すると、運用開始後に大量のアラートが出ます。</p>


<p class="wp-block-paragraph">すると、運用者はアラートを見切れなくなります。</p>


<p class="wp-block-paragraph">最悪なのは、本当に重要な障害が、不要なアラートの中に埋もれてしまうことです。</p>


<p class="wp-block-paragraph">監視は、アラートをたくさん出せばよいわけではありません。</p>


<p class="wp-block-paragraph">運用者が判断できる形で、必要な異常を検知することが重要です。</p>


<h2 class="wp-block-heading">SNMP監視も詳細設計の対象である</h2>


<p class="wp-block-paragraph">ここまで見ると分かるように、SNMP監視は単にMIBを登録する作業ではありません。</p>


<ul>
	<li>MIBを登録する</li>
	<li>OIDを選ぶ</li>
	<li>Trapを受ける</li>
	<li>閾値を決める</li>
	<li>重大度を決める</li>
	<li>通知先を決める</li>
	<li>除外条件を決める</li>
	<li>テスト工程で実際の発報状況を確認する</li>
	<li>運用手順と対応づける</li>
</ul>
<p class="wp-block-paragraph">ここまで含めて、SNMP監視も詳細設計の中で決めるべき重要な領域です。</p>


<h2 class="wp-block-heading">まとめ｜監視は「異常を検知する設定」ではなく設計である</h2>
<p>システム監視では、まず<strong>何を正常とし、何を異常として検知するのか</strong>を決める必要があります。</p>
<p>本記事では、監視の基本として次の点を整理しました。</p>
<ul>
	<li>
<p><strong>監視には「監視する側」と「監視される側」がある</strong></p>
</li>
	<li>
<p><strong><code>ping</code> が通ることと、システムが業務として正常に使えることは別</strong></p>
</li>
	<li>
<p><strong>死活監視、エージェント監視、エージェントレス監視、SNMP監視は目的に応じて使い分ける</strong></p>
</li>
	<li>
<p><strong>SNMPではMIBを登録するだけでなく、OID、閾値、Trap、除外条件まで設計する</strong></p>
</li>
	<li>
<p><strong>監視条件は設計時に決めて終わりではなく、テスト工程で実際の発報を確認して見直す</strong></p>
</li>
</ul>
<p>監視製品を導入し、監視項目を設定すれば監視設計が終わるわけではありません。</p>
<p>重要なのは、</p>
<p><strong>「何を検知するか」<br />
「どの条件で異常と判断するか」<br />
「検知した後に誰がどう動くか」</strong></p>
<p>までつながっていることです。</p>
<p>監視は、アラートを出すための設定ではなく、<strong>障害に気づき、判断し、対応につなげるための設計</strong>です。</p>
<h3>次の記事｜クラウドでは監視設計がどう変わるのか</h3>
<p>オンプレミスでは、監視サーバーやエージェント、SNMPなどを使って監視する構成が一般的でした。</p>
<p>一方、AWSやOCIでは、CloudWatchやOCI Monitoringといったクラウドネイティブな監視サービスを利用できます。</p>
<p>ただし、クラウド監視サービスを使えば、監視設計そのものが不要になるわけではありません。</p>
<p>後編では、</p>
<ul>
	<li>
<p>AWS CloudWatch／OCI Monitoringによるクラウド監視</p>
</li>
	<li>
<p>オンプレミスからクラウド移行するときの監視Fit &amp; Gap</p>
</li>
	<li>
<p>監視方式と監視対象の違い</p>
</li>
	<li>
<p>閾値、検知条件、重大度、通知先</p>
</li>
	<li>
<p>一次対応・エスカレーション・復旧確認</p>
</li>
</ul>
<p>まで踏み込み、<strong>実際の運用につながる監視設計</strong>を整理しています。</p>
<a href="https://sys-univ.com/tec/monitoring-cloud-fit-gap/" title="【後編】システム監視の基本｜クラウド監視と「運用で使える監視設計」" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img width="160" height="90" src="https://sys-univ.com/wp-content/uploads/2026/06/daa30b283a2097394b43f5af8add57d9-160x90.jpg" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" loading="lazy" decoding="async" srcset="https://sys-univ.com/wp-content/uploads/2026/06/daa30b283a2097394b43f5af8add57d9-160x90.jpg 160w, https://sys-univ.com/wp-content/uploads/2026/06/daa30b283a2097394b43f5af8add57d9-500x281.jpg 500w, https://sys-univ.com/wp-content/uploads/2026/06/daa30b283a2097394b43f5af8add57d9-800x450.jpg 800w, https://sys-univ.com/wp-content/uploads/2026/06/daa30b283a2097394b43f5af8add57d9-300x169.jpg 300w, https://sys-univ.com/wp-content/uploads/2026/06/daa30b283a2097394b43f5af8add57d9-768x432.jpg 768w, https://sys-univ.com/wp-content/uploads/2026/06/daa30b283a2097394b43f5af8add57d9-1536x864.jpg 1536w, https://sys-univ.com/wp-content/uploads/2026/06/daa30b283a2097394b43f5af8add57d9-120x68.jpg 120w, https://sys-univ.com/wp-content/uploads/2026/06/daa30b283a2097394b43f5af8add57d9-320x180.jpg 320w, https://sys-univ.com/wp-content/uploads/2026/06/daa30b283a2097394b43f5af8add57d9-376x212.jpg 376w, https://sys-univ.com/wp-content/uploads/2026/06/daa30b283a2097394b43f5af8add57d9.jpg 1672w" sizes="auto, (max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【後編】システム監視の基本｜クラウド監視と「運用で使える監視設計」</div><div class="blogcard-snippet internal-blogcard-snippet">CloudWatch等のクラウド監視サービスは部品に過ぎない。既存監視をクラウド移行後どう引き継ぐか、Fit &amp; Gapの整理方法を実務観点で解説します。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img src="https://www.google.com/s2/favicons?domain=https://sys-univ.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" loading="lazy" decoding="async" /></div><div class="blogcard-domain internal-blogcard-domain">sys-univ.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2026.09.07</div></div></div></div></a>
<hr />
<p><strong><span style="font-size: 20px;">関連記事</span></strong></p>
<p>監視は単独で設計するものではありません。</p>
<p>非機能要件で求める可用性や運用性を整理し、詳細設計で監視条件へ落とし込み、テスト・運用につなげていく必要性については次の記事で説明しています。</p>
<ul>
	<li><strong>詳細設計で決めること 後編②｜監視・ログ・バックアップ・セキュリティ・運用スクリプト</strong><br />
監視対象、閾値、通知、ログ監視条件など、監視を詳細設計としてどこまで具体化するかを整理しています。</li>
</ul>
<a href="https://sys-univ.com/dev/detailed-design-part2-monitoring-security/" title="【全3回・第3部】監視・ログ・バックアップ・セキュリティの詳細設計｜運用で使える設計にする観点" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img width="160" height="90" src="https://sys-univ.com/wp-content/uploads/2026/08/a857b32d11c29b9f04dd5d31f5ea42a3-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" loading="lazy" decoding="async" srcset="https://sys-univ.com/wp-content/uploads/2026/08/a857b32d11c29b9f04dd5d31f5ea42a3-160x90.png 160w, https://sys-univ.com/wp-content/uploads/2026/08/a857b32d11c29b9f04dd5d31f5ea42a3-120x68.png 120w, https://sys-univ.com/wp-content/uploads/2026/08/a857b32d11c29b9f04dd5d31f5ea42a3-320x180.png 320w, https://sys-univ.com/wp-content/uploads/2026/08/a857b32d11c29b9f04dd5d31f5ea42a3-376x212.png 376w" sizes="auto, (max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【全3回・第3部】監視・ログ・バックアップ・セキュリティの詳細設計｜運用で使える設計にする観点</div><div class="blogcard-snippet internal-blogcard-snippet">詳細設計を「構築・テスト・運用できる形」に落とし込む後編②。設計時点では判断しきれない監視条件の見極めなど、現場で見落としやすい監視設計の難しさを整理します。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img src="https://www.google.com/s2/favicons?domain=https://sys-univ.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" loading="lazy" decoding="async" /></div><div class="blogcard-domain internal-blogcard-domain">sys-univ.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2026.08.20</div></div></div></div></a>
<ul>
	<li><strong>機能要件と非機能要件の違い｜「機能が動く」と「本番で使える」は違う点</strong><br />
可用性、性能、運用・保守性など、監視設計の前提となる非機能要件について解説しています。</li>
</ul>
<a href="https://sys-univ.com/dev/functional-nonfunctional-requirements/" title="機能要件と非機能要件の違い｜「機能が動く」と「本番で使える」は違う" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img width="160" height="90" src="https://sys-univ.com/wp-content/uploads/2026/06/b9c93881b11465fd6ccbf91142947faa-160x90.jpg" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" loading="lazy" decoding="async" srcset="https://sys-univ.com/wp-content/uploads/2026/06/b9c93881b11465fd6ccbf91142947faa-160x90.jpg 160w, https://sys-univ.com/wp-content/uploads/2026/06/b9c93881b11465fd6ccbf91142947faa-500x281.jpg 500w, https://sys-univ.com/wp-content/uploads/2026/06/b9c93881b11465fd6ccbf91142947faa-800x450.jpg 800w, https://sys-univ.com/wp-content/uploads/2026/06/b9c93881b11465fd6ccbf91142947faa-300x169.jpg 300w, https://sys-univ.com/wp-content/uploads/2026/06/b9c93881b11465fd6ccbf91142947faa-768x432.jpg 768w, https://sys-univ.com/wp-content/uploads/2026/06/b9c93881b11465fd6ccbf91142947faa-1536x864.jpg 1536w, https://sys-univ.com/wp-content/uploads/2026/06/b9c93881b11465fd6ccbf91142947faa-120x68.jpg 120w, https://sys-univ.com/wp-content/uploads/2026/06/b9c93881b11465fd6ccbf91142947faa-320x180.jpg 320w, https://sys-univ.com/wp-content/uploads/2026/06/b9c93881b11465fd6ccbf91142947faa-376x212.jpg 376w, https://sys-univ.com/wp-content/uploads/2026/06/b9c93881b11465fd6ccbf91142947faa.jpg 1672w" sizes="auto, (max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">機能要件と非機能要件の違い｜「機能が動く」と「本番で使える」は違う</div><div class="blogcard-snippet internal-blogcard-snippet">「機能が動く」と「本番で使える」は違う。機能要件と非機能要件の違いを、購入申請システムの具体例と現場の失敗パターンから整理します。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img src="https://www.google.com/s2/favicons?domain=https://sys-univ.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" loading="lazy" decoding="async" /></div><div class="blogcard-domain internal-blogcard-domain">sys-univ.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2026.06.19</div></div></div></div></a>
<ul>
	<li><strong>要件定義とは何をする工程か｜RFP・見積前提から認識差を潰す実務</strong><br />
監視を含む非機能要件を、設計に入る前の要件定義でどこまで決めるのかを整理しています。</li>
</ul>
<a href="https://sys-univ.com/dev/requirements-definition/" title="要件定義とは何をする工程か｜RFP・見積前提から認識差を潰す実務" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img width="160" height="90" src="https://sys-univ.com/wp-content/uploads/2026/06/2d222665bad7a62379b769bded1c226a-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" loading="lazy" decoding="async" srcset="https://sys-univ.com/wp-content/uploads/2026/06/2d222665bad7a62379b769bded1c226a-160x90.png 160w, https://sys-univ.com/wp-content/uploads/2026/06/2d222665bad7a62379b769bded1c226a-500x281.png 500w, https://sys-univ.com/wp-content/uploads/2026/06/2d222665bad7a62379b769bded1c226a-800x450.png 800w, https://sys-univ.com/wp-content/uploads/2026/06/2d222665bad7a62379b769bded1c226a-300x169.png 300w, https://sys-univ.com/wp-content/uploads/2026/06/2d222665bad7a62379b769bded1c226a-768x432.png 768w, https://sys-univ.com/wp-content/uploads/2026/06/2d222665bad7a62379b769bded1c226a-1536x864.png 1536w, https://sys-univ.com/wp-content/uploads/2026/06/2d222665bad7a62379b769bded1c226a-120x68.png 120w, https://sys-univ.com/wp-content/uploads/2026/06/2d222665bad7a62379b769bded1c226a-320x180.png 320w, https://sys-univ.com/wp-content/uploads/2026/06/2d222665bad7a62379b769bded1c226a-376x212.png 376w, https://sys-univ.com/wp-content/uploads/2026/06/2d222665bad7a62379b769bded1c226a.png 1672w" sizes="auto, (max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">要件定義とは何をする工程か｜RFP・見積前提から認識差を潰す実務</div><div class="blogcard-snippet internal-blogcard-snippet">要件定義とは何をする工程なのか。RFP、質問回答、提案書、見積前提から認識差を潰し、スコープや責任分界を確定する実務を、大規模SIの具体的な失敗事例とともに解説します。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img src="https://www.google.com/s2/favicons?domain=https://sys-univ.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" loading="lazy" decoding="async" /></div><div class="blogcard-domain internal-blogcard-domain">sys-univ.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2026.08.12</div></div></div></div></a>
<ul>
	<li><strong>システム開発の全体像｜アプリ・基盤・非機能はどうつながるのか</strong><br />
要件定義、設計、構築、テスト、運用まで、監視設計がシステム開発全体のどこに位置するのかを解説しています。</li>
</ul>
<a href="https://sys-univ.com/dev/system-dev-overview/" title="システム開発の全体像｜アプリ・基盤・非機能はどうつながるのか" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img width="160" height="90" src="https://sys-univ.com/wp-content/uploads/2026/08/7bef9f366cb7c5feb05b75b01a4ea2da-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" loading="lazy" decoding="async" srcset="https://sys-univ.com/wp-content/uploads/2026/08/7bef9f366cb7c5feb05b75b01a4ea2da-160x90.png 160w, https://sys-univ.com/wp-content/uploads/2026/08/7bef9f366cb7c5feb05b75b01a4ea2da-120x68.png 120w, https://sys-univ.com/wp-content/uploads/2026/08/7bef9f366cb7c5feb05b75b01a4ea2da-320x180.png 320w, https://sys-univ.com/wp-content/uploads/2026/08/7bef9f366cb7c5feb05b75b01a4ea2da-376x212.png 376w" sizes="auto, (max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">システム開発の全体像｜アプリ・基盤・非機能はどうつながるのか</div><div class="blogcard-snippet internal-blogcard-snippet">システム開発は、アプリケーションだけで成立するものではありません。システム基盤、性能・可用性などの非機能、テスト、移行、運用がどのようにつながって一つのシステムを成立させるのかを、現場目線で整理します。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img src="https://www.google.com/s2/favicons?domain=https://sys-univ.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" loading="lazy" decoding="async" /></div><div class="blogcard-domain internal-blogcard-domain">sys-univ.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2026.08.26</div></div></div></div></a>
<p>&nbsp;</p>]]></content:encoded>
					
					<wfw:commentRss>https://sys-univ.com/tec/monitor/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【後編】システム監視の基本｜クラウド監視と「運用で使える監視設計」</title>
		<link>https://sys-univ.com/tec/monitoring-cloud-fit-gap/</link>
					<comments>https://sys-univ.com/tec/monitoring-cloud-fit-gap/#respond</comments>
		
		<dc:creator><![CDATA[ナギ]]></dc:creator>
		<pubDate>Mon, 07 Sep 2026 14:32:46 +0000</pubDate>
				<category><![CDATA[AWS]]></category>
		<category><![CDATA[テクノロジー]]></category>
		<guid isPermaLink="false">https://sys-univ.com/?p=2671</guid>

					<description><![CDATA[この記事は「システム監視の基本」全2回シリーズの第2部です。 【第1部】システム監視の基本｜死活監視・エージェント監視・SNMP監視 監視の基本構造、死活監視、エージェント監視、SNMP監視、MIB・OIDなどを解説 【 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph"><strong>この記事は「システム監視の基本」全2回シリーズの第2部です。</strong></p>
<ul>
	<li>
<p><a href="https://sys-univ.com/tec/monitor/"><strong>【第1部】システム監視の基本｜死活監視・エージェント監視・SNMP監視</strong></a><br />
監視の基本構造、死活監視、エージェント監視、SNMP監視、MIB・OIDなどを解説</p>
</li>
	<li>
<p><strong>【第2部】この記事</strong><br />
クラウド監視、既存監視のFit &amp; Gap、運用で使える監視設計を解説</p>
</li>
</ul>
<hr />
<p><strong>はじめに</strong></p>
<p>前編では、死活監視、エージェント監視、SNMP監視など、システム監視の基本的な仕組みを整理しました。</p>
<p>そこで確認したのは、<strong><code>ping</code> が通ることと、システムが業務として正常に使えることは別</strong>だという点です。</p>
<p>サーバへの到達、プロセスの起動、HTTP/HTTPSの応答、業務処理の正常終了では、それぞれ確認しているレベルが異なります。</p>
<p>後編では、この考え方をクラウド環境へ広げます。</p>
<p>AWS CloudWatchやOCI Monitoringを使えば、自前の監視サーバを構築せずに、メトリクス、ログ、アラームを扱える場合があります。</p>
<p>しかし、クラウド監視サービスを使えば、監視設計が不要になるわけではありません。</p>
<ul>
	<li>標準メトリクスで足りるのか</li>
	<li>既存監視をそのまま置き換えられるのか</li>
	<li>どの値を異常とするのか</li>
	<li>誰に通知するのか</li>
	<li>通知後に何を確認し、どう対応するのか</li>
</ul>
<p>こうした点は、クラウドでも設計する必要があります。</p>
<p>特にオンプレミスからクラウドへ移行する場合は、既存監視をそのまま移すのではなく、<strong>何を引き継ぎ、何を標準機能で代替し、何を見直すのか</strong>というFit &amp; Gapが重要になります。</p>
<p>監視は、アラートを出すための設定ではありません。</p>
<p><strong>障害に気づき、判断し、対応につなげるための設計です。</strong></p>
<h2>クラウド監視とは何か</h2>
<p>前編で説明した監視構成は、オンプレミスや従来型の監視製品を前提としたものでした。</p>
<p>一方、クラウドでは監視の実現方法が少し変わります。</p>
<p>クラウドでは、クラウドベンダーが用意する監視サービスを使って、仮想サーバ、ストレージ、ロードバランサ、データベース、ネットワーク、サーバレス、コンテナなどのメトリクス、ログ、イベントを収集できます。<br />
<br />
そのため、従来のように自前で監視サーバを立てて、すべてのサーバに監視エージェントを導入し、監視製品を運用する、という構成が必ずしも必要ではありません。ただし、ここで誤解してはいけないことがあります。<br />
<br />
クラウド監視サービスがあることと、監視設計が不要になることは別です。<br />
クラウド監視サービスは、監視を実現するための部品です。<br />
<br />
何を監視するのか。 どの値を異常とするのか。 どの条件で通知するのか。 通知を受けた人が何を確認するのか。 既存システムで行っていた監視を新システムでも継続するのか。<br />
<br />
ここは、設計で決める必要があります。<br />
<br />
特にオンプレミスからクラウドへ移行する業務システムでは、既存監視の引き継ぎが大きな論点になります。</p>


<h2 class="wp-block-heading">クラウド監視サービスの代表例</h2>


<p class="wp-block-paragraph">クラウド監視サービスは、クラウドベンダーごとに用意されています。<br />
<br />
AWSであれば、CloudWatch。 Azureであれば、Azure Monitor。 <br />
Google Cloudであれば、Cloud Monitoring。 <br />
OCIであれば、OCI Monitoring。<br />
<br />
それぞれ名称や機能の範囲は異なりますが、基本的には、クラウド上のリソースからメトリクス、ログ、イベントを収集し、条件に応じてアラームや通知につなげるためのサービスです。<br />
<br />
この記事では、AWSでよく使われるCloudWatchを中心に説明します。<br />
<br />
あわせて、Oracle DatabaseやOracle製品を利用している業務システムではOCIが選択肢になることもあるため、OCI Monitoringについても簡単に触れます。</p>


<h2 class="wp-block-heading">AWS CloudWatchの場合</h2>


<p class="wp-block-paragraph">AWS CloudWatchは、AWS上のリソースを監視するための代表的なサービスです。<br />
<br />
EC2、RDS、ELB、EBS、Lambda、ECS、EKSなど、AWS上の多くのサービスはCloudWatchにメトリクスを出力できます。<br />
<br />
たとえば、EC2であればCPU使用率、ネットワーク送受信量、ディスクI/Oなどを確認できます。<br />
<br />
RDSであれば、CPU使用率、DB接続数、ストレージ容量、読み書きIOPSなどを確認できます。ELBであれば、リクエスト数、ターゲットの正常性、HTTPエラー数、レスポンスタイムなどを確認できます。<br />
<br />
CloudWatchでは、こうしたメトリクスに対してアラームを設定できます。</p>


<p class="wp-block-paragraph">たとえば、CPU使用率が一定時間以上高い状態が続いたら通知する。 RDSの空き容量が少なくなったら通知する。 ELB配下の正常ターゲット数が減ったら通知する。 アプリケーションログに特定のエラーメッセージが出たら通知する。<br />
<br />
このように、CloudWatchはAWS上のシステム監視における基本的な部品になります。ただし、CloudWatchを使えばすべてが自動で完璧に監視されるわけではありません。<br />
<br />
標準メトリクスで足りるのか。 詳細監視が必要なのか。 CloudWatch Agentを入れてOS内部のメモリやディスク使用率を取得するのか。 アプリケーションログをCloudWatch Logsへ送るのか。 ログのどの文字列を異常として拾うのか。 アラーム閾値をどう設定するのか。 通知先をどうするのか。 通知を受けた人が何を確認するのか。<br />
<br />
これらは設計が必要です。<br />
<br />
<strong>特にオンプレミスからAWSへ移行する場合、既存の監視をCloudWatchだけでそのまま置き換えられるとは限りません。<br />
</strong><br />
JP1、Systemwalker、Zabbix、PFM for Oracle、Oracle Enterprise Managerなどで見ていた監視項目が、CloudWatchの標準メトリクスだけで同じ粒度で取得できるとは限らないからです。<br />
<br />
そのため、AWSへ移行する場合でも、CloudWatchで何が見えるかだけではなく、既存監視で何を見ていたのか、新システムでも同じ監視が必要なのか、必要ならCloudWatchで代替できるのか、できない場合は何で補うのかを整理する必要があります。</p>


<h2 class="wp-block-heading">OCI Monitoringの場合</h2>


<p class="wp-block-paragraph">OCIでも、クラウドネイティブな監視サービスがあります。<br />
代表的なのがOCI Monitoringです。<br />
<br />
OCI Monitoringを使うと、OCI上のコンピュート、ストレージ、ロードバランサ、データベース、ネットワーク関連リソースなどのメトリクスを収集し、条件に応じてアラームを設定できます。<br />
<br />
OCIのComputeインスタンスでは、プラグインを有効化することで、インスタンスの状態やメトリクスを取得できる構成もあります。<br />
ただし、OCI Monitoringを使えば、Oracle Databaseの性能監視や既存の運用監視がすべて自動で置き換わるわけではありません。<br />
<br />
Oracle Databaseを利用している業務システムでは、OCI Monitoringで見るもの、Oracle Database側の機能で見るもの、OEMで見るもの、ログ監視で見るもの、運用手順で確認するものを分けて考える必要があります。<br />
<br />
特に、既存システムでOracle Database、Oracle Enterprise Manager、AWR、ASH、Performance Hub、PFM for Oracleなどを利用していた場合、クラウド移行後にどの監視を何で代替するのかを整理する必要があります。<br />
<br />
Oracle系システムでは、DB性能、待機イベント、SQL、セッション、表領域、アラートログなど、DB内部の監視観点が重要になることがあります。<br />
そのため、OCI Monitoringだけで考えるのではなく、Oracle Databaseの監視機能や既存運用を含めて、全体として監視設計を行う必要があります。</p>


<h2 class="wp-block-heading">クラウド移行では、既存監視のFit &amp; Gapが必要</h2>


<p class="wp-block-paragraph">クラウド移行といっても、完全な新規開発ばかりではありません。<br />
<br />
実務では、既存のオンプレミスシステムをクラウドへ移すリフト＆シフトや、移行後に段階的にクラウドネイティブ化していくケースが多くあります。<br />
<br />
その場合、移行前のシステムで行っていた監視を、移行後にどう引き継ぐかが大きな論点になります。<br />
<br />
既存環境では、JP1、Systemwalker、Zabbix、PFM for Oracle、Oracle Enterprise Managerなどで、OS、ジョブ、ログ、DB性能、表領域、待機イベント、SQL、アラートログなどを監視していたかもしれません。<br />
<br />
では、それをクラウド移行後に同じように見られるのでしょうか。答えは、簡単ではありません。<br />
<br />
クラウド移行後の監視Fit &amp; Gapでは、少なくとも次の3つに整理して考える必要があります。</p>


<h3 class="wp-block-heading">1. 既存監視を標準機能で置き換えられるもの</h3>


<p class="wp-block-paragraph">PFM for Oracleや既存監視製品で見ていた内容を、OEM、AWR、ASH、Performance Hub、CloudWatch、Performance Insights、Database Insightsなどで代替できる場合は、新環境の標準機能に寄せる判断があります。<br />
<br />
この場合、既存監視をそのまま機械的に移植するのではなく、新環境で標準的に提供されている監視機能を使い、運用をシンプルにできないかを検討します。</p>


<h3 class="wp-block-heading">2. 標準機能だけでは置き換えられないもの</h3>


<p class="wp-block-paragraph">一方で、既存監視で見ていた項目が、新環境の標準機能では取得できない、または同じ粒度で監視できない場合もあります。</p>


<p class="wp-block-paragraph">その場合は、代替方式を検討します。<br />
<br />
別のメトリクスで代替できるのか。 ログ監視で拾えるのか。 スクリプトで補完できるのか。 外部監視製品やAPMを使うのか。 そもそも新環境でも本当に必要な監視なのか。<br />
<br />
ここを整理せずに進めると、オンプレでは見えていた異常が、クラウド移行後に見えなくなることがあります。</p>


<h3 class="wp-block-heading">3. 代替するか、捨てるか、運用でカバーするもの</h3>


<p class="wp-block-paragraph">標準機能で置き換えられない監視については、最終的に判断が必要です。<br />
<br />
手組みしてでも実装するのか。 別製品を追加して実現するのか。 運用手順でカバーするのか。 監視対象から外すのか。<br />
<br />
監視を外す場合は、障害検知が遅れる可能性、一次対応への影響、サービスレベルへの影響を説明し、リスク受容として顧客と合意する必要があります。<br />
<br />
<strong>ここで重要なのは、プロジェクト側だけで勝手に決めないことです。</strong><br />
<br />
既存システムで実装されていた監視には、多くの場合、過去の障害、運用上の要請、監査対応、顧客側の不安、サービスレベル上の理由があります。</p>


<p class="wp-block-paragraph"><strong>そのため、単に「新しい製品ではできないのでやりません」とは言いにくいことがあります。</strong><br />
<br />
技術的には実現できない。 実現はできるがコストが高すぎる。 手組みすれば可能だが保守性が悪い。 運用カバーで十分と判断できる。 リスクを受容して監視対象から外す。<br />
<br />
こうした判断を、要件、コスト、運用負荷、障害時の影響、顧客の期待値を踏まえて整理します。<br />
<br />
クラウド移行時の監視設計で重要なのは、既存監視を機械的に移植することではありません。<br />
<br />
業務システムとして必要な異常検知、性能把握、一次対応、エスカレーションが、新システムでも成立するかを確認することです。<br />
<br />
そのうえで、できること、できないこと、代替すること、やめることを顧客と合意する。ここまで含めて、新システムの監視設計です。</p>


<h2 class="wp-block-heading">監視対象・目的で見た監視の種類</h2>


<p class="wp-block-paragraph">ここで重要なポイントは、「監視方式」と「監視対象・監視目的」を混同しないことです。</p>


<figure id="01dd46e9-c086-4f2b-9484-1ffe80cff962" class="wp-block-image"><a href="https://assets.st-note.com/img/1779939462-wkvQSbt3dUW9gZh2X16aoJji.png?width=2000&amp;height=2000&amp;fit=bounds&amp;quality=85"><img decoding="async" src="https://assets.st-note.com/img/1779939462-wkvQSbt3dUW9gZh2X16aoJji.png?width=1200" alt="画像" /></a></figure>


<p class="wp-block-paragraph">この中で、若手SEが特に理解しておくべきなのは、死活監視だけでは業務正常性は分からないという点です。<br />
<br />
サーバに ping が通っていても、Web画面がエラーになっているかもしれません。 Web画面が開いても、検索処理が失敗するかもしれません。 DBプロセスが起動していても、表領域が枯渇して更新できないかもしれません。 バックアップジョブが正常終了していても、リストアできないかもしれません。<br />
<br />
だからこそ、監視設計では「何をもって正常と判断するのか」を決める必要があります。</p>


<h2 class="wp-block-heading">監視方式は「何を知りたいか」から選ぶ</h2>


<p class="wp-block-paragraph">監視方式を選ぶときに大事なのは、製品や流行から入らないことです。</p>


<p class="wp-block-paragraph">まず決めるべきなのは、「何を知りたいのか」です。</p>


<ul>
	<li>サーバが起動しているかを知りたいなら、死活監視です。</li>
	<li>Webサービスが応答しているかを知りたいなら、URL監視です。</li>
	<li>OS内部のCPUやメモリを知りたいなら、リソース監視です。</li>
	<li>DBプロセスが動いているかを知りたいなら、プロセス監視です。</li>
	<li>DBとしてログインできるかを知りたいなら、DB接続監視です。</li>
	<li>ログに異常メッセージが出ていないか知りたいなら、ログ監視です。</li>
	<li>ストレージやネットワーク機器の状態を知りたいなら、SNMP監視や製品API監視です。</li>
	<li>クラウドリソースの状態を知りたいなら、CloudWatchやOCI Monitoringなどのクラウド監視サービスです。</li>
</ul>
<p class="wp-block-paragraph">監視方式は、目的によって変わります。</p>


<p class="wp-block-paragraph">逆に言えば、監視方式だけを決めても意味がありません。<br />
<br />
「SNMPで監視します」では不十分です。</p>
<ul>
	<li>SNMPで何を監視するのか。</li>
	<li>どのOIDを見るのか。</li>
	<li>どのTrapを受けるのか。</li>
	<li>重大度をどう判定するのか。</li>
	<li>通知先はどこか。</li>
	<li>一次対応手順は何か。</li>
</ul>


<p>ここまで決めて初めて、監視設計になります。</p>
<h2 class="wp-block-heading">監視設計で決めること</h2>


<p class="wp-block-paragraph">監視設計では、最低限、次のような項目を決めます。</p>


<ul id="aac39da1-6e06-4279-85fd-eeb17571226b" class="wp-block-list">
	<li>監視対象</li>


	<li>監視項目</li>


	<li>監視方式</li>


	<li>監視間隔</li>


	<li>閾値</li>


	<li>検知条件</li>


	<li>除外条件</li>


	<li>重大度</li>


	<li>通知先</li>


	<li>通知方法</li>


	<li>監視抑止条件</li>


	<li>メンテナンス時の扱い</li>


	<li>一次対応手順</li>


	<li>エスカレーション先</li>


	<li>復旧確認方法</li>


	<li>監視設定の変更手順</li>


	<li>監視条件の見直しタイミング</li>
</ul>


<p class="wp-block-paragraph">たとえば、CPU使用率の監視でも、単に「CPUを監視する」では足りません。</p>


<ul>
	<li>CPU使用率が何％を超えたら警告なのか。</li>
	<li>何分継続したら異常なのか。</li>
	<li>瞬間的なスパイクは除外するのか。</li>
	<li>夜間バッチ中は閾値を変えるのか。</li>
	<li>警告と異常で通知先を分けるのか。</li>
	<li>通知を受けたら、運用者は何を見るのか。</li>
	<li>AP担当、DB担当、基盤担当のどこへ連絡するのか。</li>
</ul>


<p class="wp-block-paragraph">ここまで決める必要があります。</p>


<p class="wp-block-paragraph">監視は、アラートを出すことが目的ではありません。</p>


<p class="wp-block-paragraph">アラートを受けた人が判断できることが目的です。</p>


<h2 class="wp-block-heading">監視でよくある誤解</h2>


<p class="wp-block-paragraph">監視でよくある誤解は、次の3つです。</p>


<figure id="59bc268a-5fde-4fc3-bf71-02ccf400d777" class="wp-block-image"><a href="https://assets.st-note.com/img/1779939287-3CtOcH6zIBeSJyEZlQTMhb07.png?width=2000&amp;height=2000&amp;fit=bounds&amp;quality=85"><img decoding="async" src="https://assets.st-note.com/img/1779939287-3CtOcH6zIBeSJyEZlQTMhb07.png?width=1200" alt="画像" /></a></figure>


<p class="wp-block-paragraph">そのため、監視設計は、設計時点で決めて終わりではありません。<br />
システムテスト、運用テスト、本番リハーサル、本番稼働後の初期期間を通じて、見直す前提が必要です。</p>


<h2 class="wp-block-heading">システム基盤エンジニアが持つべき監視の見方</h2>


<p class="wp-block-paragraph">まず持ってほしいのは、「監視は設定項目ではなく、運用の入口である」という見方です。<br />
<br />
監視アラートは、障害対応のスタート地点です。<br />
<br />
アラートが出た瞬間に、運用者は判断を求められます。</p>
<ul>
	<li>これは本当に障害なのか。</li>
	<li>無視してよい通知なのか。</li>
	<li>すぐにエスカレーションすべきなのか。</li>
	<li>まず手順書に沿って確認すべきなのか。</li>
	<li>復旧したと言える条件は何か。</li>
</ul>


<p class="wp-block-paragraph">この判断ができるように設計するのが、監視設計です。</p>


<ul>
	<li>監視サーバがある。</li>
	<li>エージェントが入っている。</li>
	<li>CloudWatchにメトリクスが出ている。</li>
	<li>OCI Monitoringにアラームがある。 MIBを読み込ませた。</li>
</ul>
<p class="wp-block-paragraph">それだけでは、監視設計としては不十分です。<br />
重要なのは、検知した後に運用が動けることです。</p>


<h2 class="wp-block-heading">まとめ｜クラウドでも、監視の本質は変わらない</h2>
<p>クラウド監視サービスを使えば、メトリクス、ログ、アラームを扱いやすくなります。</p>
<p>しかし、CloudWatchやOCI Monitoringを使えば、監視設計そのものが不要になるわけではありません。</p>
<p>特にオンプレミスからクラウドへ移行する場合は、既存監視をそのまま移植するのではなく、</p>
<ul>
	<li>標準機能で置き換えられるもの</li>
	<li>標準機能だけでは置き換えられないもの</li>
	<li>代替するもの、運用でカバーするもの、監視対象から外すもの</li>
</ul>
<p>に分けて、Fit &amp; Gapを整理する必要があります。そのうえで、</p>
<ul>
	<li><strong>何を監視するのか。</strong></li>
	<li><strong>どの条件で異常と判断するのか。</strong></li>
	<li><strong>誰に通知するのか。</strong></li>
	<li><strong>通知後に誰が何を確認し、どう対応するのか。</strong></li>
</ul>
<p>まで設計して初めて、監視は運用で使える仕組みになります。</p>
<p>監視で重要なのは、たくさんのアラートを出すことではありません。</p>
<p><strong>本当に検知すべき異常を、運用で判断・対応できる形で検知することです。</strong></p>
<p>監視は、アラートを出すための設定ではなく、<strong>障害に気づき、判断し、対応につなげるための設計</strong>です。</p>
<p>前編では、監視する側・監視される側という基本構造から、死活監視、エージェント監視、エージェントレス監視、SNMP監視、MIB・OIDまで、システム監視の基礎を整理しています。</p>
<a href="https://sys-univ.com/tec/monitor/" title="【前編】システム監視の基本｜ping・エージェント・SNMP監視を整理する" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img width="160" height="90" src="https://sys-univ.com/wp-content/uploads/2022/10/fa93a299f4af10deb0a71605abb8e6f9-160x90.jpg" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" loading="lazy" decoding="async" srcset="https://sys-univ.com/wp-content/uploads/2022/10/fa93a299f4af10deb0a71605abb8e6f9-160x90.jpg 160w, https://sys-univ.com/wp-content/uploads/2022/10/fa93a299f4af10deb0a71605abb8e6f9-120x68.jpg 120w, https://sys-univ.com/wp-content/uploads/2022/10/fa93a299f4af10deb0a71605abb8e6f9-320x180.jpg 320w, https://sys-univ.com/wp-content/uploads/2022/10/fa93a299f4af10deb0a71605abb8e6f9-376x212.jpg 376w" sizes="auto, (max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【前編】システム監視の基本｜ping・エージェント・SNMP監視を整理する</div><div class="blogcard-snippet internal-blogcard-snippet">pingが通ることとシステムが業務で使えることは別物。死活監視・エージェント監視・SNMP監視の基本構造と、監視設計で見落としやすい落とし穴を整理します。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img src="https://www.google.com/s2/favicons?domain=https://sys-univ.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" loading="lazy" decoding="async" /></div><div class="blogcard-domain internal-blogcard-domain">sys-univ.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2026.09.09</div></div></div></div></a>
<hr />
<p><strong><span style="font-size: 20px;">関連記事</span></strong></p>
<p><span style="font-size: 16px;">監視設計は、単独で完結するものではありません。</span></p>
<p><span style="font-size: 16px;">非機能要件で求める可用性や運用性を整理し、詳細設計で監視条件へ落とし込み、テスト・運用につなげていく必要性については次の記事で説明しています。</span></p>
<ul>
	<li><span style="font-size: 16px;"><strong>【全3回・第3部】監視・ログ・バックアップ・セキュリティの詳細設計｜運用で使える設計にする観点</strong></span><br />
<span style="font-size: 16px;">監視対象、閾値、通知、ログ監視条件、運用スクリプトなど、監視を詳細設計でどう具体化するかを整理しています</span></li>
</ul>
<a href="https://sys-univ.com/dev/detailed-design-part2-monitoring-security/" title="【全3回・第3部】監視・ログ・バックアップ・セキュリティの詳細設計｜運用で使える設計にする観点" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img width="160" height="90" src="https://sys-univ.com/wp-content/uploads/2026/08/a857b32d11c29b9f04dd5d31f5ea42a3-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" loading="lazy" decoding="async" srcset="https://sys-univ.com/wp-content/uploads/2026/08/a857b32d11c29b9f04dd5d31f5ea42a3-160x90.png 160w, https://sys-univ.com/wp-content/uploads/2026/08/a857b32d11c29b9f04dd5d31f5ea42a3-120x68.png 120w, https://sys-univ.com/wp-content/uploads/2026/08/a857b32d11c29b9f04dd5d31f5ea42a3-320x180.png 320w, https://sys-univ.com/wp-content/uploads/2026/08/a857b32d11c29b9f04dd5d31f5ea42a3-376x212.png 376w" sizes="auto, (max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【全3回・第3部】監視・ログ・バックアップ・セキュリティの詳細設計｜運用で使える設計にする観点</div><div class="blogcard-snippet internal-blogcard-snippet">詳細設計を「構築・テスト・運用できる形」に落とし込む後編②。設計時点では判断しきれない監視条件の見極めなど、現場で見落としやすい監視設計の難しさを整理します。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img src="https://www.google.com/s2/favicons?domain=https://sys-univ.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" loading="lazy" decoding="async" /></div><div class="blogcard-domain internal-blogcard-domain">sys-univ.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2026.08.20</div></div></div></div></a>
<ul>
	<li><span style="font-size: 16px;">機能要件と非機能要件の違い｜「機能が動く」と「本番で使える」は違う点</span><br />
<span style="font-size: 16px;">可用性、性能、運用・保守性など、監視設計の前提となる非機能要件を整理しています。</span></li>
</ul>
<a href="https://sys-univ.com/dev/functional-nonfunctional-requirements/" title="機能要件と非機能要件の違い｜「機能が動く」と「本番で使える」は違う" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img width="160" height="90" src="https://sys-univ.com/wp-content/uploads/2026/06/b9c93881b11465fd6ccbf91142947faa-160x90.jpg" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" loading="lazy" decoding="async" srcset="https://sys-univ.com/wp-content/uploads/2026/06/b9c93881b11465fd6ccbf91142947faa-160x90.jpg 160w, https://sys-univ.com/wp-content/uploads/2026/06/b9c93881b11465fd6ccbf91142947faa-500x281.jpg 500w, https://sys-univ.com/wp-content/uploads/2026/06/b9c93881b11465fd6ccbf91142947faa-800x450.jpg 800w, https://sys-univ.com/wp-content/uploads/2026/06/b9c93881b11465fd6ccbf91142947faa-300x169.jpg 300w, https://sys-univ.com/wp-content/uploads/2026/06/b9c93881b11465fd6ccbf91142947faa-768x432.jpg 768w, https://sys-univ.com/wp-content/uploads/2026/06/b9c93881b11465fd6ccbf91142947faa-1536x864.jpg 1536w, https://sys-univ.com/wp-content/uploads/2026/06/b9c93881b11465fd6ccbf91142947faa-120x68.jpg 120w, https://sys-univ.com/wp-content/uploads/2026/06/b9c93881b11465fd6ccbf91142947faa-320x180.jpg 320w, https://sys-univ.com/wp-content/uploads/2026/06/b9c93881b11465fd6ccbf91142947faa-376x212.jpg 376w, https://sys-univ.com/wp-content/uploads/2026/06/b9c93881b11465fd6ccbf91142947faa.jpg 1672w" sizes="auto, (max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">機能要件と非機能要件の違い｜「機能が動く」と「本番で使える」は違う</div><div class="blogcard-snippet internal-blogcard-snippet">「機能が動く」と「本番で使える」は違う。機能要件と非機能要件の違いを、購入申請システムの具体例と現場の失敗パターンから整理します。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img src="https://www.google.com/s2/favicons?domain=https://sys-univ.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" loading="lazy" decoding="async" /></div><div class="blogcard-domain internal-blogcard-domain">sys-univ.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2026.06.19</div></div></div></div></a>
<ul>
	<li><strong>要件定義とは何をする工程か｜RFP・見積前提から認識差を潰す実務</strong><br />
<span style="font-size: 16px;">監視を含む非機能要件を、設計に入る前の要件定義でどこまで具体化するのかを解説しています。</span></li>
</ul>
<a href="https://sys-univ.com/dev/requirements-definition/" title="要件定義とは何をする工程か｜RFP・見積前提から認識差を潰す実務" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img width="160" height="90" src="https://sys-univ.com/wp-content/uploads/2026/06/2d222665bad7a62379b769bded1c226a-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" loading="lazy" decoding="async" srcset="https://sys-univ.com/wp-content/uploads/2026/06/2d222665bad7a62379b769bded1c226a-160x90.png 160w, https://sys-univ.com/wp-content/uploads/2026/06/2d222665bad7a62379b769bded1c226a-500x281.png 500w, https://sys-univ.com/wp-content/uploads/2026/06/2d222665bad7a62379b769bded1c226a-800x450.png 800w, https://sys-univ.com/wp-content/uploads/2026/06/2d222665bad7a62379b769bded1c226a-300x169.png 300w, https://sys-univ.com/wp-content/uploads/2026/06/2d222665bad7a62379b769bded1c226a-768x432.png 768w, https://sys-univ.com/wp-content/uploads/2026/06/2d222665bad7a62379b769bded1c226a-1536x864.png 1536w, https://sys-univ.com/wp-content/uploads/2026/06/2d222665bad7a62379b769bded1c226a-120x68.png 120w, https://sys-univ.com/wp-content/uploads/2026/06/2d222665bad7a62379b769bded1c226a-320x180.png 320w, https://sys-univ.com/wp-content/uploads/2026/06/2d222665bad7a62379b769bded1c226a-376x212.png 376w, https://sys-univ.com/wp-content/uploads/2026/06/2d222665bad7a62379b769bded1c226a.png 1672w" sizes="auto, (max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">要件定義とは何をする工程か｜RFP・見積前提から認識差を潰す実務</div><div class="blogcard-snippet internal-blogcard-snippet">要件定義とは何をする工程なのか。RFP、質問回答、提案書、見積前提から認識差を潰し、スコープや責任分界を確定する実務を、大規模SIの具体的な失敗事例とともに解説します。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img src="https://www.google.com/s2/favicons?domain=https://sys-univ.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" loading="lazy" decoding="async" /></div><div class="blogcard-domain internal-blogcard-domain">sys-univ.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2026.08.12</div></div></div></div></a>
<ul>
	<li><span style="font-size: 16px;"><strong>システム開発の全体像｜アプリ・基盤・非機能はどうつながるのか</strong></span><br />
<span style="font-size: 16px;">要件定義、設計、構築、テスト、運用まで、監視設計がシステム開発全体のどこに位置するのかを整理しています。</span></li>
</ul>
<a href="https://sys-univ.com/dev/system-dev-overview/" title="システム開発の全体像｜アプリ・基盤・非機能はどうつながるのか" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img width="160" height="90" src="https://sys-univ.com/wp-content/uploads/2026/08/7bef9f366cb7c5feb05b75b01a4ea2da-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" loading="lazy" decoding="async" srcset="https://sys-univ.com/wp-content/uploads/2026/08/7bef9f366cb7c5feb05b75b01a4ea2da-160x90.png 160w, https://sys-univ.com/wp-content/uploads/2026/08/7bef9f366cb7c5feb05b75b01a4ea2da-120x68.png 120w, https://sys-univ.com/wp-content/uploads/2026/08/7bef9f366cb7c5feb05b75b01a4ea2da-320x180.png 320w, https://sys-univ.com/wp-content/uploads/2026/08/7bef9f366cb7c5feb05b75b01a4ea2da-376x212.png 376w" sizes="auto, (max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">システム開発の全体像｜アプリ・基盤・非機能はどうつながるのか</div><div class="blogcard-snippet internal-blogcard-snippet">システム開発は、アプリケーションだけで成立するものではありません。システム基盤、性能・可用性などの非機能、テスト、移行、運用がどのようにつながって一つのシステムを成立させるのかを、現場目線で整理します。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img src="https://www.google.com/s2/favicons?domain=https://sys-univ.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" loading="lazy" decoding="async" /></div><div class="blogcard-domain internal-blogcard-domain">sys-univ.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2026.08.26</div></div></div></div></a>]]></content:encoded>
					
					<wfw:commentRss>https://sys-univ.com/tec/monitoring-cloud-fit-gap/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
