AUシステム監査技術者試験 午後Ⅰ

令和6年度秋期 システム監査技術者 午後Ⅰ 問1

事例を読んで設問の答えを考えてから、解説のポイントとIPA公式の解答例・採点講評で確認しましょう。

問題

問1 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)について,(i),(ii),(iii)に答えよ。 (i)監査チームが考えた,“従来のウォーターフォール型開発で必要とされてきたコントロール”とは何か。15字以内で答えよ。 (ii)CI/CDツールの設定による予防的コントロールの具体的な内容を,40字以内で答えよ。 (iii)CI/CDツールの設定による発見的コントロールの具体的な内容を,45字以内で答えよ。 設問2〔監査手続の検討〕(2)について,監査チームが確認しようとしている内容を,30字以内で答えよ。 設問3〔監査手続の検討〕(3)について,監査チームが,共通チームが十分に果たせていない可能性があると考えた役割を,30字以内で答えよ。 設問4〔監査手続の検討〕(4)について,監査チームが確認すべき具体的な内容を,45字以内で答えよ。
図1 A社のECシステムにおける開発・運用プロセスの概要。
図1 A社のECシステムにおける開発・運用プロセスの概要。
解き方のヒントを見る

リスクと統制の対応関係を確かめる

監査の観点で考える問題では、ある状況で何が起こり得るかというリスクと、それを抑えるための仕組みである統制が、筋の通った対応関係になっているかを一つずつ確かめる姿勢が役立ちます。

この問題で問われていること

問われているのが、リスクそのものの把握なのか、統制の妥当性の評価なのか、監査人として確認すべき事項なのかを最初に見極めます。そのうえで、各候補が問いの趣旨と合っているかを検討することが焦点になります。

視点

監査では、リスクを「何がうまくいかなくなるおそれがあるか」、統制を「そのおそれを抑えるための手段」として分けて捉えます。統制は特定のリスクに向けて設けられるものです。どのリスクに効くのかを説明できなければ、監査上の根拠としては弱くなります。開発や運用の進め方が変わっても、リスクと統制の対応関係を確かめるという考え方自体は変わりません。

確認ポイント

  • 示されている状況で、何が損なわれるおそれがあるのかを自分の言葉で説明できるか
  • 取り上げられている仕組みや手続が、そのおそれを抑えることに実際につながっているか
  • 監査人として確かめる対象がリスクなのか統制なのかを区別して読めているか
正解と解説を見る

解説

DevOpsを取り入れたECシステムの開発・運用を題材に、職務の分離に代わるCI/CDツールの予防的・発見的コントロール、ユーザー受入テストを自動化の範囲から外すこと、コーディングルールを各チームに徹底すること、単体テストステージが確実に自動化されていることを監査手続として問う問題です。予備調査(2)①〜④と監査手続の検討(1)〜(4)を一つずつ対応させて読むことが解答の鍵になります。

問題の全体像

A社は、ECシステムでアジャイル開発を採用してきましたが、本番リリースの頻度が上がったため、開発・運用プロセスにDevOpsを適用しました。監査の観点は二つで、リリースサイクル短縮というDevOpsの目的を達成できる運用方法になっているか、DevOps特有の環境やプロセスのリスクに対応できているかです。予備調査(2)①〜④では、開発担当者による本番環境へのデプロイ、本番リリースまでのステージの早期自動化、他チームのプログラムを理解しにくい問題、習熟度に応じた自動化範囲の拡大が挙げられ、監査手続の検討(1)〜(4)がそれぞれに対応しています。出題趣旨では、DevOpsの特性やメリット・デメリットを理解したうえで、コントロールやマネジメント方法を提言する能力と監査手続を設定する能力を問うとしています。

設問1(i)

予備調査(2)①では、開発担当者がCI/CDツールを使って本番環境を含む各実行環境にデプロイできます。つまり、開発した人が本番環境への反映という運用作業も行える状態です。従来のウォーターフォール型開発では、開発担当者と運用担当者を分け、開発者が単独で本番環境を変更できないようにして、未承認のプログラムが本番環境に入るのを防いでいました。公式解答例では「開発と運用の職務の分離」です(11字で15字以内に収まります)。採点講評でも、DevOps環境では職務の分離などのコントロールを適用しにくい場合があり、CI/CDツールの設定によるコントロールで代替してリスクを下げる必要があると述べられています。

設問1(ii)

