本文介紹如何為執行個體或容器配置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參數的名稱。取值範圍:
|
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支援配置的參數如下:
支援配置的參數 | 說明 |
runAsUser | 設定運行容器的使用者ID。該參數配置會覆蓋Dockerfile中的USER指令。 |
runAsGroup | 設定運行容器的使用者組。 |
runAsNonRoot | 設定容器是否以非root模式運行容器。取值為true表示以非root模式運行容器。預設為false。 |
privileged | 設定容器是否以特權模式運行。取值為true表示以特權模式運行容器。預設為false。 說明 特權容器功能正在內測中。如需體驗,請提交工單申請。 |
capabilities | 為容器內的進程授予某些特定的許可權。更多資訊,請參見Linux Capabilities。 目前支援配置以下許可權:
說明 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模式運行容器。取值範圍:
|
Container.N.SecurityContextPrivileged | boolean | true | 容器是否啟用特權,即是否以特權模式運行容器。取值範圍:
說明 特權容器功能正在內測中。如需體驗,請提交工單申請。 |
InitContainer也支援配置Security Context,參數與上表類似,但暫不支援SecurityContextRunAsGroup和SecurityContextRunAsNonRoot。