Adicione ou remova os recursos do Linux no Kubernetes SecurityContext

Adicione ou remova os recursos do Linux no Kubernetes SecurityContext

Pode ser difícil gerenciar o grau de privilégios que são fornecidos a cada vagem e recipiente em um contêiner Kubernetes. Podemos utilizar os recursos Kubernetes SecurityContext para adicionar ou excluir os recursos do Linux do POD e do contêiner para aumentar a segurança do contêiner. Este artigo se concentra no uso do SecurityContext para implementar um exemplo simples de adicionar e excluir recursos. A configuração de um arquivo YAML para excluir todos os recursos e adicionar apenas uma capacidade a um contêiner é fornecido no exemplo de amostra. Neste artigo, os comandos PROC e CAPSH são usados ​​para exibir as capacidades do contêiner.

Etapa 1: Inicie o servidor Minikube

Primeiro, inicie o servidor Minikube para que você possa executar seu aplicativo e usar as instruções Kubectl. Você pode implantar seus nós, pods e até cluster usando o servidor Minikube no ambiente Kubernetes. O comando a seguir deve ser usado para manter o minikube no modo ativo:

> Minikube Start

Ao fazer isso, o servidor Minikube está ativado e o ambiente Kubernetes está pronto para uso.

Passo 2: Crie um arquivo YAML Kubernetes

Na segunda etapa, crie um arquivo YAML para implantar uma vagem.

Siga as etapas para criar um arquivo YAML usando Nano:

  • Vá para o caminho do diretório onde deseja criar o arquivo ou modificar um arquivo existente.
  • Digite o comando nano seguido pelo nome do arquivo.

Execute o seguinte comando nano. Ele cria um arquivo de configuração da YAML chamado “Nano Podsample.yaml ”.

> Nano podsample.Yaml

Vamos para o próximo passo, que é ajudá -lo a saber como configurar uma amostra de pods.arquivo yaml.

Etapa 3: Configure o arquivo YAML

Adicionamos a ferramenta CAPSH na etapa anterior para que possamos ver as capacidades de nosso contêiner.

Observe que nenhum desses parâmetros está configurado para uma seção SecurityContext para este contêiner. Assim, todos estão definidos como padrões do sistema. Considere o fato de que este contêiner opera como o usuário padrão que é fornecido no DockerFile a partir do qual é construído se nenhum usuário for definido para ele em Kubernetes. Para muitos contêineres, esse usuário padrão é a raiz.

Passo 4: Crie um pod

Nesta etapa, vamos criar podsample.YAML com o seguinte comando anexado:

> kubectl Aplicar -f podsample.Yaml

Etapa 5: Verifique se há recursos

Na etapa anterior, uma vagem é criada e executando.

Agora que temos uma concha dentro, podemos usar o CapSh para verificar seus recursos usando o seguinte comando:

> $ kubectl Exec - -stdin - -tty Caps - - Ash

Usando o comando capsh, é possível ver as capacidades padrão do contêiner listadas da seguinte forma:

Podemos observar na saída fornecida que o contêiner possui muitos recursos padrão que são dados ao contêiner em tempo de execução.

Etapa 6: Solta o Solteiro Capability em Kubernetes SecurityContext

Nesta etapa, abandonamos a capacidade única do contêiner.

Vamos configurar o arquivo YAML usando o seguinte comando:

> Nano Dropod.Yaml

Depois disso, mova para configurar o Droppod.Arquivo YAML usando o seguinte comando dado:

> Kubectl Aplicar -f Droppod.Yaml

Etapa 7: Configure para adicionar a capacidade única no arquivo YAML

Nesta etapa, abra o arquivo YAML (descartado.yaml) que foi criado na etapa 6. Em seguida, defina o contêiner para que ele não tenha mais acesso à capacidade CAP_MKNOD, que remove a capacidade de criar os novos nós do sistema de arquivos.

O arquivo configurado é como mostrado:

Etapa 8: Verifique se há recursos

O arquivo YAML está configurado para soltar a capacidade CAP_MKNOD.

Nesta etapa, execute e execute as dropcaps.Arquivo YAML para verificar os recursos do contêiner usando o seguinte comando:

