トキヌク

KCSA サンプル問題

Kubernetes and Cloud Native Security Associate(KCSA)対策のオリジナル問題50問を無料公開。アプリの無料枠と同じ問題で、全200問収録のKCSA問題集から抜粋しています。「答えと解説を見る」を開くと、正解だけでなく全選択肢の解説を読めます。

50問無料公開 全200問収録 全選択肢解説付き
アプリで解く(無料・登録不要)→

クラウドネイティブセキュリティ概要

4C/クラウドネイティブセキュリティ

Q1. クラウドネイティブセキュリティの4Cモデルにおいて、最も外側に位置し、他の3つの層すべての土台となる層はどれですか?

  1. A. Cluster
  2. B. Cloud
  3. C. Container
  4. D. Code
答えと解説を見る

正解:B

A Kubernetesクラスタ自体の層。Cloudの内側にあり、土台であるCloud層の設定に依存する

B(正解) 正解。4CはCloud→Cluster→Container→Codeという入れ子構造で、Cloud(またはデータセンターや企業ネットワーク)が最も外側の土台となる

C イメージとランタイムの層。内側から2番目で、土台ではない

D 最も内側のアプリケーションコードの層。4Cの中心であって土台ではない

4C/クラウドネイティブセキュリティ

Q2. 4Cモデルが示す基本的な考え方として、最も適切なものはどれですか?

  1. A. 最も内側のCode層さえ堅牢に作れば、外側の層の設定は自動的に安全になる
  2. B. 4つの層は互いに独立しており、どれか1つを選んで対策すればよい
  3. C. Cloud層はクラウド事業者の責任なので、利用者は考慮しなくてよい
  4. D. 内側の層のセキュリティは外側の層の上に成り立つため、外側が脆弱だと内側の対策だけでは守り切れない
答えと解説を見る

正解:D

A 実際は逆で、基盤が脆弱ならアプリケーションだけを強化しても保護しきれない

B 4層は入れ子であり独立していない。単層のみの対策では防御に穴が残る

C 責任共有モデルにより、ネットワーク設計やIAMなど利用者側に残る設定責任がある

D(正解) 正解。多層防御の考え方であり、外側の層の弱点は内側の層の対策では埋め合わせられないというのが4Cの基本思想

4C/クラウドネイティブセキュリティ

Q3. マネージドKubernetesサービス(クラウド事業者がコントロールプレーンを運用)を利用する場合、責任共有モデル上で利用者側の責任として残るものはどれですか?

  1. A. コントロールプレーンのノードOSへのパッチ適用
  2. B. etcdのバックアップとコントロールプレーンの冗長化
  3. C. ワークロードのRBAC設計、Podのセキュリティ設定、イメージの安全性
  4. D. kube-apiserverプロセスのバイナリに含まれる脆弱性の修正
答えと解説を見る

正解:C

A マネージドサービスでは事業者が管理する領域で、利用者は通常アクセスできない

B 一般にマネージド側で提供される。利用者がetcdを直接操作できないことが多い

C(正解) 正解。クラスタに何をどう配置するかは、どの提供形態でも常に利用者の責任として残る

D コントロールプレーンのソフトウェア保守は事業者側の責任

4C/クラウドネイティブセキュリティ

Q4. IaaS上に自分でKubernetesを構築(セルフマネージド)した場合、マネージドサービス利用時と比べて追加で負うことになる責任はどれですか?

  1. A. コントロールプレーンとetcdの構成・更新・保護
  2. B. アプリケーションコードに含まれる脆弱性の修正
  3. C. 物理データセンターへの入退室管理と設備の保守
  4. D. Podに付与するRBAC権限の設計と定期的な見直し
答えと解説を見る

正解:A

A(正解) 正解。セルフマネージドではkube-apiserverの起動フラグやetcdの保存時暗号化を含め、コントロールプレーンの設定・更新・保護がすべて利用者責任になる

B どちらの形態でも常に利用者の責任であり、追加で負うものではない

C IaaSを利用する限り、物理層はクラウド事業者の責任のまま

D これもどちらの形態でも利用者責任であり、両者の差分にはならない

分離技術

Q5. KubernetesのNamespaceによる分離について、正しい説明はどれですか?

  1. A. Namespaceが異なるPod同士は、既定でネットワーク通信が遮断される
  2. B. APIオブジェクトを論理的に区切る仕組みで、それ自体は実行環境を分離しない
  3. C. Namespaceごとに専用のLinuxカーネルが割り当てられる
  4. D. Namespaceを分けると、Podが配置されるノードも自動的に分離される
答えと解説を見る

正解:B

A 既定のクラスタネットワークはフラットで、Namespaceが違ってもPodは相互に通信できる。遮断にはNetworkPolicyが必要

B(正解) 正解。カーネルレベルやネットワークの分離は提供しない。NamespaceはAPI上のスコープであり、RBACやResourceQuota、NetworkPolicyの適用単位として使うことで初めて実効的な分離になる

C ノード上のコンテナはホストのカーネルを共有する。KubernetesのNamespaceとLinuxのnamespaceは別概念で、混同されやすい

D スケジューリング先は分離されない。ノードを分けたい場合はtaint/tolerationやnodeSelectorが必要

分離技術

Q6. 1つのホスト上でコンテナ同士を分離している、Linuxカーネルの中心的な機能の組み合わせはどれですか?

  1. A. SELinuxとiptables
  2. B. ハイパーバイザとvCPUスケジューラ
  3. C. chrootとsudo
  4. D. namespacesとcgroups
答えと解説を見る

正解:D

A SELinuxは強制アクセス制御、iptablesはパケットフィルタで、いずれも分離を補強するが基礎機構ではない

B 仮想マシンの分離技術。通常のコンテナはVMを介さずホストカーネルを共有する

C chrootは限定的なファイルシステムの見え方の変更にすぎず、sudoは権限昇格のためのツールで分離機構ではない

