Compartilhar via


Gerenciar certificados para sua implantação de Operações IoT do Azure

O Azure IoT Operations usa o TLS para criptografar a comunicação entre todos os componentes. Este artigo descreve como gerenciar certificados para comunicações internas e externas e como usar seu próprio emissor de autoridade certificadora (AC) para comunicações internas em uma implantação de produção.

Pré-requisitos

Para gerenciar certificados para comunicações externas, você precisa de uma instância de Operações IoT do Azure implantada com configurações seguras. Se você implantou operações de IoT do Azure com configurações de teste, precisará primeiro habilitar as configurações seguras.

Gerenciar certificados para comunicações internas

Todas as comunicações dentro das Operações de IoT do Azure são criptografadas usando TLS. Para ajudar você a começar, o recurso Operações do Azure IoT é implantado com uma autoridade de certificação raiz padrão e um emissor para certificados de servidor TLS. Você pode usar a configuração padrão para fins de desenvolvimento e teste. Para uma implantação de produção, recomendamos usar seu próprio emissor de AC e uma solução PKI corporativa.

Certificado de autoridade de certificação raiz e emissor autoassinado padrão para certificados de servidor TLS

Para ajudar você a começar, as Operações do Azure IoT são implantadas com um emissor autoassinado padrão e um certificado de Autoridade de Certificação raiz para certificados de servidor TLS. Você pode usar esse emissor para desenvolvimento e testes. As Operações do Azure IoT usam o cert-manager para gerenciar certificados TLS e o trust-manager para distribuir pacotes de confiança para componentes.

  • O certificado de AC é autoassinado e não é considerado confiável por nenhum cliente fora do recurso Operações do Azure IoT. A entidade do certificado de autoridade de certificação é CN=Azure IoT Operations Quickstart Root CA - Not for Production. O certificado de autoridade de certificação é girado automaticamente pelo gerenciador de certificados.

  • O certificado de autoridade de certificação raiz é armazenado em um segredo do Kubernetes chamado azure-iot-operations-aio-ca-certificate no namespace cert-manager.

  • A porção pública do certificado de Autoridade de Certificação raiz é armazenada em um ConfigMap chamado azure-iot-operations-aio-ca-trust-bundle no namespace azure-iot-operations. Você pode recuperar o certificado de Autoridade de Certificação a partir do ConfigMap e inspecioná-lo com o kubectl e o openssl. O ConfigMap é mantido atualizado pelo gerenciador de confiança quando o certificado de Autoridade de Certificação é rotacionado pelo cert-manager.

    kubectl get configmap azure-iot-operations-aio-ca-trust-bundle -n azure-iot-operations -o "jsonpath={.data['ca\.crt']}" | openssl x509 -text -noout
    
    Certificate: 
        Data: 
            Version: 3 (0x2) 
            Serial Number: 
                <SERIAL-NUMBER> 
            Signature Algorithm: sha256WithRSAEncryption 
            Issuer: O=Microsoft, CN=Azure IoT Operations Quickstart Root CA - Not for Production 
            Validity 
                Not Before: Sep 18 20:42:19 2024 GMT 
                Not After : Sep 18 20:42:19 2025 GMT 
            Subject: O=Microsoft, CN=Azure IoT Operations Quickstart Root CA - Not for Production 
            Subject Public Key Info: 
                Public Key Algorithm: rsaEncryption 
                    Public-Key: (2048 bit) 
                    Modulus: <MODULUS> 
                                        Exponent: 65537 (0x10001) 
            X509v3 extensions: 
                X509v3 Key Usage: critical 
                    Certificate Sign, CRL Sign 
                X509v3 Basic Constraints: critical 
                    CA:TRUE 
                X509v3 Subject Key Identifier: 
                    <SUBJECT-KEY-IDENTIFIER> 
        Signature Algorithm: sha256WithRSAEncryption 
    [Signature] 
    
  • Por padrão, já existe um emissor configurado no azure-iot-operations namespace chamado azure-iot-operations-aio-certificate-issuer. É usado como o emissor de AC comum para todos os certificados de servidor TLS para as Operações de IoT. O agente MQTT usa um emissor criado com base no mesmo certificado de Autoridade de Certificação assinado pelo emissor autoassinado para emitir certificados de servidor TLS para o ouvinte TLS padrão na porta 18883. Você pode inspecionar o emissor com o seguinte comando:

    kubectl get clusterissuer azure-iot-operations-aio-certificate-issuer -o yaml
    
    apiVersion: cert-manager.io/v1 
    kind: ClusterIssuer 
    metadata: 
      creationTimestamp: "2024-09-18T20:42:17Z" 
      generation: 1 
      name: azure-iot-operations-aio-certificate-issuer 
      resourceVersion: "36665" 
      uid: 592700a6-95e0-4788-99e4-ea93934bd330 
    spec: 
      ca: 
        secretName: azure-iot-operations-aio-ca-certificate 
    status: 
      conditions: 
      - lastTransitionTime: "2024-09-18T20:42:22Z" 
        message: Signing CA verified 
        observedGeneration: 1 
        reason: KeyPairVerified 
        status: "True" 
        type: Ready 
    

