

高岡智則
年齢:33歳 性別:男性 職業:Webディレクター(兼ライティング・SNS運用担当) 居住地:東京都杉並区・永福町の1LDKマンション 出身地:神奈川県川崎市 身長:176cm 体系:細身〜普通(最近ちょっとお腹が気になる) 血液型:A型 誕生日:1992年11月20日 最終学歴:明治大学・情報コミュニケーション学部卒 通勤:京王井の頭線で渋谷まで(通勤20分) 家族構成:一人暮らし、実家には両親と2歳下の妹 恋愛事情:独身。彼女は2年いない(本人は「忙しいだけ」と言い張る)
seccompとは何か
seccompとは Linux カーネル の機能の一つであり、アプリケーションが実行できる システムコール を制限することで不正な動作を抑えるセキュリティ技術です。日常的にはサーバーやコンテナの安全性を高めるために使われます。導入が比較的シンプルな点も魅力です。
この機能を使うと、万が一プログラムが悪意のある攻撃者に乗っ取られた場合でも、攻撃者がOSに命令を送る道を狭められます。結果として、被害を最小限に抑えられる可能性が高まります。
仕組みの基本
OSはアプリケーションからの要求を受け取り カーネル に処理を渡します。処理の中心となるのが システムコールという命令です。seccompはこの通り道を事前に決めて、アプリが呼べるシステムコールだけを許可し、それ以外の呼び出しを拒否します。これにより攻撃者が予期せぬ機能を使ってシステムを混乱させる機会を減らせます。
具体的にはセキュリティポリシーと呼ばれるルールセットを設定します。たとえばあるアプリはファイルの読み書きだけを許可し、他の機能は一切許可しないといった形です。
使い方のポイント
実務でよく使われるのは libseccomp というライブラリを介して設定を行う方法です。これにより システムコールの許可/拒否 をプログラム内で直接記述するのではなく、ポリシーとして分離して管理できます。
設定は起動時に適用することが多く、コンテナやサンドボックス環境では事前に作成した セキュリティプロファイル を適用します。これにより、脆弱性を突く試みがあっても、許可された範囲のみしか動作しなくなります。
実務での利用例
代表的な利用場面としては、コンテナ仮想化 や サンドボックス 環境でのセキュリティ強化があります。Docker や Kubernetes などの環境ではデフォルトでいくつかの seccomp プロファイル が用意されており、これを基に独自のルールを追加することが可能です。
導入のメリットは多いのですが、過度に厳しくするとアプリが必要とする機能が使えなくなる点には注意が必要です。事前に動作確認を十分に行い、段階的に適用していくのが良い方法です。
注意点とよくある誤解
セキュリティを強化する反面、設定を間違えると正しく動作しなくなるリスクがあります。テストを重ねること、特に実運用環境と同じ条件での検証が重要です。
また seccomp は万能薬ではなく、OS やアプリの設計次第で効果が変わります。組み合わせるセキュリティ対策と合わせて総合的に評価することが大切です。
まとめ
seccomp は Linux 環境でアプリの安全性を高める強力な道具です。システムコールの許可範囲を厳しく管理することで、万一の攻撃時にも被害を抑えられます。初心者でも libseccomp などのツールを活用すれば導入は難しくありません。まずは小さなポリシーから始め、段階的に適用範囲を広げていくと良いでしょう。
| 許可した動作だけを実行させることで 攻撃の影響を最小化 | |
| 欠点/注意点 | 設定を誤ると アプリが動かなくなる可能性がある |
|---|---|
| 主な利用場面 | コンテナ 環境隔離 サンドボックスなど |
| 関連ツール | libseccomp C ライブラリなど |
seccompの同意語
- seccomp
- Linuxカーネルの機能で、プロセスが呼び出すシステムコールを事前に定義したフィルタで制限するセキュリティ機構。許可されていないシステムコールの実行をブロックします。
- Secure Computing Mode
- seccompの正式名称の英語表記。Linuxにおけるシステムコールのフィルタリング機能のモードの一つです。
- seccomp-bpf
- seccompの拡張モードで、BPF(Berkeley Packet Filter)を用いてシステムコールのフィルタを定義して適用する方式。柔軟なルール記述が特徴です。
- システムコールフィルタ
- システムコール(OSが提供する低レベルの呼び出し)を条件付きで許可・拒否する仕組み。seccompの中核となる機能です。
- システムコール制限
- 特定のシステムコールの使用を禁止・制限する機能。サンドボックスを実現する手段のひとつです。
- セキュアコンピューティングモード
- Secure Computing Mode の日本語表記。seccompのモードの一つで、許可されるシステムコールを絞って動作を制限します。
- seccompフィルタ
- seccompで定義されるルールの集合。どのシステムコールを許可するかを決定します。
- seccompフィルタリング
- seccompを用いてシステムコールを実際に監視・拒否する処理のこと。フィルタを適用してサンドボックス化を実現します。
- Linux Seccomp
- Linuxカーネルに組み込まれているseccomp機能を指す英語表現。主に技術文書で使われます。
- Syscallフィルタ
- システムコール(Syscall)をフィルタする処理のこと。seccompの機能の要点を指します。
seccompの対義語・反対語
- 全面的な許可
- seccompの対義語として、すべてのシステムコールを制限なく許可する状態。フィルタやポリシーが存在せず、自由にSyscallを実行できる状況を指します。
- 無制限
- seccompが適用されていない、または制限が全くない状態。セキュリティ上の制約が欠如している状態です。
- 開放的ポリシー
- セキュリティルールが緩く、外部からのリクエストや実行が広く許容される設定。seccompの厳格な運用とは反対です。
- 無防備
- 防御機能が欠如しており、セキュリティ対策がほとんどない状態。
- フィルタなし
- seccompの核となるフィルタ機構が存在しない、または機能していない状態。
- 緩いセキュリティポリシー
- 適用されるセキュリティルールが厳格でなく、許容範囲が広い設定。seccompの厳格さの対義語として使われます。
- セキュリティなし
- セキュリティ対策が全く機能していない、または無効化された状態。
- 全開許可モード
- すべてのシステムコールを許可するモード。セキュリティリスクが高い状態を指します。
seccompの共起語
- Linux カーネル
- seccomp は Linux カーネルが提供する機能であり、ユーザー空間のプロセスが特定のシステムコールを実行できるかを制御します。
- システムコール (syscall)
- プログラムがカーネルに依頼する機能。seccomp ではこれらの呼び出しを許可・拒否します。
- seccomp プロファイル
- 許可・拒否のルールを記述した設定ファイル。JSON形式が一般的で、どの syscall をどう扱うかを規定します。
- seccomp-bpf
- BPF(Berkeley Packet Filter)に基づく表現方式。より高度な条件でフィルタを定義できます。
- libseccomp
- seccomp の API を提供する C ライブラリ。多くの言語バインディングの基盤です。
- Docker デフォルトの seccomp プロファイル
- デフォルト設定として提供される seccomp プロファイル。コンテナで許可される syscall の初期制限を設定します。
- コンテナセキュリティ
- コンテナ環境でのセキュリティ強化の一環として seccomp が使われます。
- コンテナ / コンテナ化
- Docker や Kubernetes など、隔離された実行環境を提供する技術。seccomp はこれらのセキュリティ層の一つです。
- Docker
- 代表的なコンテナ実行環境。seccomp プロファイルを適用して実行時の syscall を制限します。
- Kubernetes
- クラスタオーケストレーションツール。Pod 単位で seccomp プロファイルを設定することが可能です。
- SCMP_ACT_ALLOW
- 許可されたシステムコールを実行できるようにする動作を指定します。
- SCMP_ACT_ERRNO
- 許可されていない syscall が呼ばれた場合、エラー番号を返して実行を止めます。
- SCMP_ACT_KILL
- 不正な syscall を検出するとプロセスを即座に終了します。
- SCMP_ACT_TRAP
- syscall 呼び出し時にトラップを発生させ、デバッグや監視に利用できます。
- SCMP_ACT_LOG
- 拒否された syscall の情報をログに残します。
- 許可リスト(Allowlist)
- 許可対象の syscall を列挙し、それ以外をデフォルト拒否にする考え方です。
- デフォルト拒否
- 未指定の syscall は拒否される設定。セキュリティの基本方針として用いられます。
- seccomp-tools
- プロファイルの解析・検証を行うツールセット。例としてプロファイルの検証や可視化に使われます。
- seccomp JSON プロファイル
- 多くの場合 JSON 形式で規則を記述する seccomp プロファイルの表現形式。
- BPF / Berkeley Packet Filter
- seccomp-bpf の技術的背景。条件付きフィルタを表現するための基盤です。
- go-seccomp / libseccomp-golang
- Go 言語で seccomp を扱うためのライブラリ。libseccomp のゴ言語向けラッパー的存在。
- セキュリティハードニング
- 全体的なセキュリティ強化の一環として seccomp の導入・調整が行われます。
seccompの関連用語
- seccomp
- Linuxカーネル機能の一つ。プロセスが呼べるシステムコールを制限して、悪意ある操作を防ぐサンドボックス機構です。
- seccomp-bpf
- seccompの実装の一つ。BPFという仮想マシン用言語で、どのシステムコールを許可・拒否するかを細かく定義します。
- システムコール
- アプリケーションがカーネルに依頼してOSの機能を使う命令。ファイル操作、ネットワーク、プロセス管理などを扱います。
- システムコールフィルタリング
- seccompなどで、どのシステムコールを許可・拒否するかのルールを決めること。
- BPF(Berkeley Packet Filter)
- もともとはネットワークパケットを素早く判定するための技術。seccomp-bpfはこのBPFを使ってフィルタを定義します。
- サンドボックス
- 安全な実行環境。外部からの影響を抑えつつ、必要最小限の機能だけを提供します。
- 名前空間
- プロセスが見るリソースを分離するLinuxの機能。PID空間、ネットワーク、マウントなどを独立させます。
- コンテナ
- アプリとその依存をひとつの単位として分離して実行する技術。seccompはコンテナのセキュリティ強化に用いられます。
- Dockerのseccompプロファイル
- Dockerなどで用意される、許可するシステムコールを決めるルールセット。デフォルトで安全性を高めます。
- AppArmor
- Linuxのセキュリティモジュールの一つ。プロセスのアクセスをプロファイルで制御します。
- SELinux
- セキュリティモジュールの一つ。ポリシーに基づく細かなアクセス制御を提供します。
- LSM(Linux Security Modules)
- Seccomp、AppArmor、SELinuxなどをまとめる総称。カーネル機能のセキュリティ制御を行います。
- デフォルトアクション
- ルールに一致しないシステムコールに対してとる初期動作。許可、拒否、ログなどを設定します。
- no_new_privs
- 新しい権限獲得を防ぐフラグ。seccompと組み合わせて、権限昇格を抑制します。
- キャパビリティ(Linuxの能力)
- Linuxの機能を細分化した権限の集合。seccompの適用状況にも影響を与えることがあります。
seccompのおすすめ参考サイト
- Seccompとは?コンテナセキュリティを支える仕組み|toshi - note
- Linuxセキュリティの心強い味方:SeccompとAppArmorの違いとは?
- Seccompとは?コンテナセキュリティを支える仕組み|toshi - note



















