Bagikan melalui


Mengelola rahasia menggunakan rahasia Azure Key Vault atau Kubernetes di Pratinjau Azure IoT MQ

Penting

Pratinjau Operasi Azure IoT – diaktifkan oleh Azure Arc saat ini dalam PRATINJAU. Anda tidak boleh menggunakan perangkat lunak pratinjau ini di lingkungan produksi.

Lihat Ketentuan Penggunaan Tambahan untuk Pratinjau Microsoft Azure untuk persyaratan hukum yang berlaku pada fitur Azure dalam versi beta, pratinjau, atau belum dirilis secara umum.

Anda dapat menggunakan Azure Key Vault untuk mengelola rahasia untuk broker MQTT terdistribusi Pratinjau Azure IoT MQ, bukan rahasia Kubernetes. Artikel ini menunjukkan kepada Anda cara menyiapkan Key Vault untuk broker Anda dan menggunakannya untuk mengelola rahasia.

Prasyarat

  • Instans Azure Key Vault dengan rahasia.

  • Perwakilan layanan Microsoft Entra dengan get izin dan list untuk rahasia dalam instans Key Vault. Untuk mengonfigurasi perwakilan layanan untuk izin Key Vault, lihat Menetapkan kebijakan akses Key Vault.

  • Rahasia Kubernetes dengan kredensial perwakilan layanan, seperti contoh ini dengan rahasia default 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>
    
  • Penyedia Azure Key Vault untuk Driver Secrets Store CSI

Menggunakan Azure Key Vault untuk manajemen rahasia

Bidang keyVault ini tersedia di mana pun rahasia Kubernetes (secretName) digunakan. Tabel berikut ini menjelaskan properti keyVault bidang .

Properti Diperlukan Deskripsi
vault Ya Menentukan Azure Key Vault yang berisi rahasia.
vault.name Ya Menentukan nama Azure Key Vault. Untuk mendapatkan nama Key Vault dari portal Azure, navigasikan ke instans Key Vault dan salin nama dari halaman Gambaran Umum.
vault.directoryId Ya Menentukan ID penyewa Microsoft Entra. Untuk mendapatkan ID penyewa dari portal Azure, navigasikan ke instans Key Vault dan salin ID penyewa dari halaman Gambaran Umum.
vault.credentials.servicePrincipalLocalSecretName Ya Menentukan nama rahasia yang berisi kredensial perwakilan layanan.
vaultSecret Ya, saat menggunakan rahasia Key Vault biasa Menentukan rahasia di Azure Key Vault.
vaultSecret.name Ya Menentukan nama rahasia.
vaultSecret.version No Menentukan versi rahasia.
vaultCert Ya, saat menggunakan sertifikat Key Vault Menentukan sertifikat di Azure Key Vault.
vaultCert.name Ya Menentukan nama rahasia sertifikat.
vaultCert.version No Menentukan versi rahasia sertifikat.
vaultCaChainSecret Ya, saat menggunakan rantai sertifikat Menentukan rantai sertifikat di Azure Key Vault.
vaultCaChainSecret.name Ya Menentukan nama rantai sertifikat.
vaultCaChainSecret.version No Menentukan versi rantai sertifikat.
Nama pengguna No Hanya digunakan untuk konektor Azure Event Hubs Kafka, lihat Mengirim dan menerima pesan antara Azure IoT MQ dan Azure Event Hubs atau Kafka.

Jenis rahasia yang Anda gunakan menentukan bidang mana yang bisa Anda gunakan:

  • vaultSecret: Gunakan bidang ini saat Anda menggunakan rahasia biasa. Misalnya, Anda dapat menggunakan bidang ini untuk mengonfigurasi sumber daya BrokerAuthentication dengan usernamePassword bidang .
  • vaultCert: Gunakan bidang ini saat Anda menggunakan rahasia jenis sertifikat dengan sertifikat dan kunci klien. Misalnya, Anda dapat menggunakan bidang ini untuk mengaktifkan TLS pada BrokerListener.
  • vaultCaChainSecret: Gunakan bidang ini saat Anda perlu menyajikan rantai sertifikat lengkap, dengan semua sertifikat perantara atau akar tambahan, ke server jarak jauh. Misalnya, Anda dapat menggunakan bidang ini untuk mengonfigurasi sumber daya MqttBridge Koneksi or dengan remoteBrokerConnection bidang . Untuk menggunakan bidang ini, impor sertifikat X.509 tanpa kunci privat dalam format PEM sebagai rahasia reguler multibaris (bukan jenis sertifikat) ke Key Vault. Bidang ini harus digunakan selain vaultCert yang memiliki sertifikat klien dan kunci privat.

Contoh

Misalnya, untuk membuat TLS BrokerListener yang menggunakan Azure Key Vault untuk rahasia sertifikat server, gunakan YAML berikut:

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...

Contoh berikutnya ini menunjukkan cara menggunakan Azure Key Vault untuk usernamePassword bidang dalam sumber daya 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...

Contoh ini menunjukkan cara menggunakan Azure Key Vault untuk info masuk broker jarak jauh jembatan 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...