IoT Edge-eszközbeállítások konfigurálása

Ez a cikk egy IoT Edge-eszköz IoT Edge /etc/aziot/config.toml fájljának konfigurálásának beállításait és beállításait mutatja be. Az IoT Edge a config.toml fájllal inicializálja az eszköz beállításait. A config.toml fájl egyes szakaszainak több lehetősége is van. Nem minden lehetőség kötelező, mivel adott forgatókönyvekre vonatkoznak.

Az összes lehetőséget tartalmazó sablon a config.toml.edge.template fájlban található az /etc/aziot könyvtárban egy IoT Edge-eszközön. A teljes sablon vagy a sablon szakaszai tartalmát átmásolhatja a config.toml fájlba. Bontsa ki a szükséges szakaszokat. Ügyeljen arra, hogy ne másolja át a már definiált paramétereket.

Ha módosítja egy eszköz konfigurációját, alkalmazza sudo iotedge config apply a módosításokat.

Globális paraméterek

A gazdagépnévnek, parent_hostname, trust_bundle_cert, allow_elevated_docker_permissions és auto_reprovisioning_mode paraméternek a konfigurációs fájl elején kell lennie a többi szakasz előtt. Ha paramétereket ad hozzá egy beállításgyűjtemény előtt, az biztosítja, hogy helyesen alkalmazzák őket. Az érvényes szintaxissal kapcsolatos további információkért lásd : toml.io .

Hostname (Gazdanév)

Az átjárófelderítés engedélyezéséhez minden IoT Edge-átjárónak (szülőeszköznek) meg kell adnia egy gazdagépnév paramétert, amelyet gyermekeszközei használnak a helyi hálózaton való kereséshez. Az edgeHub-modul a gazdagépnév paramétert is használja a kiszolgálótanúsítvánnyal való egyeztetéshez. További információ: Miért kell az EdgeGatewayt a saját gazdanevéről tudni?

Feljegyzés

Ha a gazdagépnév értéke nincs beállítva, az IoT Edge megpróbálja automatikusan megtalálni. Előfordulhat azonban, hogy a hálózat ügyfelei nem tudják felderíteni az eszközt, ha nincs beállítva.

A gazdagépnév esetében cserélje le az fqdn-device-name-or-ip-címet az eszköz nevére az eszköz alapértelmezett gazdagépnevének felülbírálásához. Az érték lehet teljes tartománynév (FQDN) vagy IP-cím. Használja ezt a beállítást átjáró-állomásnévként egy IoT Edge-átjáróeszközön.

hostname = "fqdn-device-name-or-ip-address"

Szülő gazdagépneve

A szülő gazdagépnév akkor használatos, ha az IoT Edge-eszköz egy hierarchia része, más néven beágyazott él. Minden alsóbb rétegbeli IoT Edge-eszköznek meg kell adnia egy parent_hostname paramétert a szülő azonosításához. Olyan hierarchikus forgatókönyvben, amelyben egyetlen IoT Edge-eszköz szülő- és gyermekeszköz is, mindkét paraméterre szükség van.

Cserélje le az fqdn-parent-device-name-or-ip-address nevet a szülőeszköz nevére. Használjon 64 karakternél rövidebb gazdagépnevet, amely a kiszolgálótanúsítványok közös nevének karakterkorlátja.

parent_hostname = "fqdn-parent-device-name-or-ip-address"

A parent_hostname paraméter beállításával kapcsolatos további információkért tekintse meg Csatlakozás Azure IoT Edge-eszközöket egy hierarchia létrehozásához.

Megbízhatósági kötegtanúsítvány

Ha egyéni hitelesítésszolgáltatói (CA-) tanúsítványt szeretne biztosítani az IoT Edge és a modulok megbízhatóságának gyökeréhez, adjon meg egy trust_bundle_cert konfigurációt. Cserélje le a paraméter értékét az URI fájlra az eszközön található legfelső szintű hitelesítésszolgáltatói tanúsítványra.

trust_bundle_cert = "file:///var/aziot/certs/trust-bundle.pem"

