Proxy autorizace Microsoft Entra
Proxy autorizace Microsoft Entra je reverzní proxy server, který lze použít k ověřování požadavků pomocí Microsoft Entra ID. Tento proxy server lze použít k ověření požadavků na jakoukoli službu, která podporuje ověřování Microsoft Entra. Tento proxy server použijte k ověření požadavků na spravovanou službu Azure Monitor pro Prometheus.
Upozornění
Toto je vyřazený článek.
Image kontejneru proxy a chart Helm se už neudržují ani nepodporují.
Požadavky
- Pracovní prostor služby Azure Monitor Pokud pracovní prostor nemáte, vytvořte ho pomocí webu Azure Portal.
- Prometheus nainstalovaný ve vašem clusteru.
Poznámka:
Příklad vzdáleného zápisu v tomto článku používá vzdálený zápis Prometheus k zápisu dat do služby Azure Monitor. Onboarding clusteru AKS do prometheus automaticky nainstaluje Do vašeho clusteru Prometheus a odešle data do pracovního prostoru.
Nasazení
Proxy server je možné nasadit s vlastními šablonami pomocí image verze nebo jako chart Helm. Obě nasazení obsahují stejné přizpůsobitelné parametry. Tyto parametry jsou popsány v tabulce Parametry .
Další informace naleznete v tématu Microsoft Entra authentication proxy project.
Následující příklady ukazují, jak nasadit proxy server pro vzdálený zápis a dotazování dat ze služby Azure Monitor.
Poznámka:
Tento příklad ukazuje, jak pomocí proxy serveru ověřovat žádosti o vzdálené zápisy do spravované služby Azure Monitoru pro Prometheus. Vzdálený zápis prometheus má vyhrazené boční auto pro vzdálené zápis, což je doporučená metoda pro implementaci vzdáleného zápisu.
Před nasazením proxy serveru vyhledejte spravovanou identitu a přiřaďte ji Monitoring Metrics Publisher
roli pro pravidlo shromažďování dat pracovního prostoru služby Azure Monitor.
Vyhledejte spravovanou
clientId
identitu pro váš cluster AKS. Spravovaná identita se používá k ověření v pracovním prostoru služby Azure Monitor. Spravovaná identita se vytvoří při vytvoření clusteru AKS.# Get the identity client_id az aks show -g <AKS-CLUSTER-RESOURCE-GROUP> -n <AKS-CLUSTER-NAME> --query "identityProfile"
Výstup má následující formát:
{ "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" }
Vyhledejte ID pravidla pro shromažďování dat pracovního prostoru služby Azure Monitor (DCR).
Název pravidla je stejný jako název pracovního prostoru. Název skupiny prostředků pro vaše pravidlo shromažďování dat se řídí formátem:MA_<workspace-name>_<REGION>_managed
napříkladMA_amw-proxytest_eastus_managed
. Pomocí následujícího příkazu vyhledejte ID pravidla shromažďování dat:az monitor data-collection rule show --name <dcr-name> --resource-group <resource-group-name> --query "id"
Případně můžete koncový bod příjmu metrik a DCR najít na webu Azure Portal na stránce Přehled pracovního prostoru služby Azure Monitor.
Vyberte pravidlo shromažďování dat na kartě Přehled pracovního prostoru a pak výběrem zobrazení JSON zobrazte ID prostředku.
Monitoring Metrics Publisher
Přiřaďte roli spravované identitěclientId
, aby se mohl zapisovat do pravidla shromažďování dat pracovního prostoru služby Azure Monitor.az role assignment create / --assignee <clientid> / --role "Monitoring Metrics Publisher" / --scope <workspace-dcr-id>
Příklad:
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
K nasazení proxy serveru pro vzdálené zápis použijte následující soubor YAML. Upravte následující parametry:
TARGET_HOST
– Cílový hostitel, do kterého chcete požadavek přeposlat. Pokud chcete odesílat data do pracovního prostoru služby Azure Monitor, použijte částMetrics ingestion endpoint
názvu hostitele na stránce Přehled pracovních prostorů. Napříkladhttp://amw-proxytest-abcd.eastus-1.metrics.ingest.monitor.azure.com
AAD_CLIENT_ID
– PoužitáclientId
spravovaná identita, která byla přiřazena roliMonitoring Metrics Publisher
.AUDIENCE
– Pro příjem metrik do pracovního prostoru služby Azure Monitor nastavteAUDIENCE
hodnotuhttps://monitor.azure.com/.default
.- Odeberte
OTEL_GRPC_ENDPOINT
aOTEL_SERVICE_NAME
pokud nepoužíváte OpenTelemetry.
Další informace o parametrech naleznete v tabulce Parametry .
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
Nasazení proxy serveru pomocí příkazů:
# create the namespace if it doesn't already exist kubectl create namespace observability kubectl apply -f proxy-ingestion.yaml -n observability
Případně můžete proxy server nasadit následujícím způsobem:
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
Nakonfigurujte adresu URL vzdáleného zápisu.
Název hostitele adresy URL se skládá z názvu služby příjmu dat a oboru názvů v následujícím formátu<ingestion service name>.<namespace>.svc.cluster.local
. V tomto příkladu jeazuremonitor-ingestion.observability.svc.cluster.local
hostitel .
Nakonfigurujte cestu URL pomocí cesty zeMetrics ingestion endpoint
stránky Přehled pracovního prostoru služby Azure Monitor. NapříkladdataCollectionRules/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"
Použijte konfiguraci vzdáleného zápisu.
Poznámka:
Nejnovější verzi image proxy serveru najdete ve zprávě k vydání verze.
Zkontrolujte, jestli proxy server ingestuje data.
Zkontrolujte, jestli proxy server úspěšně ingestuje metriky, a to kontrolou protokolů podů nebo dotazováním pracovního prostoru služby Azure Monitor.
Spuštěním následujících příkazů zkontrolujte protokoly podu:
# 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
Úspěšné ingestování metrik vytvoří protokol podobný StatusCode=200
následujícímu:
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
Pokud chcete dotazovat pracovní prostor služby Azure Monitor, postupujte následovně:
Parametry
Parametr obrázku | Název parametru chartu Helm | Popis | Podporované hodnoty | Povinné |
---|---|---|---|---|
TARGET_HOST |
targetHost |
Cílový hostitel, do kterého chcete požadavek přeposlat. Při odesílání dat do pracovního prostoru Služby Azure Monitor použijte Metrics ingestion endpoint stránku Přehled pracovních prostorů. Při čtení dat z pracovního prostoru Služby Azure Monitor použijte Query endpoint stránku Přehled pracovních prostorů. |
Ano | |
IDENTITY_TYPE |
identityType |
Typ identity, který se používá k ověřování požadavků. Tento proxy server podporuje tři typy identit. | systemassigned , , userassigned aadapplication |
Ano |
AAD_CLIENT_ID |
aadClientId |
ID klienta použité identity. Používá se pro userassigned typy identit a aadapplication typy identit. Slouží az aks show -g <AKS-CLUSTER-RESOURCE-GROUP> -n <AKS-CLUSTER-NAME> --query "identityProfile" k načtení ID klienta. |
Ano pro userassigned a aadapplication |
|
AAD_TENANT_ID |
aadTenantId |
ID tenanta použité identity. ID tenanta se používá pro aadapplication typy identit. |
Ano pro aadapplication |
|
AAD_CLIENT_CERTIFICATE_PATH |
aadClientCertificatePath |
Cesta, kde proxy může najít certifikát pro aadapplication. Tato cesta by měla být přístupná proxy serverem a měla by to být certifikát pfx nebo pem obsahující privátní klíč. | Pouze pro aadapplication typy identit |
|
AAD_TOKEN_REFRESH_INTERVAL_IN_PERCENTAGE |
aadTokenRefreshIntervalInMinutes |
Token se aktualizuje na základě procenta času do vypršení platnosti tokenu. Výchozí hodnota je 10 % času před vypršením platnosti. | No | |
AUDIENCE |
audience |
Cílová skupina tokenu | No | |
LISTENING_PORT |
listeningPort |
Proxy naslouchá na tomto portu | Ano | |
OTEL_SERVICE_NAME |
otelServiceName |
Název služby pro trasování a metriky OTEL Výchozí hodnota: aad_auth_proxy | No | |
OTEL_GRPC_ENDPOINT |
otelGrpcEndpoint |
Proxy odešle telemetrii OTEL do tohoto koncového bodu. Výchozí hodnota: http://localhost:4317 | No |
Řešení problému
Kontejner proxy serveru se nespustí.
Spuštěním následujícího příkazu zobrazte všechny chyby kontejneru proxy serveru.kubectl --namespace <Namespace> describe pod <Prometheus-Pod-Name>`
Proxy se nespustí – chyby konfigurace
Proxy zkontroluje platnou identitu pro načtení tokenu během spuštění. Pokud se nepodaří načíst token, spuštění selže. Chyby se protokolují a můžete je zobrazit spuštěním následujícího příkazu:
kubectl --namespace <Namespace> logs <Proxy-Pod-Name>
Příklad výstupu:
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" } --------------------------------------------------------------------------------