無限ノック › DVA 練習問題一覧 › 問題
DVAセキュリティ

CodePipelineで構築されたCI/CDパイプラインのCodeBuildステージで、プライベートなAWS CodeArtifactリポジトリからnpmパッケージをインストールする必要があります。認証情報を安全に管理しながら処理を自動化するための最適な実装はどれですか?

A
CodeArtifact リポジトリの URL と認証トークンを CodeBuild プロジェクトの環境変数(プレーンテキスト)に事前設定し、buildspec で npm install を実行する
認証トークンをプレーンテキストの環境変数に設定するとビルドログやCloudWatch Logsに値が露出するリスクがある。またCodeArtifactトークンには有効期限があるため期限切れによるビルド失敗も発生しうる。
B
CodeBuild のサービスロールに CodeArtifact 権限を付与し、buildspec の pre_build フェーズで aws codeartifact get-authorization-token を実行して npm レジストリに設定する
✓ 正解
IAMロールによる動的なトークン取得はビルドごとに短期トークンを生成でき、長期認証情報の管理や手動更新が不要になる。AWS公式が推奨するCodeArtifact認証のベストプラクティスであり最も安全で自動化された実装である。
C
CodeArtifact の認証トークンを Secrets Manager に手動で定期保存し、buildspec 内で Secrets Manager API を呼び出してトークンを取得し npm に設定する
Secrets Managerへの手動保存はCodeArtifactトークンの有効期限(最大12時間)ごとの手動更新が必要となり自動化の観点で実用的でない。IAMロールで動的取得すれば管理コストなしに常に有効なトークンを利用できる。
D
CodeArtifact リポジトリの上流ソースに npmjs.com を設定してパッケージをキャッシュし、CodeBuild からは認証なしでダウンロードできるように構成する
CodeArtifactの上流リポジトリ設定は外部パッケージのキャッシュを可能にするが、CodeArtifactリポジトリ自体へのアクセスには引き続きIAM認証が必要であり、認証を省略できるわけではない。

解説

AWS CodeArtifact の推奨認証フローは IAM ロールを使って短期の認証トークンを動的に取得する方式です。CodeBuild のサービスロールに codeartifact:GetAuthorizationToken と sts:GetServiceBearerToken 権限を付与することで、ビルド実行時に aws codeartifact get-authorization-token コマンドで有効期限付きトークン(最大12時間)を取得できます。このトークンを npm レジストリの認証設定に適用することで、長期認証情報を保存せずに安全にパッケージをインストールできます。 選択肢Aの環境変数へのプレーンテキスト保存はトークンがビルドログや CloudWatch Logs に露出するリスクがあり、セキュリティのベストプラクティスに反する。 選択肢CのSecrets Managerへの手動保存はCodeArtifactトークンに有効期限(最大12時間)があるため定期的な手動更新が必要となり、IAMロールで動的に取得する方法より管理コストが大きい。 選択肢Dの上流リポジトリ設定とキャッシュはnpmjsのパッケージを取得する経路の設定であり、CodeArtifactリポジトリ自体への認証要件をなくすものではない。

ドメイン別正答率・予想スコアでリアルタイムに実力把握

無限ノックでDVAを徹底対策。全問AI生成のオリジナル問題。

無料で演習を始める →
← DVA の問題一覧に戻る