D(正解) 正解。namespacesがプロセスやネットワーク、マウントなどの可視範囲を分離し、cgroupsがCPUやメモリといった資源の使用量を制限する

分離技術

Q7. 信頼できない第三者のコードをマルチテナントのクラスタで実行する必要があります。コンテナがホストカーネルを共有することによるリスクを最も直接的に下げる手段はどれですか?

  1. A. テナントごとに別のKubernetes Namespaceへ配置する
  2. B. 各Podにresources.limitsを設定する
  3. C. gVisorやKata ContainersをRuntimeClassで割り当てる
  4. D. コンテナイメージをスキャンして既知の脆弱性をゼロにする
答えと解説を見る

正解:C

A API上の区切りが増えるだけで、カーネルを共有しているという構造は変わらない

B 資源の枯渇には有効だが、カーネルの脆弱性を突いた脱出は防げない

C(正解) 正解。サンドボックス化されたランタイムを使い、システムコールを仲介するユーザ空間カーネルや軽量VMを挟むことで、ホストカーネルへの攻撃面を大きく減らせる

D イメージ内の既知脆弱性の削減には有効だが、カーネル共有という構造的なリスクは残ったまま

クラスタコンポーネントのセキュリティ

コンポーネント保護

Q8. etcdに保存されているデータについて、セキュリティ上もっとも注意すべき点はどれですか?

  1. A. etcdはSecretのみを保持し、その他のリソースはkube-apiserverのメモリ上にある
  2. B. etcd内のデータはKubernetesが常に自動で暗号化する
  3. C. etcdへの読み取りもRBACで制御されるため、直接アクセスされても安全である
  4. D. 既定では全データが暗号化されずに保存され、直接アクセスはクラスタ侵害に等しい
答えと解説を見る

正解:D

A etcdはクラスタのすべてのAPIオブジェクトを保持する

B 既定では保存時暗号化は有効になっておらず、EncryptionConfigurationの明示的な設定が必要

C RBACはkube-apiserver上の仕組み。etcdに直接アクセスされた場合、RBACは一切効かない

D(正解) 正解。Secretを含むすべてのオブジェクトが平文で保存される。だからこそetcdは相互TLS、ネットワーク到達性の制限、保存時暗号化という多層で守る必要がある

コンポーネント保護

Q9. etcdへのアクセスをkube-apiserverだけに限定したいとき、最も適切な構成はどれですか?

  1. A. etcdのクライアントポートを全インターフェースで公開し、RBACのRoleでアクセスを制限する
  2. B. etcd専用CAのクライアント証明書による相互TLSを必須にし、到達範囲も絞る
  3. C. etcdを通常のPodとして起動し、NetworkPolicyだけで保護する
  4. D. kube-apiserverと同じCAと同じサーバ証明書をetcdでも使い回す
答えと解説を見る

正解:B

A etcdはKubernetesのRBACを使わないため制限は効かず、全公開は最悪の構成になる

B(正解) 正解。etcd自身の認証は専用CAで発行した証明書ベースで行い、加えて到達できるネットワークをコントロールプレーンに限定する多層防御が推奨される

C NetworkPolicyはPodネットワーク上の到達性制御であり、認証の代わりにはならない

D CAを共有すると、片方で発行された証明書がもう一方でも受け入れられ、侵害の影響が両方へ及ぶ

コンポーネント保護

Q10. kube-apiserverで匿名アクセス(--anonymous-auth=true)が有効なままになっている場合のリスクとして、正しいものはどれですか?

  1. A. すべてのリクエストがcluster-admin権限で実行され、認可が働かなくなる
  2. B. TLSが無効化され、APIサーバとの通信がすべて平文で流れるようになる
  3. C. 認証情報のないリクエストがsystem:anonymousとして処理され、情報が漏えいしうる
  4. D. PodがServiceAccountトークンでの認証を利用できなくなる
答えと解説を見る

正解:C

A 匿名リクエストもRBACによる認可を受けるため、無条件にcluster-adminになるわけではない

B 認証方式の設定と通信の暗号化はまったく別の話

C(正解) 正解。匿名リクエストはsystem:anonymousユーザ、system:unauthenticatedグループとして扱われる。このグループへ誤って広い権限をバインドしたことによる情報漏えいは実際に問題になっており、匿名アクセスは原則無効にする

D 匿名アクセスの可否とServiceAccountトークンの利用は独立している

コンポーネント保護

Q11. kubeletが --authorization-mode=AlwaysAllowで動作している場合に起きる問題はどれですか?

  1. A. kubelet APIへ到達できれば、Pod内でのコマンド実行やログ取得ができてしまう
  2. B. kubeletがPodをまったく起動できない状態になる
  3. C. kubeletがkube-apiserverにノードとして登録されなくなる
  4. D. Podのイメージ取得がすべて匿名で行われるようになる
答えと解説を見る

正解:A

A(正解) 正解。kubelet APIはexecやlogsといった強力な操作を持つため、認可の素通しはノード乗っ取りに直結する。Webhookモードでkube-apiserverに認可を委譲すべき

B 認可モードの設定はPodの起動可否とは無関係

C ノード登録は通常どおり行われる

D レジストリの認証とkubelet APIの認可はまったく別の仕組み

コンポーネント保護

Q12. kubeletのAPIを保護するための推奨設定の組み合わせはどれですか?

  1. A. --anonymous-auth=trueと --authorization-mode=AlwaysAllow
  2. B. --anonymous-auth=trueと --authorization-mode=Webhook
  3. C. --anonymous-auth=falseと --authorization-mode=Webhook
  4. D. --anonymous-auth=falseと --authorization-mode=AlwaysAllow
答えと解説を見る

正解:C

A 匿名アクセスを許したうえで認可も素通しにする、最も危険な組み合わせ

B 認可はkube-apiserverへ委譲されるが、匿名アクセスを残すと不要な攻撃面がそのまま残る

C(正解) 正解。匿名アクセスを拒否したうえで、認可判断をkube-apiserverのSubjectAccessReviewに委譲することで、kubelet APIへのアクセスをRBACで統制できる

