全部產品
Search
文件中心

Elastic Container Instance:配置Security Context

更新時間:Jul 17, 2024

本文介紹如何為執行個體或容器配置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

在Pod層級,您可以通過配置Security Context來修改sysctl參數和runAsUser。

警告

為了避免破壞作業系統的穩定性,請您在充分瞭解sysctl參數變更影響後,再進行配置。更多資訊,請參見sysctl

目前ECI支援修改的sysctl參數如下:

  • kernel.shm*

  • kernel.msg*

  • kernel.sem

  • fs.mqueue.*

  • net.*(net.ipv4.tcp_syncookies除外)

  • vm.min_free_kbytes

    修改vm.min_free_kbytes的值時,建議不要超過總記憶體的20%。

配置說明

調用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參數的名稱。取值範圍:

  • net.ipv4.ping_group_range

  • net.ipv4.ip_unprivileged_port_start

SecurityContext.Sysctl.N.Value

string

1

通過安全上下文修改sysctl參數時,安全sysctl參數的取值。

HostSecurityContext.Sysctl.N.Name

string

kernel.msgmax

通過安全上下文修改sysctl參數時,非安全sysctl參數的名稱。取值範圍:

  • kernel.shm*(kernel.shm_rmid_forced除外)

  • kernel.msg*

  • kernel.sem

  • fs.mqueue.*

  • net.*(net.ipv4.ip_local_port_range、net.ipv4.tcp_syncookies、net.ipv4.ping_group_range、net.ipv4.ip_unprivileged_port_start除外)

HostSecurityContext.Sysctl.N.Value

string

65536

通過安全上下文修改sysctl參數時,非安全sysctl參數的取值。

配置容器Security Context

功能說明

在容器層級,您可以為指定的容器配置Security Context。目前ECI支援配置的參數如下:

支援配置的參數

說明

runAsUser

設定運行容器的使用者ID。該參數配置會覆蓋Dockerfile中的USER指令。

runAsGroup

設定運行容器的使用者組。

runAsNonRoot

設定容器是否以非root模式運行容器。取值為true表示以非root模式運行容器。預設為false。

privileged

設定容器是否以特權模式運行。取值為true表示以特權模式運行容器。預設為false。

說明

特權容器功能正在內測中。如需體驗,請提交工單申請。

capabilities

為容器內的進程授予某些特定的許可權。更多資訊,請參見Linux Capabilities

目前支援配置以下許可權:

  • AUDIT_WRITE

  • CHOWN

  • DAC_OVERRIDE

  • FSETID

  • FOWNER

  • KILL

  • MKNOD

  • NET_ADMIN

  • NET_BIND_SERVICE

  • NET_RAW

  • SETGID

  • SETUID

  • SETFCAP

  • SETPCAP

  • SYS_CHROOT

  • SYS_PTRACE

  • SYS_RAWIO

說明

SYS_RAWIO預設不支援,需提交工單申請。

部分不支援配置的參數及其預設值如下:

不支援配置的參數

說明

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。

Container.N.SecurityContextRunAsGroup

long

3000

設定運行容器的使用者組。

Container.N.SecurityContextRunAsNonRoot

boolean

true

是否以非root模式運行容器。取值範圍:

  • true:非root模式

  • false(預設值):root模式

Container.N.SecurityContextPrivileged

boolean

true

容器是否啟用特權,即是否以特權模式運行容器。取值範圍:

  • true:啟用特權

  • false(預設值):不啟用特權

說明

特權容器功能正在內測中。如需體驗,請提交工單申請。

說明

InitContainer也支援配置Security Context,參數與上表類似,但暫不支援SecurityContextRunAsGroup和SecurityContextRunAsNonRoot。