Todos os produtos
Search
Central de documentação

Container Service for Kubernetes:Configure dinamicamente uma lista de permissões de service para pods

Última atualização: Sep 21, 2026

Em ambientes cloud com requisitos rigorosos de permissão, você pode precisar adicionar ou remover dinamicamente os endereços IP dos pods em listas de permissões específicas do ApsaraDB RDS para obter um controle de acesso refinado. Use o componente ack-kubernetes-webhook-injector para adicionar anotações aos pods, o que adiciona ou remove dinamicamente seus endereços IP das listas de permissões especificadas do ApsaraDB RDS. Este tópico descreve como instalar e usar o ack-kubernetes-webhook-injector para configurar dinamicamente listas de permissões para services do Alibaba Cloud e como configurar o acesso aos seus endpoints internos.

Pré-requisitos

Visão geral

No cloud computing, certos recursos exigem políticas de segurança antes de serem acessados por fontes externas. Por exemplo, uma instância pode exigir uma política de controle de acesso do Server Load Balancer (SLB), ou um banco de dados ApsaraDB RDS pode exigir uma lista de permissões de endereços IP de origem do cliente. Embora você possa adicionar o intervalo de endereços IP dos nós do seu cluster a uma lista de permissões específica do ApsaraDB RDS ao criar um cluster ACK, essa abordagem apresenta as seguintes desvantagens:

  • As regras da lista de permissões são muito genéricas. Os blocos CIDR de IP na lista de permissões cobrem os endereços IP de todos os nós e pods no cluster.

  • As regras da lista de permissões precisam ser limpas manualmente após a exclusão do cluster.

Para resolver esses problemas, o ACK fornece o ack-kubernetes-webhook-injector. Esse componente adiciona dinamicamente o endereço IP de um pod especificado a uma lista de permissões do ApsaraDB RDS quando o pod é criado e remove o endereço IP quando o pod é excluído. Isso permite um controle refinado sobre as políticas de segurança.

Atualmente, o ack-kubernetes-webhook-injector oferece os seguintes recursos:

  • Adiciona e remove automaticamente o endereço IP de um pod em um grupo de políticas de controle de acesso do SLB especificado conforme o pod é criado e excluído.

  • Adiciona e remove automaticamente o endereço IP de um pod em uma lista de permissões do ApsaraDB for Redis especificada conforme o pod é criado e excluído.

  • Adiciona e remove automaticamente o endereço IP de um pod em uma lista de permissões do ApsaraDB RDS especificada conforme o pod é criado e excluído.

Instale o ack-kubernetes-webhook-injector

  1. Faça login no ACK console. No painel de navegação à esquerda, clique em Marketplace > Marketplace.

  2. Encontre e clique em ack-kubernetes-webhook-injector e, em seguida, clique em Deploy no canto superior direito.

  3. No painel exibido, selecione o cluster de destino e o Namespace, defina um Release Name e clique em Next.

  4. Selecione uma Chart Version. Na página Parameters, preencha os campos ak e sk na seção openapi com suas informações de AccessKey e clique em OK na parte inferior da página.

    Para mais informações sobre como obter um par de AccessKey, consulte Obtain an AccessKey pair.

    openapi:
      # For test only. DO NOT use aksk authentication in production environments.
      use_aksk: true
      ak:
      sk:

Exemplo: Adicione dinamicamente o IP de um pod a uma lista de permissões do RDS

Na especificação do pod da sua workload, use uma anotação para especificar o ID da instância do ApsaraDB RDS e o nome do grupo da lista de permissões ao qual o pod precisa ingressar. Quando o pod é criado, o ack-kubernetes-webhook-injector adiciona o endereço IP do pod à lista de permissões. Quando o pod é excluído, o componente remove o endereço IP.

A anotação do pod para uma lista de permissões do ApsaraDB RDS deve incluir o seguinte:

  • ID da instância do ApsaraDB RDS: ack.aliyun.com/rds_id

  • Nome do grupo da lista de permissões do ApsaraDB RDS: ack.aliyun.com/white_list_name

Esta seção demonstra como usar o ack-kubernetes-webhook-injector para adicionar dinamicamente um pod a uma lista de permissões do ApsaraDB RDS.

  1. Crie um Deployment usando o seguinte modelo YAML. Na definição do pod, adicione anotações para o ID da instância do ApsaraDB RDS e o nome do grupo da lista de permissões.

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      labels:
        app: inject-test
      name: inject-test
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: inject-test
      template:
        metadata:
          annotations:
            ack.aliyun.com/rds_id: <rm-wz9nanjcud75b****>
            ack.aliyun.com/white_list_name: <rds_group>
          labels:
            app: inject-test
        spec:
          containers:
          - command:
            - sleep
            - "3600"
            image: alpine:latest
            name: inject-test
  2. Execute o seguinte comando para visualizar o endereço IP do pod.

    kubectl --kubeconfig .kube/config_sts_test -n inject-test get pod -o wide

    Saída de exemplo:

    NAME                           READY           STATUS        RESTARTS    AGE    IP                NODE
    inject-test-68cc8f9bbf-gj86n    1/1            Running         0        22s   172.25.0.28    cn-hangzhou.xxx

    Na saída, o endereço IP do pod é 172.25.0.28.

  3. Faça login no ApsaraDB RDS console e visualize a lista de permissões da instância do ApsaraDB RDS especificada na anotação. Para mais informações sobre como visualizar uma lista de permissões do ApsaraDB RDS, consulte Enhanced IP address whitelist mode.

  4. Defina o número de réplicas do Deployment criado em Step 1 como 0 e verifique novamente a lista de permissões do ApsaraDB RDS.

    O endereço IP é removido automaticamente da lista de permissões.

Configure o acesso a endpoints internos

Por padrão, o ack-kubernetes-webhook-injector usa os endpoints públicos dos services do Alibaba Cloud. Se o seu cluster não tiver o acesso à rede pública ativado, modifique a configuração para usar endpoints internos.

Nota

Alguns services do Alibaba Cloud não fornecem endpoints internos em todas as regiões. Antes de continuar, verifique o OpenAPI Explorer para confirmar se um endpoint interno está disponível para o seu service de destino em sua região.

  1. Faça login no ACK console. No painel de navegação à esquerda, clique em Clusters.

  2. Na página Clusters, clique no nome do seu cluster. No painel de navegação à esquerda, clique em Workloads > Deployments.

  3. Na lista suspensa Namespace na parte superior da página, selecione kube-system. Encontre o Deployment kubernetes-webhook-injector. Na coluna Actions, escolha More > View in YAML.

  4. Em spec.template.spec.containers.command, adicione a linha - '--intranet-access' e clique em Update.

Outras configurações de política de segurança

O ack-kubernetes-webhook-injector também oferece suporte às seguintes configurações de política de segurança:

  • Controle de acesso do SLB: ack.aliyun.com/access_control_policy_id.

  • Configuração da lista de permissões do ApsaraDB for Redis:

    • ID do Redis: ack.aliyun.com/redis_id.

    • Grupo da lista de permissões do Redis: ack.aliyun.com/redis_white_list_name.

Desinstale o ack-kubernetes-webhook-injector

Se você não precisar mais do ack-kubernetes-webhook-injector, remova-o usando o recurso de gerenciamento de releases no ACK. Para mais informações, consulte Manage Helm releases. Em seguida, execute os seguintes comandos para remover os recursos de configuração restantes:

kubectl -n kube-system delete secret kubernetes-webhook-injector-certs
kubectl delete mutatingwebhookconfigurations.admissionregistration.k8s.io kubernetes-webhook-injector