システム監査技術者 2024年 午後1 問01
DevOpsを適用したシステム開発・運用の監査に関する次の記述を読んで、設問に答えよ。
A社は、衣料品などを販売する企業であり、ECサイトを構築し、運用している。A社ECシステムでは、ECサイトの頻繁な更新や新たなサービスへの迅速な対応が求められることから、アジャイル開発を採用してきた。また、ECシステム以外の情報システムでもアジャイル開発が増加し、本番リリースの頻度が高くなってきたことから、システムの開発・運用プロセスを見直してDevOpsを適用することになった。
ECシステムにおけるDevOpsを適用した開発・運用プロセスについて、A社監査部のシステム監査チーム(以下、監査チームという)が監査を実施することになった。監査の主な観点は、リリースサイクルの短縮というDevOpsの適用目的が達成されるような運用方法になっているかどうか、及びDevOps特有の環境や開発・運用プロセスにおけるリスクに対応できているかどうかである。
〔ECシステムの開発・運用プロセス〕
A社のECシステムにおける開発・運用プロセスの概要は図1のとおりである。

CIとは、プログラムの開発と単体テストを自動化することであり、CDとは、開発又は修正したモジュールを実行環境に移送して実行可能な状態にする作業(以下、デプロイという)を含めて自動化することである。自動化すると、一連の作業として本番リリースまで実行されるので、A社では、ウォーターフォール型開発でいう単体テスト以降の工程を、“ステージ”と呼んでいる。
A社のDevOpsの環境の概要は、次のとおりである。
(1) 開発環境
エディター、コンパイラ、デバッガなどの開発ツール群が、開発担当者のローカルの環境に提供されている。
(2) リポジトリ
構成管理ツールによって、開発されたソースコードのバージョン管理機能及び保管先としてのリポジトリが提供される。ソースコードには、許可された開発担当者だけがアクセス可能である。また、インフラに関する設定情報を管理し、各ステージにおける環境設定の自動化を支援する。
(3) 実行環境
各ステージでは、ソースコードから実行可能なモジュールの生成(以下、ビルドという)、デプロイ、テストなどの自動化を支援する各種のツール(以下、CI/CDツールという)が準備されている。各ステージの概要は、次のとおりである。
① 単体テスト:開発環境から構成管理ツールにソースコードを格納し、モジュールのビルドから単体テストまでを実行する。単体テストを完了したモジュールがリポジトリに格納される。
② 機能テスト:実行環境にモジュールをデプロイし、機能要件の検証及び性能要件を除く非機能要件の検証を行う。
③ 性能テスト:実行環境にモジュールをデプロイし、性能要件の検証を行う。
④ ユーザー受入テスト:実行環境にモジュールをデプロイし、機能要件を満たしているか、情報システムが使いやすいかなどの利用者観点の検証を行う。
⑤ 本番リリース:本番の実行環境(以下、本番環境という)へのモジュールのデプロイを行う。
〔予備調査の実施〕
監査チームが、予備調査で把握した内容は、次のとおりである。
(1) 開発・運用の体制
ECシステムにおけるDevOpsを適用した開発・運用の体制について、営業部のS課長にインタビューした。S課長は、ECシステムの開発・運用に関する最終決定権と責任をもつプロダクトオーナーである。インタビューの結果分かったことは、次のとおりである。
① S課長の下に、利用部門としての要件整理と検証を行う業務チームがある。
② 機能ごとに五つのスクラム開発チーム(以下、開発チームという)があり、プログラムの開発からリリースまでを担当する。各開発チームの構成は、開発チームのリーダーであるスクラムマスター1名と3〜6名の開発担当者である。
③ 共通チームは、コーディングルールやCI/CDツールの効果的な使用方法についての標準化など、各開発チームに共通する課題を担当する。
④ 運用チームは、主にサーバやネットワークの構築及び運用を担当する。
(2) 開発・運用の状況
DevOpsを適用した開発・運用の状況について、複数の開発チームのスクラムマスター及び開発担当者へのインタビューの結果分かったことは、次のとおりである。
① DevOpsでは、開発担当者がCI/CDツールを利用して、本番環境を含む各実行環境にデプロイすることが可能である。CI/CDツールでは、各環境へのデプロイの権限及びアクセス可能な環境や期間を開発担当者ごとに設定できる。また、デプロイや設定変更が行われると、指定した者に通知されるように設定できる。
② DevOpsの適用によってリリースサイクルを短くしていくために、CI/CDツールを活用して本番リリースまでのステージの早期の自動化を目指している。
③ 各開発チームには開発スキルの高いメンバーが集まっており、それぞれが自分の担当する機能の開発に集中して作業しているので、プログラム開発の生産性は高く、単体での品質は高い状況である。しかし、先日、他チームの進捗遅延の支援のためにプログラムの修正を行った際に、担当したメンバーが修正前のプログラムを理解するのに時間が掛かり、生産性が期待よりも低いことがあった。
④ CI/CDツールの自動化の設定については、開発担当者の習熟度に応じて適用範囲を順次拡大していく計画である。リリースサイクルの短縮の第一段階となる単体テストステージでは、各スクラムマスターが開発担当者の権限を設定している。
〔監査手続の検討〕
監査チームは、予備調査の結果を踏まえて、ECシステムにおけるDevOpsを適用した開発・運用についてリスクを分析し、監査手続を検討している。〔予備調査の実施〕(2)開発・運用の状況①~④について検討した内容は、次のとおりである。
(1) ①のような状況下では、未承認のプログラムが本番環境にデプロイされてしまうリスクに対して、従来のウォーターフォール型開発で必要とされてきたコントロールを適用することは適切ではない。CI/CDツールの設定による予防的なコントロールや未承認のデプロイを適時に発見するコントロールによってリスクの低減を図る必要があるので、これらのコントロールが設定されているかどうかを確認する。
(2) ②について、CI/CDツールによってテストを自動化するステージの範囲を設定でき、DevOpsの適用目的の達成を可能とすることは理解できる。しかし、全てのステージを自動化するべきではないので、自動化の検討範囲について確認する。
(3) ③について、共通チームが役割を十分に果たせていない可能性があるので、スクラムマスターにインタビューして確認する。
(4) ④について、DevOpsの適用目的を達成できるようになっているかどうか、CI/CDツールの運用方法を確認する。
設問1:〔監査手続の検討〕(1)について、(1)、(2)、(3)に答えよ。
設問1(1)
問題文を見る監査チームが考えた、“従来のウォーターフォール型開発で必要とされてきたコントロール”とは何か。15字以内で答えよ。
模範解答
開発と運用の職務の分離
解説
解答の導き方
-
設問は、未承認プログラムの本番環境へのデプロイを防ぐために、従来のウォーターフォール型開発で用いられてきたコントロールを尋ねています。まず、そのコントロールが何を防ぐ仕組みなのかを考えます。
-
従来の開発では、プログラムを作成・変更する担当者と、本番環境へのリリースを行う担当者を分けることで、開発担当者が自らの判断だけで本番環境へ変更を反映することを防ぎます。このように、開発と運用の担当を分ける考え方が該当します。
-
一方、本文には、DevOpsでは「開発担当者がCI/CDツールを利用して、本番環境を含む各実行環境にデプロイすることが可能」とあります。つまり、開発担当者がデプロイまで実行できるため、従来のように開発と運用の職務を分けるコントロールを、そのまま適用するのは適切ではないと監査チームは考えています。
-
したがって、問われているコントロールは、開発と運用の職務を分離することです。
誤りやすいポイント
- 「未承認のプログラム」という語から、承認手続やテストの実施を答えてしまうことがあります。この設問が尋ねているのは、個別の承認方法ではなく、従来型開発で必要とされたコントロールの考え方です。
- CI/CDツールのアクセス権限設定は、DevOps環境でリスクを低減する手段として本文に登場します。しかし、設問が求めるのは、その仕組みに置き換える前の従来のコントロールです。
- 「職務の分離」を、単に開発チームと運用チームが存在することと捉えないようにします。重要なのは、開発作業と本番リリースなどの運用作業を、同じ担当者が自由に行えないようにすることです。
FAQ
Q: なぜDevOpsでは、従来の職務分離をそのまま適用しにくいのですか?
A: 開発担当者がCI/CDツールを使って本番環境へデプロイできるためです。開発担当者と運用担当者を分けるだけでは、DevOpsの自動化されたリリース手順と合わない場合があります。
A: 開発担当者がCI/CDツールを使って本番環境へデプロイできるためです。開発担当者と運用担当者を分けるだけでは、DevOpsの自動化されたリリース手順と合わない場合があります。
Q: 職務を分離しない場合、未承認のデプロイを防ぐ方法はないのですか?
A: いいえ。本文では、CI/CDツールの設定による予防的なコントロールや、未承認のデプロイを適時に発見するコントロールによって、リスクを低減する考え方が示されています。
A: いいえ。本文では、CI/CDツールの設定による予防的なコントロールや、未承認のデプロイを適時に発見するコントロールによって、リスクを低減する考え方が示されています。
関連キーワード: 職務分離、アクセス制御、CI/CD、自動化、システム監査
設問1(2)
問題文を見るCI/CDツールの設定による予防的コントロールの具体的な内容を、40字以内で答えよ。
模範解答
本番環境へのアクセス権を常時付与せずに、必要なときに一時的に付与すること
解説
解答の導き方
-
問われているのは、未承認のプログラムが本番環境にデプロイされるリスクを、CI/CDツールの設定で事前に防ぐ方法です。デプロイ後に気付く方法ではなく、デプロイできる人や条件をあらかじめ制限する方法を考えます。
-
本文には、開発担当者が「本番環境を含む各実行環境にデプロイすることが可能」とあります。そのため、開発担当者がいつでも本番環境へデプロイできる状態では、未承認のプログラムが本番環境にデプロイされるおそれがあります。
-
一方、CI/CDツールでは「各環境へのデプロイの権限及びアクセス可能な環境や期間を開発担当者ごとに設定できる」とあります。つまり、本番環境へのアクセス権を常時与えるのではなく、デプロイが必要なときに限って権限を与え、利用できる期間も限定できます。
-
したがって、予防的コントロールとしては、本番環境へのアクセス権を常時付与せず、必要なときに一時的に付与する方法が適切です。これにより、権限のない時期に開発担当者が本番環境へデプロイすることを防げます。
誤りやすいポイント
- デプロイや設定変更の通知は、未承認の操作を事後に発見するためのコントロールです。今回問われている予防的コントロールとは区別します。
- 開発担当者ごとに権限を設定するだけでなく、本番環境へのアクセス権を付与する期間も限定することがポイントです。
- 「承認を得てからリリースする」といった従来型の手続を答えるのではなく、CI/CDツールの権限・期間設定を使った具体策を示します。
FAQ
-
Q: 本番環境へのアクセス権を開発担当者全員に常時付与してはいけないのですか?
A: 常時付与すると、デプロイが不要なときにも本番環境へアクセスでき、未承認のデプロイを防ぎにくくなります。必要な期間に限定して付与するのが要点です。 -
Q: デプロイ後に担当者へ通知する設定では不十分ですか?
A: 通知はデプロイ後に操作を把握するためのもので、デプロイ自体を事前に制限するものではありません。今回の設問では、アクセス権と利用期間を設定してデプロイを防ぐ方法が問われています。
関連キーワード: CI/CD、アクセス制御、最小権限、権限管理、予防的コントロール
設問1(3)
問題文を見るCI/CDツールの設定による発見的コントロールの具体的な内容を、45字以内で答えよ。
模範解答
本番環境へのデプロイやCI/CDツール設定の変更がスクラムマスターに通知されること
解説
解答の導き方
この設問は、未承認のプログラムが本番環境にデプロイされるリスクに対して、CI/CDツールの設定でどのように発見するかを問うています。
まず、〔監査手続の検討〕(1)では、開発担当者が本番環境にもデプロイできる状況を踏まえ、未承認のデプロイを適時に発見するコントロールが必要だとしています。デプロイを制限するだけでなく、実際に行われた操作を把握できる仕組みも必要です。
次に、予備調査では、デプロイや設定変更が行われたとき、「指定した者に通知されるように設定できる」とあります。通知を使えば、本番環境へのデプロイや、コントロールに影響するCI/CDツールの設定変更を、発生後に把握できます。
通知先は、開発担当者の権限を設定しているスクラムマスターとするのが適切です。したがって、発見的コントロールの具体的な内容は、本番環境へのデプロイやCI/CDツール設定の変更がスクラムマスターに通知されるようにすることです。
誤りやすいポイント
- デプロイを禁止したり承認制にしたりする内容は、主に予防的コントロールです。この設問では、実施された操作を通知で把握する発見的コントロールを答えます。
- 通知対象をデプロイだけにすると、CI/CDツールの設定変更を見落とします。設定変更によって権限や自動化の条件が変わる可能性もあるため、両方を含めます。
- 通知先を開発担当者だけにすると、操作を監視するコントロールとして不十分です。権限設定を担うスクラムマスターを通知先にします。
FAQ
Q: 通知があれば、未承認のデプロイを防げますか?
A: 通知は、実行された操作を後から把握するための仕組みです。デプロイを事前に阻止するものではないため、発見的コントロールに当たります。
A: 通知は、実行された操作を後から把握するための仕組みです。デプロイを事前に阻止するものではないため、発見的コントロールに当たります。
Q: なぜCI/CDツールの設定変更も通知対象にするのですか?
A: 設定が変わると、デプロイの権限や自動化の動作に影響する可能性があります。設定変更を把握することで、コントロールが意図せず弱まっていないか確認できます。
A: 設定が変わると、デプロイの権限や自動化の動作に影響する可能性があります。設定変更を把握することで、コントロールが意図せず弱まっていないか確認できます。
Q: 通知先としてスクラムマスターが適切なのはなぜですか?
A: 本文では、単体テストステージで開発担当者の権限を設定しているのが各スクラムマスターとされています。権限設定を担う人が操作の通知を受けることで、想定外のデプロイや設定変更に気付きやすくなります。
A: 本文では、単体テストステージで開発担当者の権限を設定しているのが各スクラムマスターとされています。権限設定を担う人が操作の通知を受けることで、想定外のデプロイや設定変更に気付きやすくなります。
関連キーワード: CI/CD、アクセス制御、予防的コントロール、発見的コントロール、変更通知
設問2:
問題文を見る〔監査手続の検討〕(2)について、監査チームが確認しようとしている内容を、30字以内で答えよ。
模範解答
ユーザー受入テストが自動化の範囲に含まれていないこと
解説
解答の導き方
-
〔監査手続の検討〕(2)では、CI/CDツールでテストを自動化するステージの範囲を設定できることを踏まえ、「全てのステージを自動化するべきではない」としています。したがって、監査チームが確認するのは、自動化によってリリースサイクルを短縮できるかだけではなく、自動化するステージと自動化しないステージの区分です。
-
どのステージが自動化の対象外となるかは、各ステージで何を検証するかから考えます。本文では、ユーザー受入テストについて「情報システムが使いやすいかなどの利用者観点の検証」を行うと説明しています。使いやすさの評価は、実際の利用者による確認が重要なため、テストの全てを自動化の対象にするのには適しません。
-
そのため、監査チームは、自動化の範囲にユーザー受入テストまで含めていないことを確認しようとしています。なお、これは他のステージを全て自動化するべきだという意味ではなく、利用者観点の検証を担うステージを自動化の対象に含めないことの確認です。
誤りやすいポイント
- DevOpsではリリースサイクルの短縮を目指すため、全てのテストを自動化するのがよいと考えてしまうことがあります。しかし、本文は「全てのステージを自動化するべきではない」と明記しています。
- ユーザー受入テストを、機能要件を確認するだけのテストと捉えると、利用者の視点で使いやすさを検証する点を見落とします。
- 問われているのは、自動化の効果やCI/CDツールの設定方法ではなく、自動化の範囲について監査チームが確認する内容です。
FAQ
Q: ユーザー受入テストでは、何を確認しますか?
A: 機能要件を満たしているかに加え、情報システムが使いやすいかなどを利用者の視点から確認します。
A: 機能要件を満たしているかに加え、情報システムが使いやすいかなどを利用者の視点から確認します。
Q: この設問は、他のステージを全て自動化することを求めていますか?
A: いいえ。本文では全てのステージを自動化するべきではないとしており、自動化の範囲を適切に定めることが論点です。
A: いいえ。本文では全てのステージを自動化するべきではないとしており、自動化の範囲を適切に定めることが論点です。
Q: 自動化の範囲を確認する理由は何ですか?
A: リリースサイクルの短縮を進めながら、利用者による確認が必要な検証まで機械的に自動化しないようにするためです。
A: リリースサイクルの短縮を進めながら、利用者による確認が必要な検証まで機械的に自動化しないようにするためです。
関連キーワード: CI/CD、テスト自動化、ユーザー受入テスト、DevOps、リリースサイクル
設問3:
問題文を見る〔監査手続の検討〕(3)について、監査チームが、共通チームが十分に果たせていない可能性があると考えた役割を、30字以内で答えよ。
模範解答
コーディングルールの遵守を各開発チームに徹底すること
解説
解答の導き方
-
設問は、〔監査手続の検討〕(3)で監査チームが懸念した、共通チームの役割を問うています。まず、共通チームの担当範囲を確認します。
-
本文では、共通チームは「コーディングルールやCI/CDツールの効果的な使用方法についての標準化」など、各開発チームに共通する課題を担当するとあります。したがって、各チームに共通する開発上のルールを整え、チーム間で適切に実践できるようにすることが役割の一つです。
-
次に、監査チームが懸念を抱いた根拠を確認します。開発チームは「プログラム開発の生産性は高く、単体での品質は高い」一方で、他チームを支援してプログラムを修正した際、「修正前のプログラムを理解するのに時間が掛かり、生産性が期待よりも低い」ことがありました。
-
この状況からは、各チーム内では品質を保てていても、チームをまたいでプログラムを読むときに理解しにくい、つまり、共通の書き方が十分に守られていない可能性が考えられます。これは、共通チームが担当するコーディングルールの標準化に関わる問題です。
-
したがって、監査チームが十分に果たせていない可能性があると考えたのは、ルールを定めるだけでなく、それに各開発チームが従うように徹底する役割です。
誤りやすいポイント
- 「プログラムの理解に時間が掛かった」という問題だけを答えると、起きている事象の説明になり、共通チームが果たすべき役割を示せません。
- 共通チームの役割としてCI/CDツールの利用方法も記載されていますが、問題文で示されている具体的な懸念は、他チームのプログラムを理解しにくかったことです。コーディングルールとの結び付きに注目します。
- 「コーディングルールを作成すること」だけでは、各チームでルールが守られているかという問題への対応が不足します。チーム間で一貫した書き方が実現するよう、遵守を徹底する点まで含めます。
FAQ
Q: 各チームの単体での品質が高いのに、なぜコーディングルールが問題になるのですか。
A: 各チーム内での品質が高くても、チームごとに書き方が異なると、別のチームの担当者にはプログラムが理解しにくくなることがあります。本文の支援作業での遅れは、チーム間の共通ルールの徹底が十分でない可能性を示しています。
A: 各チーム内での品質が高くても、チームごとに書き方が異なると、別のチームの担当者にはプログラムが理解しにくくなることがあります。本文の支援作業での遅れは、チーム間の共通ルールの徹底が十分でない可能性を示しています。
Q: 「プログラムを読みやすくすること」では不十分ですか。
A: 読みやすさは期待される効果ですが、設問は共通チームが果たすべき役割を問うています。共通チームの担当範囲に沿って、各開発チームがコーディングルールを守るようにすることを述べます。
A: 読みやすさは期待される効果ですが、設問は共通チームが果たすべき役割を問うています。共通チームの担当範囲に沿って、各開発チームがコーディングルールを守るようにすることを述べます。
関連キーワード: コーディング規約、ソースコード、標準化、保守性、チーム開発
設問4:
問題文を見る〔監査手続の検討〕(4)について、監査チームが確認すべき具体的な内容を、45字以内で答えよ。
模範解答
単体テストステージのビルド、デプロイ、テストが自動化されるように設定されていること
解説
解答の導き方
-
まず、設問が〔監査手続の検討〕(4)について、CI/CDツールの運用方法の何を確認するのかを尋ねていると捉えます。監査の主な観点には、DevOpsの適用目的である「リリースサイクルの短縮」が達成できる運用かどうかが含まれています。
-
予備調査では、CI/CDツールの自動化について「開発担当者の習熟度に応じて適用範囲を順次拡大していく計画」とされています。また、最初に自動化する段階は「単体テストステージ」で、開発担当者の権限は各スクラムマスターが設定しています。
-
したがって、監査では単に自動化の計画や権限設定の有無を見るだけでなく、最初の対象である単体テストステージで、実際に一連の作業を自動化できる設定になっているかを確認します。
-
単体テストステージでは、ソースコードからモジュールを生成するビルドと、単体テストを行います。問題文はCIについて「プログラムの開発と単体テストを自動化する」と説明し、CDにはデプロイの自動化が含まれるとしています。このため、確認内容は、単体テストステージのビルド、デプロイ、テストが自動化されるように設定されていることです。
誤りやすいポイント
- 開発担当者の権限が設定されているかだけを答えると、権限管理の確認にとどまり、自動化の設定を確認するという要点を捉えられません。
- 「全ステージを自動化する」と答えるのは適切ではありません。ここでは、自動化の第一段階と明示されている単体テストステージが対象です。
- 「リリースサイクルを短縮する」と目的だけを述べても、監査で確認する具体的な設定内容になりません。
- 未承認のプログラムの本番環境へのデプロイを防ぐ設定や発見する設定は、〔監査手続の検討〕(1)の論点です。(4)では自動化によって適用目的を達成できる運用かを確認します。
FAQ
Q: なぜ単体テストステージに絞って答えるのですか?
A: 自動化の第一段階として、単体テストステージが挙げられているためです。この設問では、計画全体ではなく、まずその段階で目的に沿った設定がされているかを具体化します。
A: 自動化の第一段階として、単体テストステージが挙げられているためです。この設問では、計画全体ではなく、まずその段階で目的に沿った設定がされているかを具体化します。
Q: 開発担当者の習熟度に応じた適用範囲の拡大も、解答に含める必要がありますか?
A: それは自動化範囲を段階的に広げる方針を示す情報です。解答では、最初の対象である単体テストステージで、どの作業が自動化される設定かを示すのが中心です。
A: それは自動化範囲を段階的に広げる方針を示す情報です。解答では、最初の対象である単体テストステージで、どの作業が自動化される設定かを示すのが中心です。
Q: ビルド、デプロイ、テストをまとめて確認するのはなぜですか?
A: CI/CDツールによる自動化を確認するためです。ビルドやテストだけでなく、デプロイを含めた一連の作業が自動化されることで、開発・運用の効率化とリリースサイクルの短縮につながります。
A: CI/CDツールによる自動化を確認するためです。ビルドやテストだけでなく、デプロイを含めた一連の作業が自動化されることで、開発・運用の効率化とリリースサイクルの短縮につながります。
関連キーワード: CI/CD、継続的インテグレーション、自動化、デプロイ、権限管理



