LinuCシステムアーキテクト

LinuC-SA

SA02試験 出題範囲

LinuCシステムアーキテクトに認定されるためにはこの試験とSA01試験の受験が必須です。オンプレミス/クラウド、リアル/仮想化を含む LinuxなどのOSSを活用したシステムのライフサイクル全体を俯瞰して、最適なアーキテクチャを設計・構築するために必要なスキルをカバーしています。

出題範囲のそれぞれの項目には、重要度として重み付けがなされています。重要度は、それぞれのトピックスの相対的な重要性を示しています。重要度が高いトピックスほど、試験において多くの問題が出題されます。

SA.05:仮想マシンとコンテナの設計

SA.05.1 仮想マシンの設計と管理
重要度 3
概要
  • 仮想化の基本技術を理解し、性能検討やトラブルシューティングができる。
  • 仮想マシン及び仮想ディスクの移行など、仮想環境の管理ができる。
詳細
  • 仮想マシンの動作や性能に関わる要素を理解している。
    • オーバーコミット
    • NUMA
  • 仮想マシンのリソース割り当てに関する手法のメリット、デメリット、制約を理解し、有効利用する。
    • pinning (ピニング)
    • スケジューリング、レイテンシ設定、優先順位設定
  • 仮想化支援技術や仮想デバイスについて理解し、性能検討やトラブルシューティングに役立てる。
    • x86 アーキテクチャによる仮想化支援技術 (Intel VT-x、AMD-V) を利用する Linux の機能
    • x86 アーキテクチャにおける OS レベルのプロセス保護機能 (リングプロテクション)
    • virtio の動作方法及び利点欠点
    • 仮想ディスクの主要な形式 (QCOW2、RAW) の特徴
  • 目的に合わせて既存資産を移行する。
    • 物理環境から仮想環境への移行: virt-p2v
    • 仮想環境間の移行: virt-v2v
    • 仮想ディスクのサイズ変更
SA.05.2 コンテナの設計とビルド
重要度 3
概要
  • コンテナに対する詳細な設定 (連携情報、リソース割り当てなど) の仕組みと方法を理解している。
  • コンテナイメージの構造について理解し、適切にビルド、更新、管理できる。
  • コンテナの用途に応じて適切なボリュームを使用できる。
詳細
  • コンテナのリソース割り当てや権限設定の仕組みを理解している。
    • 設定対象: CPU、メモリ、I/O、プロセス ID
    • これを実現する Linux カーネルの機能
  • コンテナイメージの構造について理解している。
    • イメージレイヤ、コンテナレイヤ
    • 複数コンテナにおけるイメージの共有
    • イメージとホストのファイルシステムとの関係
  • サイズやセキュリティが考慮されたコンテナイメージをビルドする。また、これらを実現する Dockerfile の記載方法を理解している。
    • 必要十分な親イメージの選択: scratch、distroless
    • 構成物 (apt/yum/dnf パッケージなど) のバージョン指定
    • 不要ファイルの除外: ダウンロードキャッシュのクリア、マルチステージビルドなど
  • コンテナに対して外部ボリュームをマウントし、目的に合わせて複数コンテナ間やホスト間でのデータを共有・永続化する。
    • bind mount
    • tmpfs
  • Docker における詳細なコンテナ操作を理解している。
    • 起動時の環境変数割り当て
    • 複数コンテナの一括管理: docker compose
SA.05.3 コンテナオーケストレーション
重要度 3
概要 コンテナオーケストレーションの基本動作を理解し、コンテナベースのシステム構成を計画できる。
詳細
  • オーケストレーションエンジンによるコンテナ制御の基本動作とそのユースケースを理解している。
    • 宣言的 API、突き合わせループ
    • 障害時の再スケジューリング
    • オートスケール
  • オーケストレーションエンジンと各種リソースを結びつけるインターフェースの構成を理解している。
    • CRI、CNI、CSI
  • Kubernetes の動作と管理に関わる構成要素の概要を知っている。
    • Pod、および Pod を管理するワークロードリソース: Service、Deployment、StatefulSet
    • コントロールプレーン: kube-apiserver、kube-scheduler、etcd
    • データプレーン (ノード): kubelet、kube-proxy
    • コマンド: kubectl、kubeadm
  • サービスメッシュに関わる主要な OSS について、基本動作やオーケストレーションエンジンとの連携の概要を理解している。
    • Envoy
    • Istio

