@@ -7,12 +7,12 @@ weight: 80
7
7
<!-- overview -->
8
8
9
9
セキュリティコンテキストはPod・コンテナの特権やアクセスコントロールの設定を定義します。
10
- セキュリティコンテキストの設定には以下のものが含まれますが、以下のものには限定されません 。
10
+ セキュリティコンテキストの設定には以下のものが含まれますが、これらに限定はされません 。
11
11
12
12
* 任意アクセス制御: [ user ID (UID) と group ID (GID)] ( https://wiki.archlinux.org/index.php/users_and_groups ) に基づいて、ファイルなどのオブジェクトに対する許可を行います。
13
13
14
14
* [ Security Enhanced Linux (SELinux)] ( https://ja.wikipedia.org/wiki/Security-Enhanced_Linux ) :
15
- オブジェクトにセキュリティラベルを付加します 。
15
+ オブジェクトにセキュリティラベルを付与します 。
16
16
17
17
* 特権または非特権として実行します。
18
18
@@ -27,7 +27,9 @@ weight: 80
27
27
* ` allowPrivilegeEscalation ` : あるプロセスが親プロセスよりも多くの特権を得ることができるかを制御します。 この真偽値は、コンテナプロセスに
28
28
[ ` no_new_privs ` ] ( https://www.kernel.org/doc/Documentation/prctl/no_new_privs.txt )
29
29
フラグが設定されるかどうかを直接制御します。
30
- コンテナが特権で動いているか、` CAP_SYS_ADMIN ` を持っている場合、` allowPrivilegeEscalation ` は常にtrueになります。
30
+ コンテナが以下の場合、` allowPrivilegeEscalation ` は常にtrueになります。
31
+ - コンテナが特権で動いている
32
+ - ` CAP_SYS_ADMIN ` を持っている
31
33
32
34
* ` readOnlyRootFilesystem ` : コンテナのルートファイルシステムが読み取り専用でマウントされます。
33
35
@@ -49,8 +51,8 @@ Podに設定したセキュリティ設定はPod内の全てのコンテナに
49
51
{{< codenew file="pods/security/security-context.yaml" >}}
50
52
51
53
設定ファイルの中の` runAsUser ` フィールドは、Pod内のコンテナに対して全てのプロセスをユーザーID 1000で実行するように指定します。
52
- ` runAsGroup ` フィールドはPod内のコンテナに対して全てのプロセスをプライマリーグループID 3000で実行するように指定します。このフィールドが省略されたときは、コンテナのプライマリーグループIDはroot(0)になります。` runAsGroup ` が指定されている場合、作成されたファイルはユーザー1000とグループ3000の所有物にもなります 。
53
- また` fsGroup ` も指定されているため、全てのコンテナ内のプロセスは補助グループID 2000にも含まれます。` /data/demo ` ボリュームとこのボリュームに作成されたファイルはGroup ID 2000になります。
54
+ ` runAsGroup ` フィールドはPod内のコンテナに対して全てのプロセスをプライマリーグループID 3000で実行するように指定します。このフィールドが省略されたときは、コンテナのプライマリーグループIDはroot(0)になります。` runAsGroup ` が指定されている場合、作成されたファイルもユーザー1000とグループ3000の所有物になります 。
55
+ また` fsGroup ` も指定されているため、全てのコンテナ内のプロセスは補助グループID 2000にも含まれます。` /data/demo ` ボリュームとこのボリュームに作成されたファイルはグループID 2000になります。
54
56
55
57
Podを作成してみましょう。
56
58
@@ -163,8 +165,8 @@ securityContext:
163
165
164
166
{{< note >}}
165
167
このフィールドは
166
- [` secret`](/docs/concepts/storage/volumes/#secret),
167
- [`configMap`](/docs/concepts/storage/volumes/#configmap),
168
+ [` secret`](/docs/concepts/storage/volumes/#secret)、
169
+ [`configMap`](/docs/concepts/storage/volumes/#configmap)、
168
170
[`emptydir`](/docs/concepts/storage/volumes/#emptydir)
169
171
のようなエフェメラルボリュームタイプに対しては効果がありません。
170
172
{{< /note >}}
@@ -174,7 +176,7 @@ securityContext:
174
176
{{< feature-state for_k8s_version="v1.26" state="stable" >}}
175
177
176
178
` VOLUME_MOUNT_GROUP` ` NodeServiceCapability` をサポートしている[Container Storage Interface (CSI)](https://github.com/container-storage-interface/spec/blob/master/spec.md)ドライバーをデプロイした場合、`securityContext`の`fsGroup`で指定された値に基づいてKubernetesの代わりにCSIドライバーがファイルの所有権とパーミッションの設定処理を行います。
177
- この場合Kubernetesは所有権とパーミッションの設定を行わないため`fsGroupChangePolicy`は無効となり、CSIで指定されている通りドライバーは`fsGroup`に従ってボリュームをマウントすると考えられるので 、ボリュームは`fsGroup`に従って読み取り・書き込み可能になります。
179
+ この場合Kubernetesは所有権とパーミッションの設定を行わないため`fsGroupChangePolicy`は無効となり、CSIで指定されている通りドライバーは`fsGroup`に従ってボリュームをマウントすると考えられるため 、ボリュームは`fsGroup`に従って読み取り・書き込み可能になります。
178
180
179
181
# # コンテナにセキュリティコンテキストを設定する
180
182
@@ -197,7 +199,7 @@ Podのコンテナが実行されていることを確認します。
197
199
kubectl get pod security-context-demo-2
198
200
` ` `
199
201
200
- 実行中のコンテナのshellを取ります 。
202
+ 実行中のコンテナでshellを取ります 。
201
203
202
204
` ` ` shell
203
205
kubectl exec -it security-context-demo-2 -- sh
@@ -382,7 +384,7 @@ securityContext:
382
384
SELinuxラベルを適用するには、ホストOSにSELinuxセキュリティモジュールが含まれている必要があります。
383
385
{{< /note >}}
384
386
385
- # ## 効率的なSELinuxのボリュームラベリング
387
+ # ## 効率的なSELinuxのボリューム再ラベル付け
386
388
387
389
{{< feature-state for_k8s_version="v1.25" state="alpha" >}}
388
390
@@ -438,6 +440,5 @@ kubectl delete pod security-context-demo-4
438
440
* [Security Contexts design document](https://git.k8s.io/design-proposals-archive/auth/security_context.md)
439
441
* [Ownership Management design document](https://git.k8s.io/design-proposals-archive/storage/volume-ownership-management.md)
440
442
* [PodSecurity Admission](/docs/concepts/security/pod-security-admission/)
441
- * [AllowPrivilegeEscalation design
442
- document](https://git.k8s.io/design-proposals-archive/auth/no-new-privs.md)
443
+ * [AllowPrivilegeEscalation design document](https://git.k8s.io/design-proposals-archive/auth/no-new-privs.md)
443
444
* Linuxのセキュリティについてさらに知りたい場合は、[Overview of Linux Kernel Security Features](https://www.linux.com/learn/overview-linux-kernel-security-features)を確認してください(注: 一部の情報は古くなっています)。
0 commit comments