配置Security Context
本文介绍如何为实例或容器配置Security Context,定义实例或容器的权限和访问控制。
背景信息
Security Context,即安全上下文,用于定义Pod或者Container的权限和访问控制,包括Discretionary Access Control、SELinux、Linux Capabilities等。更多信息,请参见Security Context。
配置Security Context时,可配置以下两种:
实例Security Context
ECI支持通过配置实例级别的Security Context来修改sysctl参数,可应用于实例内所有容器和数据卷。
容器Security Context
ECI支持通过配置容器级别的Security Context来修改runAsUse和capabilities,仅应用于指定的容器。
配置实例Security Context
功能说明
在Linux中,通常可以通过sysctl接口修改内核运行时的参数。对于ECI实例的内核参数,您可以通过以下命令进行查看。更多信息,请参见sysctl.sh。
sysctl -a
在实例级别,您可以配置Security Context来修改sysctl参数。目前ECI支持修改的sysctl参数如下:
kernel.shm*(kernel.shm_rmid_forced除外)
kernel.msg*
kernel.sem
fs.mqueue.*
net.*(net.ipv4.ip_local_port_range和net.ipv4.tcp_syncookies除外)
为了避免破坏操作系统的稳定性,请您在充分了解sysctl参数变更影响后,再进行配置。
配置说明
调用CreateContainerGroup接口创建ECI实例时,您可以通过SecurityContext.Sysctl或HostSecurityContext.Sysctl配置实例Security Context,以修改sysctl参数,其中SecurityContext.Sysctl用于修改安全sysctl参数,HostSecurityContext.Sysctl用于修改非安全sysctl参数。相关参数说明如下,更多信息,请参见CreateContainerGroup。
名称 | 类型 | 示例值 | 描述 |
SecurityContext.Sysctl.N.Name | string | net.ipv4.ping_group_range | 通过安全上下文修改sysctl参数时,安全sysctl参数的名称。取值范围:
|
SecurityContext.Sysctl.N.Value | string | 1 | 通过安全上下文修改sysctl参数时,安全sysctl参数的取值。 |
HostSecurityContext.Sysctl.N.Name | string | kernel.msgmax | 通过安全上下文修改sysctl参数时,非安全sysctl参数的名称。取值范围:
|
HostSecurityContext.Sysctl.N.Value | string | 65536 | 通过安全上下文修改sysctl参数时,非安全sysctl参数的取值。 |
配置容器Security Context
功能说明
在容器级别,您可以为指定的容器配置Security Context。目前ECI支持配置的参数如下:
支持配置的参数 | 说明 |
---|---|
runAsUse | 设置运行容器的用户ID。该参数配置会覆盖Dockerfile中的USER指令。 |
capabilities | 为容器内的进程授予某些特定的权限。更多信息,请参见Linux Capabilities。 目前支持配置以下权限:
说明 SYS_RAWIO默认不支持,需提交工单申请。 |
部分不支持配置的参数及其默认值如下:
不支持配置的参数 | 说明 |
---|---|
privileged | 容器是否以特权模式运行,默认为false。 |
AllowedProcMountTypes | 指定容器可以挂载的proc类型,默认为DefaultProcMount。 |
readOnlyRootFilesystem | 容器运行的根文件系统是否为只读,默认为true。 |
配置说明
调用CreateContainerGroup接口创建ECI实例时,您可以通过Container.N.SecurityContext的相关参数配置容器Security Context。相关参数说明如下,更多信息,请参见CreateContainerGroup。
名称 | 类型 | 示例值 | 描述 |
Container.N.SecurityContext.Capability.Add.N | array | NET_ADMIN | 为容器内的进程授予某些特定的权限。 |
Container.N.SecurityContext.ReadOnlyRootFilesystem | boolean | true | 容器运行的根文件系统是否为只读,目前仅支持配置为true。 |
Container.N.SecurityContext.RunAsUser | long | 1000 | 设置运行容器的用户ID。 |
Init容器也支持配置Security Context,参数与上表类似,只需要将Container改为InitContainer