SA.06:セキュリティ

SA.06.1 認証認可とアクセス制御
重要度 3
概要
  • 外部を含む複数サービス間や異種 OS 間での一元的な認証・認可や多要素認証について、適切な方式を選択できるとともに、OSS を用いて具体的に設定・構築できる。
  • アクセス制御の種々の方式を比較でき、Linux におけるアクセス制御機能を適切に設定できる。
詳細
  • シングルサインオンの実装方式の違いを理解している。
    • フェデレーション方式: OAuth、OpenID Connect、SAML
    • リバースプロキシ方式
    • 代理認証方式
  • 多要素認証や多段階認証の主要な実装例を理解している。
    • ワンタイムパスワード: Time-Based One-Time Password (TOTP)
  • パスワードレス認証、FIDO認証の仕組みを理解している。
  • Linux サーバーを用いた認証システムを構築・運用する。
    • ワンタイムパスワードの生成と管理
  • Samba を用いて Active Directory と連携する。
    • Linux 上での Active Directory サーバーの構築
    • Linux マシンの Active Directory への参加
  • アクセス制御の種々の方式の特徴を理解している。任意アクセス制御 (DAC) との比較を含む。
    • 強制アクセス制御 (MAC)
    • ロールベースアクセス制御 (RBAC)
    • 属性ベースアクセス制御 (ABAC)
  • Linux のアクセス制御の機能を目的に応じて使い分ける。
    • SELinux
    • AppArmor
    • seccomp/bpf
SA.06.2 セキュリティの予防措置
重要度 3
概要
  • システム停止や情報の盗難・漏洩・改ざんに至る主要な攻撃方法を理解している。
  • ネットワーク・アプリケーション・プラットフォーム・データそれぞれに対して多層的に診断や予防ができる。
詳細
  • 特にシステム側に被害を与える典型的な攻撃の手法について、その原理を理解している。
    • 種々の DoS/DDoS 攻撃手法: リフレクション攻撃、SYN flood、オープンリゾルバ
    • DoS/DDoS で使われるアプリケーション: Memcached、NTP、DNS
    • 不正アクセス手法: SQL や OS コマンドのインジェクション、ディレクトリトラバーサル、バッファオーバーラン、リスト型攻撃
  • 脆弱性診断ツールの動作原理や機能の違いを把握した上で、設定と実行、検出結果の解釈及び対処を行う。また、修正の要不要やタイミング、チェック頻度などを判断し脆弱性を管理する。
    • ペネトレーションテストの実施: GVM、ZAP
    • 脆弱性の報告されたパッケージ (パッチ) の検出: Clair、Katello、Vuls
    • 規格への適合確認: OpenSCAP
    • コンテナイメージのスキャン: Trivy
  • 正規の通信やアクセスのみを許可する設計を導入し、脅威を予防する。
    • WAF、DMZ、UTM
    • パケットシグネチャを使用したフィルタリング、DPI
    • 証明書を利用した認証
  • 攻撃や情報流出に対する緩和策を用意する。
    • DDoS Mitigation Device、ISP の Routing Blackhole
    • レートリミット
    • サンドボックス
    • 暗号化ファイルシステム、ストレージ: LUKS、dm-crypt、TPM
    • 外部アクセスポート/デバイスの制限 (USB ポートの利用制限など)
  • 使用しない機能や設定を削除し、潜在的な脆弱性を低減する。
    • 不要なユーザー・アクセス権の削除
    • 使用していないサービスやソフトウェアの検出
    • 仮想マシン/コンテナに対する権限、リソース設定