D 認証は要求されるものの、認証さえ通れば何でもできてしまうため保護として不十分

コンポーネント保護

Q13. 最小権限の観点から、各ノードで動くkube-proxyに与えるべき権限として適切なのはどれですか?

  1. A. クラスタ内すべてのリソースに対するget/list/watch権限
  2. B. ServiceやEndpointSliceなど必要なリソースの読み取り権限のみ
  3. C. PodとDeploymentのcreateとdeleteの権限
  4. D. 全NamespaceのSecretに対するget権限
答えと解説を見る

正解:B

A 必要以上に広く、Secretまで読めてしまうため侵害時の被害が大きい

B(正解) 正解。kube-proxyの役目はServiceの通信ルールを維持することなので、転送ルールの生成に必要な情報の参照だけあればよい

C kube-proxyはPodもDeploymentも作成・削除しない

D 転送ルールの生成にSecretは不要で、与えると侵害時に資格情報を持ち出される

コンポーネント保護

Q14. アプリケーションPodにホストのコンテナランタイムのソケット(例: /run/containerd/containerd.sock)をマウントすることが極めて危険な理由はどれですか?

  1. A. ソケットへの読み書きがノードのディスク容量を大量に消費するため
  2. B. kubeletがそのPodのライフサイクルを管理できなくなるため
  3. C. Podのネットワークがホストと共有されてしまうため
  4. D. ランタイムへ直接命令して特権コンテナを起動でき、実質的にノードを掌握できるため
答えと解説を見る

正解:D

A 容量の問題ではない

B kubeletの管理対象から外れるわけではない

C それはhostNetworkを有効にした場合の説明で、ランタイムソケットの問題とは別

D(正解) 正解。ホストのファイルシステムをマウントしたコンテナも起動でき、KubernetesのRBACやアドミッション制御を丸ごと迂回する経路になる

コンポーネント保護

Q15. kubeletが使うクライアント証明書について、有効期限切れによる障害を避けつつ証明書の寿命を短く保つための仕組みはどれですか?

  1. A. kubeletの証明書ローテーションを有効にし、CSR API経由で自動更新させる
  2. B. 証明書の有効期限を10年に設定し、更新作業自体を不要にする
  3. C. 証明書の代わりに固定のBearerトークンをkubeconfigに書く
  4. D. kubeletの認証を無効にして証明書そのものを使わない
答えと解説を見る

正解:A

A(正解) 正解。期限が近づくとkubeletが自動でCertificateSigningRequestを提出し、承認されると新しい証明書を受け取るため、短い有効期限でも運用できる

B 長期証明書は漏えいしたときに影響が長く続くため、セキュリティ上は逆行する

C 静的トークンは失効も監査も難しく、推奨されない認証方式

D 認証の無効化は攻撃面を最大化するため、選択肢になりえない

コンポーネント保護

Q16. Kubernetesクラスタで、etcd用のCAとkube-apiserver用のCAを分けることが推奨される理由はどれですか?

  1. A. 証明書の発行速度が向上し、コンポーネントの起動が速くなるため
  2. B. 1つのCAからは複数のコンポーネント用証明書を発行できないため
  3. C. 一方のCAが侵害されても、その影響が他方のコンポーネントへ及ばないようにするため
  4. D. CAを分けるとクライアント証明書の失効(CRL)が使えるようになるため
答えと解説を見る

正解:C

A 性能上の理由ではない

B 1つのCAから多数の証明書を発行することは技術的に可能

C(正解) 正解。CAを分ければ、一方のCAで発行された証明書が他方では受け入れられなくなる。CAを分けることは信頼境界を分けることであり、侵害時の横展開を抑えられる

D CAを分割しても失効の仕組みが増えるわけではない

コンポーネント保護

Q17. kube-controller-managerやkube-schedulerのメトリクスやヘルスチェック用のエンドポイントを127.0.0.1にバインドすることが推奨されるのはなぜですか?

  1. A. バインドアドレスを絞るとコンポーネントの処理性能が向上するため
  2. B. ノード外部から直接アクセスされる経路をなくし、攻撃面を減らすため
  3. C. 127.0.0.1にバインドしないとリーダー選出が動作しないため
  4. D. Podからコントローラーへ接続できるようにするため
答えと解説を見る

正解:B

A 性能を目的とした設定ではない

B(正解) 正解。内部情報の漏えいや不要な攻撃面を減らせる。外部へ晒す必要のないエンドポイントはループバックに限定するという、攻撃面の最小化の考え方に沿っている

C リーダー選出はkube-apiserver経由で行われ、バインドアドレスとは無関係

D むしろ逆で、外部やPodからの接続を到達不能にするための設定

コンポーネント保護

Q18. インターネットに公開されているkube-apiserverの攻撃面を減らす対策として、最も効果的なものはどれですか?

  1. A. APIサーバの待ち受けポート番号を6443から任意の番号へ変更する
  2. B. kubectlのバージョンを常に最新に保ち、既知の脆弱性を解消する
  3. C. 監査ログのレベルをRequestResponseまで上げて記録を充実させる
  4. D. APIエンドポイントをプライベートネットワークに限定し、送信元IPの許可リストで絞る
答えと解説を見る

正解:D

A 知られていないことに頼る対策で、ポートスキャンによって容易に発見される

B クライアント側の更新は重要だが、APIサーバがインターネットに晒されている状態は変わらない

C 事後の検知には役立つが、予防的な攻撃面の削減にはならない

D(正解) 正解。到達できないものは攻撃できないという原則どおり、露出そのものを減らすのが最も効果が大きい。やむを得ず公開する場合も許可リストで到達範囲を絞る

Kubernetesセキュリティの基礎

Admission/Pod Security

Q19. Pod Security Standardsの3つのプロファイルのうち、非rootでの実行、特権昇格の禁止、ほぼすべてのLinux Capabilityの削除などを要求する最も制限の強いものはどれですか?

  1. A. privileged
  2. B. baseline
  3. C. hardened
  4. D. restricted
