Partilhar via


Gerenciar certificados para sua implantação do Azure IoT Operations

O Azure IoT Operations usa TLS para criptografar a comunicação entre todos os componentes. Este artigo descreve como gerenciar certificados para comunicações internas e externas e como trazer seu próprio emissor de autoridade de certificação (CA) 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 o Azure IoT Operations com configurações de teste, primeiro precisará habilitar as configurações seguras.

Gerenciar certificados para comunicações internas

Todas as comunicações dentro das Operações IoT do Azure são criptografadas usando TLS. Para ajudá-lo a começar, o Azure IoT Operations é implantado com uma CA 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 o uso de seu próprio emissor de CA e uma solução PKI corporativa.

Emissor autoassinado padrão e certificado de CA raiz para certificados de servidor TLS

Para ajudá-lo a começar, o Azure IoT Operations é implantado com um emissor autoassinado padrão e um certificado de CA raiz para certificados de servidor TLS. Você pode usar esse emissor para desenvolvimento e testes. O Azure IoT Operations usa o cert-manager para gerenciar certificados TLS e o trust-manager para distribuir pacotes de confiança aos componentes.

  • O certificado da autoridade de certificação é autoassinado e não é confiável por nenhum cliente fora das Operações do Azure IoT. O assunto do certificado da autoridade de certificação é CN=Azure IoT Operations Quickstart Root CA - Not for Production. O certificado da autoridade de certificação é alternado automaticamente pelo cert-manager.

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

  • A parte pública do certificado de autoridade de certificação raiz é armazenada em um ConfigMap chamado azure-iot-operations-aio-ca-trust-bundle sob o azure-iot-operations namespace. Você pode recuperar o certificado da autoridade de certificação do ConfigMap e inspecioná-lo com kubectl e openssl. O ConfigMap é mantido atualizado pelo trust-manager quando o certificado da autoridade de certificação é girado 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á há um emissor configurado no azure-iot-operations namespace chamado azure-iot-operations-aio-certificate-issuer. Ele é usado como o emissor comum para todos os certificados de servidor TLS para operações IoT. O broker MQTT usa um emissor criado a partir do mesmo certificado de CA que é 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 o seu próprio emissor

Para implantações de produção, recomendamos que você configure as Operações do Azure IoT com uma PKI corporativa para gerenciar certificados e que traga seu próprio emissor de CA 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 do Azure IoT 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 o cluster para configurá-lo.

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

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

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

    O gerenciador de confiança é usado para distribuir um pacote de confiança aos componentes.

  4. Crie o namespace Azure IoT Operations.

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

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

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

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

    2. Obtenha a parte de 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 IoT do Azure para implantar, com algumas alterações.

    1. Adicione o parâmetro durante a preparação do --user-trust cluster. Por exemplo:

      az iot ops init --subscription <SUBSCRIPTION_ID> --cluster <CLUSTER_NAME>  -g <RESOURCE_GROUP> --user-trust
      
    2. Adicione o --trust-settings parâmetro com as informações necessárias durante a implantação das Operações IoT do Azure. 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

O Azure IoT Operations usa o Azure Key Vault como solução de cofre gerido na nuvem e usa a extensão Azure Key Vault Secret Store para Kubernetes para sincronizar os segredos a partir da nuvem e armazená-los na periferia como segredos do Kubernetes. Adicionas os teus certificados ao Azure Key Vault como segredos, e a extensão sincroniza-os com o edge como segredos Kubernetes.

Configurar permissões do Azure Key Vault

Para usar a experiência operacional para criar segredos no cofre de chaves, o utilizador necessita de permissões do Oficial de Segredos do Cofre de Chaves ao nível dos recursos no Azure.

Num ambiente de teste ou desenvolvimento, utilize os seguintes passos para atribuir o papel de Key Vault Secrets Officer ao seu utilizador ao nível do grupo de recursos onde as instâncias Azure IoT Operations e Azure Key Vault são implementadas:

  1. Para encontrar o nome do grupo de recursos, vá à interface web da experiência operacional , vá à página Instâncias e encontre a sua instância Azure IoT Operations. O nome do grupo de recursos é mostrado no campo do grupo de recursos .

  2. Vai ao portal Azure e depois ao grupo de recursos onde a tua instância Azure IoT Operations e Azure Key Vault estão implementadas.

    Sugestão

    Use a caixa de pesquisa no topo do portal Azure para encontrar rapidamente o grupo de recursos ao escrever o nome.

  3. Selecione controlo de acesso (IAM) no menu esquerdo. Depois selecciona + Adicionar > Adicionar atribuição de função.

  4. No separador Funções , selecione Oficial de Segredos do Cofre de Chaves da lista de funções e depois selecione Próximo.

  5. No separador de Membros , selecione Utilizador, grupo ou principal de serviço, selecione Selecionar membros, selecione o utilizador a quem quer atribuir a função de Oficial de Segredos do Cofre de Chaves e, de seguida, selecione Próximo.

  6. Selecione Rever + atribuir para concluir a atribuição de função.

Num ambiente de produção, siga as melhores práticas para proteger o Azure Key Vault que utiliza com o Azure IoT Operations. Para mais informações, consulte Melhores práticas para utilizar 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íficos do conector.

Ao implantar as Operações do Azure IoT com configurações seguras, você pode começar a adicionar certificados ao Cofre de Chaves do Azure e sincronizá-los com o cluster do Kubernetes a ser usado na lista de Confiança e nos armazenamentos de lista de Emissores para conexões externas.

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

  1. Vá para a experiência do Azure IoT Operations e escolha seu site e a instância do Azure IoT Operations.

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

  3. Clique em Gerenciar certificados e segredos.

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

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

    Captura de ecrã 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 Cofre de Chaves do Azure e sincronizado automaticamente com o cluster usando a extensão de Repositório Secreto.

      • Exiba os detalhes do certificado depois de carregado, para garantir que você tenha o certificado correto antes de adicionar ao Cofre de Chaves do Azure e sincronizar com o cluster.
      • Use um nome intuitivo para que você possa reconhecer qual segredo representa seu segredo no futuro.
      • Selecione o armazenamento de certificados apropriado para o conector que usa o certificado. Por exemplo, a lista de confiança OPC UA.

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

      Observação

      O simples carregamento do certificado não adicionará o segredo ao Cofre de Chaves do Azure nem o sincronizará com o cluster; é necessário selecionar Aplicar para que as alterações sejam efetuadas.

    • Adicionar do Cofre de Chaves do Azure: adicionar um segredo existente do Cofre de Chaves do Azure para ser sincronizado no cluster.

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

      Observação

      Certifique-se de selecionar 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 o modo de exibição de lista, você pode gerenciar os certificados sincronizados. Você pode exibir todos os certificados sincronizados e com qual armazenamento de certificados ele está sincronizado:

    Captura de ecrã que mostra a lista de certificados na página de dispositivos e como filtrar por Lista de Confiança 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íficos do conector.

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