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:
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
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.