Sdílet prostřednictvím


Správa tajných kódů pomocí služby Azure Key Vault nebo tajných kódů Kubernetes ve službě Azure IoT MQ Preview

Důležité

Azure IoT Operations Preview – Služba Azure Arc je aktuálně ve verzi PREVIEW. Tento software ve verzi Preview byste neměli používat v produkčních prostředích.

Právní podmínky, které platí pro funkce Azure, které jsou ve verzi beta, verzi Preview nebo které zatím nejsou veřejně dostupné, najdete v Dodatečných podmínkách použití pro Microsoft Azure verze Preview.

Službu Azure Key Vault můžete použít ke správě tajných kódů pro distribuovaného zprostředkovatele MQTT MQT Ve verzi Azure IoT Preview místo tajných kódů Kubernetes. V tomto článku se dozvíte, jak nastavit službu Key Vault pro svého zprostředkovatele a jak ji používat ke správě tajných kódů.

Požadavky

  • Instance služby Azure Key Vault s tajným kódem.

  • Instanční objekt Microsoft Entra s oprávněními getlist pro tajné kódy v instanci služby Key Vault. Pokud chcete nakonfigurovat instanční objekt pro oprávnění služby Key Vault, přečtěte si téma Přiřazení zásad přístupu ke službě Key Vault.

  • Tajný kód Kubernetes s přihlašovacími údaji instančního objektu, jako je tento příklad s výchozím aio-akv-sp tajným kódem:

    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>
    
  • Zprostředkovatel služby Azure Key Vault pro ovladač CSI úložiště tajných kódů

Použití služby Azure Key Vault ke správě tajných kódů

Pole keyVault je dostupné všude, kde se používají tajné kódy Kubernetes (secretName). Následující tabulka popisuje vlastnosti keyVault pole.

Vlastnost Požadováno Popis
Trezor Ano Určuje službu Azure Key Vault, která obsahuje tajné kódy.
vault.name Ano Určuje název služby Azure Key Vault. Pokud chcete získat název služby Key Vault z webu Azure Portal, přejděte do instance služby Key Vault a zkopírujte název ze stránky Přehled.
vault.directoryId Ano Určuje ID tenanta Microsoft Entra. Pokud chcete získat ID tenanta z webu Azure Portal, přejděte do instance služby Key Vault a zkopírujte ID tenanta ze stránky Přehled.
vault.credentials.servicePrincipalLocalSecretName Ano Určuje název tajného klíče, který obsahuje přihlašovací údaje instančního objektu.
vaultSecret Ano, pokud používáte běžné tajné kódy služby Key Vault Určuje tajný klíč ve službě Azure Key Vault.
vaultSecret.name Ano Určuje název tajného kódu.
vaultSecret.version No Určuje verzi tajného kódu.
vaultCert Ano, pokud používáte certifikáty služby Key Vault Určuje certifikát ve službě Azure Key Vault.
vaultCert.name Ano Určuje název tajného klíče certifikátu.
vaultCert.version No Určuje verzi tajného kódu certifikátu.
vaultCaChainSecret Ano, při použití řetězu certifikátů Určuje řetěz certifikátů ve službě Azure Key Vault.
vaultCaChainSecret.name Ano Určuje název řetězu certifikátů.
vaultCaChainSecret.version No Určuje verzi řetězu certifikátů.
username No Používá se jenom pro konektor Event Hubs Kafka, viz Odesílání a příjem zpráv mezi Azure IoT MQ a Event Hubs nebo Kafka.

Typ tajného kódu, který používáte, určuje, která z následujících polí můžete použít:

  • vaultSecret: Toto pole použijte, když používáte běžný tajný kód. Toto pole můžete například použít ke konfiguraci prostředku BrokerAuthentication s tímto polem usernamePassword .
  • vaultCert: Toto pole použijte, pokud používáte tajný klíč typu certifikátu s klientským certifikátem a klíčem. Toto pole můžete například použít k povolení protokolu TLS na BrokerListener.
  • vaultCaChainSecret: Toto pole použijte, pokud potřebujete předložit úplný řetěz certifikátů se všemi nadbytečnými zprostředkujícími nebo kořenovými certifikáty na vzdálený server. Toto pole můžete například použít ke konfiguraci prostředku MqttBridge Připojení or s tímto polemremoteBrokerConnection. Pokud chcete toto pole použít, importujte certifikáty X.509 bez privátních klíčů ve formátu PEM jako víceřádkový běžný tajný klíč (ne typ certifikátu) do služby Key Vault. Toto pole by mělo být použito kromě vaultCert klientského certifikátu a privátního klíče.

Příklady

Pokud například chcete vytvořit zprostředkovatele TLS BrokerListener , který pro tajný certifikát serveru používá Azure Key Vault, použijte následující 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...

Tento další příklad ukazuje, jak použít Azure Key Vault pro usernamePassword pole v prostředku 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...

Tento příklad ukazuje, jak používat Azure Key Vault pro přihlašovací údaje vzdáleného zprostředkovatele 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...