Az IoT Edge megbízhatósági csomagjáról további információt a megbízható legfelső szintű hitelesítésszolgáltató kezelése című témakörben talál.

Emelt szintű Docker-engedélyek

Egyes Docker-képességek a gyökérhozzáférés megszerzéséhez használhatók. Alapértelmezés szerint a --privileged docker HostConfig CapAdd paraméterében felsorolt jelző és összes képesség engedélyezett.

Ha egyetlen modul sem igényel emelt szintű vagy extra képességeket, használja a allow_elevated_docker_permissions az eszköz biztonságának javítása érdekében.

allow_elevated_docker_permissions = false

Automatikus újraépítési mód

Az opcionális auto_reprovisioning_mode paraméter határozza meg azokat a feltételeket, amelyek eldöntik, hogy egy eszköz mikor próbál automatikusan újraépíteni a Device Provisioning Service szolgáltatással. Az automatikus kiépítési mód figyelmen kívül lesz hagyva, ha az eszköz manuálisan lett kiépítve. A DPS kiépítési módjának beállításáról további információt a jelen cikk Kiépítés szakaszában talál.

Az alábbi értékek egyikét állíthatja be:

Mód Leírás
Dinamikus Ha az eszköz észleli, hogy áthelyezték az egyik IoT Hubról a másikra, próbálkozzon újra. Ez az alapértelmezett mód.
AlwaysOnStartup Ha az eszköz újraindul vagy összeomlik, a démonok újraindulnak.
OnErrorOnly Soha ne aktiválja automatikusan az eszköz újraépítését. Az eszköz újraépítése csak tartalékként történik, ha az eszköz kapcsolódási hibák miatt nem tud csatlakozni az IoT Hubhoz az identitáskiépítés során. Ez a tartalék viselkedés dinamikus és AlwaysOnStartup módban is implicit.

Példa:

auto_reprovisioning_mode = "Dynamic"

Az eszközök újraépítésével kapcsolatos további információkért lásd az IoT Hub eszköz-újraépítési alapelveit.

A szolgáltatás biztosítása

Az IoT Edge-megoldás igényeitől függően egyetlen vagy több eszközt is üzembe helyezhet. Az IoT Edge-eszközök és az IoT Hubok közötti kommunikáció hitelesítéséhez rendelkezésre álló lehetőségek a választott kiépítési módszertől függenek.

Kiépíthet egy kapcsolati sztring, szimmetrikus kulcsot, X.509-tanúsítványt, identitástanúsítvány titkos kulcsát vagy identitástanúsítványt. A DPS kiépítése különböző lehetőségeket tartalmaz. Válasszon egy metódust a kiépítéshez. Cserélje le a mintaértékeket a saját értékére.

Manuális kiépítés kapcsolati sztring

[provisioning]
source = "manual"
connection_string = "HostName=example.azure-devices.net;DeviceId=my-device;SharedAccessKey=<Shared access key>"

A kiépítési információk lekéréséről további információt az IoT Edge-eszköz létrehozása és üzembe helyezése Linuxon szimmetrikus kulcsokkal című témakörben talál.

Manuális kiépítés szimmetrikus kulccsal

[provisioning]
source = "manual"
iothub_hostname = "example.azure-devices.net"
device_id = "my-device"

[provisioning.authentication]
method = "sas"

device_id_pk = { value = "<Shared access key>" }     # inline key (base64), or...
device_id_pk = { uri = "file:///var/aziot/secrets/device-id.key" }            # file URI, or...
device_id_pk = { uri = "pkcs11:slot-id=0;object=device%20id?pin-value=1234" } # PKCS#11 URI

A kiépítési információk lekéréséről további információt az IoT Edge-eszköz létrehozása és üzembe helyezése Linuxon szimmetrikus kulcsokkal című témakörben talál.

Manuális kiépítés X.509-tanúsítvánnyal

[provisioning]
source = "manual"
iothub_hostname = "example.azure-devices.net"
device_id = "my-device"

[provisioning.authentication]
method = "x509"

