Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Zestaw SDK uwierzytelniania Microsoft Entra ID (sidecar) to gotowa do wdrożenia konteneryzowana usługa uwierzytelniania, która usprawnia bezpieczne uzyskiwanie tokenów dla Twoich aplikacji. Ten przewodnik instalacji zawiera instrukcje krok po kroku dotyczące wdrażania kontenera zestawu SDK w środowiskach Kubernetes, Docker i Azure, eliminując konieczność osadzania poufnych poświadczeń bezpośrednio w kodzie aplikacji.
Wymagania wstępne
- Dostęp do Microsoft Artifact Registry
- Środowisko uruchomieniowe kontenera (Docker, Kubernetes lub usługa kontenera)
- Zarejestruj nową aplikację w centrum administracyjne Microsoft Entra, skonfigurowaną dla tylko kont w tym katalogu organizacyjnym. Aby uzyskać więcej informacji, zobacz Rejestrowanie aplikacji . Zapisz następujące wartości na stronie Przegląd aplikacji do późniejszego użycia:
- Identyfikator aplikacji (klienta)
- Identyfikator katalogu (klienta)
- Poświadczenia aplikacji:
- Klucz tajny klienta lub certyfikat przechowywany bezpiecznie (np. Azure Key Vault)
- W przypadku wdrożeń Azure: Azure CLI lub dostępu do portalu Azure portal
Obraz kontenera
Pakiet SDK uwierzytelniania Microsoft Entra ID (sidecar) jest udostępniany jako obraz kontenera z rejestru artefaktów
mcr.microsoft.com/entra-sdk/auth-sidecar
Note
Walidacja przychodzącego SHR PoP wymaga sidecara w wersji 1.1.2-preview lub nowszej.
Wzorce wdrażania
Zestaw SDK uwierzytelniania dla Microsoft Entra ID (sidecar) jest przeznaczony do działania jako kontener towarzyszący wraz z aplikacją. Dzięki temu aplikacja może odciążyć pozyskiwanie tokenów i przekazanie zarządzania zestawowi SDK za pośrednictwem wywołań HTTP i utrzymuje poufne poświadczenia poza kodem aplikacji. Poniżej przedstawiono typowe wzorce wdrażania i należy je dostosować do określonego środowiska.
Wzorzec platformy Kubernetes
Wdróż bibliotekę Microsoft Entra ID Auth SDK (sidecar) w tym samym podzie co kontener aplikacji, aby zapewnić bezpieczną komunikację lokalną w obrębie poda. Ten wzorzec zapewnia, że usługa uwierzytelniania działa wraz z aplikacją, umożliwiając szybkie pozyskiwanie tokenów opartych na protokole HTTP przy jednoczesnym zachowaniu poświadczeń odizolowanych od kodu aplikacji:
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"
Wdrożenie rozwiązania Kubernetes
Zobacz samouczek Kubernetes w Azure — przygotowywanie aplikacji do Azure Kubernetes Service (AKS), jeśli chcesz celować w Azure Kubernetes Service. Ten wzorzec wykorzystuje zasób Deployment do zarządzania kontenerami aplikacji oraz kontenerami sidecar Microsoft Entra ID Auth SDK, umożliwiając skalowanie i aktualizacje. Wdrożenie obsługuje również kontrole kondycji i alokację zasobów, zapewniając bezpieczną operację w środowiskach produkcyjnych:
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: /healthz
port: 5000
initialDelaySeconds: 10
periodSeconds: 10
readinessProbe:
httpGet:
path: /healthz
port: 5000
initialDelaySeconds: 5
periodSeconds: 5
Docker Compose
Podczas pracy w środowisku platformy Docker można użyć narzędzia Docker Compose do definiowania i uruchamiania aplikacji wielokontenerowych. W poniższym przykładzie pokazano, jak skonfigurować zestaw SDK uwierzytelniania Microsoft Entra ID (sidecar) obok kontenera aplikacji w lokalnym środowisku programistycznym:
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
usługa Azure Kubernetes Service (AKS) z tożsamością zarządzaną
Podczas wdrażania w AKS można użyć tożsamości zarządzanej platformy Azure do uwierzytelniania zestawu SDK uwierzytelniania Microsoft Entra ID (kontenera sidecar) bez konieczności przechowywania poświadczeń w konfiguracji. Najpierw należy włączyć Tożsamość obciążeń Microsoft Entra w klastrze usługi AKS i utworzyć poświadczenia tożsamości federacyjnej dla tożsamości zarządzanej. Następnie skonfiguruj zestaw SDK do używania tożsamości zarządzanej do uwierzytelniania.
Krok 1. Tworzenie tożsamości zarządzanej
Tworzenie tożsamości zarządzanej i przypisywanie jej odpowiednich uprawnień
# 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)
Krok 2. Przypisywanie uprawnień
Przyznaj tożsamości zarządzanej uprawnienia dostępu do podrzędnych interfejsów API:
# 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
Krok 3. Konfiguracja Workload Identity
Utwórz konto usługi z federacją tożsamości obciążenia:
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
Krok 4: Wdrażanie z użyciem Workload Identity
W poniższym przykładzie wdrożenia zestaw MICROSOFT ENTRA ID Auth SDK (przyczepka) jest skonfigurowany do używania Tożsamość obciążeń Microsoft Entra do uwierzytelniania przy użyciu projekcji tokenu opartego na plikach.
SignedAssertionFilePath Typ poświadczeń odczytuje token z pliku dostarczonego przez webhook tożsamości obciążenia.
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"
Uwaga: Webhook tożsamości obciążenia automatycznie przekształca token federacyjny na /var/run/secrets/azure/tokens/azure-identity-token lub zmienną środowiskową, gdy zasobnik ma wymaganą etykietę i adnotację konta usługi.
Konfiguracja sieci
Poprawna konfiguracja sieci jest niezbędna do zapewnienia bezpiecznej komunikacji między zestawem SDK uwierzytelniania Microsoft Entra ID (przyczepki) i usługami zewnętrznymi przy jednoczesnym ograniczeniu nieautoryzowanego dostępu. Właściwa konfiguracja zapobiega lukom w zabezpieczeniach i zapewnia niezawodną łączność z Microsoft Entra ID punktami końcowymi. Skorzystaj z poniższych wskazówek, aby skonfigurować dostęp sieciowy dla zestawu SDK w zależności od środowiska wdrażania.
Tylko komunikacja wewnętrzna
Aby skonfigurować pakiet SDK uwierzytelniania Microsoft Entra ID (sidecar) wyłącznie do wewnętrznej komunikacji lokalnej dla zasobnika, ustaw w aplikacji adres URL punktu końcowego tak, aby wskazywał na localhost lub 127.0.0.1, w zależności od środowiska:
containers:
- name: sidecar
env:
- name: Kestrel__Endpoints__Http__Url
value: "http://127.0.0.1:5000" # Same pod, localhost communication
Ostrzeżenie
Nigdy nie wystawiaj pakietu SDK uwierzytelniania Microsoft Entra ID (sidecar) na zewnątrz przez LoadBalancer ani Ingress. Powinna być dostępna tylko z kontenera aplikacji.
Zasady sieciowe
Aby jeszcze bardziej ograniczyć dostęp do sieci, rozważ zaimplementowanie zasad sieci platformy Kubernetes w celu ograniczenia ruchu do i z kontenera zestawu SDK:
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
Kontrole kondycji
Zestaw SDK Microsoft Entra ID Auth (kontener pomocniczy) udostępnia punkt końcowy /healthz dla sond żywotności i gotowości, zapewniając, że kontener działa bezpiecznie. Skonfiguruj wdrożenie tak, aby obejmowało następujące sondy:
livenessProbe:
httpGet:
path: /healthz
port: 5000
initialDelaySeconds: 10
periodSeconds: 10
readinessProbe:
httpGet:
path: /healthz
port: 5000
initialDelaySeconds: 5
periodSeconds: 5
Zapotrzebowanie na zasoby
Upewnij się, aby dostosować alokacje zasobów w oparciu o częstotliwość pozyskiwania tokenów, liczbę skonfigurowanych podrzędnych interfejsów API oraz wymagania dotyczące rozmiaru pamięci podręcznej. Zalecane alokacje są następujące:
| Profil zasobu | Memory | CPU |
|---|---|---|
| Minimum | 128Mi | 100 m |
| Recommended | 256Mi | 250 m |
| Duży ruch | 512Mi | 500 m |
Zagadnienia dotyczące skalowania
Zestaw SDK uwierzytelniania dla Microsoft Entra ID (sidecar) został zaprojektowany tak, aby skalować się wraz z aplikacją:
- Projektowanie bezstanowe: każde wystąpienie zestawu SDK przechowuje własną pamięć podręczną tokenów
- Skalowanie horyzontalne: skalowanie przez dodanie większej liczby podów aplikacyjnych, z których każdy ma własne wystąpienie SDK
- Ocieplenie pamięci podręcznej: rozważ zaimplementowanie strategii ocieplenia pamięci podręcznej w scenariuszach o dużym natężeniu ruchu
Rozwiązywanie problemów z wdrażaniem
Typowe problemy, które mogą wystąpić, mogą być spowodowane nieprawidłowymi wartościami konfiguracji, łącznością sieciową z Microsoft Entra ID lub brakującymi poświadczeniami lub certyfikatami. Upewnij się, że tożsamość zarządzana lub jednostka usługi ma odpowiednie uprawnienia aplikacji, udzielono zgody administratora (jeśli jest to wymagane) i poprawność przypisań ról.
Poniżej przedstawiono niektóre typowe kroki rozwiązywania problemów, które mogą pomóc rozwiązać problemy z wdrażaniem:
Kontener nie zostanie uruchomiony
Sprawdź dzienniki kontenera:
kubectl logs <pod-name> -c sidecar
Niepowodzenia związane z kontrolą kondycji
Sprawdź, czy pakiet SDK uwierzytelniania Microsoft Entra ID (sidecar) odpowiada:
kubectl exec <pod-name> -c sidecar -- curl http://localhost:5000/healthz
Aby uzyskać bardziej szczegółowe instrukcje dotyczące rozwiązywania problemów, zapoznaj się z przewodnikiem rozwiązywania problemów.