[zh] Update security/apparmor.md
Signed-off-by: xin.li <xin.li@daocloud.io>
This commit is contained in:
@@ -398,7 +398,7 @@ metadata:
|
|||||||
spec:
|
spec:
|
||||||
containers:
|
containers:
|
||||||
- name: hello
|
- name: hello
|
||||||
image: busybox
|
image: busybox:1.28
|
||||||
command: [ "sh", "-c", "echo 'Hello AppArmor!' && sleep 1h" ]
|
command: [ "sh", "-c", "echo 'Hello AppArmor!' && sleep 1h" ]
|
||||||
EOF
|
EOF
|
||||||
pod/hello-apparmor-2 created
|
pod/hello-apparmor-2 created
|
||||||
@@ -510,10 +510,10 @@ Pod 在具有所需配置文件的节点上运行。
|
|||||||
{{< note >}}
|
{{< note >}}
|
||||||
<!--
|
<!--
|
||||||
PodSecurityPolicy is deprecated in Kubernetes v1.21, and will be removed in v1.25.
|
PodSecurityPolicy is deprecated in Kubernetes v1.21, and will be removed in v1.25.
|
||||||
See [PodSecurityPolicy documentation](/docs/concepts/policy/pod-security-policy/) for more information.
|
See [PodSecurityPolicy](/docs/concepts/security/pod-security-policy/) documentation for more information.
|
||||||
-->
|
-->
|
||||||
PodSecurityPolicy 在 Kubernetes v1.21 版本中已被废弃,将在 v1.25 版本移除。
|
PodSecurityPolicy 在 Kubernetes v1.21 版本中已被废弃,将在 v1.25 版本移除。
|
||||||
查看 [PodSecurityPolicy 文档](/zh/docs/concepts/policy/pod-security-policy/)获取更多信息。
|
查看 [PodSecurityPolicy](/zh/docs/concepts/security/pod-security-policy/) 文档获取更多信息。
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
@@ -559,47 +559,21 @@ specification.
|
|||||||
|
|
||||||
<!--
|
<!--
|
||||||
When disabled, any Pod that includes an AppArmor profile will fail validation with a "Forbidden"
|
When disabled, any Pod that includes an AppArmor profile will fail validation with a "Forbidden"
|
||||||
error. Note that by default docker always enables the "docker-default" profile on non-privileged
|
error.
|
||||||
pods (if the AppArmor kernel module is enabled), and will continue to do so even if the feature-gate
|
|
||||||
is disabled. The option to disable AppArmor will be removed when AppArmor graduates to general
|
|
||||||
availability (GA).
|
|
||||||
-->
|
-->
|
||||||
禁用时,任何包含 AppArmor 配置文件的 Pod 都将导致验证失败,且返回 “Forbidden” 错误。
|
禁用时,任何包含 AppArmor 配置文件的 Pod 都将导致验证失败,且返回 “Forbidden” 错误。
|
||||||
注意,默认情况下,docker 总是在非特权 Pod 上启用 “docker-default” 配置文件(如果 AppArmor 内核模块已启用),
|
|
||||||
并且即使特性门控已禁用,也将继续启用该配置文件。
|
|
||||||
当 AppArmor 升级到正式发布(GA)阶段时,禁用 Apparmor 的选项将被删除。
|
|
||||||
|
|
||||||
<!-- ### Upgrading to Kubernetes v1.4 with AppArmor -->
|
|
||||||
### 使用 AppArmor 升级到 Kubernetes v1.4
|
|
||||||
|
|
||||||
|
{{<note>}}
|
||||||
<!--
|
<!--
|
||||||
No action is required with respect to AppArmor to upgrade your cluster to v1.4. However, if any
|
Even if the Kubernetes feature is disabled, runtimes may still enforce the default profile. The
|
||||||
existing pods had an AppArmor annotation, they will not go through validation (or PodSecurityPolicy
|
option to disable the AppArmor feature will be removed when AppArmor graduates to general
|
||||||
admission). If permissive profiles are loaded on the nodes, a malicious user could pre-apply a
|
availability (GA).
|
||||||
permissive profile to escalate the pod privileges above the docker-default. If this is a concern, it
|
|
||||||
is recommended to scrub the cluster of any pods containing an annotation with
|
|
||||||
`apparmor.security.beta.kubernetes.io`.
|
|
||||||
-->
|
-->
|
||||||
不需要对 AppArmor 执行任何操作即可将集群升级到 v1.4。但是,
|
即使此 Kubernetes 特性被禁用,运行时仍可能强制执行默认配置文件。
|
||||||
如果任何现有的 Pod 有一个 AppArmor 注解,
|
当 AppArmor 升级为正式版 (GA) 时,禁用 AppArmor 功能的选项将被删除。
|
||||||
它们将无法通过合法性检查(或 PodSecurityPolicy 准入控制)。
|
|
||||||
如果节点上加载了宽松的配置文件,恶意用户可以预先应用宽松的配置文件,
|
|
||||||
将 Pod 权限提升到 docker-default 权限之上。
|
|
||||||
如果存在这个问题,建议清除集群中包含 `apparmor.security.beta.kubernetes.io` 注解的所有 Pod。
|
|
||||||
|
|
||||||
<!-- ### Upgrade path to General Availability -->
|
{{</note>}}
|
||||||
### 升级到正式发布的途径 {#upgrade-path-to-general-availability}
|
|
||||||
|
|
||||||
<!--
|
|
||||||
When AppArmor is ready to be graduated to general availability (GA), the options currently specified
|
|
||||||
through annotations will be converted to fields. Supporting all the upgrade and downgrade paths
|
|
||||||
through the transition is very nuanced, and will be explained in detail when the transition
|
|
||||||
occurs. We will commit to supporting both fields and annotations for at least 2 releases, and will
|
|
||||||
explicitly reject the annotations for at least 2 releases after that.
|
|
||||||
-->
|
|
||||||
当 Apparmor 准备升级到正式发布(GA)状态时,当前通过注解指定的选项将转换为字段。
|
|
||||||
通过转换支持所有升级和降级路径是非常微妙的,并将在转换发生时详细解释。
|
|
||||||
我们将承诺在至少两个发行版本中同时支持字段和注解,并在之后的至少两个版本中显式拒绝注解。
|
|
||||||
|
|
||||||
<!-- ## Authoring Profiles -->
|
<!-- ## Authoring Profiles -->
|
||||||
## 编写配置文件 {#authoring-profiles}
|
## 编写配置文件 {#authoring-profiles}
|
||||||
@@ -623,14 +597,6 @@ tools to help with that:
|
|||||||
* [bane](https://github.com/jfrazelle/bane)
|
* [bane](https://github.com/jfrazelle/bane)
|
||||||
是一个用于 Docker的 AppArmor 配置文件生成器,它使用一种简化的画像语言(profile language)
|
是一个用于 Docker的 AppArmor 配置文件生成器,它使用一种简化的画像语言(profile language)
|
||||||
|
|
||||||
<!--
|
|
||||||
It is recommended to run your application through Docker on a development workstation to generate
|
|
||||||
the profiles, but there is nothing preventing running the tools on the Kubernetes node where your
|
|
||||||
Pod is running.
|
|
||||||
-->
|
|
||||||
建议在开发工作站上通过 Docker 运行应用程序以生成配置文件,
|
|
||||||
不过在运行 Pod 的 Kubernetes 节点上运行这些工具也是可以的。
|
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
To debug problems with AppArmor, you can check the system logs to see what, specifically, was
|
To debug problems with AppArmor, you can check the system logs to see what, specifically, was
|
||||||
denied. AppArmor logs verbose messages to `dmesg`, and errors can usually be found in the system
|
denied. AppArmor logs verbose messages to `dmesg`, and errors can usually be found in the system
|
||||||
@@ -669,9 +635,8 @@ AppArmor 将详细消息记录到 `dmesg`,
|
|||||||
- `runtime/default`: Refers to the default runtime profile.
|
- `runtime/default`: Refers to the default runtime profile.
|
||||||
- Equivalent to not specifying a profile (without a PodSecurityPolicy default), except it still
|
- Equivalent to not specifying a profile (without a PodSecurityPolicy default), except it still
|
||||||
requires AppArmor to be enabled.
|
requires AppArmor to be enabled.
|
||||||
- For Docker, this resolves to the
|
- In practice, many container runtimes use the same OCI default profile, defined here:
|
||||||
[`docker-default`](https://docs.docker.com/engine/security/apparmor/) profile for non-privileged
|
https://github.com/containers/common/blob/main/pkg/apparmor/apparmor_linux_template.go
|
||||||
containers, and unconfined (no profile) for privileged containers.
|
|
||||||
- `localhost/<profile_name>`: Refers to a profile loaded on the node (localhost) by name.
|
- `localhost/<profile_name>`: Refers to a profile loaded on the node (localhost) by name.
|
||||||
- The possible profile names are detailed in the
|
- The possible profile names are detailed in the
|
||||||
[core policy reference](https://gitlab.com/apparmor/apparmor/wikis/AppArmor_Core_Policy_Reference#profile-names-and-attachment-specifications).
|
[core policy reference](https://gitlab.com/apparmor/apparmor/wikis/AppArmor_Core_Policy_Reference#profile-names-and-attachment-specifications).
|
||||||
@@ -679,9 +644,8 @@ AppArmor 将详细消息记录到 `dmesg`,
|
|||||||
-->
|
-->
|
||||||
- `runtime/default`: 指默认运行时配置文件。
|
- `runtime/default`: 指默认运行时配置文件。
|
||||||
- 等同于不指定配置文件(没有 PodSecurityPolicy 默认值),只是它仍然需要启用 AppArmor。
|
- 等同于不指定配置文件(没有 PodSecurityPolicy 默认值),只是它仍然需要启用 AppArmor。
|
||||||
- 对于 Docker,针对非特权容器时解析为
|
- 实际上,许多容器运行时使用相同的 OCI 默认配置文件,在此处定义:
|
||||||
[`Docker default`](https://docs.docker.com/engine/security/apparmor/) 配置文件,
|
https://github.com/containers/common/blob/main/pkg/apparmor/apparmor_linux_template.go
|
||||||
针对特权容器时解析为 unconfined(无配置文件)。
|
|
||||||
- `localhost/<profile_name>`: 按名称引用加载到节点(localhost)上的配置文件。
|
- `localhost/<profile_name>`: 按名称引用加载到节点(localhost)上的配置文件。
|
||||||
- 可能的配置文件名在[核心策略参考](https://gitlab.com/apparmor/apparmor/wikis/AppArmor_Core_Policy_Reference#profile-names-and-attachment-specifications)。
|
- 可能的配置文件名在[核心策略参考](https://gitlab.com/apparmor/apparmor/wikis/AppArmor_Core_Policy_Reference#profile-names-and-attachment-specifications)。
|
||||||
- `unconfined`: 这相当于为容器禁用 AppArmor。
|
- `unconfined`: 这相当于为容器禁用 AppArmor。
|
||||||
|
|||||||
Reference in New Issue
Block a user