Traga seu próprio emissor

Para implantações de produção, recomendamos que você configure operações de IoT do Azure com uma PKI corporativa para gerenciar certificados e traga seu próprio emissor de AC que funcione com sua PKI corporativa, em vez de usar o emissor autoassinado padrão para emitir certificados TLS para comunicações internas.

Para configurar as Operações de IoT do Azure com seu próprio emissor para comunicações internas, use as seguintes etapas antes de implantar uma instância em seu cluster:

  1. Siga as etapas em Preparar seu cluster para configurar o cluster.

  2. Instalar cert-manager. O Cert-manager gerencia certificados TLS.

  3. Instalar trust-manager. Ao instalar o gerenciador de confiança, defina trust namespace para cert-manager. Por exemplo:

    helm upgrade trust-manager jetstack/trust-manager --install --namespace cert-manager --set app.trust.namespace=cert-manager --wait
    

    O Trust-manager é usado para distribuir um pacote de confiança aos componentes.

  4. Crie o namespace do Azure IoT Operations.

    kubectl create namespace azure-iot-operations
    
  5. Implante um emissor que funcione com o cert-manager. Para obter uma lista de todos os emissores suportados, veja emissores cert-manager.

    O emissor pode ser do tipo ClusterIssuer ou Issuer. Se usar Issuer, o recurso do emissor deverá ser criado no namespace do Azure IoT Operations.

  6. Configure o pacote de confiança no namespace do Azure IoT Operations.

    1. Para configurar o pacote de confiança, crie um ConfigMap no namespace do Azure IoT Operations. Coloque a parte da chave pública do seu certificado CA no mapa de configuração com um nome de chave de sua escolha.

    2. Obtenha a parte da chave pública do seu certificado de Autoridade de Certificação. As etapas para adquirir a chave pública dependem do emissor escolhido.

    3. Crie o ConfigMap. Por exemplo:

      kubectl create configmap -n azure-iot-operations <YOUR_CONFIGMAP_NAME> --from-file=<CA_CERTIFICATE_FILENAME_PEM_OR_DER>
      
  7. Siga as etapas em Implantar operações do Azure IoT para implantar, com algumas alterações.

    1. Adicione o parâmetro --user-trust ao preparar o cluster. Por exemplo:

      az iot ops init --subscription <SUBSCRIPTION_ID> --cluster <CLUSTER_NAME>  -g <RESOURCE_GROUP> --user-trust
      
    2. Adicione o parâmetro --trust-settings com as informações necessárias ao implantar o Azure IoT Operations. Por exemplo:

      az iot ops create --subscription <SUBSCRIPTION_ID> -g <RESOURCE_GROUP> --cluster <CLUSTER_NAME> --custom-location <CUSTOM_LOCATION> -n <INSTANCE_NAME> --sr-resource-id <SCHEMAREGISTRY_RESOURCE_ID> --trust-settings configMapName=<CONFIGMAP_NAME> configMapKey=<CONFIGMAP_KEY_WITH_PUBLICKEY_VALUE> issuerKind=<CLUSTERISSUER_OR_ISSUER> issuerName=<ISSUER_NAME>
      

    Observação

    O nome do local personalizado tem um comprimento máximo de 63 caracteres.

Gerenciar certificados para comunicações externas

As Operações do Azure IoT usam o Azure Key Vault como a solução de cofre gerenciado na nuvem e usam a extensão de Repositório de segredos do Azure Key Vault para Kubernetes para sincronizar os segredos da nuvem e armazená-los na borda como segredos do Kubernetes. Você adiciona os seus certificados ao Azure Key Vault como segredos e a extensão os sincroniza à borda como segredos do Kubernetes.

Configurar permissões do Azure Key Vault

Para usar a experiência de operações para criar segredos no cofre de chaves, o usuário requer permissões do Key Vault Secrets Officer no nível do recurso no Azure.