További információ az X.509-tanúsítványok használatával történő kiépítésről: IoT Edge-eszköz létrehozása és kiépítése Linuxon X.509-tanúsítványokkal.

DPS-kiépítés szimmetrikus kulccsal

[provisioning]
source = "dps"
global_endpoint = "https://global.azure-devices-provisioning.net"
id_scope = "<DPS-ID-SCOPE>"

# (Optional) Use to send a custom payload during DPS registration
payload = { uri = "file:///var/secrets/aziot/identityd/dps-additional-data.json" }

[provisioning.attestation]
method = "symmetric_key"
registration_id = "my-device"

symmetric_key = { value = "<Device symmetric key>" } # inline key (base64), or...
symmetric_key = { uri = "file:///var/aziot/secrets/device-id.key" }                                                          # file URI, or...
symmetric_key = { uri = "pkcs11:slot-id=0;object=device%20id?pin-value=1234" }    

További információ a DPS szimmetrikus kulccsal történő kiépítéséről: IoT Edge-eszközök létrehozása és üzembe helyezése nagy méretekben Linuxon szimmetrikus kulccsal.

DPS-kiépítés X.509-tanúsítványokkal

[provisioning]
source = "dps"
global_endpoint = "https://global.azure-devices-provisioning.net/"
id_scope = "<DPS-ID-SCOPE>"

# (Optional) Use to send a custom payload during DPS registration
 payload = { uri = "file:///var/secrets/aziot/identityd/dps-additional-data.json" }

[provisioning.attestation]
method = "x509"
registration_id = "my-device"

# Identity certificate private key
identity_pk = "file:///var/aziot/secrets/device-id.key.pem"        # file URI, or...
identity_pk = "pkcs11:slot-id=0;object=device%20id?pin-value=1234" # PKCS#11 URI

# Identity certificate
identity_cert = "file:///var/aziot/certs/device-id.pem"     # file URI, or...
[provisioning.authentication.identity_cert]                 # dynamically issued via...
method = "est"                                              # - EST
method = "local_ca"                                         # - a local CA
common_name = "my-device"                                   # with the given common name, or...
subject = { L = "AQ", ST = "Antarctica", CN = "my-device" } # with the given DN fields

(Nem kötelező) Az eszközazonosító tanúsítvány automatikus megújításának engedélyezése

Az Autorenewal használatához ismert tanúsítványkiállítási módszer szükséges. Állítsa be a metódust vagy estlocal_caa .

Fontos

Csak akkor engedélyezze az automatikus helyreállítást, ha az eszköz ca-alapú DPS-regisztrációhoz van konfigurálva. Az autorenewal egyéni regisztrációhoz való használata miatt az eszköz nem tud újraépülni.

[provisioning.attestation.identity_cert.auto_renew]
rotate_key = true
threshold = "80%"
retry = "4%"

További információ az X.509-tanúsítványokkal történő DPS-kiépítésről: IoT Edge-eszközök létrehozása és üzembe helyezése nagy méretekben Linuxon X.509-tanúsítványokkal.

DPS-kiépítés TPM-lel (megbízható platformmodul)

[provisioning]
source = "dps"
global_endpoint = "https://global.azure-devices-provisioning.net"
id_scope = "<DPS-ID-SCOPE>"

# (Optional) Use to send a custom payload during DPS registration
payload = { uri = "file:///var/secrets/aziot/identityd/dps-additional-data.json" }

[provisioning.attestation]
method = "tpm"
registration_id = "my-device"

Ha DPS-kiépítést használ a TPM-sel, és egyéni konfigurációt igényel, tekintse meg a TPM szakaszt.

További információ: IoT Edge-eszközök létrehozása és üzembe helyezése nagy méretekben, linuxos TPM-lel.

Felhőbeli időtúllépés és újrapróbálkozás viselkedése

Ezek a beállítások szabályozzák a felhőműveletek időtúllépését és újrapróbálkozását, például az eszközkiépítési szolgáltatással (DPS) való kommunikációt a kiépítés során, vagy az IoT Hubot a modul identitásának létrehozásához.