根拠は予備調査(2)①の「各環境へのデプロイの権限及びアクセス可能な環境や期間を開発担当者ごとに設定できる」という記述です。未承認のデプロイを事前に防ぐ予防的コントロールとしては、本番環境への権限を常に持たせるのではなく、必要なときだけ期間を区切って付与するのが有効です。公式解答例では「本番環境へのアクセス権を常時付与せずに、必要なときに一時的に付与すること」です。40字以内で答えるには、対象(本番環境へのアクセス権)、常時付与しないこと、必要なときに一時的に付与すること、の三つを入れます。

設問1(iii)

根拠は予備調査(2)①の「デプロイや設定変更が行われると、指定した者に通知されるように設定できる」という記述です。未承認のデプロイを適時に見つける発見的コントロールとしては、本番環境へのデプロイだけでなく、権限や通知の設定そのものを変える操作も通知の対象にし、開発チームのリーダーであるスクラムマスターが把握できるようにします。公式解答例では「本番環境へのデプロイやCI/CDツール設定の変更がスクラムマスターに通知されること」です。45字以内で答えるには、通知の対象(本番環境へのデプロイと、CI/CDツールの設定変更)、通知先(スクラムマスター)、通知されること、を入れます。採点講評では、この小問は正答率がやや高かったとされています。

設問2

監査手続の検討(2)では、全てのステージを自動化すべきではないとして、自動化の検討範囲を確認するとしています。図1と各ステージの説明を見ると、ユーザー受入テストは機能要件を満たしているか、使いやすいかなど、利用者の観点で検証するステージです。採点講評では、テストデータやシナリオを事前に設定すれば本番リリースまでのステージを自動化できるものの、使いやすさなど利用者の立場から判断すべきテストを自動化するとリスクがあると説明しています。公式解答例では「ユーザー受入テストが自動化の範囲に含まれていないこと」です。30字以内で、対象となるステージ名と、自動化の範囲から外れていることを書きます。採点講評では正答率がやや低かったとされています。

設問3

予備調査(2)③によると、各メンバーは自分の担当機能に集中しているため、生産性も単体での品質も高い状態です。ところが、他チームの支援でプログラムを修正した際には、修正前のプログラムを理解するのに時間が掛かりました。チームやメンバーごとに書き方が異なり、共通のルールが守られていない可能性がうかがえます。予備調査(1)③では、共通チームがコーディングルールなどの標準化を担当しています。公式解答例では「コーディングルールの遵守を各開発チームに徹底すること」です。採点講評では、コーディングルールなどの標準を作るだけでなく、浸透させる取組がリスク低減につながる点に着目してほしいとしています。30字以内で答える際は、ルールを作成することではなく、各開発チームに守らせることを役割として書くのがポイントです。

設問4

予備調査(2)④では、CI/CDツールの自動化の範囲を開発担当者の習熟度に応じて順次広げる計画であり、第一段階となる単体テストステージでは各スクラムマスターが開発担当者の権限を設定しています。〔ECシステムの開発・運用プロセス〕によると、CIはプログラムの開発と単体テストを自動化することであり、単体テストステージではモジュールのビルドから単体テストまでを実行します。第一段階の設定を各スクラムマスターに任せているため、この段階で自動化が十分に設定されていなければ、リリースサイクル短縮という目的の達成が遅れます。そこで監査チームは、単体テストステージで実際に自動化が設定されているかを確かめる必要があります。公式解答例では「単体テストステージのビルド、デプロイ、テストが自動化されるように設定されていること」です。45字以内で、対象のステージ、自動化される作業(ビルド、デプロイ、テスト)、そのように設定されていること、の三つを書きます。

学習のポイント

DevOps環境で職務の分離が効きにくい理由と、代わりになるCI/CDツールの設定(権限の一時付与、変更通知)を整理しておくことが重要です。あわせて、自動化に向かないテスト(ユーザー受入テスト)、標準を作るだけで終わらせず浸透させる取組、リリースサイクル短縮という目的に照らして運用方法を監査する視点を身につけましょう。

出典:独立行政法人 情報処理推進機構(IPA)令和6年度秋期 システム監査技術者試験 午後Ⅰ 問1(公式資料:問題冊子(PDF) / 解答例 / 採点講評)

関連する過去問一覧

IPA Advancedは非公式の学習サイトです。解説にはAIによる補助生成を含む場合があります。公式の問題冊子・解答例・採点講評を優先し、誤りは確認後に訂正します。運営・編集方針