SA.06.3 セキュリティインシデントの検出
重要度 3
概要 システムのセキュリティ異常検知について、主要な方式の動作原理や適用可能範囲を理解している。また、これに関する Linux 機能や OSS の選定および運用方法の設計ができる。
詳細
  • Linux 監査フレームワーク (Audit) で取得できる情報の範囲や基本的な運用の流れを理解している。
    • 監視対象の選定: ファイルアクセス監視、システムコール監視
    • 監査ログのクエリ、レポート出力
  • ホスト型侵入検知システム (HIDS) の動作原理を理解しシステムに組み込む。
    • ファイル改ざん検知: AIDE、Tripwire の設定及び自動化
    • マルウェア検知: chkrootkit、rkhunter の設定及び使用
    • OSSEC の構成要素と機能
    • アンチウィルスソフトの設定 (監視対象の選定など)
  • ネットワーク型侵入検知システム (NIDS) の動作原理を理解しシステムに組み込む。
    • Snort の設定及びルール管理
  • モニタリングツールを用いて異常の詳細を分析する。
    • トラフィック分析: tcpdump、Wireshark
  • セキュリティ情報・イベント管理解析ツール (SIEM) の機能概要を知っている。
    • 複数ソースから集約したログの正規化
    • 相関分析によるインシデント判定

SA.07:監視と分析

SA.07.1 ログ・メトリクス・トレースの取得・収集
重要度 3
概要
  • 確認したいシステムの振る舞いに応じて、何の情報を取得すべきかを適切に選定できる。
  • 主要なログ・メトリクス・トレースについて、具体的な取得と集約の方法を設計できる。
詳細
  • システム全体の振る舞いを確認する際に使われる指標を理解している。
    • アプリケーション単位の応答やパフォーマンス
    • リクエストのトレース
  • ログ・メトリクス・トレースを取得・集約する際の処理方式の違いを比較できる。
    • プッシュ型、プル型
    • エージェント、エクスポーターの有無
    • 収集結果のストア方式: 時系列データベース
  • IPMI、SNMP によるログ・メトリクス取得について、適用可能な条件や基本的な処理の流れを理解している。
    • ipmitool、SNMP クライアントの基本操作
    • SNMP version 3 のユーザー認証とアクセス制御機能
  • Zabbix の構成要素を理解し、ログ・メトリクスの集約方式やノード間の疎通方法を選定する。
    • Zabbix サーバー、エージェント、Sender
    • アイテムのタイプ・キーの設定
  • Prometheus の構成要素を理解し、メトリクスの集約方式やノード間の疎通方法を選定する。
    • Prometheus サーバー、Node exporter、Pushgateway
    • サービスディスカバリ
  • Fluentd (td-agent) を用いてログの収集・加工を一元化する。
    • fluent.conf、Match、Buffer
    • Input、Output、Filter プラグイン: in_tail、out_file、filter_parser など
  • 分散トレースの基本的な概念と、これを取得する手順を理解している。
    • トレース、スパン、TraceId、SpanId
    • OpenTelemetry によるトレース取得: SDK、Collector
    • バックエンドへのストア: Jaeger
SA.07.2 監視と対処
重要度 2
概要
  • 監視の目的に応じて監視対象のログ・メトリクスに対して適切なアラートの発生条件や段階を設定できる。
  • 具体的な OSS を用いてアラートの発報と対処ができる。またシステム運用の自動化や監視体制の改善を計画できる。
詳細
  • アラートを出すための発生条件を目的に応じて設計する。
    • メトリクスによる判断: 閾値、一定時間内の変化、平均値、など
    • ログによる判断: 特定のメッセージ、タグ、回数、など
    • 複数イベントの相関による判断
  • Zabbix や Prometheus でアラートとアクションを設定する。
    • 通知: Eメール、チャット、インシデント管理サービスへ登録など
    • システム運用の自動化: 負荷分散環境のオートスケール、優先度の低いサービスの一時停止など
  • システムの稼働状況に応じて監視体制を改善する。
    • ログの量・レベルの選択
    • 間違ったアラートの排除
    • アラートのロジック改善、重要度見直し
SA.07.3 収集したデータの保全と分析
重要度 3
概要
  • 長期に渡るリソースの使用状況などを横断的に分析し、拡張時期の計画などに役立てる。
  • 分析・可視化のための具体的な OSS を使ってログ・メトリクス・トレースを参照できる。
  • システムのセキュリティ対策などを目的とするデータの保全体制を設計できる。
