模擬問題集 › GCP-PCDOE › 練習問題 5

GCP-PCDOE 練習問題 5|CI/CD パイプライン(継続的テストを含む)の構築と実装

Professional Cloud DevOps Engineer・無料公開(全 200 問中 15 問を無料公開中)

問題
コンテナ化されたアプリケーションを Cloud Run にデプロイしています。このアプリケーションは、データを取得するためにデータベースに接続する際にパスワードを必要とします。会社のセキュリティ要件を満たすために、パスワードは毎週ローテーションする必要があります。管理しやすいパスワード ローテーション ポリシーを実装する必要があります。どうすればよいですか。

選択肢と解説

  • 1
    1. コンテナを Cloud Run にデプロイする。2. 毎週、新しいデータベース パスワードを Dockerfile 内の環境変数として設定した新しいコンテナを作成する。3. 新しいコンテナを Cloud Run にデプロイし、トラフィックを新しいバージョンに移行する。
  • 2
    1. パスワードを保持するシークレットを Secret Manager に作成する。2. コンテナを Cloud Run にデプロイし、シークレットの latest バージョンを環境変数として使用する。3. 毎週、新しいパスワードを持つシークレットの新しいバージョンを Secret Manager に作成する。
  • 3
    1. コンテナを Cloud Run にデプロイする。2. 毎週、ビルドフェーズで新しいデータベース パスワードをシークレットとして設定した新しいコンテナを作成する。3. 新しいコンテナを Cloud Run にデプロイし、トラフィックを新しいバージョンに移行する。
  • ✓
    1. パスワードを保持するシークレットを Secret Manager に作成する。2. コンテナを Cloud Run にデプロイし、シークレットの latest バージョンをマウントされたボリュームとして使用する。3. 毎週、シークレットの新しいバージョンを Secret Manager に作成する。

解説

【正解】D

【0からの解説】
①前提知識:Secret Manager は、パスワードや API キーなどの機密情報を「シークレット」として保存し、値を更新するたびに新しい「バージョン」を追加していくマネージド サービスです。Cloud Run からシークレットを使う方法は 2 つあります。
・環境変数として公開:値はインスタンスの起動時に解決されます。そのため Google は、環境変数で使う場合は latest ではなく特定のバージョンに固定(pin)することを推奨しています。latest を指定しても、すでに起動しているインスタンスは古い値を持ち続け、インスタンスによって値がバラバラになる可能性があります。
・ボリュームとしてマウント:ファイルを読み取るたびに Cloud Run が Secret Manager から latest バージョンの値を取得するため、シークレットのローテーションとの相性が良いと公式ドキュメントに明記されています。

②要件の整理:(a) パスワードを毎週ローテーションする、(b) 管理しやすい(再ビルド・再デプロイなどの手間を増やさない)方法にする、の 2 点です。

③正解の理由:Secret Manager にパスワードを保存し、latest バージョンをボリュームとしてマウントしておけば、毎週シークレットに新しいバージョンを追加するだけで、アプリケーションは次回ファイルを読み込んだ時点で新しいパスワードを取得できます。コンテナの再ビルドや再デプロイは不要で、パスワードがイメージに焼き込まれることもありません。

【誤りの選択肢】
A:パスワードを Dockerfile の環境変数としてイメージに焼き込むため、イメージを取得できる人なら誰でもパスワードを読めてしまい、セキュリティ上不適切です。さらに毎週のビルド・デプロイ・トラフィック移行が必要で、「管理しやすい」という要件にも反します。
B:Secret Manager を使う点は正しいですが、環境変数の値はインスタンス起動時にしか解決されません。新しいバージョンを追加しても実行中のインスタンスには反映されず、新しいリビジョンのデプロイや再起動が必要になるため、ローテーションを確実に反映させる仕組みとしては D に劣ります。Google も環境変数ではバージョン固定を推奨しています。
C:ビルドフェーズでシークレットを渡しても、その値がイメージに取り込まれる形になり、毎週のビルドと再デプロイも必要です。ビルド時シークレットは本来ビルド処理(プライベート リポジトリへのアクセスなど)に使うもので、実行時の資格情報のローテーション手段としては不適切です。

【参考】
サービスのシークレットを構成する | Cloud Run
Secret Manager でローテーション スケジュールを作成する
← 練習問題 4練習問題 6 →
GCP-PCDOE の模擬問題集は全 200 問

本番形式の練習テスト 4 回を、試験モード/演習モードで受験できます。 全問に解説付き、ドメイン別の弱点分析にも対応。模試プラン(月額 ¥980)からご利用いただけます。

GCP-PCDOE の模試を受ける料金プランを見る

GCP-PCDOE の無料公開問題

問題 1問題 2問題 3問題 4問題 5問題 6問題 7問題 8問題 9問題 10問題 11問題 12問題 13問題 14問題 15