Beveiligde instellingen inschakelen in azure IoT Operations-implementatie
De beveiligde instellingen voor Azure IoT-bewerkingen omvatten de installatie van geheimenbeheer en een door de gebruiker toegewezen beheerde identiteit voor cloudverbindingen; Bijvoorbeeld een OPC UA-server of gegevensstroomeindpunten.
Dit artikel bevat instructies voor het inschakelen van beveiligde instellingen als u dit niet hebt gedaan tijdens de eerste implementatie.
Vereisten
Een Azure IoT Operations-exemplaar dat is geïmplementeerd met testinstellingen. Volg bijvoorbeeld de instructies in quickstart: Azure IoT Operations Preview uitvoeren in GitHub Codespaces.
Azure CLI is geïnstalleerd op uw ontwikkelcomputer. Voor dit scenario is Azure CLI versie 2.64.0 of hoger vereist. Gebruik
az --version
deze optie om uw versie te controleren enaz upgrade
zo nodig bij te werken. Zie De Azure CLI installeren voor meer informatie.De nieuwste versies van de volgende extensies voor de Azure CLI:
az extension add --upgrade --name azure-iot-ops az extension add --upgrade --name connectedk8s
Een cluster configureren voor een workloadidentiteit
Een workloadidentiteit is een identiteit die u toewijst aan een softwareworkload (zoals een toepassing, service, script of container) om andere services en resources te verifiëren en te openen. De functie voor workloadidentiteit moet zijn ingeschakeld op uw cluster, zodat de Azure Key Vault Secret Store-extensie voor Kubernetes en Azure IoT Operations toegang heeft tot met Microsoft Entra ID beveiligde resources. Zie Wat zijn workloadidentiteiten? voor meer informatie.
Notitie
Deze stap is alleen van toepassing op Ubuntu + K3s-clusters. Met het quickstartscript voor Azure Kubernetes Service (AKS) Edge Essentials dat wordt gebruikt in Het Kubernetes-cluster met Azure Arc voorbereiden, wordt standaard een workloadidentiteit ingeschakeld. Als u een AKS Edge Essentials-cluster hebt, gaat u verder met de volgende sectie.
Als u niet zeker weet of uw K3s-cluster al workloadidentiteit heeft ingeschakeld, voert u de opdracht az connectedk8s show uit om het volgende te controleren:
az connectedk8s show --name <CLUSTER_NAME> --resource-group <RESOURCE_GROUP> --query "{oidcIssuerEnabled:oidcIssuerProfile.enabled, workloadIdentityEnabled: securityProfile.workloadIdentity.enabled}"
Een workloadidentiteit inschakelen voor een bestaand verbonden K3s-cluster:
Gebruik de opdracht az connectedk8s update om de functie workloadidentiteit in te schakelen op het cluster:
#!/bin/bash # Variable block RESOURCE_GROUP="<RESOURCE_GROUP>" CLUSTER_NAME="<CLUSTER_NAME>" # Enable a workload identity az connectedk8s update --resource-group $RESOURCE_GROUP \ --name $CLUSTER_NAME \ --enable-oidc-issuer --enable-workload-identity
Gebruik de opdracht az connectedk8s show om de URL van de verlener van het cluster op te halen. U voegt de URL later toe in het K3s-configuratiebestand.
#!/bin/bash # Variable block RESOURCE_GROUP="<RESOURCE_GROUP>" CLUSTER_NAME="<CLUSTER_NAME>" # Get the cluster's issuer URL SERVICE_ACCOUNT_ISSUER=$(az connectedk8s show --resource-group $RESOURCE_GROUP --name $CLUSTER_NAME --query oidcIssuerProfile.issuerUrl --output tsv) echo "SERVICE_ACCOUNT_ISSUER = $SERVICE_ACCOUNT_ISSUER"
Een K3s-configuratiebestand maken:
sudo nano /etc/rancher/k3s/config.yaml
Voeg de volgende inhoud toe aan het bestand config.yaml:
kube-apiserver-arg: - service-account-issuer=<SERVICE_ACCOUNT_ISSUER> - service-account-max-token-expiration=24h
Sla de bestandseditor op en sluit deze.
Start k3s opnieuw op:
systemctl restart k3s
Geheimenbeheer instellen
Geheimenbeheer voor Azure IoT Operations maakt gebruik van de extensie Secret Store om de geheimen van een Azure-sleutelkluis te synchroniseren en op te slaan op de rand als Kubernetes-geheimen. De Secret Store-extensie vereist een door de gebruiker toegewezen beheerde identiteit met toegang tot de Azure-sleutelkluis waar geheimen worden opgeslagen. Zie Wat zijn beheerde identiteiten voor Azure-resources? voor meer informatie.
Geheimenbeheer instellen:
Maak een Azure-sleutelkluis die wordt gebruikt voor het opslaan van geheimen en geef uw gebruikersaccount machtigingen voor het beheren van geheimen met de
Key Vault Secrets Officer
rol.Maak een door de gebruiker toegewezen beheerde identiteit voor de extensie Secret Store.
Gebruik de opdracht az iot ops secretsync enable om het Azure IoT Operations-exemplaar in te stellen voor geheime synchronisatie. Met deze opdracht gebeurt het volgende:
- Hiermee maakt u een federatieve identiteitsreferentie met behulp van de door de gebruiker toegewezen beheerde identiteit.
- Voegt een roltoewijzing toe aan de door de gebruiker toegewezen beheerde identiteit voor toegang tot de Azure-sleutelkluis.
- Voegt een minimale geheime providerklasse toe die is gekoppeld aan het Azure IoT Operations-exemplaar.
# 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 het instellen van geheimsynchronisatie is voltooid, kunt u verwijzen naar Geheimen beheren voor uw Azure IoT Operations Preview-implementatie voor meer informatie over het gebruik van geheimen met Azure IoT Operations.
Een door de gebruiker toegewezen beheerde identiteit instellen voor cloudverbindingen
Sommige Azure IoT Operations-onderdelen, zoals gegevensstroomeindpunten, gebruiken een door de gebruiker toegewezen beheerde identiteit voor cloudverbindingen. U wordt aangeraden een afzonderlijke identiteit te gebruiken van de identiteit die u hebt gebruikt voor het instellen van geheimenbeheer.
Maak een door de gebruiker toegewezen beheerde identiteit die wordt gebruikt voor cloudverbindingen.
Notitie
U moet de identiteit machtigen voor de cloudresource waarvoor u de beheerde identiteit gebruikt.
Gebruik de opdracht az iot ops identity assign om de identiteit toe te wijzen aan het Azure IoT Operations-exemplaar. Met deze opdracht maakt u ook een federatieve identiteitsreferentie met behulp van de OIDC-verlener van het aangegeven verbonden cluster en het Azure IoT Operations-serviceaccount.
# 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_ID
U kunt deze beheerde identiteit nu gebruiken in gegevensstroomeindpunten voor cloudverbindingen.