A cloud_timeout_sec paraméter a felhőszolgáltatásoknak küldött hálózati kérések másodpercben megadott határideje. Például egy HTTP-kérés. A felhőszolgáltatás válaszát a határidő előtt kell megkapni, vagy a kérés időtúllépésként meghiúsul.

A cloud_retries paraméter szabályozza, hogy az első próbálkozás után hányszor lehet újrapróbálkozni egy kérést. Az ügyfél mindig legalább egyszer küld, így az érték az első próbálkozás sikertelensége után újrapróbálkozások száma. Ez azt jelenti például, cloud_retries = 2 hogy az ügyfél összesen három kísérletet tesz.

cloud_timeout_sec = 10
cloud_retries = 1

Tanúsítvány kiállítása

Ha dinamikusan kibocsátott tanúsítványokat konfigurált, válassza ki a megfelelő kiállítási módszert, és cserélje le a mintaértékeket a sajátjaira.

Tanúsítvány kiállítása az EST-en keresztül

[cert_issuance.est]
trusted_certs = ["file:///var/aziot/certs/est-id-ca.pem",]

[cert_issuance.est.auth]
username = "estuser"
password = "estpwd"

Az EST-azonosító tanúsítványa már telepítve van az eszközön

identity_cert = "file:///var/aziot/certs/est-id.pem"

identity_pk = "file:///var/aziot/secrets/est-id.key.pem"      # file URI, or...
identity_pk = "pkcs11:slot-id=0;object=est-id?pin-value=1234" # PKCS#11 URI

EST ID tanúsítvány kérése az EST bootstrap ID tanúsítványon keresztül

Hitelesítés TLS-ügyféltanúsítvánnyal, amely egyszer használatos a kezdeti EST ID-tanúsítvány létrehozásához. Az első tanúsítvány kiállítása után a rendszer automatikusan létrehoz és identity_certidentity_pk használ a jövőbeni hitelesítéshez és megújításhoz. A létrehozott EST ID-tanúsítvány tulajdonosi közös neve (CN) mindig megegyezik a kiépítési szakaszban konfigurált eszközazonosítóval. Ezeknek a fájloknak olvashatónak kell lenniük az aziotcsok és aziotkok felhasználói számára.

bootstrap_identity_cert = "file:///var/aziot/certs/est-bootstrap-id.pem"

bootstrap_identity_pk = "file:///var/aziot/secrets/est-bootstrap-id.key.pem"      # file URI, or...
bootstrap_identity_pk = "pkcs11:slot-id=0;object=est-bootstrap-id?pin-value=1234" # PKCS#11 URI

# The following parameters control the renewal of EST identity certs. These certs are issued by the EST server after initial authentication with the bootstrap cert and managed by Certificates Service.

[cert_issuance.est.identity_auto_renew]
rotate_key = true
threshold = "80%"
retry = "4%"

[cert_issuance.est.urls]
default = "https://example.org/.well-known/est"

Tanúsítvány kiállítása helyi hitelesítésszolgáltatón keresztül

[cert_issuance.local_ca]
cert = "file:///var/aziot/certs/local-ca.pem"

pk = "file:///var/aziot/secrets/local-ca.key.pem"      # file URI, or...
pk = "pkcs11:slot-id=0;object=local-ca?pin-value=1234" # PKCS#11 URI

TPM (megbízható platformmodul)

Ha a DPS TPM kiépítésekor speciális konfigurációra van szüksége a TPM-hez, használja ezeket a TPM-beállításokat.

Elfogadható TCTI-rakodó sztringekért lásd a TCG TSS 2.0 TPM parancsátviteli felületének (TCTI) API-specifikációjának 3.5. szakaszát.

Ha üres sztringre állítja be a TCTI-betöltőtárat, a TCTI-modulok előre definiált készletét próbálja meg sorrendbe tölteni.

[tpm]
tcti = "swtpm:port=2321"