答えと解説を見る

正解:D

A 制限のないプロファイルで、既知の特権昇格をすべて許してしまう。信頼されたシステムワークロード向け

B 既知の特権昇格を防ぐ最小限の制限にとどめ、一般的なアプリを動かしやすくした中間のプロファイル

C架空 Pod Security Standardsにこの名前のプロファイルは存在しない

D(正解) 正解。現在のPodハードニングのベストプラクティスに沿った最も厳しいプロファイルで、runAsNonRootやseccompProfileの指定などを要求する

Admission/Pod Security

Q20. 稼働中の本番Namespaceについて、ワークロードを止めずにPod Security Standardsのrestrictedへの適合状況を調べたいとき、最初に取るべき方法はどれですか?

  1. A. enforceラベルをrestrictedにし、拒否されたPodを洗い出す
  2. B. auditとwarnのラベルだけをrestrictedにし、enforceは緩いままにする
  3. C. Namespaceを一度削除して作り直す
  4. D. すべてのPodにprivilegedのSecurityContextを設定する
答えと解説を見る

正解:B

A 違反するPodが即座に作成できなくなり、再起動やスケール時に本番障害を招く

B(正解) 正解。auditは監査ログに記録し、warnはkubectl実行時に警告を返すため、稼働に影響を与えずに違反を洗い出して適合状況を評価できる

C 稼働中のワークロードを失うだけで、適合状況の評価にはならない

D セキュリティを著しく悪化させる操作であり、評価の手段としても意味がない

Admission/Pod Security

Q21. Pod Security Standardsのbaselineプロファイルが主に禁止しているものはどれですか?

  1. A. コンテナをroot(UID 0)で実行することそのもの
  2. B. コンテナがLinux Capabilityを1つでも保持していること
  3. C. privilegedコンテナやホスト名前空間の共有、hostPathなどの設定
  4. D. 署名や来歴が検証されていないコンテナイメージの使用
答えと解説を見る

正解:C

A 非rootの要求はrestrictedの条件で、baselineではrootでの実行自体は許容される

B Capabilityをほぼすべて削除させるのはrestricted。baselineは危険な追加Capabilityの付与を制限するにとどまる

C(正解) 正解。baselineはprivileged、hostNetwork/hostPID/hostIPC、任意のhostPathなど、既知の特権昇格につながる設定を禁じる最小限の制限として定義されている

D イメージ署名の検証はPod Security Standardsの対象外で、別のアドミッション制御で実現する

Admission/Pod Security

Q22. 侵害されたコンテナ内に攻撃者が新たなツールを書き込んで実行することを難しくする、SecurityContextの設定はどれですか?

  1. A. readOnlyRootFilesystem: true
  2. B. runAsUser: 0
  3. C. privileged: true
  4. D. allowPrivilegeEscalation: true
答えと解説を見る

正解:A

A(正解) 正解。ルートファイルシステムを読み取り専用にすることでバイナリやスクリプトの書き込みを防げる。書き込みが必要な箇所だけemptyDirをマウントする

B コンテナをrootで実行させる設定であり、むしろ危険度を高める

C ホストのデバイスやカーネル機能へのアクセスを許す最も危険な設定

D コンテナ内のプロセスが新たな特権を得ることを許す設定。falseにすべきもので、ツールの書き込みや実行を妨げる効果はない

Admission/Pod Security

Q23. コンテナ内のプロセスが、setuidバイナリなどを利用して親プロセスより多くの権限を獲得することを禁止する設定はどれですか?

  1. A. automountServiceAccountToken: false
  2. B. allowPrivilegeEscalation: false
  3. C. readOnlyRootFilesystem: true
  4. D. hostNetwork: false
答えと解説を見る

正解:B

A ServiceAccountトークンをマウントしない設定で、プロセスの権限獲得とは別の対策

B(正解) 正解。Linuxのno_new_privsを設定し、実行中のプロセスが新たに特権を得ることを防ぐ。restrictedプロファイルでも必須とされる

C ファイルシステムへの書き込みを防ぐ設定で、setuidによる昇格そのものを止めるものではない

D ホストのネットワーク名前空間を使わないという既定の設定で、権限昇格の抑止とは目的が異なる

Admission/Pod Security

Q24. Webサーバのコンテナが1024番未満のポートをbindする必要があります。最小権限に沿った設定はどれですか?

  1. A. privileged: trueを設定してコンテナに特権を与える
  2. B. runAsUser: 0を設定してrootとして実行する
  3. C. capabilitiesのdropにALL、addにNET_BIND_SERVICEのみ
  4. D. hostNetwork: trueを設定してホストのネットワークを使う
答えと解説を見る

正解:C

A ホストのほぼすべての権限を与えることになり、必要な権限に対して過剰

B 動作はするが、コンテナ内のプロセスがrootになるため侵害時の影響が大きくなる

C(正解) 正解。まず全Capabilityを外し、業務上必要な1つだけを戻すのが最小権限の原則に沿った設定になる

D ホストのネットワーク名前空間を使うだけで低位ポートのbind権限は得られず、分離も大きく弱まる

認証・認可/RBAC

Q25. 開発チームに対して、devというNamespace内のPodの参照権限だけを与えたいとき、最小権限の観点で適切なRBACの構成はどれですか?

  1. A. ClusterRoleを作成し、ClusterRoleBindingで開発チームのグループに紐付ける
  2. B. cluster-admin ClusterRoleをRoleBindingでdev Namespaceに紐付ける
  3. C. 各開発者へ管理者用のクライアント証明書を配布する
  4. D. dev NamespaceにPodの参照のみを許可するRoleを作り、RoleBindingで紐付ける
答えと解説を見る

正解:D

A ClusterRoleBindingは全Namespaceに権限が及ぶため、devだけに限定できない

B 権限はdev内に限定されるが、そのNamespace内であらゆる操作ができてしまい参照権限をはるかに超える

C 認証情報の共有は誰の操作か追跡できなくなるうえ、権限も過剰になる

D(正解) 正解。get/list/watchのみを許可するRoleは対象Namespace内でのみ有効で、動詞も参照系に絞られるため最小権限になる

認証・認可/RBAC

Q26. RBACには、ユーザが自分の持つ権限を超えるRoleを作成できないようにする仕組みがあります。この権限昇格防止について、正しい説明はどれですか?

  1. A. Roleの作成はcluster-adminにしか許可されておらず、一般ユーザはそもそも作成できない
  2. B. Roleに書く権限を自分が既に持っているか、escalate権限を与えられている必要がある
  3. C. 作成したRoleは管理者が承認するまで無効の状態にとどまる
  4. D. 自分より広い権限のRoleを作成しても、次回のAPIサーバ再起動時に自動的に削除される
答えと解説を見る

正解:B

A RBACでRoleのcreate権限を与えれば、一般ユーザでもRoleを作成できる

B(正解) 正解。Roleの作成・更新時にこの制約がかかる。なければRoleのcreate権限だけを起点にcluster-admin相当まで自力で昇格できてしまう

C RBACに承認ワークフローは組み込まれていない

D そのような自動削除の仕組みは存在しない

認証・認可/RBAC

Q27. Kubernetes APIを一切呼び出さないアプリケーションのPodについて、攻撃面を減らすために行うべき設定はどれですか?

  1. A. automountServiceAccountToken: falseを設定してトークンをマウントしない
  2. B. そのPodのServiceAccountにcluster-adminをバインドする
  3. C. 専用のServiceAccountを作らずdefaultをそのまま使い続ける
  4. D. PodをhostNetworkで起動してノードのネットワークを使う
答えと解説を見る

正解:A

A(正解) 正解。PodまたはServiceAccountで指定できる。トークンが存在しなければ、コンテナが侵害されてもそれを使ってAPIサーバへアクセスされることはない

B 必要のない最大権限を与えることになり、対策として真逆

C 既定ではトークンがマウントされるため、攻撃面は残ったままになる

D APIトークンの問題とは無関係なうえ、ネットワークの分離を弱めてしまう

認証・認可/RBAC

Q28. Podに投影されるServiceAccountトークン(Bound Service Account Token)が、Secretに保存された従来の永続トークンより安全とされる理由はどれですか?

  1. A. トークンが暗号化された状態でコンテナへ渡されるため
  2. B. トークンの検証がkube-apiserverではなくkubelet側で行われるため
  3. C. 有効期限と対象(audience)があり、特定のPodに紐づいて自動更新されるため
  4. D. トークンがファイルではなく環境変数として渡されるため
答えと解説を見る

正解:C

A どちらも署名付きJWTであり、暗号化されているわけではない

B 検証はどちらの方式でもkube-apiserverが行う

C(正解) 正解。Podが消えたり期限が切れれば漏えいしても使えなくなる。永続トークンは削除しない限り無期限に有効でaudienceの制限もないため、漏えい時の影響が大きい

D 投影トークンはボリュームとしてファイルにマウントされる。環境変数のほうがむしろ漏えい経路が多い

Secrets/暗号化

Q29. KubernetesのSecretについて、正しい説明はどれですか?

  1. A. 値はSHA-256でハッシュ化されて保存される
  2. B. Secretはkube-apiserverのメモリ上にのみ存在し、永続化されない
  3. C. Secretを参照できるのはPodだけで、ユーザは内容を取得できない
  4. D. 値はbase64でエンコードされているだけで、既定では暗号化されていない
答えと解説を見る

正解:D

A ハッシュ化すると元の値を取り出せない。Secretは利用のために復元可能な形で保存される

B 他のリソースと同様にetcdへ永続化される

C get権限を持つユーザはkubectlでSecretの内容を取得できるため、参照権限の設計が重要になる

D(正解) 正解。base64は符号化であって暗号化ではないため、保存時暗号化、RBACによる参照制限、外部シークレット管理との連携が必要になる

Kubernetes脅威モデル

脅威モデル/STRIDE

Q30. クラスタに侵入した攻撃者が監査ログの記録を停止させ、自分の操作の痕跡を残さないようにしました。STRIDEモデルでは主にどの脅威に分類されますか?

  1. A. Spoofing(なりすまし)
  2. B. Tampering(改ざん)
  3. C. Information Disclosure(情報漏えい)
  4. D. Repudiation(否認)
答えと解説を見る

正解:D

A 他人の身元を騙る脅威。ここでの本質は痕跡を追えなくすることにある

B データや設定の不正な書き換えを指す。ログ停止も書き換えを伴いうるが、STRIDEでは記録が残らないこと自体を指す分類が別にある

C 本来見えるべきでない情報が漏れる脅威で、この場面では情報は漏れていない

D(正解) 正解。誰が何をしたかを立証できなくなる脅威で、監査ログの停止・改ざん・保護不足が典型的な原因になる

脅威モデル/STRIDE

Q31. CIパイプラインがビルドしたコンテナイメージが、レジストリへ登録される経路で第三者によって別の中身にすり替えられました。STRIDEではどの脅威にあたりますか?

  1. A. Denial of Service(サービス拒否)
  2. B. Tampering(改ざん)
  3. C. Repudiation(否認)
  4. D. Spoofing(なりすまし)
答えと解説を見る

正解:B

A 可用性を奪う攻撃を指す。ここではサービスは動き続けている

B(正解) 正解。想定された成果物が不正に書き換えられる脅威で、対策は署名とデプロイ時の署名検証、ダイジェストによる固定になる

C 行為を否認できてしまう脅威で、すり替えそのものの分類ではない

D 身元の詐称を指す。ここではイメージの中身が書き換えられた点が本質なのでTamperingが適切

脅威モデル/STRIDE

Q32. privileged: trueで動作するコンテナを踏み台に、攻撃者がホストのファイルシステムへアクセスしノードのroot権限を取得しました。STRIDEではどの脅威にあたりますか?

  1. A. Elevation of Privilege(権限昇格)
  2. B. Information Disclosure(情報漏えい)
  3. C. Denial of Service(サービス拒否)
  4. D. Repudiation(否認)