詳細
  • 分散トレースの可視化について理解している。
    • トレースビュー、サービスマップ
    • タイムラインの調整、フィルタリング
  • Grafana による可視化の基本設定を行う。
    • データソース設定: Zabbix、Prometheus、Jaeger からそれぞれログ・メトリクス・トレースの取得
    • クエリ文の設計、結果の加工: フィルタリング、補間、グルーピングなど
    • パネルの設定
    • キャッシュやタイムアウトの設定
  • 長期に渡って取得したデータを分析し、拡張や設計変更の計画を立てる。
    • 稼働率やリソース使用量の長期的なトレンド及び増加傾向
  • アクセスログやデータの保全の目的と注意点を理解している。
    • ログの収集基準、保管期間、保管場所の設定
    • 追跡データのタイムスタンプ一貫性の維持
    • 完全性を担保するための改ざん防止策の検討

SA.08:継続的開発とテスト・デプロイ

SA.08.1 テストの設計と効率化
重要度 3
概要
  • 非機能要件を含めてシステムの構成要素からサービス全体までをそれぞれテストするための観点を理解し、テストの計画と実施、評価ができる。
  • テストの継続的実施を効率化する仕組みを導入できる。
詳細
  • システムの構成要素の振る舞いを確認するテストについて、実施方法の設計や結果の評価を行う。
    • パラメータ設定確認
    • コンポーネントごとに設定した要件 (レスポンスタイムなど) の達成確認
    • コンポーネント間の疎通確認
  • システム全体の振る舞いを確認するテストについて、実施方法の設計や結果の評価を行う。
    • 入力: 異常値・特異値、過負荷、スパイク、長時間
    • 障害: 電源断、接続断、コンポーネントの部分停止
    • シナリオ: フェイルオーバー、バックアップ・リストア
  • 修正や設計変更の対象・内容に応じて適切に影響範囲を把握し、差分テスト・回帰テストを計画する。
    • サブシステム、コンポーネントの依存関係
    • 既存機能 (既存リクエスト) と追加機能の同時実行
    • 各非機能要件への影響
  • 非機能要件に関わるテストを容易化するツールについて、それぞれの目的や動作概要を理解している。
    • 負荷試験: Apache JMeter、分散負荷試験ツール
    • 障害注入試験: Chaos Toolkit
  • 再現性や再試行容易性の向上を目的としたテストの自動化を計画・実装する。
    • 設定値確認や正常性確認の自働化: InSpec、serverspec、Ansible
    • UI 操作の自動化: Selenium、Cypress
    • 構成ドリフトの検出や差分追跡
    • エビデンスの取得
SA.08.2 機能変更時の設計
重要度 2
概要
  • 機能変更の際に、どのような後方互換が必要かを判断し、互換インターフェースの提供方法やサポート方法を設計できる。
  • 機能変更後の不具合を予防・早期発見・対策できるようにするための手順や環境を導入できる。
詳細
  • 個々の変更が互換性にどう影響するかを判定する。
    • フロントエンド - バックエンド間の API 変更
    • データベースのスキーマ変更
  • 過去バージョンのフロントエンドからのアクセスに対して後方互換を提供し、またサポート終了を計画する。
    • エンドポイント分岐や Reverse Proxy による従来動作の維持
    • アクセスログ取得によるサポート期限やライフサイクルの判断
  • 予定された機能変更において、ヒューマンエラーを含めた不具合発生の予防や対策を行う。
    • バージョン管理されたデータベーススキーマ変更スクリプトの活用
    • データベース更新とアプリケーション更新の分離
  • 変更を原則凍結した過去バージョンに対し、バグやセキュリティのバックポートを管理する。
    • バックポート対象のトリアージ
    • git を活用しての変更履歴管理
    • 修正結果のナンバリング、ネーミング
SA.08.3 継続的な統合とデプロイ
重要度 3
概要
  • 稼働中システムの変更を想定したテスト手法、デプロイ方式を理解している。
  • ビルド・テスト・デプロイを自動化するパイプラインの概念を理解し、具体的な CI/CD ツールにより環境構築できる。
