Cenários de restrições baseadas em contexto
Com as restrições baseadas em contexto, os proprietários e administradores de contas podem definir e aplicar restrições de acesso aos recursos do site IBM Cloud®, com base no contexto das solicitações de acesso. O acesso aos recursos do IBM Cloud Kubernetes Service pode ser controlado com restrições baseadas em contexto e políticas de gerenciamento de identidade e acesso. Para obter mais informações, consulte Proteção dos recursos do IBM Cloud Kubernetes Service com restrições baseadas em contexto.
Os aplicativos executados em clusters IBM Cloud Kubernetes Service, por exemplo, servidores da Web expostos por um Kubernetes LoadBalancer, não são restritos pelas regras de CBR.
Entendendo o cenário
Neste cenário de exemplo, você usa restrições baseadas em contexto para restringir o tráfego ao seu cluster permitindo apenas um endereço IP individual para conectar-se às APIs cluster sobre a rede pública enquanto ainda permite
todo o tráfego privado.
Nas etapas a seguir, você começa por criar uma zona de rede, ou permitida, que inclui um único endereço IP. Em seguida, você cria uma regra de restrições baseadas em contexto para o seu cluster que permite que todos os acessos de rede privada e permitida lista a zona de rede que contém o endereço IP individual. Ao criar a regra, você associa-a à zona de rede que contém o endereço IP individual.
Pré-requisitos
Antes de iniciar este tutorial, certifique-se de que você criou ou instalou os seguintes recursos e ferramentas.
- Uma conta do IBM Cloud. Para obter mais informações, consulte Criando uma conta.
- As ferramentas CLI incluindo o IBM Cloud CLI, o plug-in CLI do serviço de Contêineres e o plug-in CBR. Para obter mais informações, consulte Introdução à CLI da IBM Cloud.
- Criar um cluster.
- Revise as docs O que são restrições baseadas em contexto para obter um entendimento de zonas de rede e regras.
- Revise os docs Protegendo recursos de cluster com restrições baseadas em contexto para entender como é possível alavancar o CBR para seus recursos do IBM Cloud Kubernetes Service.
- Revise as limitações para usar o CBR com IBM Cloud Kubernetes Service.
Criando sua zona de rede
-
Execute o comando de exemplo a seguir para criar uma rede que inclua apenas um IP cliente que você deseja usar.
ibmcloud cbr zone-create --addresses 129.XX.XX.XX --description "Allow only client IP" --name allow-client-ip -
Verificar a zona de rede foi criada.
ibmcloud cbr zones
Criando sua regra CBR
-
Depois de criar sua zona de rede (allowlist), crie uma regra do CBR e inclua a zona de rede que criou na etapa anterior. O exemplo a seguir cria uma regra que usa o tipo API
cluster. SubstituaNETWORK-ZONE-IDpelo ID da zona de redeallow-client-ipque você criou na etapa 1.ibmcloud cbr rule-create --api-types crn:v1:bluemix:public:containers-kubernetes::::api-type:cluster --description "privateAccess=allowAll, publicAccess=oneIP" --service-name containers-kubernetes --service-instance CLUSTER-ID --context-attributes endpointType=private --context-attributes endpointType=public,networkZoneId=NETWORK-ZONE-IDEntendendo as opções de comando.
--api-types crn:v1:bluemix:public:containers-kubernetes::::api-type:cluster- Configure a API
crn:v1:bluemix:public:containers-kubernetes::::api-type:clusterpara permitir apenas recursos na zona de rede que você criou anteriormente para acessar apenas as APIscluster, que incluem as APIs para vários comandoskubectl. --service-instance CLUSTER-ID- Escoar a regra para um único cluster para que apenas recursos na zona de rede que você criou anteriormente possam acessar apenas o
CLUSTER-ID. --context-attributes endpointType=private- Configurar o atributo de contexto
endpointType=privatesem associar uma zona de rede permite todo o tráfego privado para o cluster. --context-attributes endpointType=public,networkZoneId=all-client-ip- Configure o atributo de contexto
endpointType=publice associe onetworkZoneId=allow-client-ipque você criou anteriormente para permitir apenas os recursos na zonaallow-client-ippara acessar o cluster sobre a rede pública.
-
Verifique se a regra foi criada.
ibmcloud cbr rules
Testando suas restrições baseadas em contexto
Para testar sua configuração de restrições baseadas em contexto, você pode tentar chamar as APIs de cluster para o seu cluster, por exemplo, listando pods, sobre a rede pública a partir de um endereço IP diferente do endereço IP individual que você permite listar em sua zona de rede. Com essa configuração, toda a conectividade privada é permitida, enquanto apenas o endereço IP individual em sua zona de rede pode se conectar às APIs do cluster sobre a rede pública.
Cenários adicionais
Agora que você criou uma simples zona de rede CBR e regra, revise os seguintes exemplos mais avançados para controlar ainda mais o acesso aos seus recursos IBM Cloud Kubernetes Service.
Permitindo que diferentes IPs acessem os terminais de atendimento público e privado
Neste cenário, você permite que diferentes endereços IP ou CIDRs acessem os terminais de serviço público e privado de seus clusters IBM Cloud Kubernetes Service criando zonas de rede separadas para cada endereço IP. Em seguida, você cria uma regra que permite que cada zona de rede acesse os terminais de atendimento público ou privado.
-
Crie uma zona de rede para um endereço IP público ou CIDR e outra para um endereço IP privado ou CIDR que você deseja permitir acessar seus clusters IBM Cloud Kubernetes Service.
Exemplo comandos para criar zonas de rede separadas chamadas
public-IP-zoneeprivate-IP-zone. Neste exemplo, cada zona contém vários endereços IP ou CIDRs, separados por uma vírgula, que você deseja permitir acessar seus clusters.ibmcloud cbr zone-create --addresses 1.2.3.4,12.12.12.0/24 --description "Allowed Public IP Addresses Zone" --name "public-ip-zone"ibmcloud cbr zone-create --addresses 10.20.20.20,10.10.10.0/24 --description "Allowed Private IP Addresses Zone" --name "private-ip-zone" -
Obtenha os IDs das zonas
private-ip-zoneepublic-ip-zoneque criou na etapa anterior.ibmcloud cbr zones -
Crie uma regra que permita que o
private-ip-zonese conecte ao terminal de serviço privado do seu cluster e que também permita que opublic-ip-zonese conecte ao terminal de serviço público do seu cluster apenas. Esta regra se aplica ao cluster especificado com a opção--service-instance. Se você deseja aplicar a regra em todos os clusters em sua conta, não especifique um cluster.ibmcloud cbr rule-create --context-attributes "endpointType=public,networkZoneId=PUBLIC-IP-ZONE-ID" --context-attributes "endpointType=private,networkZoneId=PRIVATE-IP-ZONE-ID" --description "Separate private and public IPs for cluster and management rule" --service-name containers-kubernetes --service-instance CLUSTER-ID
Permitindo que diferentes IPs acessem tipos de API diferentes sobre os terminais de atendimento público e privado
Semelhante ao cenário anterior, neste cenário você permite que diferentes endereços IP acessem o endpoint de serviço público ou privado para clusters IBM Cloud Kubernetes Service. No entanto, neste cenário, o acesso é restringido ainda mais
por tipos de API específicos para as APIs cluster e management. Para obter mais informações sobre os tipos de API, consulte Protegendo APIs específicas.
-
Crie quatro zonas de rede, uma para cada um dos endereços IP que você deseja permitir para acessar as APIs públicas ou privadas do
clusterou as APIs públicas ou privadas domanagementNote que você pode incluir vários endereços IP ou CIDRs, separados por uma vírgula, que você deseja permitir acessar seus clusters.ibmcloud cbr zone-create --addresses 1.2.3.4,12.12.12.0/24 --description "Allowed Public IP Addresses for IKS and ROKS APIs" --name "public-mgmt-zone"ibmcloud cbr zone-create --addresses 10.20.20.20,10.10.10.0/24 --description "Allowed Private IP Addresses IKS and ROKS APIs" --name "private-mgmt-zone"ibmcloud cbr zone-create --addresses 11.11.11.0/24 --description "Allowed Public IP Addresses for cluster apiserver" --name "public-cluster-zone"ibmcloud cbr zone-create --addresses 10.30.30.30 --description "Allowed Private IP Addresses for cluster apiserver" --name "private-cluster-zone" -
Obtenha os IDs das zonas que você criou na etapa anterior.
ibmcloud cbr zonesSaída de exemplo
OK id name address_count c14c0839c13d8aa0afa8383e2be2e124 public-mgmt-zone 2 f9676ca6ef37685315fa254b89d73159 public-cluster-zone 1 c14c0839c13d8aa0afa8383e2be2e843 private-cluster-zone 1 b53353de929de39ac2381f9b4cde8507 private-mgmt-zone 2 -
Crie uma regra que proteja o acesso às APIs públicas e privadas
clusteremanagementusando as zonas que você criou anteriormente.ibmcloud cbr rule-create --api-types crn:v1:bluemix:public:containers-kubernetes::::api-type:management --context-attributes "endpointType=public,networkZoneId=PUBLIC-MGMT-ZONE-ID" --context-attributes "endpointType=private,networkZoneId=PRIVATE-MGMT-ZONE-ID" --description "Separate private and public IPs for the management APIs" --service-name containers-kubernetesibmcloud cbr rule-create --api-types crn:v1:bluemix:public:containers-kubernetes::::api-type:cluster --context-attributes "endpointType=public,networkZoneId=PUBLIC-CLUSTER-ZONE-ID" --context-attributes "endpointType=private,networkZoneId=PRIVATE-CLUSTER-ZONE-ID" --description "Separate private and public IPs for cluster APIs" --service-name containers-kubernetes