答えと解説を見る

正解:A

A(正解) 正解。与えられた権限を超える権限を獲得する脅威で、特権コンテナやhostPath、ランタイムソケットのマウントが代表的な経路になる

B 結果として情報も漏れうるが、この事象の本質は権限そのものの獲得にある

C 可用性への攻撃であり、ここでの本質ではない

D 行為の追跡可能性に関する脅威で、分類が異なる

脅威モデル/STRIDE

Q33. Kubernetesにおける信頼境界の説明として、正しいものはどれですか?

  1. A. 同一ノード上のPod同士は完全に独立した実行環境であり、仮想マシン同士と同等の境界を持つ
  2. B. 同じNamespaceに属するPod同士の間には信頼境界は存在しない
  3. C. 同一ノード上のPodはホストのカーネルを共有するため、カーネルの脆弱性やコンテナの設定不備は信頼境界を越える経路になりうる
  4. D. kube-apiserverはクラスタ内部からのリクエストを信頼するため、内部通信では認証が不要である
答えと解説を見る

正解:C

A 通常のコンテナはホストカーネルを共有するため、VM同士に比べて境界は弱い

B 同一Namespaceでも、Podごとに扱うデータや権限が異なるため境界として考慮すべき

C(正解) 正解。だからこそSecurityContextによる制限、seccompやAppArmor、必要に応じたサンドボックスランタイムの併用が重要になる

D kube-apiserverは送信元にかかわらず認証と認可を行う。内部だから信頼するという設計ではない

脅威モデル/STRIDE

Q34. あるPodがhostPathでホストのルートディレクトリをマウントできてしまう構成の危険性として、最も適切なものはどれですか?

  1. A. Podの起動が遅くなり、スケジューリングも失敗しやすくなる
  2. B. kubeletのkubeconfigや証明書を読み書きでき、クラスタの侵害につながる
  3. C. PodがそのノードのIPアドレスを使うようになってしまう
  4. D. 他のNamespaceのPodが自動的にそのボリュームを共有してしまう
答えと解説を見る

正解:B

A 性能や可用性ではなく、権限と到達範囲が問題の本質

B(正解) 正解。他コンテナのファイルにも到達でき、ノードの掌握や、起動時に実行される設定の書き換えによる永続化にも悪用される

C それはhostNetworkの効果であり、hostPathとは別

D 自動的な共有は起きない。問題はホスト側のデータへ到達できてしまうこと

脅威モデル/STRIDE

Q35. クラスタに侵入した攻撃者が、その後も長期間アクセスを維持しようとする永続化の手口として典型的なものはどれですか?

  1. A. DaemonSetやCronJobを作成し、自分のコードが繰り返し起動されるようにする
  2. B. Podのresources.limitsを大きく引き上げる
  3. C. ServiceのタイプをClusterIPからNodePortへ変更する
  4. D. kubectl get podsを定期的に繰り返し実行する
答えと解説を見る

正解:A

A(正解) 正解。全ノードで動くDaemonSetや定期実行のCronJobなら、個々のPodを削除されても再作成される。想定外のワークロード作成をアドミッション制御と監査で押さえることが対策になる

B 資源割り当ての変更にすぎず、アクセスの維持にはつながらない

C 外部からの到達性は増えるが、これ単体は永続化というより露出の問題

D 単なる情報収集であり、永続化にはあたらない

脅威モデル/STRIDE

Q36. あるNamespaceのワークロードがノードのCPUとメモリを消費し尽くし、同じノード上の他のPodが退避される事象が起きています。この種のサービス拒否への対策として適切なものはどれですか?

  1. A. そのNamespaceのNetworkPolicyを既定拒否に変更する
  2. B. PodにhostPID: trueを設定して他プロセスを監視する
  3. C. Podのイメージを定期的に脆弱性スキャンする
  4. D. requestsとlimits、ResourceQuota、LimitRangeを適用する
答えと解説を見る

正解:D

A ネットワーク経路の制御であり、計算資源の枯渇は防げない

B 分離を弱めるだけで、資源枯渇の対策にはならない

C 既知脆弱性の把握には有効だが、資源の消費量は抑えられない

D(正解) 正解。limitsで個々のコンテナの上限を、ResourceQuotaでNamespace全体の総量を制限し、LimitRangeで未指定時の既定値を強制することで、隣接するワークロードへの影響を抑えられる

脅威モデル/STRIDE

Q37. アプリケーションが使う資格情報の扱いとして、機密漏えいのリスクが最も高いものはどれですか?

  1. A. Secretをボリュームとしてマウントし、ファイルから読み込む
  2. B. 外部のシークレット管理サービスから起動時に取得する
  3. C. APIキーをDockerfileにハードコードしてイメージに焼き込む
  4. D. SecretをsecretKeyRef経由で環境変数として渡す
答えと解説を見る

正解:C

A 推奨される扱い方。ファイルはメモリ上に置かれ、Podの削除とともに消える

B Kubernetesの外で集中管理・ローテーションでき、望ましい選択肢のひとつ

C(正解) 正解。イメージ層に残るためレジストリを参照できる全員が取得でき、履歴からも消しにくい。ローテーションのたびに再ビルドも必要になる

D 子プロセスへの継承やダンプ経由で漏れうるためボリュームより望ましくないが、イメージへの焼き込みほど危険ではない

プラットフォームセキュリティ

サプライチェーン/イメージ

Q38. 署名されていないコンテナイメージがクラスタにデプロイされることを防ぐ仕組みとして、適切なものはどれですか?

  1. A. kubectl verify-imageコマンドをデプロイ前に実行するようチームで取り決める
  2. B. イメージ名にlatestタグを使わないというルールを設ける
  3. C. cosignなどで署名し、アドミッションWebhookで検証してから許可する
  4. D. レジストリをプライベートにしてimagePullSecretsを設定する
答えと解説を見る

正解:C

A架空 このようなkubectlのサブコマンドは存在しない。また人手の取り決めは強制力を持たない

B タグ運用の改善にはなるが、署名の有無は一切検証できない

C(正解) 正解。署名と信頼された発行者を、デプロイ経路上の強制ポイントであるアドミッションで検証することで、抜け道なくポリシーを適用できる

D 取得元の制限にはなるが、そのレジストリに置かれたイメージが正当な出所かどうかまでは保証できない

サプライチェーン/イメージ

Q39. SBOM(Software Bill of Materials)を成果物ごとに生成・保管しておく主な利点はどれですか?

  1. A. イメージのサイズが小さくなり、Pullが高速になる
  2. B. 実行中のコンテナの異常な挙動を検知できるようになる
  3. C. コンテナが特権昇格することを未然に防げる
  4. D. 新たな脆弱性の公表時に、影響を受ける成果物を即座に特定できる
答えと解説を見る

正解:D

A SBOMは構成情報の一覧であり、イメージの軽量化とは無関係

B それはランタイムセキュリティツールの役割で、SBOMは実行時の監視を行わない

C SBOMは目録であって、予防的な実行制御は行わない

D(正解) 正解。依存関係とバージョンの目録があることで、再スキャンの完了を待たずに影響を受けるコンポーネントを含む成果物を特定でき、対応の優先順位付けができる

サプライチェーン/イメージ

Q40. CIパイプラインのビルド時にイメージの脆弱性スキャンを行っています。それだけでは不十分な理由はどれですか?

  1. A. スキャナはビルド時にはベースイメージを検査できないため
  2. B. 脆弱性は後から公表されるため、ビルド時に安全でも後から脆弱になる
  3. C. CIで検出した脆弱性は本番環境には影響しないため
  4. D. スキャナは実行中のPodに対してしか使えないため
答えと解説を見る

正解:B

A ベースイメージに含まれるパッケージも含めて検査できる

B(正解) 正解。ビルド時に問題がなかったイメージも後から脆弱になる。レジストリ上の既存イメージや稼働中のワークロードを定期的に再スキャンし、再ビルドと再デプロイにつなげる運用が必要になる

C 同じイメージを本番で動かすのだから当然影響する

D イメージスキャナはレジストリ上のイメージも検査できる

サプライチェーン/イメージ

Q41. 本番のマニフェストでコンテナイメージをmyapp:latestのような可変タグで指定することの問題点はどれですか?

  1. A. タグは後から別のイメージへ付け替えられるため、実行される中身が変わりうる
  2. B. latestタグのイメージはKubernetesが取得できない
  3. C. latestタグを使うとimagePullPolicyがNeverになる
  4. D. latestタグのイメージは自動的に署名検証の対象外になる
答えと解説を見る

正解:A

A(正解) 正解。同じマニフェストでも取得されるイメージが変わりうる。sha256ダイジェストで指定すれば内容が一意に固定されるため、再現性とサプライチェーンの完全性の観点から本番ではダイジェスト指定が推奨される

B 取得はできる。問題は取得できるかどうかではなく、何が取得されるかが不定な点にある

C タグを省略した場合やlatestの場合の既定はAlwaysで、Neverにはならない

D タグの名前によって署名検証の要否が変わることはない

Admission/Pod Security

Q42. アドミッションWebhookについて、正しい説明はどれですか?

  1. A. ValidatingとMutatingは同時に実行され、順序は保証されない
  2. B. Validating Webhookはオブジェクトを書き換えて、不足しているセキュリティ設定を補える
  3. C. 両者の間でAuditingAdmissionWebhookが監査を行う
  4. D. Mutating Webhookが先に書き換え、その後Validating Webhookが検証する
答えと解説を見る

正解:D

A 順序は決まっており、Mutatingが先、Validatingが後に実行される

B オブジェクトの書き換えはMutatingの役割で、Validatingは許可か拒否かを返すだけ

C架空 このような種類のアドミッションWebhookは存在しない

D(正解) 正解。Mutatingがオブジェクトを書き換え、Validatingが最終的な内容を検証して許可・拒否を判断する。この順序により、Mutatingが追加・変更した内容もValidatingの検証対象になり、ポリシーの抜けを防げる

Admission/Pod Security

Q43. セキュリティポリシーを強制するValidating Webhookが応答不能になった場合に、ポリシーの回避を許さない設定はどれですか?

  1. A. failurePolicy: Ignore
  2. B. timeoutSecondsを長く設定する
  3. C. failurePolicy: Fail
  4. D. sideEffects: None
答えと解説を見る

正解:C

A Webhookが応答しないリクエストをそのまま通すため、Webhookを落とせばポリシーを回避できてしまう

B 待ち時間が延びるだけで最終的に失敗した場合の扱いは決まらず、APIサーバの応答性も悪化する

C(正解) 正解。Webhookが応答しない場合はリクエストを拒否するためポリシーの回避を防げる。ただしWebhookの可用性がクラスタの可用性に直結する点には注意が必要

D Webhookが外部に副作用を持たないことを宣言するフィールドで、障害時の挙動とは関係しない

監査ログ/検知

Q44. Kubernetesの監査ポリシー(Audit Policy)で、Secretリソースへのアクセスを記録する際に推奨される考え方はどれですか?

  1. A. RequestResponseレベルで記録し、値の変化まで完全に追跡する
  2. B. Metadataレベルにとどめ、本文までは記録しない
  3. C. Noneレベルにして一切記録しない
  4. D. 監査ログをクラスタ内のConfigMapに保存する
答えと解説を見る

正解:B

A リクエストとレスポンスの本文が記録されるため、Secretの中身が監査ログに平文で残ってしまう

B(正解) 正解。誰がいつ何にアクセスしたかは記録しつつ本文は残さないことで、追跡可能性を確保しながら、監査ログ自体が新たな漏えい経路になることを避けられる

C Secretへのアクセスこそ追跡すべき対象であり、記録しないのは検知と否認防止の観点で問題がある

D クラスタを掌握した攻撃者に改ざんされうる。監査ログはクラスタ外の追記専用のストレージへ送るのが望ましい

ランタイムセキュリティ

Q45. 稼働中のコンテナ内で予期しないシェルが起動された、想定外の外部ホストへ接続したといった挙動を検知したい場合に用いる仕組みはどれですか?

  1. A. システムコールを監視して異常な挙動を通知するランタイムセキュリティツール
  2. B. デプロイ前に実行するコンテナイメージの脆弱性スキャナ
  3. C. ContainerSentryというKubernetes標準の監視コンポーネント
  4. D. NamespaceのResourceQuota
答えと解説を見る

正解:A

A(正解) 正解。eBPFやカーネルモジュールを使うFalcoに代表されるこの種のツールは、イメージスキャンやアドミッション制御では捉えられない実行時の異常を検知する

B デプロイ前に既知の脆弱性を見つける仕組みで、実行時の挙動は見ていない

C架空 このような標準コンポーネントは存在しない

D Namespaceの資源使用量に上限を設ける仕組みで、挙動の検知は行わない

コンプライアンスとフレームワーク

フレームワーク/ベンチマーク

Q46. CIS Kubernetes Benchmarkはどのような文書ですか?

  1. A. Kubernetesの認定試験の出題範囲を定めた文書
  2. B. 設定項目ごとに推奨される構成と、その確認・修正の手順をまとめた設定基準
  3. C. コンテナイメージに含めてよいパッケージの一覧を定めた許可リスト
  4. D. クラウド事業者と利用者の責任分界点を法的に定めた契約書の雛形
答えと解説を見る

正解:B

A 試験のカリキュラムはLinux FoundationやCNCFが公開するもので、CISの文書ではない

B(正解) 正解。コントロールプレーンやノードの設定について、匿名認証を無効にする、といった具体的な推奨を、監査可能なチェック項目として提供する

C パッケージの許可リストを配布する文書ではない

D 契約文書ではなく、技術的な設定基準にあたる

フレームワーク/ベンチマーク

Q47. 稼働中のクラスタがCIS Kubernetes Benchmarkの各項目に適合しているかを自動でチェックするために使われるツールはどれですか?

  1. A. cluster-audit-scanner
  2. B. kubectl diff
  3. C. kube-bench
  4. D. etcdctl
答えと解説を見る

正解:C

A架空 このような名前のツールは存在しない

B ローカルのマニフェストとクラスタ上の状態の差分を表示するコマンドで、ベンチマークの評価は行わない

C(正解) 正解。CIS Kubernetes Benchmarkの各項目をテストとして実装しており、ノードやコントロールプレーンの設定を検査して合否と是正方法を出力する

D etcdを直接操作するCLIで、ベンチマークの検査用途ではない

フレームワーク/ベンチマーク

Q48. NIST SP 800-190はどのような文書ですか?

  1. A. コンテナ技術に固有のリスクと対策を整理したガイド
  2. B. クレジットカード決済環境に対する業界の要求事項
  3. C. Kubernetes APIのリファレンス仕様書
  4. D. EUにおける個人データ保護に関する法規制
答えと解説を見る

正解:A

A(正解) 正解。イメージ、レジストリ、オーケストレータ、コンテナ、ホストOSという主要コンポーネントごとに、特定の製品に依存しない形でコンテナ環境の脅威と緩和策の考え方を体系的に示している

B それはPCI DSSの説明

C APIの仕様はKubernetesプロジェクトが公開するもの

D それはGDPRの説明

フレームワーク/ベンチマーク

Q49. クレジットカードの会員データを扱うワークロードをKubernetes上で運用する場合に、直接的に関係する要求事項はどれですか?

  1. A. SOC 2
  2. B. ISO/IEC 27001
  3. C. HIPAA
  4. D. PCI DSS
答えと解説を見る

正解:D

A サービス組織の内部統制に関する保証報告の枠組みで、カード会員データ固有の要求ではない

B 情報セキュリティマネジメントシステムの認証規格で、カード会員データに特化した要求ではない

C 米国における医療情報の保護に関する法規制で、対象とするデータが異なる

D(正解) 正解。カード会員データを扱う環境に対し、ネットワークの分離、保存データの暗号化、アクセス制御、ログの保持などを具体的に要求する

フレームワーク/ベンチマーク

Q50. コンプライアンス要件を、監査の直前にまとめて確認するのではなく継続的に満たし続けるための実践として、最も適切なものはどれですか?

  1. A. 四半期に一度、手作業でクラスタ設定の画面を保存して保管する
  2. B. 本番クラスタへの変更を、管理者がその都度口頭で承認する
  3. C. ポリシーをコードとして表現し、CIとアドミッション制御で自動的に強制する
  4. D. 違反が見つかった場合にのみ、次回のリリースでまとめて修正する
答えと解説を見る

正解:C

A 点の記録にすぎず、記録と記録の間の期間に生じた逸脱を検知できない

B 証跡が残らず再現性もないため、監査に耐えられない

C(正解) 正解。デプロイ前(CI)とデプロイ時(アドミッション)の両方に強制ポイントを置くことで、逸脱の発生自体を防ぎながら、検証結果が監査証跡として自動的に蓄積される

D 逸脱した状態が長期間放置されることを許容してしまう

続きは演習アプリで

このページの50問は、演習アプリなら弱点に合わせた出題・成績記録つきで解けます。全200問と本番形式の模擬試験は期間パス(1,500円/30日、自動更新なし)で利用できます。

KCSAの演習を無料で始める →

KCSA問題集の詳細(出題範囲・よくある質問)→

掲載している問題はすべてトキヌクのオリジナル問題です。実試験問題の流出コピー(ブレインダンプ)は一切使用していません。本サービスは非公式の学習教材であり、各認定団体とは提携・承認・後援関係にありません。試験名は各団体の商標または登録商標です。
トキヌク トップページへ