AKS-fürt üzembe helyezése bizalmas tárolókkal és alapértelmezett szabályzattal
Ebben a cikkben az Azure CLI használatával üzembe helyez egy Azure Kubernetes Service-fürtöt (AKS), és konfigurálja a bizalmas tárolókat (előzetes verzió) egy alapértelmezett biztonsági szabályzattal. Ezután egy alkalmazást bizalmas tárolóként kell üzembe helyeznie. További információkért olvassa el az AKS Bizalmas tárolók áttekintését.
Az AKS Bizalmas tárolók használatának első lépései általában az alábbi lépéseket foglalják magukban.
- AKS-fürt üzembe helyezése vagy frissítése az Azure CLI használatával
- Jegyzet hozzáadása a pod YAML-jegyzékéhez, amely a podot bizalmas tárolóként futtatottként jelöli meg
- Biztonsági szabályzat hozzáadása a pod YAML-jegyzékéhez
- A biztonsági szabályzat kényszerítésének engedélyezése
- Az alkalmazás üzembe helyezése bizalmas számítástechnikában
Előfeltételek
Az Azure CLI 2.44.1-es vagy újabb verziója. Futtassa
az --version
a verziót, és futtassaaz upgrade
a verzió frissítéséhez. Ha telepíteni vagy frissíteni szeretne: Az Azure CLI telepítése.Az
aks-preview
Azure CLI-bővítmény 0.5.169-es vagy újabb verziója.A
confcom
Confidential Container Azure CLI 0.3.3-s vagy újabb bővítménye.confcom
biztonsági szabályzat létrehozásához szükséges.Regisztrálja a
Preview
funkciót az Azure-előfizetésében.Az AKS támogatja a bizalmas tárolókat (előzetes verzió) az 1.25.0-s és újabb verziókon.
Számítási feladat identitása és összevont identitás hitelesítő adatai. A számítási feladatok identitásának hitelesítő adatai lehetővé teszik, hogy a Kubernetes-alkalmazások biztonságosan hozzáférjenek az Azure-erőforrásokhoz egy Microsoft Entra-azonosítóval, jegyzetekkel ellátott szolgáltatásfiókok alapján. Ha nem ismeri a Microsoft Entra Számítási feladat ID, tekintse át a Microsoft Entra Számítási feladat ID áttekintését, és tekintse át, hogyan működik a Számítási feladatok identitása az AKS-vel.
A fürt létrehozásához használt identitás rendelkezik a megfelelő minimális engedélyekkel. Az AKS-hez való hozzáféréssel és identitással kapcsolatos további információkért lásd az Azure Kubernetes Service (AKS) hozzáférési és identitásbeállításait.
Kubernetes-fürt kezeléséhez használja a Kubernetes parancssori ügyfélalkalmazás kubectl-ét. Az Azure Cloud Shell a .
kubectl
A kubectl helyi telepítéséhez használja az az aks install-cli parancsot.Az AKS bizalmas tárolói oldalkocsis nyílt forráskód tárolót biztosítanak az igazoláshoz és a kulcsok biztonságos kiadásához. A sidecar integrálható egy kulcskezelő szolgáltatás (például az Azure Key Vaulttal), hogy az ellenőrzés befejezése után kiadjon egy kulcsot a tárolócsoportnak. Az Azure Key Vault felügyelt HSM (hardveres biztonsági modul) üzembe helyezése nem kötelező, de ajánlott a tárolószintű integritás és az igazolás támogatására. Lásd: Felügyelt HSM kiépítése és aktiválása a felügyelt HSM üzembe helyezéséhez.
Az aks-preview Azure CLI-bővítmény telepítése
Fontos
Az AKS előzetes verziójú funkciói ö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 AKS előzetes verzióit részben az ügyfélszolgálat fedezi a legjobb munkamennyiség alapján. Ezért ezek a funkciók nem éles használatra vannak szánva. További információkért tekintse meg az alábbi támogatási cikkeket:
Az aks-preview bővítmény telepítéséhez futtassa a következő parancsot:
az extension add --name aks-preview
Futtassa a következő parancsot a bővítmény legújabb verziójára való frissítéshez:
az extension update --name aks-preview
A confcom Azure CLI-bővítmény telepítése
A confcom bővítmény telepítéséhez futtassa a következő parancsot:
az extension add --name confcom
Futtassa a következő parancsot a bővítmény legújabb verziójára való frissítéshez:
az extension update --name confcom
A KataCcIsolationPreview funkciójelző regisztrálása
Regisztrálja a KataCcIsolationPreview
funkciójelzőt az az feature register paranccsal, ahogyan az az alábbi példában látható:
az feature register --namespace "Microsoft.ContainerService" --name "KataCcIsolationPreview"
Néhány percig tart, amíg az állapot megjelenik a Regisztrált állapotban. Ellenőrizze a regisztrációs állapotot az az feature show paranccsal:
az feature show --namespace "Microsoft.ContainerService" --name "KataCcIsolationPreview"
Ha az állapot a Regisztrált állapotot tükrözi, frissítse a Microsoft.ContainerService erőforrás-szolgáltató regisztrációját az az provider register paranccsal:
az provider register --namespace "Microsoft.ContainerService"
Új fürt üzembe helyezése
Hozzon létre egy AKS-fürtöt az az aks create paranccsal, és adja meg a következő paramétereket:
- --os-sku: AzureLinux. Ebben az előzetes kiadásban csak az Azure Linux operációsrendszer-termékváltozat támogatja ezt a funkciót.
- --node-vm-size: Minden Olyan Azure-beli virtuálisgép-méret, amely 2. generációs virtuális gép, és támogatja a beágyazott virtualizálási műveket. Például Standard_DC8as_cc_v5 virtuális gépeket.
- --enable-workload-identity: Lehetővé teszi egy Microsoft Entra Számítási feladat ID létrehozását, amely lehetővé teszi a podok számára a Kubernetes-identitás használatát.
- --enable-oidc-issuer: OpenID Connect (OIDC) kiállító engedélyezése. Lehetővé teszi a Microsoft Entra-azonosító vagy más felhőszolgáltatói identitás- és hozzáférés-kezelési platform számára az API-kiszolgáló nyilvános aláíró kulcsainak felderítését.
Az alábbi példa frissíti a myAKSCluster nevű fürtöt, és egyetlen rendszercsomópont-készletet hoz létre a myResourceGroupban:
az aks create --resource-group myResourceGroup --name myAKSCluster --kubernetes-version <1.25.0 and above> --os-sku AzureLinux --node-vm-size Standard_DC4as_cc_v5 --node-count 1 --enable-oidc-issuer --enable-workload-identity --generate-ssh-keys
Néhány perc elteltével a parancs befejeződik, és JSON formátumú információkat ad vissza a fürtről. Az előző lépésben létrehozott fürtnek egyetlen csomópontkészlete van. A következő lépésben hozzáadunk egy második csomópontkészletet a fürthöz.
Ha a fürt készen áll, kérje le a fürt hitelesítő adatait az az aks get-credentials paranccsal.
az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
Adjon hozzá egy felhasználói csomópontkészletet a myAKSClusterhez két csomóponttal a nodepool2-ben a myResourceGroupban az az aks nodepool add paranccsal. Adja meg a következő paramétereket:
- --számítási feladat-futtatókörnyezet: Adja meg a KataCcIsolationt a bizalmas tárolók funkció engedélyezéséhez a csomópontkészleten. Ezzel a paraméterrel a többi paraméternek meg kell felelnie az alábbi követelményeknek. Ellenkező esetben a parancs meghiúsul, és a megfelelő paraméter(ek)sel kapcsolatos problémát jelez.
- --os-sku: AzureLinux. Ebben az előzetes kiadásban csak az Azure Linux operációsrendszer-termékváltozat támogatja ezt a funkciót.
- --node-vm-size: Minden Olyan Azure-beli virtuálisgép-méret, amely 2. generációs virtuális gép, és támogatja a beágyazott virtualizálási műveket. Például Standard_DC8as_cc_v5 virtuális gépeket.
az aks nodepool add --resource-group myResourceGroup --name nodepool2 --cluster-name myAKSCluster --node-count 2 --os-sku AzureLinux --node-vm-size Standard_DC4as_cc_v5 --workload-runtime KataCcIsolation
Néhány perc elteltével a parancs befejeződik, és JSON formátumú információkat ad vissza a fürtről.
Üzembe helyezés meglévő fürtön
Ha ezt a funkciót egy meglévő AKS-fürttel szeretné használni, a következő követelményeknek kell megfelelnie:
- Kövesse a lépéseket a KataCcIsolationPreview funkciójelző regisztrálásához.
- Ellenőrizze, hogy a fürt a Kubernetes 1.25.0-s vagy újabb verzióját futtatja-e.
- Ha még nem tette meg, engedélyezze a számítási feladatok identitását a fürtön.
A bizalmas tárolók (előzetes verzió) engedélyezéséhez hozzon létre egy csomópontkészletet a üzemeltetéséhez.
Adjon hozzá egy csomópontkészletet az AKS-fürthöz az az aks nodepool add paranccsal. Adja meg a következő paramétereket:
- --resource-group: Adja meg egy meglévő erőforráscsoport nevét az AKS-fürt létrehozásához.
- --cluster-name: Adjon meg egy egyedi nevet az AKS-fürtnek, például a myAKSClusternek.
- --name: Adjon meg egy egyedi nevet a fürtök csomópontkészletének, például a nodepool2-nek.
- --számítási feladat-futtatókörnyezet: Adja meg a KataCcIsolationt a funkció csomópontkészleten való engedélyezéséhez. A paraméter mellett ezeknek az
--workload-runtime
egyéb paramétereknek is meg kell felelniük a következő követelményeknek. Ellenkező esetben a parancs meghiúsul, és a megfelelő paraméter(ek)sel kapcsolatos problémát jelez. - --os-sku: AzureLinux. Ebben az előzetes kiadásban csak az Azure Linux operációsrendszer-termékváltozat támogatja ezt a funkciót.
- --node-vm-size: Minden Olyan Azure-beli virtuálisgép-méret, amely 2. generációs virtuális gép, és támogatja a beágyazott virtualizálási műveket. Például Standard_DC8as_cc_v5 virtuális gépeket.
Az alábbi példa egy felhasználói csomópontkészletet ad hozzá a myAKSClusterhez két csomóponttal a nodepool2-ben a myResourceGroupban:
az aks nodepool add --resource-group myResourceGroup --name nodepool2 –-cluster-name myAKSCluster --node-count 2 --os-sku AzureLinux --node-vm-size Standard_DC4as_cc_v5 --workload-runtime KataCcIsolation
Néhány perc elteltével a parancs befejeződik, és JSON formátumú információkat ad vissza a fürtről.
Futtassa az az aks update parancsot a bizalmas tárolók (előzetes verzió) fürtbeli engedélyezéséhez.
az aks update --name myAKSCluster --resource-group myResourceGroup
Néhány perc elteltével a parancs befejeződik, és JSON formátumú információkat ad vissza a fürtről.
Ha a fürt készen áll, kérje le a fürt hitelesítő adatait az az aks get-credentials paranccsal.
az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
Tároló konfigurálása
Mielőtt konfigurálja az Azure Key Vaulthoz és a titkos kódhoz való hozzáférést, és egy alkalmazást bizalmas tárolóként helyez üzembe, be kell fejeznie a számítási feladat identitásának konfigurációját.
A számítási feladat identitásának konfigurálásához hajtsa végre a számítási feladatok identitásának üzembe helyezéséről és konfigurálására vonatkozó cikkben leírt alábbi lépéseket:
- Az OIDC-kiállító URL-címének lekérése
- Felügyelt identitás létrehozása
- Kubernetes-szolgáltatásfiók létrehozása
- Összevont identitás hitelesítő adatainak létrehozása
Fontos
Az oktatóanyag folytatásához be kell állítania a környezeti változók exportálása című szakasz környezeti változók exportálása című szakaszát, és konfigurálnia kell a számítási feladat identitásáról szóló cikket. A számítási feladat identitásának konfigurálása előtt ne felejtse el beállítani a változót SERVICE_ACCOUNT_NAMESPACE
kafka
, és hajtsa végre a parancsot kubectl create namespace kafka
.
Megbízható alkalmazás üzembe helyezése kata-cc és igazolási tároló használatával
Az alábbi lépések az Azure Managed Hardware Security Modules (mHSM) által kezelt titkosítási kulcsok használatával konfigurálják a Teljes körű titkosítást a Kafka-üzenetekhez. A kulcs csak akkor lesz felszabadítva, ha a Kafka-fogyasztó egy Bizalmas tárolón belül fut egy Azure-igazolási titkos kulcs kiépítési tárolójával, amely a podba van injektálva.
Ez a konfiguráció a következő négy összetevőn alapul:
- Kafka-fürt: A fürt Kafka-névterében üzembe helyezett egyszerű Kafka-fürt.
- Kafka Producer: Vanilla Kubernetes podként futó Kafka-gyártó, amely titkosított, felhasználó által konfigurált üzeneteket küld nyilvános kulccsal egy Kafka-témakörbe.
- Kafka Consumer: Egy Kafka fogyasztói pod, amely a kata-cc futtatókörnyezettel fut, és egy biztonságos kulcskioldó tárolóval rendelkezik a Kafka-üzenetek visszafejtéséhez szükséges titkos kulcs lekéréséhez és az üzenetek webes felhasználói felületre való megjelenítéséhez.
Ebben az előzetes kiadásban tesztelési és kiértékelési célokra javasoljuk, hogy hozzon létre vagy használjon egy meglévő Prémium szintű Azure Key Vault-erőforrást a kulcsok hardveres biztonsági modulban (HSM) való tárolásának támogatására. Nem javasoljuk az éles kulcstartó használatát. Ha nem rendelkezik Azure Key Vaulttal, olvassa el a Kulcstartó létrehozása az Azure CLI használatával című témakört.
Adjon hozzáférést a korábban létrehozott felügyelt identitáshoz és a fiókjához a kulcstartóhoz. Mindkét identitáshoz hozzárendelheti a Key Vault crypto officer és a Key Vault crypto user Azure RBAC szerepkört.
Feljegyzés
A felügyelt identitás a változóhoz
USER_ASSIGNED_IDENTITY_NAME
hozzárendelt érték.Szerepkör-hozzárendelések hozzáadásához rendelkeznie kell és
Microsoft.Authorization/roleAssignments/delete
engedélyekkel kell rendelkeznieMicrosoft.Authorization/roleAssignments/write
, például a Key Vault adathozzáférési rendszergazdájának, a felhasználói hozzáférés rendszergazdájának vagy tulajdonosának.A HSM által védett kulcsok támogatásához a Key Vault Prémium termékváltozatát kell használnia.
Futtassa a következő parancsot a hatókör beállításához:
AKV_SCOPE=$(az keyvault show --name <AZURE_AKV_RESOURCE_NAME> --query id --output tsv)
Futtassa a következő parancsot a Key Vault crypto officer szerepkör hozzárendeléséhez.
az role assignment create --role "Key Vault Crypto Officer" --assignee "${USER_ASSIGNED_IDENTITY_NAME}" --scope $AKV_SCOPE
Futtassa a következő parancsot a Key Vault crypto user szerepkör hozzárendeléséhez.
az role assignment create --role "Key Vault Crypto User" --assignee "${USER_ASSIGNED_IDENTITY_NAME}" --scope $AKV_SCOPE
Telepítse a Kafka-fürtöt a kafka névtérbe az alábbi parancs futtatásával:
kubectl create -f 'https://strimzi.io/install/latest?namespace=kafka' -n kafka
Futtassa a következő parancsot a fürt CR-fájljának
kafka
alkalmazásához.kubectl apply -f https://strimzi.io/examples/latest/kafka/kafka-persistent-single.yaml -n kafka
Készítse elő az RSA Encryption/Decryption kulcsot a GitHubról származó számítási feladat bash-szkriptjének használatával. Mentse a fájlt
setup-key.sh
néven.Állítsa be a
MAA_ENDPOINT
környezeti változót az Attest URI teljes tartománynevével az alábbi parancs futtatásával.export MAA_ENDPOINT="$(az attestation show --name "myattestationprovider" --resource-group "MyResourceGroup" --query 'attestUri' -o tsv | cut -c 9-)"
Ellenőrizze, hogy az Attest URI teljes tartományneve megfelelő formátumban van-e (a MAA_ENDPOINT nem tartalmazhatja a "https://" előtagot):
echo $MAA_ENDPOINT
Feljegyzés
A Microsoft Azure-igazolás beállításához tekintse meg a rövid útmutatót: Azure-igazolás beállítása az Azure CLI-vel.
Másolja ki a következő YAML-jegyzékfájlt, és mentse a következőként
consumer.yaml
.apiVersion: v1 kind: Pod metadata: name: kafka-golang-consumer namespace: kafka labels: azure.workload.identity/use: "true" app.kubernetes.io/name: kafka-golang-consumer spec: serviceAccountName: workload-identity-sa runtimeClassName: kata-cc-isolation containers: - image: "mcr.microsoft.com/aci/skr:2.7" imagePullPolicy: Always name: skr env: - name: SkrSideCarArgs value: ewogICAgImNlcnRjYWNoZSI6IHsKCQkiZW5kcG9pbnRfdHlwZSI6ICJMb2NhbFRISU0iLAoJCSJlbmRwb2ludCI6ICIxNjkuMjU0LjE2OS4yNTQvbWV0YWRhdGEvVEhJTS9hbWQvY2VydGlmaWNhdGlvbiIKCX0gIAp9 command: - /bin/skr volumeMounts: - mountPath: /opt/confidential-containers/share/kata-containers/reference-info-base64 name: endor-loc - image: "mcr.microsoft.com/acc/samples/kafka/consumer:1.0" imagePullPolicy: Always name: kafka-golang-consumer env: - name: SkrClientKID value: kafka-encryption-demo - name: SkrClientMAAEndpoint value: sharedeus2.eus2.test.attest.azure.net - name: SkrClientAKVEndpoint value: "myKeyVault.vault.azure.net" - name: TOPIC value: kafka-demo-topic command: - /consume ports: - containerPort: 3333 name: kafka-consumer resources: limits: memory: 1Gi cpu: 200m volumes: - name: endor-loc hostPath: path: /opt/confidential-containers/share/kata-containers/reference-info-base64 --- apiVersion: v1 kind: Service metadata: name: consumer namespace: kafka spec: type: LoadBalancer selector: app.kubernetes.io/name: kafka-golang-consumer ports: - protocol: TCP port: 80 targetPort: kafka-consumer
Feljegyzés
Frissítse a pod környezeti változójának
SkrClientAKVEndpoint
értékét úgy, hogy az megfeleljen az Azure Key Vault URL-címének, kivéve a protokoll értékéthttps://
. Az aktuális érték helyőrző értéke .myKeyVault.vault.azure.net
Frissítse a pod környezeti változójánakSkrClientMAAEndpoint
értékét a következő értékreMAA_ENDPOINT
: . A parancs vagy a parancsecho $MAA_ENDPOINT
az attestation show --name "myattestationprovider" --resource-group "MyResourceGroup" --query 'attestUri' -o tsv | cut -c 9-
futtatásával megtalálhatjaMAA_ENDPOINT
annak értékét.Hozza létre a kafka fogyasztói YAML-jegyzék biztonsági szabályzatát, és szerezze be a változóban
WORKLOAD_MEASUREMENT
tárolt biztonsági szabályzat kivonatát az alábbi parancs futtatásával:export WORKLOAD_MEASUREMENT=$(az confcom katapolicygen -y consumer.yaml --print-policy | base64 -d | sha256sum | cut -d' ' -f1)
RSA aszimmetrikus kulcspár (nyilvános és titkos kulcsok) létrehozásához futtassa a
setup-key.sh
szkriptet az alábbi paranccsal. Az<Azure Key Vault URL>
értéknek<your-unique-keyvault-name>.vault.azure.net
export MANAGED_IDENTITY=${USER_ASSIGNED_CLIENT_ID} bash setup-key.sh "kafka-encryption-demo" <Azure Key Vault URL>
Feljegyzés
A envionment változót
MANAGED_IDENTITY
a bash szkriptsetup-key.sh
megköveteli.A nyilvános kulcs a bash-szkript végrehajtása után lesz mentve
kafka-encryption-demo-pub.pem
.
Fontos
Ha a hibaüzenet
ForbiddenByRbac
jelenik meg, előfordulhat, hogy akár 24 órát is várnia kell, mivel a felügyelt identitások háttérszolgáltatásai erőforrás-URI-nként legfeljebb 24 óráig tartanak fenn gyorsítótárat. Lásd még: Az Azure RBAC hibaelhárítása.A kulcsok sikeres feltöltésének ellenőrzéséhez futtassa a következő parancsokat:
az account set --subscription <Subscription ID> az keyvault key list --vault-name <KeyVault Name> -o table
Másolja ki a következő YAML-jegyzékfájlt, és mentse a következőként
producer.yaml
.apiVersion: v1 kind: Pod metadata: name: kafka-producer namespace: kafka spec: containers: - image: "mcr.microsoft.com/acc/samples/kafka/producer:1.0" name: kafka-producer command: - /produce env: - name: TOPIC value: kafka-demo-topic - name: MSG value: "Azure Confidential Computing" - name: PUBKEY value: |- -----BEGIN PUBLIC KEY----- MIIBojAN***AE= -----END PUBLIC KEY----- resources: limits: memory: 1Gi cpu: 200m
Feljegyzés
Frissítse a sztringekkel
-----BEGIN PUBLIC KEY-----
-----END PUBLIC KEY-----
kezdődő és végződő értéket az előző lépésben létrehozott tartalommalkafka-encryption-demo-pub.pem
.Helyezze üzembe a és
producer
aconsumer
YAML-jegyzékeket a korábban mentett fájlok használatával.kubectl apply -f consumer.yaml
kubectl apply -f producer.yaml
Kérje le a webszolgáltatás IP-címét a következő paranccsal:
kubectl get svc consumer -n kafka
Másolja és illessze be a fogyasztói szolgáltatás külső IP-címét a böngészőbe, és figyelje meg a visszafejtett üzenetet.
Az alábbi példa a parancs kimenetéhez hasonlít:
Welcome to Confidential Containers on AKS! Encrypted Kafka Message: Msg 1: Azure Confidential Computing
Meg kell kísérelnie a fogyasztó normál Kubernetes-podként való futtatását is a specifikáció és
kata-cc runtime class
askr container
specifikáció eltávolításával. Mivel nem kata-cc futtatókörnyezeti osztálysal futtatja a fogyasztót, már nincs szüksége a szabályzatra.Távolítsa el a teljes szabályzatot, és figyelje meg újra az üzeneteket a böngészőben a számítási feladat ismételt üzembe helyezése után. Az üzenetek base64 kódolású titkosítási szövegként jelennek meg, mert a titkos titkosítási kulcs nem kérhető le. A kulcs nem kérhető le, mert a fogyasztó már nem bizalmas környezetben fut, és a
skr container
hiányzó adatok megakadályozzák az üzenetek visszafejtését.
Felesleges tartalmak törlése
Ha végzett a funkció kiértékelésével, az Azure-díjak elkerülése érdekében törölje a felesleges erőforrásokat. Ha az értékelés vagy a tesztelés részeként üzembe helyezett egy új fürtöt, az az aks delete paranccsal törölheti a fürtöt.
az aks delete --resource-group myResourceGroup --name myAKSCluster
Ha engedélyezte a bizalmas tárolók (előzetes verzió) használatát egy meglévő fürtön, a kubectl delete pod parancsával eltávolíthatja a pod(ok)t.
kubectl delete pod pod-name
Következő lépések
- További információ az AKS-fürttel rendelkező csomópontok azure-beli dedikált gazdagépeiről az Azure platformkarbantartási események hardverelkülönítésének és vezérlésének használatára.
Azure Kubernetes Service
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: