Share via


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.

  1. 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"
      }
    
  2. 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>_managedMA_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"
    
  3. 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.

    A screenshot showing the overview page for an Azure Monitor workspace.

  4. Rendelje hozzá a Monitoring Metrics Publisher szerepkört a felügyelt identitáshoz clientId , 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
    
  5. 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ési Metrics 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 - A clientId szerepkörhöz hozzárendelt Monitoring Metrics Publisher felügyelt identitás.
    • AUDIENCE – Metrikák Azure Monitor-munkaterületre való betöltéséhez állítsa be AUDIENCE a következőt https://monitor.azure.com/.default : .
    • Távolítsa el OTEL_GRPC_ENDPOINT , és OTEL_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
    
  6. 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
    
  7. 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
    
  8. 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 az azuremonitor-ingestion.observability.svc.cluster.local.
    Konfigurálja az URL-elérési utat az Azure Monitor-munkaterület áttekintési oldalának Metrics 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" 
    
  9. 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:

  1. Az Azure Monitor-munkaterületen válassza a Munkafüzetek lehetőséget.

  2. Válassza a Prometheus Explorer csempét. A screenshot showing the workbooks gallery for an Azure Monitor workspace.

  3. A kezelőlapon adja meg a lekérdezésmezőt.

  4. Az eredmények megtekintéséhez válassza a Rács lapot.

  5. Ellenőrizze a fürt oszlopát, hogy megjelenik-e a fürtből. A screenshot showing the Prometheus explorer query page.

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 userassignedaadapplication
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"
    }
    --------------------------------------------------------------------------------