A TPM-index megőrzi a DPS hitelesítési kulcsot. Az indexet az alapcímtől eltolásként veszi figyelembe a rendszer az olyan állandó objektumok esetében, mint amilyenek 0x81000000 például a tartomány és 0x00_00_00 a tartomány közötti tartománynak kell lenniük 0x7F_FF_FF. Az alapértelmezett érték 0x00_01_00.

auth_key_index = "0x00_01_00"

Szükség esetén használjon engedélyezési értékeket a jóváhagyáshoz és a tulajdonosi hierarchiákhoz. Alapértelmezés szerint ezek az értékek üres sztringek.

[tpm.hierarchy_authorization]
endorsement = "hello"
owner = "world"

PKCS#11

Ha bármilyen PKCS#11 URI-t használt, használja az alábbi paramétereket, és cserélje le az értékeket a PKCS#11 konfigurációra.

[aziot_keys]
pkcs11_lib_path = "/usr/lib/libmypkcs11.so"
pkcs11_base_slot = "pkcs11:slot-id=0?pin-value=1234"

Alapértelmezett Edge-ügynök

Az IoT Edge első indításakor elindít egy alapértelmezett Edge Agent-modult. Ha felül kell bírálnia az alapértelmezett Edge Agent modulhoz megadott paramétereket, használja ezt a szakaszt, és cserélje le az értékeket a sajátjaira.

Feljegyzés

A agent.config.createOptions paraméter toml beágyazott táblaként van megadva. Ez a formátum JSON-nak tűnik, de nem JSON. További információ: A TOML v1.0.0 dokumentációjának beágyazott táblázata .

[agent]
name = "edgeAgent"
type = "docker"
imagePullPolicy = "..."   # "on-create" or "never". Defaults to "on-create"

[agent.config]
image = "mcr.microsoft.com/azureiotedge-agent:1.5"
createOptions = { HostConfig = { Binds = ["/iotedge/storage:/iotedge/storage"] } }

[agent.config.auth]
serveraddress = "example.azurecr.io"
username = "username"
password = "password"

[agent.env]
RuntimeLogLevel = "debug"
UpstreamProtocol = "AmqpWs"
storageFolder = "/iotedge/storage"

Démonkezelés és számítási feladatok API-végpontjai

Ha felül kell bírálnia a felügyeleti és számítási feladatok API-végpontjait, használja ezt a szakaszt, és cserélje le az értékeket a sajátjaira.

[connect]
workload_uri = "unix:///var/run/iotedge/workload.sock"
management_uri = "unix:///var/run/iotedge/mgmt.sock"

[listen]
workload_uri = "unix:///var/run/iotedge/workload.sock"
management_uri = "unix:///var/run/iotedge/mgmt.sock"

Edge Agent watchdog

Ha felül kell bírálnia az Edge Agent watchdog alapértelmezett beállításait, használja ezt a szakaszt, és cserélje le az értékeket a saját értékére.

[watchdog]
max_retries = "infinite"   # the string "infinite" or a positive integer. Defaults to "infinite"

Edge CA-tanúsítvány

Ha rendelkezik saját Edge CA-tanúsítvánnyal , amely az összes modultanúsítványt kiadja, használja az alábbi szakaszok egyikét, és cserélje le az értékeket a sajátjára.

Fájlból betöltött Edge CA-tanúsítvány

[edge_ca]
cert = "file:///var/aziot/certs/edge-ca.pem"            # file URI

pk = "file:///var/aziot/secrets/edge-ca.key.pem"        # file URI, or...
pk = "pkcs11:slot-id=0;object=edge%20ca?pin-value=1234" # PKCS#11 URI

Peremhálózati hitelesítésszolgáltatói tanúsítvány az EST-en keresztül

[edge_ca]
method = "est"

További információ az EST-kiszolgáló használatáról: Oktatóanyag: Regisztráció konfigurálása biztonságos átviteli kiszolgálón keresztül az Azure IoT Edge-hez.

Nem kötelező EST-konfiguráció az Edge CA-tanúsítvány kiállításához

Ha nincs beállítva, a rendszer a [cert_issuance.est] alapértelmezett értékét használja.

common_name = "aziot-edge CA"
expiry_days = 90
url = "https://example.org/.well-known/est"

