Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Microsoft Entra ID Auth SDK (sidecar) är en distributionsklar, containerbaserad autentiseringstjänst som effektiviserar säker hämtning av token för dina applikationer. Den här installationsguiden innehåller stegvisa instruktioner för att distribuera SDK-containern i Kubernetes-, Docker- och Azure-miljöer, vilket eliminerar behovet av att bädda in känsliga autentiseringsuppgifter direkt i programkoden.
Förutsättningar
- Åtkomst till Microsoft Artifact Registry
- Container-runtime (Docker, Kubernetes eller containertjänst)
- Registrera en ny app i Microsoft Entra administrationscenter som konfigurerats för Konton endast i den här organisationskatalogen. Mer information finns i Registrera ett program . Registrera följande värden från programöversiktssidan för senare användning:
- App-ID (klient-ID)
- Katalog-ID (hyresgäst)
- Autentiseringsuppgifter för programmet:
- Klienthemlighet eller certifikat som lagras på ett säkert sätt (t.ex. Azure Key Vault)
- För Azure distributioner: Azure CLI eller åtkomst till portalen Azure
Containeravbildning
Microsoft Entra ID Auth SDK (sidovagn) distribueras som en containeravbildning från artefaktregistret
mcr.microsoft.com/entra-sdk/auth-sidecar
Distributionsmönster
Microsoft Entra ID Auth SDK (sidecar) är utformat för att köras som en kompletterande container vid sidan av din applikation. På så sätt kan ditt program avlasta tokenförvärv och hantering till SDK via HTTP-anrop och hålla känsliga autentiseringsuppgifter borta från programkoden. Följande är vanliga distributionsmönster och bör anpassas till din specifika miljö.
Kubernetes-mönster
Driftsätt Microsoft Entra ID Auth SDK (sidecar) i samma pod som din programcontainer för säker kommunikation lokalt inom poden. Det här mönstret säkerställer att autentiseringstjänsten körs tillsammans med din app, vilket möjliggör snabbt HTTP-baserat tokenförvärv samtidigt som autentiseringsuppgifterna hålls isolerade från programkoden:
apiVersion: v1
kind: Pod
metadata:
# Your application container
name: myapp
spec:
containers:
- name: app
image: myregistry/myapp:latest
ports:
- containerPort: 8080
env:
- name: SIDECAR_URL
value: "http://localhost:5000"
# Microsoft Entra ID Auth SDK (sidecar) container
- name: sidecar
image: mcr.microsoft.com/entra-sdk/auth-sidecar:1.0.0
ports:
- containerPort: 5000
env:
- name: AzureAd__TenantId
value: "your-tenant-id"
- name: AzureAd__ClientId
value: "your-client-id"
- name: AzureAd__ClientCredentials__0__SourceType
value: "KeyVault"
- name: AzureAd__ClientCredentials__0__KeyVaultUrl
value: "https://your-keyvault.vault.azure.net"
- name: AzureAd__ClientCredentials__0__KeyVaultCertificateName
value: "your-cert-name"
Kubernetes-distribution
Se självstudien Kubernetes i Azure – Förbereda ett program för Azure Kubernetes Service (AKS) om du vill rikta in dig på Azure Kubernetes Services. Det här mönstret använder en distributionsresurs för att hantera program- och Microsoft Entra ID Auth SDK-containrar (sidovagn), vilket möjliggör skalning och uppdateringar. Implementeringen hanterar även hälsokontroller och resursallokering, vilket säkerställer säker drift i produktionsmiljöer.
apiVersion: apps/v1
kind: Deployment
metadata:
name: myapp-deployment
spec:
replicas: 3
selector:
matchLabels:
app: myapp
template:
metadata:
labels:
app: myapp
spec:
serviceAccountName: myapp-sa
containers:
- name: app
image: myregistry/myapp:latest
ports:
- containerPort: 8080
env:
- name: SIDECAR_URL
value: "http://localhost:5000"
resources:
requests:
memory: "256Mi"
cpu: "250m"
limits:
memory: "512Mi"
cpu: "500m"
- name: sidecar
image: mcr.microsoft.com/entra-sdk/auth-sidecar:1.0.0
ports:
- containerPort: 5000
env:
- name: AzureAd__TenantId
valueFrom:
configMapKeyRef:
name: app-config
key: tenant-id
- name: AzureAd__ClientId
valueFrom:
configMapKeyRef:
name: app-config
key: client-id
- name: AzureAd__Instance
value: "https://login.microsoftonline.com/"
resources:
requests:
memory: "128Mi"
cpu: "100m"
limits:
memory: "256Mi"
cpu: "250m"
livenessProbe:
httpGet:
path: /health
port: 5000
initialDelaySeconds: 10
periodSeconds: 10
readinessProbe:
httpGet:
path: /health
port: 5000
initialDelaySeconds: 5
periodSeconds: 5
Docker Compose
När du arbetar i en Docker-miljö kan du använda Docker Compose för att definiera och köra program med flera containrar. I följande exempel visas hur du konfigurerar Microsoft Entra ID Auth SDK (sidovagn) tillsammans med programcontainern i en lokal utvecklingsmiljö:
version: '3.8'
services:
app:
image: myregistry/myapp:latest
ports:
- "8080:8080"
environment:
- AzureAd__TenantId=${TENANT_ID}
- AzureAd__ClientId=${CLIENT_ID}
- AzureAd__ClientCredentials__0__SourceType=ClientSecret
- AzureAd__ClientCredentials__0__ClientSecret=${CLIENT_SECRET}
networks:
- app-network
networks:
app-network:
driver: bridge
Azure Kubernetes-tjänsten (AKS) med hanterad identitet
När du distribuerar till AKS kan du använda Azure Managed Identity för att autentisera Microsoft Entra ID Auth SDK (sidecar) utan att lagra autentiseringsuppgifter i konfigurationen. Först måste du aktivera Microsoft Entra Workload ID i ditt AKS-kluster och skapa en federerad identitetsautentisering för din hanterade identitet. Konfigurera sedan SDK för att använda den hanterade identiteten för autentisering.
Steg 1: Skapa hanterad identitet
Skapa en hanterad identitet och tilldela den lämpliga behörigheter
# Create managed identity
az identity create \
--resource-group myResourceGroup \
--name myapp-identity
# Get the identity details
IDENTITY_CLIENT_ID=$(az identity show \
--resource-group myResourceGroup \
--name myapp-identity \
--query clientId -o tsv)
IDENTITY_OBJECT_ID=$(az identity show \
--resource-group myResourceGroup \
--name myapp-identity \
--query principalId -o tsv)
Steg 2: Tilldela behörigheter
Ge den hanterade identiteten behörighet att komma åt underordnade API:er:
# Example: Grant permission to call Microsoft Graph
az ad app permission add \
--id $IDENTITY_CLIENT_ID \
--api 00000003-0000-0000-c000-000000000000 \
--api-permissions e1fe6dd8-ba31-4d61-89e7-88639da4683d=Scope
Steg 3: Konfigurera arbetsbelastningsidentitet
Skapa ett tjänstkonto med identitetsfederation för arbetsbelastning:
export AKS_OIDC_ISSUER=$(az aks show \
--resource-group myResourceGroup \
--name myAKSCluster \
--query "oidcIssuerProfile.issuerUrl" -o tsv)
az identity federated-credential create \
--name myapp-federated-identity \
--identity-name myapp-identity \
--resource-group myResourceGroup \
--issuer $AKS_OIDC_ISSUER \
--subject system:serviceaccount:default:myapp-sa
Steg 4: Distribuera med Workload Identity
I följande distributionsexempel är Microsoft Entra ID Auth SDK (sidovagn) konfigurerad för att använda Microsoft Entra Workload ID för autentisering med hjälp av filbaserad tokenprojektion. Typ SignedAssertionFilePath av autentiseringsuppgifter läser token från filen som projiceras av webhooken för arbetsbelastningsidentitet:
apiVersion: v1
kind: ServiceAccount
metadata:
name: myapp-sa
namespace: default
annotations:
azure.workload.identity/client-id: "<MANAGED_IDENTITY_CLIENT_ID>"
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: myapp-deployment
spec:
template:
metadata:
labels:
azure.workload.identity/use: "true"
spec:
serviceAccountName: myapp-sa
containers:
- name: app
image: myregistry/myapp:latest
env:
- name: SIDECAR_URL
value: "http://localhost:5000"
- name: sidecar
image: mcr.microsoft.com/entra-sdk/auth-sidecar:1.0.0
ports:
- containerPort: 5000
env:
- name: AzureAd__TenantId
value: "your-tenant-id"
- name: AzureAd__ClientId
value: "<MANAGED_IDENTITY_CLIENT_ID>"
# Workload Identity credentials - uses file-based token projection
- name: AzureAd__ClientCredentials__0__SourceType
value: "SignedAssertionFilePath"
Obs! Webhooken för arbetsbelastningsidentitet projicerar automatiskt den federerade token till /var/run/secrets/azure/tokens/azure-identity-token eller en miljövariabel när podden har den nödvändiga etiketten och tjänstkontoannotationen.
Konfiguration av nätverk
Rätt nätverkskonfiguration är viktigt för att säkerställa säker kommunikation mellan Microsoft Entra ID Auth SDK (sidovagn) och externa tjänster samtidigt som obehörig åtkomst begränsas. Korrekt konfiguration förhindrar säkerhetsrisker och säkerställer tillförlitlig anslutning till Microsoft Entra ID slutpunkter. Använd följande riktlinjer för att konfigurera nätverksåtkomst för SDK beroende på din distributionsmiljö.
Endast intern kommunikation
Om du vill konfigurera Microsoft Entra ID Auth SDK (sidecar) endast för intern pod-lokal kommunikation anger du slutpunkts-URL:en i programmet så att den pekar mot localhost eller 127.0.0.1, beroende på din miljö:
containers:
- name: sidecar
env:
- name: Kestrel__Endpoints__Http__Url
value: "http://127.0.0.1:5000" # Same pod, localhost communication
Försiktighet
Exponera aldrig Microsoft Entra ID Auth SDK (sidovagn) externt via LoadBalancer eller Ingress. Den bör endast vara tillgänglig från programcontainern.
Nätverksprinciper
Om du vill begränsa nätverksåtkomsten ytterligare kan du överväga att implementera Kubernetes-nätverksprinciper för att begränsa trafiken till och från SDK-containern:
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: sidecar-network-policy
spec:
podSelector:
matchLabels:
app: myapp
policyTypes:
- Ingress
- Egress
ingress:
# No external ingress rules - only pod-local communication
egress:
- to:
- namespaceSelector:
matchLabels:
name: kube-system
ports:
- protocol: TCP
port: 53 # DNS
- to:
- podSelector: {}
- to:
# Allow outbound to Microsoft Entra ID
ports:
- protocol: TCP
port: 443
Hälsokontroller
Microsoft Entra ID Auth SDK (sidecar) tillhandahåller en /health ändpunkt för liveness- och readiness-avsökningar, vilket säkerställer att containern körs säkert. Konfigurera distributionen för att inkludera dessa sonder.
livenessProbe:
httpGet:
path: /health
port: 5000
initialDelaySeconds: 10
periodSeconds: 10
readinessProbe:
httpGet:
path: /health
port: 5000
initialDelaySeconds: 5
periodSeconds: 5
Resurskrav
De rekommenderade resursallokeringarna är följande, men se till att justera baserat på hämtningsfrekvens för token, antal konfigurerade underordnade API:er och krav på cachestorlek:
| Resursprofil | Memory | CPU |
|---|---|---|
| Minimal | 128Mi | 100 m |
| Rekommenderat | 256 MiB | 250 m |
| Hög trafik | 512Mi | 500 m |
Att tänka på vid skalning
Microsoft Entra ID Auth SDK (sidecar) är utformat för att skala med din applikation:
- Tillståndslös design: Varje SDK-instans har en egen cache för tokenar
- Horisontell skalning: Skala genom att lägga till fler programpoddar (var och en med sin egen SDK-instans)
- Cacheuppvärmning: Överväg att implementera strategier för cacheuppvärmning för scenarier med hög trafik
Felsöka utveckling
Vanliga problem som kan uppstå kan bero på ogiltiga konfigurationsvärden, nätverksanslutning till Microsoft Entra ID eller saknade autentiseringsuppgifter eller certifikat. Kontrollera att den hanterade identiteten eller tjänstens huvudprincip har rätt applikationsbehörigheter, administratörsmedgivande beviljat (om det behövs) och rätt rolltilldelningar.
Följande är några vanliga felsökningssteg som kan hjälpa dig att lösa distributionsproblem:
Containern startar inte
Kontrollera containerloggarna:
kubectl logs <pod-name> -c sidecar
Misslyckad hälsokontroll
Kontrollera att Microsoft Entra ID Auth SDK (sidecar) svarar:
kubectl exec <pod-name> -c sidecar -- curl http://localhost:5000/health
Mer detaljerade anvisningar om felsökning finns i felsökningsguiden.