Como desativar a aprovação insegura do kubectl para o kube apiserver

Como desativar a aprovação insegura do kubectl para o kube apiserver

Estou tentando tornar minha API do servidor mestre mais segura para evitar a passagem de solicitações não https.

Amostra de configuração:

$ kubectl config view
apiVersion: v1
clusters:
- cluster:
    server: https://ip:6443
  name: kubernetes
contexts:
- context:
    cluster: kubernetes
    user: kubernetes-admin
  name: kubernetes-admin@kubernetes
current-context: kubernetes-admin@kubernetes
kind: Config
preferences: {}
users:
- name: kubernetes-admin
  user:
    client-certificate-data: REDACTED
    client-key-data: REDACTED
    token: REDACTED

O que funciona desde que eu esteja usando as CAs corretas.

Meu problema é que também funciona se eu remover as CAs ou tiver CAs incorretas e simplesmente aplicar o sinalizador --insecure-skip-tls-verify.

Como posso forçar o servidor a permitir conexões https em vez de http na API do servidor?

Também desativei solicitações anônimasSolicitações anônimasmas ainda posso ver que as solicitações podem passar.

Responder1

Meu problema é que também funciona se eu remover as CAs ou se tiver CAs incorretas e simplesmente aplicar o sinalizador --insecure-skip-tls-verify.

Usar --insecure-skip-tls-verifyé altamenteNÃO RECOMENDADOem ambiente de produção. Pode ser usado quando você deseja fazer alguns testes locais ou para fins de aprendizagem.

EmKubectldocumentação você tem informações:

--insecure-skip-tls-verify

If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure

Portanto, se este sinalizador for definido como verdadeiro, ele sempre ignorará os certificados e a identidade do servidor não será verificada. É semelhante acurl -k

-k, --insecure
              (TLS) By default, every SSL connection curl makes is verified to
              The  server  connection  is verified by making sure the server's
              interface name, IP address or host name.

Você pode proteger seu cluster de várias maneiras, mas isso depende do cenário. No entanto, existem alguns principaisPortas e IPs do servidor APIconceitos:

Usar SecurePort

Por padrão, o servidor API Kubernetes atende HTTPem 2 portas:

  1. localhost port:
  • destina-se a testes e bootstrap, e para outros componentes do nó mestre (agendador, gerenciador de controlador) se comunicarem com a API
  • sem TLS
  • Desative conexões http inseguras: o padrão é a porta 8080, altere com --insecure-portsinalizador. (Pode ser desativado por --insecure-port=0)
  • O IP padrão é localhost, mude com --insecure-bind-addresssinalizador. (Remover --insecure-bind-address)
  • request ignora módulos de autenticação e autorização.
  • solicitação tratada pelo(s) módulo(s) de controle de admissão.
  • protegido pela necessidade de ter acesso ao host
  1. Secure port:
  • use sempre que possível Habilite a porta segura:
  • usa TLS. Defina o certificado com --tls-cert-filee a chave com --tls-private-key-fileo sinalizador.
  • o padrão é port 6443, mude com -secure-porto sinalizador -.
  • O IP padrão é a primeira non-localhostinterface de rede, altere com --bind-addresssinalizador.
  • solicitação tratada pelos módulos de autenticação e autorização.
  • solicitação tratada pelo(s) módulo(s) de controle de admissão.
  • módulos de autenticação e autorização são executados.

Restringir o acesso à API, o que significa que você deve permitir acesso à sua API apenas de um IP específico ou de um intervalo de IP específico (redes autorizadas). Não deveria ser acessível de fora do mundo. Para fazer isso, você pode usar regras de firewall ouPolítica de Rede.

DesligarSolicitações anônimas, o que você já fez.

Você pode pesquisar --insecure-port=0, mas ele deve estar obsoleto em versões mais recentes.

Como informação adicional, aconselho você a verificarKubernetes da maneira mais difícil, especialmente 3 capítulos: Provisioning Compute Resources, Provisioning the CA and Generating TLS Certificates, Generating Kubernetes Configuration Files for Authentication. Você pode encontrar algumas práticas recomendadas.

Muito boa explicação das Kube API-serverbandeiras que você pode encontrar emEste artigo

Links úteis sobre segurança de cluster:

Os princípios básicos para manter clusters Kubernetes seguros – Como proteger o kube-apiserver

Controlando o acesso à API Kubernetes

Práticas recomendadas de segurança do Kubernetes

Segurança do Kubernetes 101: riscos e 29 práticas recomendadas

Controlando o acesso à API Kubernetes

Acessando Clusters

informação relacionada