Számítási feladatok identitásának üzembe helyezése és konfigurálása az Azure Arc-fürt által engedélyezett AKS-en (előzetes verzió)
A következőkre vonatkozik: Azure Local, 23H2-es verzió
A számítási feladatok identitásának összevonásával konfigurálhat egy felhasználó által hozzárendelt felügyelt identitást vagy alkalmazásregisztrációt a Microsoft Entra-azonosítóban, hogy megbízható jogkivonatokat adjon meg egy külső identitásszolgáltatótól (például a Kubernetestől), lehetővé téve a Hozzáférést a Microsoft Entra által védett erőforrásokhoz, például az Azure Key Vaulthoz vagy az Azure Blob Storage-hoz.
Az Azure Arc által engedélyezett Azure Kubernetes Service (AKS) egy felügyelt Kubernetes-szolgáltatás, amely lehetővé teszi a számítási feladatok identitását engedélyező Kubernetes-fürtök egyszerű üzembe helyezését. Ez a cikk a következő feladatok elvégzését ismerteti:
- Hozzon létre egy AKS Arc-fürtöt, amelyen engedélyezve van a számítási feladatok identitása (előzetes verzió).
- Hozzon létre egy Kubernetes-szolgáltatásfiókot, és kösse azt az Azure Managed Identityhez.
- Összevont hitelesítőadat létrehozása a felügyelt identitáson az OIDC-kiállító megbízhatóságának érdekében.
- Telepítse az alkalmazást.
- Példa: Adjon egy podot a fürtben egy Azure-kulcstartó titkos kulcsainak eléréséhez.
A Workload identitás-összevonás elméleti áttekintéséhez tekintse meg a Workload identitás-összevonás az Azure Arc-kompatibilis Kubernetesben (előzetes verzió)témakört.
Fontos
Ezek az előzetes verziójú funkciók önkiszolgáló, opt-in alapon érhetők el. Az előzetes verziókat "ahogy van" és "rendelkezésre állóként" biztosítjuk, és a szolgáltatási szerződésekből és a korlátozott jótállásból kizárjuk őket. Az Azure Arc előzetes verziója által engedélyezett Azure Kubernetes Service-t részben az ügyfélszolgálat nyújtja a legjobb munkához.
Feljegyzés
Nyilvános előzetes verzióban az Azure helyi AKS 23H2-es verziója támogatja a munkaterhek identitásának engedélyezését az AKS-fürt létrehozása során. A számítási feladatok identitásának engedélyezése azonban a fürt létrehozása vagy későbbi letiltása után jelenleg nem támogatott.
Előfeltételek
Mielőtt üzembe helyez egy Kubernetes-fürtöt, amelyen engedélyezve van az Azure Arc, a következő előfeltételekkel kell rendelkeznie:
- Ha nem rendelkezik Azure-előfizetéssel, a kezdés előtt hozzon létre egy ingyenes fiókot.
- Ez a cikk az Azure CLI 1.4.23-s vagy újabb verzióját igényli. Ha Az Azure Cloud Shellt használja, a legújabb verzió már telepítve van.
Környezeti változók exportálása
A szükséges identitások konfigurálásához szükséges lépések egyszerűsítése érdekében az alábbi parancsok olyan környezeti változókat határoznak meg, amelyekre a jelen cikkben szereplő példák hivatkoznak. Cserélje le a következő értékeket a saját értékére:
$AZSubscriptionID = "00000000-0000-0000-0000-000000000000"
$Location = "westeurope"
$resource_group_name = "myResourceGroup"
$aks_cluster_name = "myAKSCluster"
$SERVICE_ACCOUNT_NAMESPACE = "default"
$SERVICE_ACCOUNT_NAME = "workload-identity-sa"
$FedIdCredentialName = "myFedIdentity"
$MSIName = "myIdentity"
# To access key vault secrets from a pod in the cluster, include these variables:
$KVName = "KV-workload-id"
$KVSecretName= "KV-secret"
Az aktív előfizetés beállítása
Először állítsa be az előfizetést az aktuális aktív előfizetésként. Futtassa az az account set parancsot az előfizetés azonosítójával:
az login
az account set -s $AZSubscriptionID
Erőforráscsoport létrehozása
Az Azure-erőforráscsoportok olyan logikai csoportok, amelyekben az Azure-erőforrások üzembe helyezése és kezelése történik. Erőforráscsoport létrehozásakor a rendszer kérni fogja, hogy adjon meg egy helyet. Ez a hely az erőforráscsoport metaadatainak tárolási helye, és ahol az erőforrások az Azure-ban futnak, ha nem ad meg egy másik régiót az erőforrás létrehozása során.
Erőforráscsoport létrehozásához futtassa az az group create parancsot:
az group create --name $resource_group_name --location $Location
Az alábbi példakimenet egy erőforráscsoport sikeres létrehozását mutatja be:
{
"id": "/subscriptions/<guid>/resourceGroups/myResourceGroup",
"location": "westeurope",
"managedBy": null,
"name": "$resource_group_name",
"properties": {
"provisioningState": "Succeeded"
},
"tags": null
}
1. lépés: AKS Arc-fürt létrehozása a számítási feladatok identitásának engedélyezésével
AKS Arc-fürt létrehozásához az értékekre és $customlocation_ID
az $logicnet_Id
értékekre is szükség van.
-
$customlocation_ID
: Az egyéni hely Azure Resource Manager-azonosítója. Az egyéni hely az Azure Local 23H2-es verziójú fürt üzembe helyezése során kerül konfigurálásra. Az infrastruktúra rendszergazdájának meg kell adnia az egyéni hely Resource Manager-azonosítóját. A Resource Manager-azonosítót$customlocation_ID = $(az customlocation show --name "<your-custom-location-name>" --resource-group $resource_group_name --query "id" -o tsv)
akkor is lekérheti, ha az infrastruktúra-rendszergazda egyéni helynevet és erőforráscsoportnevet ad meg. -
$logicnet_Id
: Az Alábbi lépések végrehajtásával létrehozott Azure Local logikai hálózat Azure Resource Manager-azonosítója. Az infrastruktúra rendszergazdájának meg kell adnia a logikai hálózat Resource Manager-azonosítóját. A Resource Manager-azonosítót$logicnet_Id = $(az stack-hci-vm network lnet show --name "<your-lnet-name>" --resource-group $resource_group_name --query "id" -o tsv)
akkor is lekérheti, ha az infrastruktúra-rendszergazda logikai hálózatnevet és erőforráscsoportnevet ad meg.
Futtassa az az aksarc create parancsot a --enable-oidc-issuer --enable-workload-identity
paraméterrel. Adja meg az entra-admin-group-object-ids azonosítókat , és győződjön meg arról, hogy a Microsoft Entra ID felügyeleti csoport tagja a proxy módú hozzáféréshez:
az aksarc create
-n $aks_cluster_name -g $resource_group_name
--custom-location $customlocation_ID --vnet-ids $logicnet_Id
--aad-admin-group-object-ids <entra-admin-group-object-ids>
--generate-ssh-keys
--enable-oidc-issuer --enable-workload-identity
Néhány perc elteltével a parancs befejeződik, és JSON formátumú információkat ad vissza a fürtről.
A számítási feladat identitásbővítményének üzembe helyezése egy kiépített fürt sikeres létrehozása után eltarthat egy ideig. A számítási feladat identitásbővítményének állapotának ellenőrzéséhez használja a következő parancsot:
az connectedk8s show -n $aks_cluster_name -g $resource_group_name
# agentState = "Succeeded"
"agentPublicKeyCertificate": "",
"agentVersion": "1.21.10",
"arcAgentProfile": {
"agentAutoUpgrade": "Enabled",
"agentErrors": [],
"agentState": "Succeeded",
"desiredAgentVersion": "",
"systemComponents": null
# oidcIssuerProfile "enabled": true and "issuerUrl" present
"oidcIssuerProfile": {
"enabled": true,
"issuerUrl": "https://oidcdiscovery-{location}-endpoint-1111111111111111.000.azurefd.net/00000000-0000-0000-0000-000000000000/11111111-1111-1111-1111-111111111111/"}
Az Azure Portalon megtekintheti a wiextension bővítményt a Kubernetes-fürt Tulajdonságok szakaszában.
Fontos
Az AKS Arc-fürtök biztonsági fejlesztése részeként a számítási feladatok identitásának engedélyezése két módosítást indít el. Először is a Kubernetes szolgáltatásfiók aláíró kulcsa 45 naponta automatikusan elfordul, és 90 napig érvényes marad. Másodszor, a --service-account-extend-token-expiration
jelző le van tiltva, így a jogkivonat érvényessége egy évről legfeljebb 24 órára csökken.
Az OIDC-kiállító URL-címének mentése környezeti változóba
Az AKS-fürt sikeres létrehozása után lekérheti az OIDC-kiállító URL-címét, és mentheti egy környezeti változóba. Futtassa az alábbi parancsot:
$SERVICE_ACCOUNT_ISSUER =$(az connectedk8s show --n $aks_cluster_name --resource-group $resource_group_name --query "oidcIssuerProfile.issuerUrl" --output tsv)
2. lépés: Kubernetes-szolgáltatásfiók létrehozása és kötése az Azure Managed Identityhez
Először hozzon létre egy felügyelt identitást. Futtassa az az identity create parancsot:
az identity create --name $MSIName --resource-group $resource_group_name --location $Location --subscription $AZSubscriptionID
Ezután hozzon létre változókat a felügyelt identitás ügyfélazonosítójának:
$MSIId=$(az identity show --resource-group $resource_group_name --name $MSIName --query 'clientId' --output tsv)
$MSIPrincipalId=$(az identity show --resource-group $resource_group_name --name $MSIName --query 'principalId' --output tsv)
Kubernetes-szolgáltatásfiók létrehozása
Ebben a lépésben létrehoz egy Kubernetes-szolgáltatásfiókot, és megjegyzést fűz hozzá az előző lépésben létrehozott felügyelt identitás ügyfélazonosítójával.
A fürthöz való hozzáféréshez használja a "cluster connect" funkciót egy ügyféleszközről. További információ: A fürt elérése ügyféleszközről:
az connectedk8s proxy -n $aks_cluster_name -g $resource_group_name
Nyisson meg egy új parancssori ablakot. Másolja és illessze be a következő parancsokat:
$yaml = @"
apiVersion: v1
kind: ServiceAccount
metadata:
annotations:
azure.workload.identity/client-id: $MSIId
name: $SERVICE_ACCOUNT_NAME
namespace: $SERVICE_ACCOUNT_NAMESPACE
"@
$yaml = $yaml -replace '\$MSIId', $MSIId `
-replace '\$SERVICE_ACCOUNT_NAME', $SERVICE_ACCOUNT_NAME `
-replace '\$SERVICE_ACCOUNT_NAMESPACE', $SERVICE_ACCOUNT_NAMESPACE
$yaml | kubectl apply -f -
A következő kimenet a szolgáltatásfiók sikeres létrehozását mutatja:
serviceaccount/workload-identity-sa created
3. lépés: Összevont hitelesítő adatok létrehozása a felügyelt identitáson az OIDC-kiállító megbízhatóságának érdekében
Először hozzon létre egy összevont identitás hitelesítő adatokat. Hívja meg az az identity federated-credential create parancsot az összevont identitás hitelesítő adatainak létrehozásához a felügyelt identitás, a szolgáltatásfiók kiállítója és a tulajdonos között. A Microsoft Entra összevont identitás-hitelesítő adatairól további információt a Microsoft Entra-azonosítóban található összevont identitás hitelesítő adatainak áttekintése című témakörben talál.
# Create a federated credential
az identity federated-credential create --name $FedIdCredentialName --identity-name $MSIName --resource-group $resource_group_name --issuer $SERVICE_ACCOUNT_ISSUER --subject "system:serviceaccount:${SERVICE_ACCOUNT_NAMESPACE}:${SERVICE_ACCOUNT_NAME}"
# Show the federated credential
az identity federated-credential show --name $FedIdCredentialName --resource-group $resource_group_name --identity-name $MSIName
Feljegyzés
Az összevont identitás hitelesítő adatainak hozzáadása után a propagálás néhány másodpercet vesz igénybe. A közvetlenül utána végrehajtott jogkivonat-kérelmek meghiúsulhatnak, amíg a gyorsítótár nem frissül. A probléma megelőzése érdekében fontolja meg egy rövid késleltetés hozzáadását az összevont identitás hitelesítő adatainak létrehozása után.
4. lépés: Az alkalmazás üzembe helyezése
Az alkalmazás podok telepítésekor a jegyzéknek hivatkoznia kell a Kubernetes-szolgáltatásfiók létrehozása lépésben létrehozott szolgáltatásfiókra . Az alábbi jegyzék bemutatja, hogyan hivatkozhat a fiókra, különösen a tulajdonságokrametadata\namespace
.spec\serviceAccountName
Mindenképpen adjon meg egy lemezképet image
és egy tárolónevet a következőhöz containerName
:
$image = "<image>" # Replace <image> with the actual image name
$containerName = "<containerName>" # Replace <containerName> with the actual container name
$yaml = @"
apiVersion: v1
kind: Pod
metadata:
name: sample-quick-start
namespace: $SERVICE_ACCOUNT_NAMESPACE
labels:
azure.workload.identity/use: "true" # Required. Only pods with this label can use workload identity.
spec:
serviceAccountName: $SERVICE_ACCOUNT_NAME
containers:
- image: $image
name: $containerName
"@
# Replace variables within the YAML content
$yaml = $yaml -replace '\$SERVICE_ACCOUNT_NAMESPACE', $SERVICE_ACCOUNT_NAMESPACE `
-replace '\$SERVICE_ACCOUNT_NAME', $SERVICE_ACCOUNT_NAME
# Apply the YAML configuration
$yaml | kubectl apply -f -
Fontos
Győződjön meg arról, hogy a számítási feladat identitását használó alkalmazás podjai tartalmazzák a pod specifikációjában szereplő címkét azure.workload.identity/use: "true"
. Ellenkező esetben a podok újraindítása után meghiúsulnak.
Példa: Engedélyek megadása az Azure Key Vault eléréséhez
Az ebben a lépésben ismertetett utasítások azt mutatják be, hogyan férhet hozzá titkos kulcsokhoz, kulcsokhoz vagy tanúsítványokhoz egy Azure-kulcstartóban a podról. Az ebben a szakaszban szereplő példák a számítási feladat identitásának kulcstartójában lévő titkos kulcsokhoz való hozzáférést konfigurálják, de hasonló lépéseket hajthat végre a kulcsokhoz vagy tanúsítványokhoz való hozzáférés konfigurálásához.
Az alábbi példa bemutatja, hogyan használhatja az Azure szerepköralapú hozzáférés-vezérlési (Azure RBAC) engedélymodellt a pod hozzáférésének a kulcstartóhoz való biztosításához. Az Azure Key VaultHoz készült Azure RBAC-engedélymodellről további információt az Azure RBAC-t használó Azure-kulcstartók elérésére vonatkozó alkalmazások engedélyének megadása című témakörben talál.
Hozzon létre egy kulcstartót, amelyen engedélyezve van a törlés elleni védelem és az RBAC-engedélyezés. Meglévő kulcstartót akkor is használhat, ha a törlés elleni védelemhez és az RBAC-engedélyezéshez is konfigurálva van:
az keyvault create --name $KVName --resource-group $resource_group_name --location $Location --enable-purge-protection --enable-rbac-authorization # retrieve the key vault ID for role assignment $KVId=$(az keyvault show --resource-group $resource_group_name --name $KVName --query id --output tsv)
Rendelje hozzá saját magához az RBAC Key Vault titkos kulcstartójának szerepkörét , hogy titkos kulcsokat hozzon létre az új kulcstartóban. Az új szerepkör-hozzárendelések propagálása és frissítése akár öt percet is igénybe vehet.
$CALLER_OBJECT_ID=$(az ad signed-in-user show --query id -o tsv) az role assignment create --assignee-object-id $CALLER_OBJECT_ID --role "Key Vault Secrets Officer" --scope $KVId --assignee-principal-type ServicePrincipal
Hozzon létre egy titkos kulcsot a kulcstartóban:
az keyvault secret set --vault-name $KVName --name $KVSecretName --value "Hello!"
Rendelje hozzá a Key Vault titkos kulcsfelhasználói szerepkörét a korábban létrehozott, felhasználó által hozzárendelt felügyelt identitáshoz. Ez a lépés engedélyezi a felügyelt identitásnak, hogy titkos kulcsokat olvasson be a kulcstartóból:
$IDENTITY_PRINCIPAL_ID=$(az identity show --name "$USER_ASSIGNED_IDENTITY_NAME" --resource-group "$resource_group_name" --query principalId --output tsv) az role assignment create --assignee-object-id $IDENTITY_PRINCIPAL_ID --role "Key Vault Secrets User" --scope $KVId --assignee-principal-type ServicePrincipal
Hozzon létre egy környezeti változót a Key Vault URL-címéhez:
$KVUrl=$(az keyvault show --resource-group $resource_group_name --name $KVName --query properties.vaultUri --output tsv)
Helyezzen üzembe egy podot, amely a szolgáltatásfiókra és a key vault URL-címére hivatkozik:
$yaml = @" apiVersion: v1 kind: Pod metadata: name: sample-quick-start namespace: $SERVICE_ACCOUNT_NAMESPACE labels: azure.workload.identity/use: "true" spec: serviceAccountName: $SERVICE_ACCOUNT_NAME containers: - image: ghcr.io/azure/azure-workload-identity/msal-go name: oidc env: - name: KEYVAULT_URL value: $KVUrl - name: SECRET_NAME value: $KVSecretName nodeSelector: kubernetes.io/os: linux "@ # Replace variables within the YAML content $yaml = $yaml -replace '\$SERVICE_ACCOUNT_NAMESPACE', $SERVICE_ACCOUNT_NAMESPACE ` -replace '\$SERVICE_ACCOUNT_NAME', $SERVICE_ACCOUNT_NAME ` -replace '\$KVUrl', $KVUrl ` -replace '\$KVSecretName', $KVSecretName # Apply the YAML configuration $yaml | kubectl --kubeconfig <path-to-aks-cluster-kubeconfig> apply -f -
AKS Arc-fürt törlése
Az AKS Arc-fürt törléséhez használja az az aksarc delete parancsot:
az aksarc delete -n $aks_cluster_name -g $resource_group_name
Feljegyzés
A PodDisruptionBudget (PDB) erőforrásokkal rendelkező AKS Arc-fürt törlésekor ismert probléma merül fel: előfordulhat, hogy a törlés nem távolítja el ezeket a PDB-erőforrásokat. A Microsoft tisztában van a problémával, és dolgozik a javításon.
A PDB alapértelmezés szerint telepítve van a számítási feladat identitás-kompatibilis AKS Arc-fürtöiben. Munkaterheléssel azonosított AKS Arc-fürt törléséhez tekintse meg a hibaelhárítási útmutatót.
Következő lépések
Ebben a cikkben üzembe helyezett egy Kubernetes-fürtöt, és konfigurálta egy számítási feladat identitásának használatára az alkalmazás számítási feladatainak előkészítéséhez a hitelesítő adatokkal való hitelesítéshez. Most már készen áll az alkalmazás üzembe helyezésére és konfigurálására, hogy a számítási feladat identitását az Azure Identity ügyfélkódtár legújabb verziójával használja.