Compartilhar via


Gerenciar segredos usando segredos do Azure Key Vault ou do Kubernetes na Internet das Coisas do Azure MQ Versão Prévia

Importante

O recurso Pré-visualização de Operações do Azure IoT — habilitado pelo Azure Arc — está atualmente em VERSÃO PRÉVIA. Você não deve usar esse software em versão prévia em ambientes de produção.

Veja os Termos de Uso Complementares para Versões Prévias do Microsoft Azure para obter termos legais que se aplicam aos recursos do Azure que estão em versão beta, versão prévia ou que, de outra forma, ainda não foram lançados em disponibilidade geral.

Você pode usar o Azure Key Vault para gerenciar segredos para seu agente MQTT distribuído da Internet das Coisas do Azure MQ Versão Prévia em vez de segredos do Kubernetes. Esse artigo mostra como configurar o Key Vault para seu agente e usá-lo para gerenciar segredos.

Pré-requisitos

Usar o Azure Key Vault para gerenciamento de segredos

O campo keyVault está disponível onde quer que os segredos do Kubernetes (secretName) sejam usados. A tabela a seguir descreve as propriedades do campo keyVault.

Propriedade Obrigatório Descrição
cofre Sim Especifica o Azure Key Vault que contém os segredos.
vault.name Sim Especifica o nome do Azure Key Vault. Para obter o nome do Key Vault no portal do Azure, navegue até a instância do Key Vault e copie o nome da página visão geral.
vault.directoryId Sim Especifica a ID do locatário do Microsoft Entra. Para obter a ID do locatário do portal do Azure, navegue até a instância do Key Vault e copie a ID do locatário da página Visão geral.
vault.credentials.servicePrincipalLocalSecretName Sim Especifica o nome do segredo que contém as credenciais da entidade de serviço.
vaultSecret Sim, ao usar segredos regulares do Key Vault Especifica o segredo no Azure Key Vault.
vaultSecret.name Sim Especifica o nome da saída.
vaultSecret.version Não Especifica a versão do segredo.
vaultCert Sim, ao usar certificados do Key Vault Especifica o certificado no Azure Key Vault.
vaultCert.name Yes Especifica o nome do segredo do certificado.
vaultCert.version Não Especifica a versão do segredo do certificado.
vaultCaChainSecret Sim, ao usar a cadeia de certificados Especifica a cadeia de certificados no Azure Key Vault.
vaultCaChainSecret.name Yes Especifica o nome da cadeia de certificados.
vaultCaChainSecret.version Não Especifica a versão da cadeia de certificados.
Nome de Usuário Não Usado apenas para conector Kafka de Hubs de Eventos, consulte Enviar e receber mensagens entre a Internet das Coisas do Azure MQ e Hubs de Eventos ou Kafka.

O tipo de segredo que você está usando determina quais dos seguintes campos você poderá usar:

  • vaultSecret: use esse campo quando estiver usando um segredo regular. Por exemplo, você pode usar esse campo para configurar um recurso BrokerAuthentication com o campo usernamePassword.
  • vaultCert: use esse campo quando estiver usando o segredo do tipo de certificado com o certificado e a chave do cliente. Por exemplo, você pode usar esse campo para habilitar o TLS em um BrokerListener.
  • vaultCaChainSecret: use esse campo quando precisar apresentar uma cadeia de certificados completa, com todos os certificados intermediários ou raiz extras, ao servidor remoto. Por exemplo, você pode usar esse campo para configurar um recurso MqttBridgeConnector com o campo remoteBrokerConnection. Para usar esse campo, importe certificados X.509 sem chaves privadas no formato PEM como um segredo regular de várias linhas (não tipo de certificado) para o Key Vault. Esse campo deve ser usado além de vaultCert que tem o certificado do cliente e a chave privada.

Exemplos

Por exemplo, para criar um BrokerListener do TLS que usa o Azure Key Vault para secretar o certificado do servidor, use o seguinte YAML:

apiVersion: mq.iotoperations.azure.com/v1beta1
kind: BrokerListener
metadata:
  name: tls-listener-manual
  namespace: azure-iot-operations
spec:
  brokerRef: broker
  authenticationEnabled: true
  authorizationEnabled: false
  port: 8883
  tls:
    keyVault:
      vault:
        name: my-key-vault
        directoryId: <AKV directory ID>
        credentials:
          servicePrincipalLocalSecretName: aio-akv-sp
      vaultCert:
        name: my-server-certificate
        # version: 939ecc2...

Esse próximo exemplo mostra como usar o Azure Key Vault para o campo usernamePassword em um recurso BrokerAuthentication:

apiVersion: mq.iotoperations.azure.com/v1beta1
kind: BrokerAuthentication
metadata:
  name: my-authentication
  namespace: azure-iot-operations
spec:
  listenerRef: 
    - tls-listener-manual
  authenicationMethods:
    - usernamePassword:
        keyVault:
          vault:
            name: my-key-vault
            directoryId: <AKV directory ID>
            credentials:
              servicePrincipalLocalSecretName: aio-akv-sp
          vaultSecret:
            name: my-username-password-db
            # version: 939ecc2...

Esse exemplo mostra como usar as credenciais do agente remoto da ponte do Azure Key Vault para MQTT:

apiVersion: mq.iotoperations.azure.com/v1beta1
kind: MqttBridgeConnector
metadata:
  name: my-bridge
  namespace: azure-iot-operations
spec:
  image:
    repository: mcr.microsoft.com/azureiotoperations/mqttbridge
    tag: 0.4.0-preview
    pullPolicy: IfNotPresent
  protocol: v5
  bridgeInstances: 1
  remoteBrokerConnection:
    endpoint: example.broker.endpoint:8883
    tls:
      tlsEnabled: true
      trustedCaCertificateConfigMap: my-ca-certificate
    authentication:
      x509:
        keyVault:
          vault:
            name: my-key-vault
            directoryId: <AKV directory ID>
            credentials:
              servicePrincipalLocalSecretName: aio-akv-sp
          vaultCaChainSecret:
            name: my-remote-broker-certificate
            # version: 939ecc2...