Gerenciar segredos usando o Azure Key Vault ou segredos do Kubernetes no Azure IoT MQ Preview
Importante
Azure IoT Operations Preview – habilitado pelo Azure Arc está atualmente em visualização. Não deve utilizar este software de pré-visualização em ambientes de produção.
Veja Termos de Utilização Complementares da Pré-visualizações do Microsoft Azure para obter os termos legais que se aplicam às funcionalidades do Azure que estão na versão beta, na pré-visualização ou que ainda não foram lançadas para disponibilidade geral.
Você pode usar o Azure Key Vault para gerenciar segredos para seu agente MQTT distribuído do Azure IoT MQ Preview em vez de segredos do Kubernetes. Este artigo mostra como configurar o Key Vault para seu corretor e usá-lo para gerenciar segredos.
Pré-requisitos
Uma instância do Azure Key Vault com um segredo.
Uma entidade de serviço do Microsoft Entra com
get
elist
permissões para segredos na instância do Cofre de Chaves. Para configurar a entidade de serviço para permissões do Cofre da Chave, consulte Atribuir uma política de acesso ao Cofre da Chave.Um segredo do Kubernetes com as credenciais da entidade de serviço, como este exemplo com o segredo padrão
aio-akv-sp
:apiVersion: v1 kind: Secret metadata: name: aio-akv-sp namespace: azure-iot-operations type: Opaque data: clientid: <base64 encoded client id> clientsecret: <base64 encoded client secret>
Usar o Azure Key Vault para gerenciamento de segredos
O keyVault
campo está disponível sempre que os segredos do Kubernetes (secretName
) são usados. A tabela a keyVault
seguir descreve as propriedades do campo.
Property | Necessário | Description |
---|---|---|
cofre | Sim | Especifica o Cofre da Chave do Azure que contém os segredos. |
vault.name | Sim | Especifica o nome do Cofre da Chave do Azure. Para obter o nome do Cofre da Chave do portal do Azure, navegue até a instância do Cofre da Chave 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 Cofre da Chave e copie a ID do locatário na 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 [en] | Sim, ao usar segredos regulares do Cofre da Chave | Especifica o segredo no Cofre da Chave do Azure. |
vaultSecret.name | Sim | Especifica o nome do segredo. |
vaultSecret.version | Não | Especifica a versão do segredo. |
vaultCert | Sim, ao usar certificados do Cofre da Chave | Especifica o certificado no Cofre da Chave do Azure. |
vaultCert.name | Sim | Especifica o nome do segredo do certificado. |
vaultCert.versão | Não | Especifica a versão do segredo do certificado. |
cofreCaChainSecret | Sim, ao usar a cadeia de certificados | Especifica a cadeia de certificados no Cofre da Chave do Azure. |
vaultCaChainSecret.name | Sim | Especifica o nome da cadeia de certificados. |
vaultCaChainSecret.version | Não | Especifica a versão da cadeia de certificados. |
nome de utilizador | Não | Usado apenas para o conector Kafka dos Hubs de Eventos, consulte Enviar e receber mensagens entre o Azure IoT MQ e Hubs de Eventos ou Kafka. |
O tipo de segredo que você está usando determina qual dos seguintes campos você pode usar:
vaultSecret
: Use este campo quando estiver usando um segredo normal. Por exemplo, você pode usar este campo para configurar um recurso BrokerAuthentication com ousernamePassword
campo.vaultCert
: Use este campo quando estiver usando o segredo do tipo de certificado com certificado e chave do cliente. Por exemplo, você pode usar esse campo para habilitar o TLS em um BrokerListener.vaultCaChainSecret
: Use este 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 oremoteBrokerConnection
campo. Para usar esse campo, importe certificados X.509 sem chaves privadas no formato PEM como um segredo regular de várias linhas (não do tipo certificado) para o Cofre de Chaves. Este campo deve ser usado além de que tem o certificado dovaultCert
cliente e chave privada.
Exemplos
Por exemplo, para criar um TLS BrokerListener 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...
Este próximo exemplo mostra como usar o Azure Key Vault para o usernamePassword
campo 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...
Este exemplo mostra como usar o Azure Key Vault para credenciais de agente remoto de ponte 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...