username = "estuser"
password = "estpwd"

Az EST-azonosító tanúsítványa már telepítve van az eszközön

identity_cert = "file:///var/aziot/certs/est-id.pem"

identity_pk = "file:///var/aziot/secrets/est-id.key.pem"      # file URI, or...
identity_pk = "pkcs11:slot-id=0;object=est-id?pin-value=1234" # PKCS#11 URI

EST ID tanúsítvány kérése az EST bootstrap ID tanúsítványon keresztül

bootstrap_identity_cert = "file:///var/aziot/certs/est-bootstrap-id.pem"

bootstrap_identity_pk = "file:///var/aziot/secrets/est-bootstrap-id.key.pem"      # file URI, or...
bootstrap_identity_pk = "pkcs11:slot-id=0;object=est-bootstrap-id?pin-value=1234" # PKCS#11 URI

Helyi hitelesítésszolgáltatói tanúsítványból kibocsátott Edge CA-tanúsítvány

A [cert_issuance.local_ca] beállítását igényli.

[edge_ca]
method = "local_ca"

# Optional configuration
common_name = "aziot-edge CA"
expiry_days = 90

Az Edge CA rövid útmutató tanúsítványai

Ha nem rendelkezik saját Edge CA-tanúsítvánnyal az összes modultanúsítvány kiállításához, használja ezt a szakaszt, és adja meg az automatikusan létrehozott önaláírt Edge CA-tanúsítvány élettartamára vonatkozó napok számát. A lejárat alapértelmezés szerint 90 nap.

Figyelem

Ez a beállítás éles használat esetén NEM ajánlott. Konfigurálja saját Edge CA-tanúsítványát az Edge CA-tanúsítvány szakaszaiban.

[edge_ca]
auto_generated_edge_ca_expiry_days = 90

Edge CA-tanúsítvány autorenewal

Ez a beállítás kezeli az Edge CA-tanúsítvány autorenewal-ját. Az Autorenewal akkor érvényes, ha az Edge HITELESÍTÉSSZOLGÁLTATÓ gyorsútmutatóként van konfigurálva, vagy ha az Edge HITELESÍTÉSSZOLGÁLTATÓ rendelkezik kiállítási method készlettel. A fájlokból betöltött Edge CA-tanúsítványok általában nem adhatók meg automatikusan, mivel az Edge-futtatókörnyezet nem rendelkezik elegendő információval a megújításukhoz.

Fontos

Az Edge-hitelesítésszolgáltató megújításához az adott hitelesítésszolgáltató által kibocsátott összes kiszolgálói tanúsítványt újra kell létrehozni. Ez az újragenerálás az összes modul újraindításával történik. Az Edge CA megújításának ideje nem garantálható. Ha a véletlenszerű modul újraindítása nem elfogadható a használati esetben, tiltsa le az autorenewalt.

[edge_ca.auto_renew]
rotate_key = true
threshold = "80%"
retry = "4%"

Kép szemétgyűjtése

Ha felül kell bírálnia az alapértelmezett rendszerkép szemétgyűjtési konfigurációját, használja ezt a szakaszt, és cserélje le a szakasz értékeit a saját értékére.

Paraméter Leírás
enabled Rendszerkép szemétgyűjtésének futtatása
cleanup_recurrence Milyen gyakran szeretné futtatni a rendszerkép szemétgyűjtését?
image_age_cleanup_threshold A nem használt képek kora . A küszöbértéknél régebbi képek törlődnek
cleanup_time 24 órás HH:MM formátum. A tisztítási feladat futtatásakor
[image_garbage_collection]
enabled = true
cleanup_recurrence = "1d"
image_age_cleanup_threshold = "7d"
cleanup_time = "00:00"

Moby futtatókörnyezet

Ha felül kell bírálnia az alapértelmezett Moby futtatókörnyezet-konfigurációt, használja ezt a szakaszt, és cserélje le az értékeket a saját értékére.

[moby_runtime]
uri = "unix:///var/run/docker.sock"
network = "azure-iot-edge"