第31章 ストラテジーによるビルドのセキュリティー保護
31.1. 概要
OpenShift Container Platform の ビルド は、Docker デーモンソケットにアクセスできる 特権付きコンテナー で実行されます。セキュリティー対策として、ビルドおよびそれらのビルドに使用されるストラテジーを実行するユーザーを制限することを推奨します。カスタムビルド は、ソースビルド よりも本質的に安全性が低いと言えます。それらはノードの Docker ソケットへの完全なアクセスを持つ可能性があり、それらのアクセスでビルド内で任意のコードを実行する可能性があるためです。そのため、これはデフォルトで無効にされます。Docker ビルド のパーミッションを付与する場合についても、Docker ビルドロジックの脆弱性により権限がホストノードに付与される可能性があるために注意が必要です。
Docker およびカスタムビルドの間、Docker デーモンによって実行されるアクションは特権があり、ホストネットワーク namespace で実行されます。このようなアクションは、EgressNetworkPolicy オブジェクトおよび静的 egress IP アドレスで定義されるネットワークルールを含む設定済みネットワークルールをバイパスします。
デフォルトで、ビルドを作成できるすべてのユーザーには Docker および Source-to-Image (S2I) ビルドストラテジーを使用するためのパーミッションが付与されます。cluster-admin 権限を持つユーザーは、このページの ユーザーへのビルドストラテジーのグルーバルな制限 セクションで説明されているように、カスタムビルドストラテジーを有効にすることができます。
許可ポリシー を使用して、どのユーザーがどのビルドストラテジーを使用してビルドできるかを制限することができます。各ビルドには、対応するビルドサブリソースがあります。ストラテジーを使用してビルド作成するには、ユーザーにビルドを作成するパーミッション および ビルドストラテジーのサブリソースで作成するパーミッションがなければなりません。ビルドストラテジーのサブリソースでの create パーミッションを付与するデフォルトロールが提供されます。
ストラテジー | サブリソース | ロール |
---|---|---|
Docker | ビルド/docker | system:build-strategy-docker |
Source-to-Image (S2I) | ビルド/ソース | system:build-strategy-source |
カスタム | ビルド/カスタム | system:build-strategy-custom |
JenkinsPipeline | ビルド/jenkinspipeline | system:build-strategy-jenkinspipeline |