Openshift - SCC

このページの元の著者は Guillaume

定義

OpenShiftのコンテキストにおいて、SCCはSecurity Context Constraintsの略です。Security Context ConstraintsはOpenShiftクラスター上で実行されるポッドの権限を制御するポリシーです。ポッドが実行される際のセキュリティパラメーターを定義し、ポッドが実行を許可される条件や実行できるアクション、アクセスできるリソースを含めます。

SCCは管理者がクラスター全体でセキュリティポリシーを強制するのに役立ち、ポッドが適切な権限で実行され、組織のセキュリティ基準に準拠していることを確認します。これらの制約は、ポッドのセキュリティのさまざまな側面を指定できます:

  1. Linuxの機能: コンテナが利用できる機能を制限し、特権アクションを実行できる能力など。

  2. SELinuxコンテキスト: コンテナに対してSELinuxコンテキストを強制し、プロセスがシステム上のリソースとやり取りする方法を定義します。

  3. 読み取り専用のルートファイルシステム: 特定のディレクトリ内のファイルを変更できないようにします。

  4. 許可されたホストディレクトリとボリューム: ポッドがマウントできるホストディレクトリとボリュームを指定します。

  5. UID/GIDとして実行: コンテナプロセスが実行されるユーザーとグループIDを指定します。

  6. ネットワークポリシー: ポッドのネットワークアクセスを制御し、出力トラフィックを制限するなど。

SCCを構成することで、管理者はポッドが適切なセキュリティ分離レベルとアクセス制御で実行されていることを確認し、クラスター内でのセキュリティ脆弱性や不正アクセスのリスクを軽減できます。

基本的に、ポッド展開がリクエストされるたびに、以下のようにアドミッションプロセスが実行されます:

この追加のセキュリティレイヤーは、特権ポッドの作成、ホストファイルシステムのマウント、特権昇格につながる属性の設定をデフォルトで禁止します。

Pod Escape Privileges

SCCのリスト

OpenshiftクライアントですべてのSCCをリストするには:

$ oc get scc #List all the SCCs

$ oc auth can-i --list | grep securitycontextconstraints #Which scc user can use

$ oc describe scc $SCC #Check SCC definitions

すべてのユーザーは、最も厳しいSCCであるデフォルトのSCC "restricted" と "restricted-v2" にアクセスできます。

SCCの使用

ポッドに使用されるSCCは、アノテーション内で定義されています:

$ oc get pod MYPOD -o yaml | grep scc
openshift.io/scc: privileged

ユーザーが複数のSCCにアクセス権を持っている場合、システムはセキュリティコンテキストの値に一致するものを利用します。それ以外の場合、禁止されたエラーが発生します。

$ oc apply -f evilpod.yaml #Deploy a privileged pod
Error from server (Forbidden): error when creating "evilpod.yaml": pods "evilpod" is forbidden: unable to validate against any security context constrain

SCC バイパス

OpenShift - SCC bypass

参考文献

Last updated