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
Uma instância do Azure Key Vault com um certificado.
Uma entidade de serviço do Microsoft Entra com permissões
get
elist
para segredos na instância do Key Vault. Para configurar a entidade de serviço para permissões do Key Vault, consulte Atribuir uma política de acesso do Key Vault.Um segredo do Kubernetes com as credenciais da entidade de serviço, como este exemplo com o segredo
aio-akv-sp
padrão: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>
O Provedor do Azure Key Vault para Driver do CSI de Armazenamento de Segredos
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 campousernamePassword
.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 camporemoteBrokerConnection
. 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 devaultCert
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...