Microsoft Entra-auktoriseringsproxy
Microsoft Entra-auktoriseringsproxyn är en omvänd proxy som kan användas för att autentisera begäranden med hjälp av Microsoft Entra-ID. Den här proxyn kan användas för att autentisera begäranden till alla tjänster som stöder Microsoft Entra-autentisering. Använd den här proxyn för att autentisera begäranden till azure monitor-hanterad tjänst för Prometheus.
Förutsättningar
- En Azure Monitor-arbetsyta. Om du inte har någon arbetsyta skapar du en med hjälp av Azure-portalen.
- Prometheus installerat i klustret.
Kommentar
Fjärrskrivningsexemplet i den här artikeln använder Prometheus fjärrskrivning för att skriva data till Azure Monitor. När du registrerar AKS-klustret till Prometheus installeras Prometheus automatiskt i klustret och data skickas till din arbetsyta.
Distribution
Proxyn kan distribueras med anpassade mallar med versionsbilden eller som ett helm-diagram. Båda distributionerna innehåller samma anpassningsbara parametrar. Dessa parametrar beskrivs i tabellen Parametrar .
Mer information finns i Microsoft Entra-autentiseringsproxyprojekt .
Följande exempel visar hur du distribuerar proxyn för fjärrskrivning och för att fråga efter data från Azure Monitor.
Kommentar
Det här exemplet visar hur du använder proxyn för att autentisera begäranden om fjärrskrivning till en Hanterad Azure Monitor-tjänst för Prometheus. Prometheus fjärrskrivning har en dedikerad sidobil för fjärrskrivning, vilket är den rekommenderade metoden för att implementera fjärrskrivning.
Innan du distribuerar proxyn letar du reda på din hanterade identitet och tilldelar den Monitoring Metrics Publisher
rollen för Azure Monitor-arbetsytans datainsamlingsregel.
Leta reda på
clientId
för den hanterade identiteten för ditt AKS-kluster. Den hanterade identiteten används för att autentisera till Azure Monitor-arbetsytan. Den hanterade identiteten skapas när AKS-klustret skapas.# Get the identity client_id az aks show -g <AKS-CLUSTER-RESOURCE-GROUP> -n <AKS-CLUSTER-NAME> --query "identityProfile"
Kommandot returnerar utdata med följande format:
{ "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" }
Hitta din Azure Monitor-arbetsytas ID för datainsamlingsregel (DCR).
Regelnamnet är samma som arbetsytans namn. Resursgruppens namn för datainsamlingsregeln följer formatet:MA_<workspace-name>_<REGION>_managed
, till exempelMA_amw-proxytest_eastus_managed
. Använd följande kommando för att hitta regel-ID:t för datainsamling:az monitor data-collection rule show --name <dcr-name> --resource-group <resource-group-name> --query "id"
Du kan också hitta din DCR-ID och slutpunkten för inmatning av mått med hjälp av Azure-portalen på sidan Översikt över Azure Monitor-arbetsytan.
Välj datainsamlingsregeln på fliken Översikt för arbetsytan och välj sedan JSON-vyn för att se resurs-ID: t.
Monitoring Metrics Publisher
Tilldela rollen till den hanterade identiteten så att den kan skriva till datainsamlingsregelnclientId
för Azure Monitor-arbetsytan.az role assignment create / --assignee <clientid> / --role "Monitoring Metrics Publisher" / --scope <workspace-dcr-id>
Till exempel:
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
Använd följande YAML-fil för att distribuera proxyn för fjärrskrivning. Ändra följande parametrar:
TARGET_HOST
– Målvärden där du vill vidarebefordra begäran till. Om du vill skicka data till en Azure Monitor-arbetsyta använder du värdnamnsdelen avMetrics ingestion endpoint
sidan Översikt för arbetsytor. Till exempel:http://amw-proxytest-abcd.eastus-1.metrics.ingest.monitor.azure.com
AAD_CLIENT_ID
– DenclientId
hanterade identitet som användes som tilldeladesMonitoring Metrics Publisher
rollen.AUDIENCE
– För inmatning av mått till Azure Monitor-arbetsyta anger duAUDIENCE
tillhttps://monitor.azure.com/.default
.- Ta bort
OTEL_GRPC_ENDPOINT
ochOTEL_SERVICE_NAME
om du inte använder OpenTelemetry.
Mer information om parametrarna finns i tabellen Parametrar .
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
Distribuera proxyn med hjälp av kommandon:
# create the namespace if it doesn't already exist kubectl create namespace observability kubectl apply -f proxy-ingestion.yaml -n observability
Du kan också distribuera proxyn med helm på följande sätt:
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
Konfigurera url för fjärrskrivning.
URL-värdnamnet består av inmatningstjänstens namn och namnområde i följande format<ingestion service name>.<namespace>.svc.cluster.local
. I det här exemplet ärazuremonitor-ingestion.observability.svc.cluster.local
värden .
Konfigurera URL-sökvägen med hjälp av sökvägen frånMetrics ingestion endpoint
översiktssidan för Azure Monitor-arbetsytan. Exempel: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"
Använd fjärrskrivningskonfigurationen.
Kommentar
Den senaste versionen av proxybilden finns i viktig information
Kontrollera att proxyn matar in data
Kontrollera att proxyn har matat in mått genom att kontrollera poddens loggar eller genom att fråga Azure Monitor-arbetsytan.
Kontrollera poddens loggar genom att köra följande kommandon:
# 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
Genom att mata in mått skapas en logg som StatusCode=200
liknar följande:
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
Följ stegen nedan för att fråga din Azure Monitor-arbetsyta:
Parametrar
Bildparameter | Namn på Helm-diagramparameter | beskrivning | Värden som stöds | Obligatorisk |
---|---|---|---|---|
TARGET_HOST |
targetHost |
Målvärd där du vill vidarebefordra begäran till. När du skickar data till en Azure Monitor-arbetsyta använder du Metrics ingestion endpoint sidan Översikt för arbetsytor. När du läser data från en Azure Monitor-arbetsyta använder du Query endpoint sidan Översikt över arbetsytor |
Ja | |
IDENTITY_TYPE |
identityType |
Identitetstyp som används för att autentisera begäranden. Den här proxyn stöder tre typer av identiteter. | systemassigned , userassigned , aadapplication |
Ja |
AAD_CLIENT_ID |
aadClientId |
Klient-ID för den identitet som används. Detta används för userassigned och aadapplication identitetstyper. Använd az aks show -g <AKS-CLUSTER-RESOURCE-GROUP> -n <AKS-CLUSTER-NAME> --query "identityProfile" för att hämta klient-ID:t |
Ja för userassigned och aadapplication |
|
AAD_TENANT_ID |
aadTenantId |
Klientorganisations-ID för den identitet som används. Klientorganisations-ID används för aadapplication identitetstyper. |
Ja för aadapplication |
|
AAD_CLIENT_CERTIFICATE_PATH |
aadClientCertificatePath |
Sökvägen där proxyn kan hitta certifikatet för aadapplication. Den här sökvägen bör vara tillgänglig via proxy och bör vara ett pfx- eller pem-certifikat som innehåller en privat nyckel. | Endast för aadapplication identitetstyper |
|
AAD_TOKEN_REFRESH_INTERVAL_IN_PERCENTAGE |
aadTokenRefreshIntervalInMinutes |
Token uppdateras baserat på procentandelen tid tills token upphör att gälla. Standardvärdet är 10 % tid innan det upphör att gälla. | Nej | |
AUDIENCE |
audience |
Målgrupp för token | Nej | |
LISTENING_PORT |
listeningPort |
Proxylyssna på den här porten | Ja | |
OTEL_SERVICE_NAME |
otelServiceName |
Tjänstnamn för OTEL-spårningar och mått. Standardvärde: aad_auth_proxy | Nej | |
OTEL_GRPC_ENDPOINT |
otelGrpcEndpoint |
Proxy push-överför OTEL-telemetri till den här slutpunkten. Standardvärde: http://localhost:4317 | Nej |
Felsökning
Proxycontainern startar inte.
Kör följande kommando för att visa eventuella fel för proxycontainern.kubectl --namespace <Namespace> describe pod <Prometheus-Pod-Name>`
Proxyn startar inte – konfigurationsfel
Proxyn söker efter en giltig identitet för att hämta en token under starten. Om det inte går att hämta en token misslyckas starten. Fel loggas och kan visas genom att köra följande kommando:
kubectl --namespace <Namespace> logs <Proxy-Pod-Name>
Exempel på utdata:
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" } --------------------------------------------------------------------------------
Feedback
https://aka.ms/ContentUserFeedback.
Kommer snart: Under hela 2024 kommer vi att fasa ut GitHub-problem som feedbackmekanism för innehåll och ersätta det med ett nytt feedbacksystem. Mer information finns i:Skicka och visa feedback för