> $ kubectl Exec - -stdin - -tty Dropcaps - - Ash

As capacidades podem ser verificadas executando o arquivo Dropcaps:

> # capsh - -print

Podemos observar que este pod largou a capacidade CAP_MKNOD em comparação com o primeiro pod.

Etapa 9: Deixe todos os recursos em Kubernetes SecurityContext

Como o Kubernetes pode descartar uma única capacidade, ele também pode abandonar todos os recursos através do SecurityContext. Nesta etapa, solte todas as capacidades do contêiner, implicando o comando dado:

> nano samplenocap.Yaml

Depois disso, configure o samplenocap.Arquivo YAML usando o seguinte comando:

> Kubectl Create -f Samplenocap.Yaml

Agora, vamos para a próxima etapa para soltar todas as capacidades em nossas configurações de segurança de segurança.

Etapa 10: Configure todos os recursos no arquivo YAML

Nesta etapa, abra o arquivo YAML que foi criado na Etapa 9. Em seguida, configure dentro do contêiner.SecurityContext e solte todas as capacidades do contêiner.

O arquivo configurado é como mostrado:

Etapa 11: Verifique se há recursos

Execute os nocaps em Capsh para ver as informações sobre recursos. Nesta etapa, use o seguinte comando e exiba todos os recursos do contêiner:

> Kubectl Exec - -stdin - -tty nocaps - - Ash

As capacidades podem ser verificadas na ilustração a seguir, executando o arquivo YAML Samplenocaps em Capsh:

># capsh - -print

A saída anterior mostra que a corrente = ”” e o conjunto limite = ”” estão vazios agora. Os recursos são retirados com sucesso.

Passo 12: Instale a festa

Nesta etapa, instale o Bash através do APK, pois algumas funções do sistema não funcionam se não tivermos nenhum recurso. Embora nosso contêiner esteja operando como uma raiz, a instalação do pacote Bash falha.

> # apk add bash

Passo 13: Verifique as informações dos recursos

Existem várias maneiras de ver os recursos de nosso contêiner, como usar os comandos CapSh e Proc. Nesta etapa, exibimos as capacidades de contêiner usando o comando proces e o proc exibe as capacidades como um bitmap. Embora não seja tão legível quanto o resultado de Capsh, cada bit que é definido aqui significa uma certa capacidade.

> # CD/Proc/1/

Aqui, podemos ver que esse contêiner em particular não possui recursos ativados; Todos esses valores são zero.

Passo 14: Adicionando uma única capacidade no Kubernetes SecurityContext

Nas etapas anteriores, reduzimos uma única capacidade que é Cap_mknod e descartamos todos os recursos. Mas, nesta etapa, podemos adicionar os recursos de volta.

Execute o seguinte comando para criar o arquivo YAML:

> nano sampleadd.Yaml

Depois disso, configure o sampleadd.arquivo yaml.

> Kubectl Criar -f Sampleadd.Yaml

Agora, vamos tentar o sampleadd.Arquivo YAML e adicione uma única capacidade em nossas configurações de segurança.

Passo 15: Configure a capacidade única no arquivo YAML

Agora, vamos configurar o arquivo adicionando a capacidade na especificação.recipiente.SecurityContext em recursos.Adicionar ["mknod"].

A capacidade é exibida no arquivo YAML.

Etapa 16: Verifique se há recursos

Nesta etapa, execute os AddCaps para verificar os recursos usando o seguinte comando:

> Kubectl Exec - -stdin - -tty addCaps - - como

A capacidade adicionada pode ser vista na seguinte saída dada:

Current = Cap_Mknod+EP

Set Bounding = CAP_MKNOD

> # capsh - -print

Conclusão

Você aprendeu pela primeira vez com o exemplo implementado sobre os recursos padrão do contêiner, que são atribuídos no tempo de execução que é exibido com o comando capsh. Em seguida, você aprendeu a soltar uma única capacidade em um recipiente chamado Cap_Mknod. Em seguida, você também aprendeu a soltar todos os recursos do contêiner usando o // Drop: -All Configuration. Em seguida, usamos duas maneiras de exibir os recursos dos contêineres - usando os comandos CapSh e Proc.