

高岡智則
年齢:33歳 性別:男性 職業:Webディレクター(兼ライティング・SNS運用担当) 居住地:東京都杉並区・永福町の1LDKマンション 出身地:神奈川県川崎市 身長:176cm 体系:細身〜普通(最近ちょっとお腹が気になる) 血液型:A型 誕生日:1992年11月20日 最終学歴:明治大学・情報コミュニケーション学部卒 通勤:京王井の頭線で渋谷まで(通勤20分) 家族構成:一人暮らし、実家には両親と2歳下の妹 恋愛事情:独身。彼女は2年いない(本人は「忙しいだけ」と言い張る)
はじめに
securitycontext とはコンテナやアプリを起動するときの「守るための設定の集合」のことです。ソフトウェアの実行環境は外部からの攻撃や誤った設定によって脆弱になりがちです。そのため securitycontext を使って、誰が何をできるかを決めます。とくにクラウドや Kubernetes のような環境では、この設定がアプリの安全性を左右します。以下では初心者でも分かるよう、日常の例えを交えつつ丁寧に解説します。
securitycontext とは何か
簡単に言えば securitycontext は「このアプリは何をして良くて何をしてはいけないか」というルールの集合です。たとえるなら家の鍵や扉のロックの設定のようなものです。たとえば 誰が部屋に入れるのか、どのファイルを変更して良いのか、管理者の特権を持って良いのかといった点を決めます。これにより、もしアプリが壊れてしまっても周囲のシステムまで影響を広げにくくなります。
securitycontext は Kubernetes や他のコンテナ実行環境で頻繁に使われますが、基本的な考え方は同じです。設定を適切に行えば、誤って高い権限を与えられたアプリが本来アクセスしてはいけない資源にアクセスするのを防ぐことができます。
よく使われる設定項目
| runAsUser | アプリを実行するユーザーID。root で実行しないようにするのが基本です。 |
|---|---|
| runAsGroup | 実行するグループID。グループ権限の範囲を制御します。 |
| runAsNonRoot | 非 root ユーザーとして実行することを強制します。安全性を高める設定のひとつです。 |
| readOnlyRootFilesystem | ルートファイルシステムを読み取り専用にして、ファイルの変更を防ぎます。 |
| allowPrivilegeEscalation | 権限の昇格を許可するかどうか。false に設定すると不必要な昇格を抑えられます。 |
| privileged | 特権モードの有効/無効。通常は false にします。機能拡張が必要な例を除き使わない方が安全です。 |
| capabilities | 追加したり削除したりする機能の集合。例えばネットワーク管理の機能を絞るなど、細かい制限を設定します。 |
| seccompProfile | システムコールの制限プロファイル。悪用を防ぐための「監視モード」の役割を果たします。 |
| seLinuxOptions | SELinux の設定。どの資源にどんなアクセスが許可されるかを細かく制御します。 |
| fsGroup | ボリュームのファイルグループを設定します。共有ディレクトリの権限管理に使います。 |
Kubernetes での使い方
Kubernetes では Pod の spec や各コンテナの spec に securityContext を書きます。Pod 全体に対するデフォルト設定と 個々のコンテナに対する個別設定の両方を組み合わせて使えます。たとえば以下のような考え方です。
最初に、非 root で実行する、読み取り専用のルートファイルシステム、そして不要な特権の禁止を優先して設定します。これにより、万が一アプリが脆弱になっても、悪意ある第三者がサーバーの他の部分に侵入しにくくなります。
実務でのポイントと注意点
securitycontext を設定する際のコツは、最小権限の原則を適用することです。必要最低限の権限だけを与え、最終的にはアプリの挙動を観察しながら徐々に厳しくしていくと安全性を保ちつつ動作を崩しにくくなります。設定を過剰に厳しくするとアプリが動かなくなることがあるので、段階的に検証を行いましょう。
実務上のヒントをいくつか挙げます。まず root での実行を避けること。次に 読み取り専用のファイルシステムを検討すること。最後に 不要な特権や機能を削除することです。これらは日常的に見落とされやすいポイントですが、安全性を大きく高めます。
まとめ
securitycontext はコンテナやアプリの実行環境を守るための「ルール帳」のようなものです。誰が何をできるか、どんな資源にアクセスできるか、どれだけの変更を許すかを決めることで、セキュリティと機能のバランスを取りやすくなります。最初は基本的な設定から始め、段階的に厳しさを調整していくのが現実的です。日頃から小さなミスを減らす意識を持つことで、安心してシステムを運用できるようになります。
securitycontextの同意語
- セキュリティコンテキスト
- 直訳で、コンテナやプロセスが実行される際に適用されるセキュリティ関連の設定や属性を指す概念。例として、ユーザーID・グループID・読み取り専用ルートファイルシステムの指定、キャパビリティの制御などが含まれます。
- セキュリティ設定
- セキュリティに関する設定全般の総称。実行権限、ファイルアクセス、ネットワークの挙動、監視・制限の適用などを含みます。
- 権限コンテキスト
- 実行時の権限情報をまとめた表現。どのユーザーがどの権限で動くか、CAPABILITIESの付与などを指します。
- 実行権限設定
- 実行時の権限を決定する設定。例として runAsUser、runAsGroup、readOnlyRootFilesystem、allowPrivilegeEscalation などが含まれます。
- 実行環境セキュリティ設定
- コンテナや仮想環境など、実行環境自体のセキュリティを担保する設定。
- アクセス権限設定
- 誰が何を参照・実行できるかを決める設定。ファイルアクセスやAPIの利用権限などを含みます。
- セキュリティ属性
- セキュリティに関する属性情報。挙動・制限の性質を表す要素として扱われます。
- セキュリティポリシー関連設定
- 組織やクラウドのセキュリティポリシーを反映する設定。
- 権限ポリシー
- 権限の付与・制限を規定するポリシー。実行時の権限境界を示します。
- 実行コンテキストのセキュリティ
- 実行時のコンテキストにおけるセキュリティ設定や状態を指す表現。
securitycontextの対義語・反対語
- 未設定のセキュリティコンテキスト
- SecurityContext が設定されていない状態で、デフォルトの挙動になり、セキュリティ制約が十分に適用されないことが多い。
- 非セキュアなコンテキスト
- セキュリティ対策が不足しており、権限昇格や情報漏洩のリスクが高まる設定。
- セキュリティを無効化した設定
- セキュリティ機能を意図的に停止している状態で、権限の制約がかからず動作する可能性がある。
- セキュリティを緩和した設定
- 制約を緩めて動作させる設定で、機能は動くがセキュリティリスクが増える。
- 権限過多のコンテキスト
- root 権限の使用や過剰な capabilities の付与など、必要以上の権限を許す状態。
- セキュリティ機能を欠く設定
- セキュリティ機能が不足しており、外部からの攻撃に対する防御が弱い設定。
- セキュリティのデフォルト値任せのコンテキスト
- セキュリティ設定を明示的に構成せずデフォルト値に任せている状態で、意図せぬ緩さになる可能性がある。
securitycontextの共起語
- pod
- Kubernetes の最小実行単位。1つの Pod に複数のコンテナを入れて、同じネットワークとストレージを共有して動かす単位です。
- container
- アプリケーションを実行する隔離された環境。securityContext は主にこのレベルで設定します。
- podSecurityContext
- Pod 全体に適用されるセキュリティ設定。UID/GID、fsGroup、supplementalGroups などを指定します。
- containerSecurityContext
- 各コンテナに適用されるセキュリティ設定のブロック。ユーザー情報や権限、セキュリティオプションを定義します。
- runAsUser
- コンテナ内で実行するユーザーID(UID)を指定します。
- runAsGroup
- コンテナ内で実行するグループID(GID)を指定します。
- runAsNonRoot
- ルートユーザーでの実行を禁止します。非 root 実行を強制します。
- fsGroup
- ボリュームのファイルシステムグループIDを設定します。ファイルの所有権の管理に使います。
- supplementalGroups
- 補助的な追加グループIDをコンテナに割り当てます。
- readOnlyRootFilesystem
- ルートファイルシステムを読み取り専用にして、書き込みを制限します。
- privileged
- 特権モードで実行します。デバイスアクセスなど高い権限を与える設定です。
- allowPrivilegeEscalation
- 権限昇格を許可するかどうか。true にするとプロセスが追加の権限を取得できます。
- capabilities
- Linux の能力(CAP_ 系)を追加・削除して、細かな権限を調整します。
- add
- capabilities に追加する能力のリスト(例: NET_ADMIN)。
- drop
- capabilities から削除する能力のリスト(例: ALL など)。
- seccompProfile
- Seccomp(システムコール制限)のプロファイルを適用します。
- seccompDefault
- デフォルトの Seccomp プロファイル設定(RuntimeDefault など)。
- seLinuxOptions
- SELinux の設定。type、role、level、user などを指定します。
- SELinux
- SELinux(セキュリティ強化機構)の総称。アクセス制御の一つです。
- level
- SELinux のレベル設定。seLinuxOptions の一部として使われます。
- role
- SELinux のロール設定。
- type
- SELinux のタイプ設定。
- user
- SELinux のユーザー設定。
- apparmorProfile
- AppArmor のプロファイル名を指定してアプリの挙動を制御します。
- PodSecurityPolicy
- Pod Security Policy(PSP)。旧来のセキュリティガードの仕組み。
- PodSecurityStandards
- Pod Security Standards。新しいポリシー基準の枠組み。
- image
- 実行するコンテナのイメージ。信頼性・署名・スキャンが関係します。
- namespace
- Kubernetes の名前空間。リソースの分離と権限範囲を管理します。
securitycontextの関連用語
- securityContext
- Kubernetes の Pod または Container レベルで、実行時のセキュリティ設定をまとめて指定するブロック。ユーザーID・権限・ファイルアクセス・特権の有無などを細かく制御します。
- PodSecurityContext
- Pod 全体に適用されるセキュリティ設定を定義するセクション。fsGroup や runAsNonRoot などを Pod レベルで設定します。
- runAsUser
- コンテナ内で実行するユーザーの UID を指定します。root 以外のユーザーで動作させたいときに使います。
- runAsGroup
- コンテナ内で実行するデフォルトの GID を指定します。
- runAsNonRoot
- 非 root ユーザーでの実行を強制します。root での実行を禁止することでセキュリティを高めます。
- fsGroup
- ボリューム上のファイルのグループ ID を設定します。これにより、コンテナがファイルへ適切にアクセスできるようになります。
- supplementalGroups
- 追加で付与するグループ ID をコンテナへ渡します。アクセス権の拡張に使います。
- readOnlyRootFilesystem
- ルートファイルシステムを読み取り専用にして、変更を防ぎセキュリティを高めます。
- allowPrivilegeEscalation
- コンテナが権限を昇格してしまうのを許可するかどうかを制御します。通常は false が安全です。
- privileged
- コンテナを特権モードで実行し、ホストの機能へアクセスできる状態にします。安全性は低く設定するべきではありません。
- capabilities
- Linux の能力を追加(cap_add)または削除(cap_drop)して、必要最小限の権限だけを付与します。
- cap_add
- コンテナに追加で付与する能力を列挙します(例: NET_ADMIN)。
- cap_drop
- コンテナから削除する能力を列挙します(例: MKNOD)。
- seccompProfile
- Seccomp プロファイルを適用して、許可する/拒否するシステムコールを制御します。RuntimeDefault などの値を指定します。
- SELinuxOptions
- SELinux のセキュリティ文脈を設定し、アクセス制御ポリシーを適用します。
- AppArmorProfile
- AppArmor のプロファイルを指定して、アプリの動作を制限します。
- PodSecurityPolicy
- クラスタ全体の Pod セキュリティ要件を定義する古い機能。現在は非推奨となり、代替として Pod Security Standards が推奨されます。
- PodSecurityStandards
- Pod のセキュリティ要件をレベルで分類する新しい標準(Baseline / Restricted / Privileged)。クラスターのセキュリティを統一的に強化します。
- SecurityContextConstraints
- OpenShift などの一部環境で用いられる、Pod のセキュリティ要件を制御するポリシー。



















