Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
De säkra inställningarna för Azure IoT Operations omfattar konfiguration av hantering av hemligheter och en användartilldelad hanterad identitet för molnanslutningar, till exempel en OPC UA-server eller dataflödesslutpunkter.
Den här artikeln innehåller instruktioner för att aktivera säkra inställningar om du inte gjorde det under den första distributionen.
Förutsättningar
- En instans av Azure IoT Operations utplacerad med testinställningar.
Azure CLI installerat på utvecklingsdatorn. Kontrollera tillgängliga Azure CLI-tillägg för den minsta versionen som krävs för att använda azure-iot-ops-tillägget. Använd
az --versionför att kontrollera din version ochaz upgradeuppdatera om det behövs. Mer information finns i Installera Azure CLI.Tillägget Azure IoT Operations för Azure CLI. Använd följande kommando för att lägga till tillägget eller uppdatera det till den senaste versionen:
az extension add --upgrade --name azure-iot-ops
Den senaste versionen av tillägget connectedk8s för Azure CLI. Använd följande kommando för att lägga till tillägget eller uppdatera det till den senaste versionen:
az extension add --upgrade --name connectedk8s
De Azure CLI exemplen i denna artikel använder miljövariabler så att du kan sätta varje värde en gång och sedan kopiera och klistra in kommandona as-is. Om du använder Azure IoT Operations Codespaces-miljön från quickstart är dessa variabler redan inställda för dig och du kan hoppa över detta steg. Annars, ställ in följande miljövariabler i ditt skal innan du kör kommandona.
Följande skript anger de mest använda miljövariablerna:
| Miljövariabel | Beskrivning |
|---|---|
SUBSCRIPTION_ID |
ID:t för prenumerationen som innehåller din Azure IoT Operations-instans. |
RESOURCE_GROUP |
Namnet på resursgruppen som innehåller din Azure IoT Operations-instans. |
AIO_INSTANCE_NAME |
Namnet på din Azure IoT Operations-instans. För att lista dina instanser, kör az iot ops list -o table. |
CLUSTER_NAME |
Namnet på det Azure Arc-aktiverade Kubernetes-klustret som hostar din instans. |
LOCATION |
Azure-regionen att använda för nya resurser, till exempel eastus. |
SUBSCRIPTION_ID=<subscription-id>
RESOURCE_GROUP=<resource-group-name>
AIO_INSTANCE_NAME=<instance-name>
CLUSTER_NAME=<cluster-name>
LOCATION=<region>
Du behöver bara ställa in de variabler som denna artikel använder. Den här artikeln kan använda ytterligare miljövariabler för resursnamn som du väljer. Artikeln förklarar hur man placerar dem där de introduceras.
Aktivera klustret för säkra inställningar
Om du vill aktivera synkronisering av hemligheter för din Azure IoT Operations-instans måste OIDC-utfärdaren och arbetsbelastningsidentitetsfederationsfunktionerna vara aktiverade i klustret. Den här konfigurationen krävs för att Azure Key Vault Secret Store-tillägget ska synkronisera hemligheterna från ett Azure Key Vault och lagra dem på gränsen som Kubernetes-hemligheter.
För Azure Kubernetes Service (AKS)-kluster kan du aktivera OIDC-utfärdaren och arbetsbelastningsidentitetsfunktionerna när du skapar klustret eller på ett befintligt kluster. För mer information, se Deploy and configure Microsoft Entra Workload ID på ett AKS-kluster. För kluster på AKS Edge Essentials aktiverar det automatiserade skriptet dessa funktioner som standard. För AKS-kluster i Azure Local följer du stegen för att distribuera och konfigurera arbetsbelastningsidentitet på en AKS som aktiveras av Azure Arc-kluster för att skapa ett nytt kluster om du inte har någon med de funktioner som krävs.
För k3s-kluster på Kubernetes kan du uppdatera ett befintligt kluster. Använd följande steg för att aktivera och konfigurera dessa funktioner:
Uppdatera klustret för att aktivera OIDC-utfärdaren och arbetsbelastningens identitet.
az connectedk8s update -n $CLUSTER_NAME -g $RESOURCE_GROUP --enable-oidc-issuer --enable-workload-identityOm du aktiverade OIDC-utfärdaren och arbetsbelastningsidentitetsfunktionerna när du skapade klustret behöver du inte köra föregående kommando igen. Använd följande kommando för att kontrollera statusen för OIDC-utfärdaren och funktionerna för arbetsbelastningsidentitet i ditt kluster.
az connectedk8s show -g $RESOURCE_GROUP -n $CLUSTER_NAME --query "{ClusterName:name, OIDCIssuerEnabled:oidcIssuerProfile.enabled, WorkloadIdentityEnabled:securityProfile.workloadIdentity.enabled}"Hämta klustrets utfärdar-URL.
az connectedk8s show -g $RESOURCE_GROUP -n $CLUSTER_NAME --query oidcIssuerProfile.issuerUrl --output tsvAnteckna utdata från det här kommandot som ska användas i nästa steg.
Skapa konfigurationsfilen k3s på datorn där du distribuerade Kubernetes-klustret:
sudo nano /etc/rancher/k3s/config.yamlLägg till följande innehåll i
config.yaml-filen och ersätt<SERVICE_ACCOUNT_ISSUER>-platshållaren med den URL för klusterutfärdaren som du antecknade tidigare.kube-apiserver-arg: - service-account-issuer=<SERVICE_ACCOUNT_ISSUER> - service-account-max-token-expiration=24hSpara filen och avsluta Nano-redigeraren.
Starta om k3s-tjänsten:
sudo systemctl restart k3s
Konfigurera hantering av hemligheter
Hemlighetshantering för Azure IoT Operations använder Secret Store-tillägget för att synkronisera hemligheterna från ett Azure Key Vault och lagra dem på gränsen som Kubernetes-hemligheter. Secret Store-tillägget kräver en användartilldelad hanterad identitet med åtkomst till Azure Key Vault där hemligheter lagras. Mer information finns i Vad är hanterade identiteter för Azure-resurser?
Så här konfigurerar du hantering av hemligheter:
Skapa en Azure Key Vault för att lagra hemligheter och ge ditt användarkonto behörighet att hantera hemligheter genom att tilldela rollen
Key Vault Secrets Officer. Se till att ditt nyckelvalv använder Azure rollbaserad åtkomstkontroll som sin behörighetsmodell. För att kontrollera denna inställning i Azure-portalen, välj ditt nyckelvalv och välj sedan Settings>Access configuration.Skapa en användartilldelad hanterad identitet för secret store-tillägget som ska användas för att komma åt nyckelvalvet.
Använd kommandot az iot ops secretsync enable för att konfigurera Azure IoT Operations instans för hemlig synkronisering. Det här kommandot:
- Skapar en federerad identitetsautentiseringsuppgift med hjälp av den användartilldelade hanterade identiteten.
- Lägger till en rolltilldelning till den användartilldelade hanterade identiteten för åtkomst till Azure Key Vault.
- Lägger till en lägsta hemlighetsproviderklass som är associerad med Azure IoT Operations-instansen.
# Variable block AIO_INSTANCE_NAME="<AIO_INSTANCE_NAME>" RESOURCE_GROUP="<RESOURCE_GROUP>" USER_ASSIGNED_MI_NAME="<USER_ASSIGNED_MI_NAME>" KEYVAULT_NAME="<KEYVAULT_NAME>" #Get the resource ID of the user-assigned managed identity USER_ASSIGNED_MI_RESOURCE_ID=$(az identity show --name $USER_ASSIGNED_MI_NAME --resource-group $RESOURCE_GROUP --query id --output tsv) #Get the resource ID of the key vault KEYVAULT_RESOURCE_ID=$(az keyvault show --name $KEYVAULT_NAME --resource-group $RESOURCE_GROUP --query id --output tsv) #Enable secret synchronization az iot ops secretsync enable --instance $AIO_INSTANCE_NAME \ --resource-group $RESOURCE_GROUP \ --mi-user-assigned $USER_ASSIGNED_MI_RESOURCE_ID \ --kv-resource-id $KEYVAULT_RESOURCE_ID
Nu när installationen av hemlig synkronisering är klar kan du läsa Hantera hemligheter för din Azure IoT Operations-distribution för att lära dig hur du använder hemligheter med Azure IoT Operations.
Konfigurera en användartilldelad hanterad identitet för molnanslutningar
Vissa Azure IoT Operations-komponenter, till exempel slutpunkter för dataflöde, använder en användartilldelad hanterad identitet för molnanslutningar. Vi rekommenderar att du använder en separat identitet från den som du använde för att konfigurera hantering av hemligheter.
Skapa en användartilldelad hanterad identitet som används för molnanslutningar.
Note
Du måste ge identiteten behörighet till den molnresurs som du ska använda den hanterade identiteten för.
Använd kommandot az iot ops identity assign för att tilldela identiteten till Azure IoT Operations-instansen. Det här kommandot skapar också en federerad identitetsautentiseringsuppgift med hjälp av OIDC-utfärdaren av det angivna anslutna klustret och Azure IoT Operations-tjänstkontot.
Important
Standardversionen av det här kommandot tilldelar en identitet för dataflöden. Om du planerar att använda dataflödesdiagram ska du inkludera parametern
--usagemed värdetwasm-graph.# Variable block AIO_INSTANCE_NAME="<AIO_INSTANCE_NAME>" RESOURCE_GROUP="<RESOURCE_GROUP>" USER_ASSIGNED_MI_NAME="<USER_ASSIGNED_MI_NAME FOR CLOUD CONNECTIONS>" #Get the resource ID of the user-assigned managed identity USER_ASSIGNED_MI_RESOURCE_ID=$(az identity show --name $USER_ASSIGNED_MI_NAME --resource-group $RESOURCE_GROUP --query id --output tsv) #Assign the identity to the Azure IoT Operations instance az iot ops identity assign --name $AIO_INSTANCE_NAME \ --resource-group $RESOURCE_GROUP \ --mi-user-assigned $USER_ASSIGNED_MI_RESOURCE_IDStarta om schemaregisterpoddarna för att tillämpa den nya identiteten.
kubectl rollout restart statefulset adr-schema-registry -n azure-iot-operations
Nu kan du använda den här hanterade identiteten i dataflödesslutpunkter för molnanslutningar.
Blockera poddåtkomst till Azure-instansmetadatatjänsten
När du distribuerar Azure IoT Operations med säkra inställningar på AKS rekommenderar Microsoft att du blockerar poddåtkomst till slutpunkten för Azure Instance Metadata Service. Information om hur du aktiverar den här funktionen finns i Blockera poddåtkomst till Azure IMDS-slutpunkten (Instance Metadata Service).