Um contexto de segurança define as configurações de privilégio e controle de acesso para um pod ou contêiner. Use-o para controlar quais parâmetros do kernel Linux estão ativos, qual identidade de usuário executa sua carga de trabalho e quais capacidades do Linux são concedidas aos processos do contêiner.
O ECI oferece suporte a contextos de segurança em dois níveis:
Contexto de segurança do pod: as configurações se aplicam a todos os contêineres e volumes da instância. Use esta opção para configurar parâmetros sysctl.
Contexto de segurança do contêiner: as configurações se aplicam apenas ao contêiner especificado. Use esta opção para configurar a identidade do usuário, as capacidades e o modo privilegiado.
Para obter informações básicas sobre contextos de segurança no Kubernetes, consulte Configurar um contexto de segurança para um pod ou contêiner.
Configure um contexto de segurança do pod
Como funciona
No Linux, a interface sysctl permite ler e modificar parâmetros do kernel em tempo de execução. O ECI expõe a configuração do sysctl por meio de dois parâmetros de API que correspondem à distinção entre seguro e inseguro do Kubernetes:
SecurityContext.Sysctl: destinado a sysctls seguros. Os sysctls seguros são habilitados por padrão e isolados na instância, de modo que as alterações não afetam outras cargas de trabalho no mesmo nó.HostSecurityContext.Sysctl: destinado a sysctls inseguros. Os sysctls inseguros exigem configuração explícita, pois podem afetar a estabilidade do nó ou cargas de trabalho vizinhas.
Para visualizar os parâmetros atuais do kernel de uma instância ECI, execute:
sysctl -a
Para consultar um script de referência, visualize sysctl.sh.
A modificação incorreta de parâmetros sysctl pode desestabilizar o sistema operacional. Compreenda o efeito de cada parâmetro antes de aplicar alterações. Para referência de parâmetros, consulte sysctl(8).
Parâmetros sysctl suportados
Sysctls seguros (use SecurityContext.Sysctl):
|
Parâmetro |
Observações |
|
|
|
|
|
Sysctls inseguros (use HostSecurityContext.Sysctl):
|
Parâmetro |
Observações |
|
|
Exceto |
|
|
|
|
|
|
|
|
|
|
|
Exceto |
Também é possível modifique vm.min_free_kbytes. Recomendamos defina este valor como no máximo 20% do tamanho total da memória da instância.
Parâmetros de API
Passe estes parâmetros para CreateContainerGroup ao crie uma instância ECI.
|
Parâmetro |
Tipo |
Exemplo |
Descrição |
|
|
string |
|
Nome do sysctl seguro a ser defina |
|
|
string |
|
Valor do sysctl seguro |
|
|
string |
|
Nome do sysctl inseguro a ser defina |
|
|
string |
|
Valor do sysctl inseguro |
Configure um contexto de segurança do contêiner
Parâmetros suportados
Passe os parâmetros relacionados a Container.N.SecurityContext para CreateContainerGroup para configure um contexto de segurança no nível do contêiner.
| Parameter | Type | Example | Description |
|---|---|---|---|
Container.N.SecurityContext.RunAsUser | long | 1000 | ID de usuário que executa o contêiner. Substitui a instrução USER no Dockerfile. |
Container.N.SecurityContextRunAsGroup | long | 3000 | ID de grupo que executa o contêiner. |
Container.N.SecurityContextRunAsNonRoot | boolean | true | Indica se o contêiner deve ser executado como um usuário não root. Padrão: false. |
Container.N.SecurityContextPrivileged | boolean | true | Indica se o contêiner deve ser executado em modo privilegiado. Padrão: false. Nota Este recurso está em visualização interna. Envie um ticket para ativá-lo. |
Container.N.SecurityContext.Capability.Add.N | array | NET_ADMIN | Capacidades do Linux a serem concedidas aos processos do contêiner. |
Container.N.SecurityContext.ReadOnlyRootFilesystem | boolean | true | Indica se o sistema de arquivos raiz do contêiner é somente leitura. Defina como true. |
Capacidades suportadas
As constantes de capacidade do Linux têm o formato CAP_XXX na documentação do kernel, mas a API do ECI usa o nome sem o prefixo CAP_. Por exemplo, para conceder CAP_NET_ADMIN, defina o valor como NET_ADMIN.
| Capability | Description |
|---|---|
AUDIT_WRITE | Grava registros no log de auditoria do kernel. |
CHOWN | Altera arbitrariamente os UIDs e GIDs de arquivos. |
DAC_OVERRIDE | Ignora verificações de permissão de leitura, gravação e execução de arquivos. |
FOWNER | Ignora verificações de permissão para operações que exigem que o UID do sistema de arquivos corresponda ao UID do processo. |
FSETID | Não limpa os bits de permissão set-user-ID e set-group-ID quando um arquivo é modificado. |
KILL | Ignora verificações de permissão para envio de sinais. |
MKNOD | Cria arquivos especiais usando mknod(2). |
NET_ADMIN | Executa operações relacionadas à rede, como configuração de interfaces e tabelas de roteamento. |
NET_BIND_SERVICE | Vincula um socket a uma porta privilegiada (número de porta inferior a 1024). |
NET_RAW | Utiliza sockets raw e de pacote. |
SETFCAP | Define capacidades arbitrárias em arquivos. |
SETGID | Altera arbitrariamente os GIDs do processo e a lista suplementar de GIDs. |
SETPCAP | Modifica o conjunto delimitador de capacidades do processo. |
SETUID | Altera arbitrariamente os UIDs do processo. |
SYS_CHROOT | Utiliza chroot(2). |
SYS_PTRACE | Rastreia processos arbitrários usando ptrace(2). |
SYS_RAWIO | Executa operações de porta de E/S. Nota Não há suporte para concessão de |
Parâmetros não suportados
Os parâmetros a seguir não são configuráveis e usam valores padrão fixos:
|
Parâmetro |
Valor padrão |
|
|
|
|
|
|
Contêineres de inicialização
Contextos de segurança também são configuráveis para contêineres de inicialização, utilizando os mesmos parâmetros listados acima. Os seguintes parâmetros não são suportados para contêineres de inicialização:
SecurityContextRunAsGroupSecurityContextRunAsNonRoot