詳細
  • 実データ、実リクエストを活用するテスト手法を理解している。
    • カナリアテスト (カナリアリリース)
    • シャドーテスト
  • 各種デプロイ方式について、手順やデータ移行の必要性、不具合発生時の切り戻し手順などの観点で比較し、適切な方式を選択する。
    • インプレースアップグレード
    • ローリングアップデート
    • ブルーグリーンデプロイ
  • イミュータブルなインフラストラクチャを構成する。
    • システム構成のコード化による冪等性の確保
    • 環境設定 (認証情報、ネットワーク設定、ランタイムオプションなど) の外部化
    • コードのバージョン管理によるロールバックの容易化
  • OpenTofu、Ansible、cloud-init などのシステム構成ツールを用いて具体的な IaC 環境を構成する。
    • クラウド基盤の各種リソースの自動構築
    • 物理サーバーや仮想マシン、ネットワークデバイス等のセットアップ
  • Jenkins や GitLab CI/CD を用いて標準的な CI/CD パイプラインを設計する。
    • 各ステップを自動実行するスクリプトの作成: アプリケーションやコンテナのビルド、テストツールの実行やカバレッジ等の取得、IaC ツールの実行、デプロイ、など
    • パイプライン自体のコード化と履歴管理: Jenkinsfile、.gitlab-ci.yml
    • リポジトリコミットをトリガーとするパイプラインの起動
    • エラーハンドリングとパイプラインの中断
    • 柔軟なデプロイのための設定: リリースゲート、自動ロールバック

SA.09:トラブルシューティング

SA.09.1 障害時の基本手順
重要度 2
概要 障害発生時の状況把握、原因分析、暫定対応・恒久対応などについて、標準的な手続きを理解しているとともに、これらに活用される Linux の機能を理解している。
詳細
  • 障害の発生を検知し状況を把握するとともに、対応方針を決める。
    • 影響範囲、緊急性、重要性の評価
  • システムの稼働状況や変更点の情報を参照しつつ、症状に対する根本原因を特定する。
    • ログ、メトリクス、トレースの確認
    • 機能変更やメンテナンスアップデートの履歴確認
    • 因果関係の評価、切り分け
    • 同一環境での再現、機能や設定を制限した環境での再現
  • 暫定対応から恒久対応までのシステム全体の運用と復旧の計画を立案する。CI/CD や IaC 環境における対応を含む。
    • 部分的に稼働継続するサービスの選定および設定
    • 一時的なリストア、パッチ修正
SA.09.2 ケーススタディ
重要度 4
概要 システムによく発生する具体的な障害について、それぞれの原因や調査・判別方法、対処方法について知っている。
詳細
  • OS やサービス起動時の障害
    • プロセス/機能の起動順序、タイミングなどの違いで生じる問題
    • リソースの競合: MAC アドレス、IP アドレス、ポートの衝突、など
    • 自動起動と手動 (再) 起動時の挙動の違いによる問題
  • データの障害
    • ストレージ枯渇
    • クラスタストレージや分散ストレージの不整合に起因する問題
    • ストレージの再配置や復旧中のサービスレベル維持
  • ネットワークの障害
    • スイッチの通信負荷に起因する障害
    • ハードウェア構成とソフトウェア構成の矛盾による通信障害
    • MTU に起因する問題
    • ルーティングやファイアウォールの設定不備による疎通障害
    • IPv4 と IPv6 混在環境に起因する問題: アクセス制御設定の漏れ、IPv6 フォールバック、など
  • 冗長構成やスケールアウト構成の障害
    • 冗長構成の系の切り替えに関連する問題
    • スケールアウト構成のワーカーノードの障害とセッション維持に関連する問題
  • 種々のサービスにおける障害
    • DNS の逆引きに起因する問題
    • プロキシ設定に関する問題
    • HTTPS セッションにおける証明書に起因する問題
  • 運用中の意図通りでない設定変更などを起点とする障害
  • ハードウェアの故障時対応、及びその予防的な対応 (予防交換、予防保守)
ページトップへ