Partilhar via


Gerenciamento de certificados para comunicação interna das Operações do Azure IoT

Toda a comunicação dentro das Operações IoT do Azure é criptografada 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 que funcione com sua PKI corporativa em vez de usar o emissor autoassinado padrão para emitir certificados TLS para comunicação interna.

Para configurar o Azure IoT Operations com seu próprio emissor, 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 o cert-manager. O Cert-manager gerencia certificados TLS.

  3. Instale o gerenciador 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>