Microsoft Entra engedélyezési proxy
A Microsoft Entra engedélyezési proxy egy fordított proxy, amely a kérelmek Microsoft Entra-azonosítóval történő hitelesítésére használható. Ez a proxy a Microsoft Entra-hitelesítést támogató bármely szolgáltatás kéréseinek hitelesítésére használható. Ezzel a proxyval hitelesítheti a Prometheushoz készült Azure Monitor felügyelt szolgáltatáshoz érkező kéréseket.
Előfeltételek
- Azure Monitor-munkaterület. Ha nincs munkaterülete, hozzon létre egyet az Azure Portal használatával.
- A fürtre telepített Prometheus.
Megjegyzés:
A jelen cikkben szereplő távoli írási példa a Prometheus távoli írásával ír adatokat az Azure Monitorba. Az AKS-fürt Prometheusba való előkészítése automatikusan telepíti a Prometheust a fürtre, és adatokat küld a munkaterületre.
Üzembe helyezés
A proxy üzembe helyezhető egyéni sablonokkal a kiadási rendszerkép használatával vagy helm-diagramként. Mindkét üzembe helyezés ugyanazokat a testreszabható paramétereket tartalmazza. Ezeket a paramétereket a Paraméterek tábla ismerteti.
További információ: Microsoft Entra hitelesítési proxyprojekt .
Az alábbi példák bemutatják, hogyan helyezheti üzembe a proxyt a távoli íráshoz és az Azure Monitor adatainak lekérdezéséhez.
Megjegyzés:
Ez a példa bemutatja, hogyan használhatja a proxyt a távoli írási kérelmek hitelesítésére egy Azure Monitor által felügyelt Prometheus-szolgáltatásba. A Prometheus távoli íráshoz dedikált mellékautó tartozik a távoli íráshoz, amely a távoli írás implementálásának ajánlott módszere.
A proxy üzembe helyezése előtt keresse meg a felügyelt identitást, és rendelje hozzá az Monitoring Metrics Publisher
Azure Monitor-munkaterület adatgyűjtési szabályához tartozó szerepkört.
Keresse meg az
clientId
AKS-fürthöz tartozó felügyelt identitást. A felügyelt identitás az Azure Monitor-munkaterületen való hitelesítésre szolgál. A felügyelt identitás az AKS-fürt létrehozásakor jön létre.# Get the identity client_id az aks show -g <AKS-CLUSTER-RESOURCE-GROUP> -n <AKS-CLUSTER-NAME> --query "identityProfile"
A kimenet formátuma a következő:
{ "kubeletidentity": { "clientId": "abcd1234-1243-abcd-9876-1234abcd5678", "objectId": "12345678-abcd-abcd-abcd-1234567890ab", "resourceId": "/subscriptions/def0123-1243-abcd-9876-1234abcd5678/resourcegroups/MC_rg-proxytest-01_proxytest-01_eastus/providers/Microsoft.ManagedIdentity/userAssignedIdentities/proxytest-01-agentpool" }
Keresse meg az Azure Monitor-munkaterület adatgyűjtési szabályának (DCR) azonosítóját.
A szabály neve megegyezik a munkaterület nevével. Az adatgyűjtési szabály erőforráscsoport-neve például a formátumot követi.MA_<workspace-name>_<REGION>_managed
MA_amw-proxytest_eastus_managed
Az adatgyűjtési szabály azonosítójának megkereséséhez használja a következő parancsot:az monitor data-collection rule show --name <dcr-name> --resource-group <resource-group-name> --query "id"
A DCR-azonosítót és a metrikák betöltési végpontját az Azure Portalon, az Azure Monitor-munkaterület áttekintési oldalán találhatja meg.
Válassza ki az Adatgyűjtési szabályt a munkaterület Áttekintés lapján, majd válassza a JSON-nézetet az erőforrás-azonosító megtekintéséhez.
Rendelje hozzá a
Monitoring Metrics Publisher
szerepkört a felügyelt identitáshozclientId
, hogy írásra képes legyen az Azure Monitor-munkaterület adatgyűjtési szabályához.az role assignment create / --assignee <clientid> / --role "Monitoring Metrics Publisher" / --scope <workspace-dcr-id>
Például:
az role assignment create \ --assignee abcd1234-1243-abcd-9876-1234abcd5678 \ --role "Monitoring Metrics Publisher" \ --scope /subscriptions/ef0123-1243-abcd-9876-1234abcd5678/resourceGroups/MA_amw-proxytest_eastus_managed/providers/Microsoft.Insights/dataCollectionRules/amw-proxytest
A proxy távoli íráshoz való üzembe helyezéséhez használja az alábbi YAML-fájlt. Módosítsa a következő paramétereket:
TARGET_HOST
– A cél gazdagép, ahová a kérést továbbítani szeretné. Ha adatokat szeretne küldeni egy Azure Monitor-munkaterületre, használja a munkaterületek áttekintésiMetrics ingestion endpoint
oldalának állomásnév részét. Például:http://amw-proxytest-abcd.eastus-1.metrics.ingest.monitor.azure.com
AAD_CLIENT_ID
- AclientId
szerepkörhöz hozzárendeltMonitoring Metrics Publisher
felügyelt identitás.AUDIENCE
– Metrikák Azure Monitor-munkaterületre való betöltéséhez állítsa beAUDIENCE
a következőthttps://monitor.azure.com/.default
: .- Távolítsa el
OTEL_GRPC_ENDPOINT
, ésOTEL_SERVICE_NAME
ha nem használja az OpenTelemetryt.
A paraméterekkel kapcsolatos további információkért tekintse meg a Paraméterek táblát.
proxy-ingestion.yaml
apiVersion: apps/v1 kind: Deployment metadata: labels: app: azuremonitor-ingestion name: azuremonitor-ingestion namespace: observability spec: replicas: 1 selector: matchLabels: app: azuremonitor-ingestion template: metadata: labels: app: azuremonitor-ingestion name: azuremonitor-ingestion spec: containers: - name: aad-auth-proxy image: mcr.microsoft.com/azuremonitor/auth-proxy/prod/aad-auth-proxy/images/aad-auth-proxy:0.1.0-main-05-24-2023-b911fe1c imagePullPolicy: Always ports: - name: auth-port containerPort: 8081 env: - name: AUDIENCE value: https://monitor.azure.com/.default - name: TARGET_HOST value: http://<workspace-endpoint-hostname> - name: LISTENING_PORT value: "8081" - name: IDENTITY_TYPE value: userAssigned - name: AAD_CLIENT_ID value: <clientId> - name: AAD_TOKEN_REFRESH_INTERVAL_IN_PERCENTAGE value: "10" - name: OTEL_GRPC_ENDPOINT value: <YOUR-OTEL-GRPC-ENDPOINT> # "otel-collector.observability.svc.cluster.local:4317" - name: OTEL_SERVICE_NAME value: <YOUE-SERVICE-NAME> livenessProbe: httpGet: path: /health port: auth-port initialDelaySeconds: 5 timeoutSeconds: 5 readinessProbe: httpGet: path: /ready port: auth-port initialDelaySeconds: 5 timeoutSeconds: 5 --- apiVersion: v1 kind: Service metadata: name: azuremonitor-ingestion namespace: observability spec: ports: - port: 80 targetPort: 8081 selector: app: azuremonitor-ingestion
A proxy üzembe helyezése parancsokkal:
# create the namespace if it doesn't already exist kubectl create namespace observability kubectl apply -f proxy-ingestion.yaml -n observability
Másik lehetőségként a következő módon helyezheti üzembe a proxyt a helm használatával:
helm install aad-auth-proxy oci://mcr.microsoft.com/azuremonitor/auth-proxy/prod/aad-auth-proxy/helmchart/aad-auth-proxy \ --version 0.1.0-main-05-24-2023-b911fe1c \ -n observability \ --set targetHost=https://proxy-test-abc123.eastus-1.metrics.ingest.monitor.azure.com \ --set identityType=userAssigned \ --set aadClientId= abcd1234-1243-abcd-9876-1234abcd5678 \ --set audience=https://monitor.azure.com/.default
Távoli írási URL-cím konfigurálása.
Az URL-állomásnév a betöltési szolgáltatás nevéből és névteréből áll a következő formátumban<ingestion service name>.<namespace>.svc.cluster.local
. Ebben a példában a gazdagép azazuremonitor-ingestion.observability.svc.cluster.local
.
Konfigurálja az URL-elérési utat az Azure Monitor-munkaterület áttekintési oldalánakMetrics ingestion endpoint
elérési útján. For example,dataCollectionRules/dcr-abc123d987e654f3210abc1def234567/streams/Microsoft-PrometheusMetrics/api/v1/write?api-version=2021-11-01-preview
.prometheus: prometheusSpec: externalLabels: cluster: <cluster name to be used in the workspace> ## https://prometheus.io/docs/prometheus/latest/configuration/configuration/#remote_write ## remoteWrite: - url: "http://azuremonitor-ingestion.observability.svc.cluster.local/dataCollectionRules/dcr-abc123d987e654f3210abc1def234567/streams/Microsoft-PrometheusMetrics/api/v1/write?api-version=2021-11-01-preview"
Alkalmazza a távoli írási konfigurációt.
Megjegyzés:
A proxykép legújabb verziójáért tekintse meg a kibocsátási megjegyzéseket
Ellenőrizze, hogy a proxy betölti-e az adatokat
Ellenőrizze, hogy a proxy sikeresen betölti-e a metrikákat a pod naplóinak ellenőrzésével vagy az Azure Monitor-munkaterület lekérdezésével.
Ellenőrizze a pod naplóit az alábbi parancsok futtatásával:
# Get the azuremonitor-ingestion pod ID
kubectl get pods -A | grep azuremonitor-ingestion
#Using the returned pod ID, get the logs
kubectl logs --namespace observability <pod ID> --tail=10
A metrikák sikeres betöltése az alábbihoz hasonló naplót StatusCode=200
eredményez:
time="2023-05-16T08:47:27Z" level=info msg="Successfully sent request, returning response back." ContentLength=0 Request="https://amw-proxytest-05-t16w.eastus-1.metrics.ingest.monitor.azure.com/dataCollectionRules/dcr-688b6ed1f2244e098a88e32dde18b4f6/streams/Microsoft-PrometheusMetrics/api/v1/write?api-version=2021-11-01-preview" StatusCode=200
Az Azure Monitor-munkaterület lekérdezéséhez kövesse az alábbi lépéseket:
Parameters
Képparaméter | Helm-diagram paraméterneve | Leírás | Támogatott értékek | Kötelező |
---|---|---|---|---|
TARGET_HOST |
targetHost |
Cél gazdagép, ahová továbbítani szeretné a kérést. Amikor adatokat küld egy Azure Monitor-munkaterületnek, használja a Metrics ingestion endpoint munkaterületek áttekintési oldalát. Amikor adatokat olvas egy Azure Monitor-munkaterületről, használja a Query endpoint munkaterületek áttekintési oldalát |
Igen | |
IDENTITY_TYPE |
identityType |
A kérések hitelesítéséhez használt identitástípus. Ez a proxy három identitástípust támogat. | systemassigned , userassigned , aadapplication |
Igen |
AAD_CLIENT_ID |
aadClientId |
A használt identitás ügyfélazonosítója. Ezt használják az identitástípusokhoz és aadapplication az identitástípusokhozuserassigned . Az az aks show -g <AKS-CLUSTER-RESOURCE-GROUP> -n <AKS-CLUSTER-NAME> --query "identityProfile" ügyfélazonosító lekérése |
Igen és userassigned aadapplication |
|
AAD_TENANT_ID |
aadTenantId |
A használt identitás bérlőazonosítója. A bérlőazonosító identitástípusokhoz aadapplication használatos. |
Igen a következőhöz: aadapplication |
|
AAD_CLIENT_CERTIFICATE_PATH |
aadClientCertificatePath |
Az az elérési út, ahol a proxy megtalálja az aadapplication tanúsítványát. Ennek az elérési útnak proxyval elérhetőnek kell lennie, és egy titkos kulcsot tartalmazó pfx- vagy pem-tanúsítványnak kell lennie. | Csak identitástípusok esetén aadapplication |
|
AAD_TOKEN_REFRESH_INTERVAL_IN_PERCENTAGE |
aadTokenRefreshIntervalInMinutes |
A jogkivonat frissítése a jogkivonat lejáratáig eltelt idő százalékos aránya alapján történik. Az alapértelmezett érték 10%-os idő a lejárat előtt. | Nem | |
AUDIENCE |
audience |
A jogkivonat célközönsége | Nem | |
LISTENING_PORT |
listeningPort |
Proxyfigyelés ezen a porton | Igen | |
OTEL_SERVICE_NAME |
otelServiceName |
OTEL-nyomkövetések és metrikák szolgáltatásneve. Alapértelmezett érték: aad_auth_proxy | Nem | |
OTEL_GRPC_ENDPOINT |
otelGrpcEndpoint |
A proxy leküldi az OTEL-telemetriát erre a végpontra. Alapértelmezett érték: http://localhost:4317 | Nem |
Hibaelhárítás
A proxytároló nem indul el.
Futtassa a következő parancsot a proxytároló hibáinak megjelenítéséhez.kubectl --namespace <Namespace> describe pod <Prometheus-Pod-Name>`
A proxy nem indul el – konfigurációs hibák
A proxy ellenőrzi, hogy egy érvényes identitás lekéri-e a jogkivonatot az indítás során. Ha nem sikerül lekérni egy jogkivonatot, az indítás sikertelen lesz. A rendszer naplózza a hibákat, és az alábbi parancs futtatásával tekinthető meg:
kubectl --namespace <Namespace> logs <Proxy-Pod-Name>
Example output:
time="2023-05-15T11:24:06Z" level=info msg="Configuration settings loaded:" AAD_CLIENT_CERTIFICATE_PATH= AAD_CLIENT_ID=abc123de-be75-4141-a1e6-abc123987def AAD_TENANT_ID= AAD_TOKEN_REFRESH_INTERVAL_IN_PERCENTAGE=10 AUDIENCE="https://prometheus.monitor.azure.com" IDENTITY_TYPE=userassigned LISTENING_PORT=8082 OTEL_GRPC_ENDPOINT= OTEL_SERVICE_NAME=aad_auth_proxy TARGET_HOST=proxytest-01-workspace-orkw.eastus.prometheus.monitor.azure.com 2023-05-15T11:24:06.414Z [ERROR] TokenCredential creation failed:Failed to get access token: ManagedIdentityCredential authentication failed GET http://169.254.169.254/metadata/identity/oauth2/token -------------------------------------------------------------------------------- RESPONSE 400 Bad Request -------------------------------------------------------------------------------- { "error": "invalid_request", "error_description": "Identity not found" } --------------------------------------------------------------------------------