Em um ambiente de teste ou desenvolvimento, use as seguintes etapas para atribuir a função Key Vault Secrets Officer ao usuário no nível do grupo de recursos em que a instância de Operações IoT do Azure e a instância do Azure Key Vault são implantadas:

  1. Para localizar o nome do grupo de recursos, acesse a interface do usuário da Web da experiência de operações , acesse a página Instâncias e localize sua instância de Operações de IoT do Azure. O nome do grupo de recursos é mostrado no campo Grupo de recursos.

  2. Vá para o portal do Azure e vá para o grupo de recursos em que sua instância de Operações IoT do Azure e a instância do Azure Key Vault são implantadas.

    Dica

    Use a caixa de pesquisa na parte superior do portal do Azure para localizar rapidamente o grupo de recursos digitando o nome.

  3. Selecione controle de acesso (IAM) no menu à esquerda. Em seguida, selecione + Adicionar > Adicionar atribuição de função.

  4. Na guia Funções, selecione Key Vault Secrets Officer na lista de funções e, em seguida, selecione Avançar.

  5. Na guia Membros, selecione Usuário, grupo ou entidade de serviço, Selecione Membros, selecione o usuário que você deseja atribuir a função de Oficial de Segredos do Key Vault e selecione Avançar.

  6. Clique em Revisar + atribuir para concluir a atribuição de função.

Em um ambiente de produção, siga as práticas recomendadas para proteger o Azure Key Vault que você usa com operações de IoT do Azure. Para obter mais informações, consulte as práticas recomendadas para usar o Azure Key Vault.

Adicionar e usar certificados

Os conectores usam a experiência de gerenciamento de certificados para configurar a autenticação de aplicativo cliente para servidores externos. Para saber mais sobre como os conectores usam certificados para estabelecer confiança mútua com servidores externos, consulte a documentação de gerenciamento de certificados específica do conector.

Ao implantar Operações do Azure IoT com configurações seguras, você pode começar a adicionar certificados ao Azure Key Vault e sincronizá-los com o cluster Kubernetes a ser usado na lista de certificados confiáveis e repositórios de lista do Emissor para conexões externas.

Para gerenciar certificados para comunicações externas, siga estas etapas:

  1. Acesse a experiência de Operações do Azure IoT e escolha seu site e a instância de Operações de IoT do Azure.

  2. No painel de navegação esquerdo, selecione Dispositivos.

  3. Clique em Gerenciar certificados e segredos.

    Captura de tela que mostra a opção Gerenciar certificados e segredos no painel de navegação esquerdo.

  4. Na página Certificados e Segredos, clique em Adicionar novo certificado.

    Captura de tela que mostra o botão Adicionar novo certificado na página de dispositivos.

  5. Você pode adicionar um novo certificado de duas maneiras:

    • Carregar certificado: carrega um certificado que é adicionado como um segredo ao Azure Key Vault e sincronizado automaticamente com o cluster usando a extensão do Repositório secreto.

      • Exiba os detalhes do certificado uma vez carregados para garantir que você tenha o certificado correto antes de adicionar ao Azure Key Vault e sincronizar com o cluster.
      • Use um nome intuitivo para que você possa reconhecer qual segredo representa seu segredo no futuro.
      • Selecione o repositório de certificados apropriado para o conector que usa o certificado. Por exemplo, lista de confiança do OPC UA.

      Captura de tela que mostra a opção Carregar certificado ao adicionar um novo certificado à página de dispositivos.

      Observação

      Apenas carregar o certificado não adicionará o segredo ao Azure Key Vault e não sincronizará com o cluster, você deve selecionar Aplicar, para que as alterações sejam aplicadas.

    • Adicionar do Azure Key Vault: Adicionar um segredo existente do Azure Key Vault para ser sincronizado com o cluster.

      Captura de tela que mostra a opção Adicionar do Azure Key Vault ao adicionar um novo certificado à página de dispositivos.

      Observação

      Selecione o segredo que contém o certificado que você deseja sincronizar com o cluster. Selecionar um segredo que não é o certificado correto faz com que a conexão falhe.

  6. Usando a exibição de lista, você pode gerenciar os certificados sincronizados. Você pode exibir todos os certificados sincronizados e qual repositório de certificados ele é sincronizado para:

    Captura de tela que mostra a lista de certificados na página de dispositivos e como filtrar por Lista de Confiabilidade e Lista de Emissores.

Para saber mais sobre como os certificados de confiança são gerenciados para conectores específicos, consulte a documentação de gerenciamento de certificados específica do conector.

Você também pode excluir certificados sincronizados. Quando você exclui um certificado sincronizado, ele exclui apenas o certificado sincronizado do cluster kubernetes e não exclui a referência secreta contida do Azure Key Vault. Você deve excluir o segredo do certificado manualmente do cofre de chaves.