Händelser
17 mars 21 - 21 mars 10
Gå med i mötesserien för att skapa skalbara AI-lösningar baserat på verkliga användningsfall med andra utvecklare och experter.
Registrera dig nuDen här webbläsaren stöds inte längre.
Uppgradera till Microsoft Edge och dra nytta av de senaste funktionerna och säkerhetsuppdateringarna, samt teknisk support.
Gäller för: AKS på Azure Local 22H2, AKS på Windows Server
Kubernetes Secrets Store CSI-drivrutinen integrerar hemligheter med Kubernetes via en CSI-volym (Container Storage Interface). Om du integrerar CSI-drivrutinen för Secrets Store med AKS aktiverat av Azure Arc kan du montera hemligheter, nycklar och certifikat som en volym. Data monteras sedan i containerns filsystem.
Med CSI-drivrutinen Secrets Store kan du även integrera ett nyckelvalv med en av de leverantörer som stöds, till exempel Azure Key Vault.
Kontrollera att du har följande förutsättningar innan du börjar:
Kör följande kommando för att komma åt klustret med hjälp av kubectl
. I kommandot ersätter du värdet -name
för med ditt befintliga klusternamn. Klusternamnet använder det angivna klustrets kubeconfig
fil som standardfil kubeconfig
för kubectl
:
Get-AksHciCredential -name mycluster
Om du vill installera CSI-drivrutinen för Secrets Store kör du följande Helm-kommando:
helm repo add csi-secrets-store-provider-azure https://azure.github.io/secrets-store-csi-driver-provider-azure/charts
Följande kommando installerar både CSI-drivrutinen för Secrets Store och Azure Key Vault-providern:
helm install csi csi-secrets-store-provider-azure/csi-secrets-store-provider-azure --namespace kube-system
Anteckning
Du bör installera CSI-drivrutinen för Secrets Store och Azure Key Vault-providern kube-system
i namnområdet. Den här guiden använder kube-system
namnområdet för alla instanser.
Kontrollera dina poddar som körs för att kontrollera att CSI-drivrutinen för Secrets Store och Azure Key Vault-providern är installerade genom att köra följande kommandon:
Kontrollera att CSI-drivrutinen för Secrets Store är installerad genom att köra det här kommandot:
kubectl get pods -l app=secrets-store-csi-driver -n kube-system
Exempel på utdata>
NAME READY STATUS RESTARTS AGE
secrets-store-csi-driver-spbfq 3/3 Running 0 3h52m
Kontrollera att Azure Key Vault-providern är installerad genom att köra det här kommandot:
kubectl get pods -l app=csi-secrets-store-provider-azure -n kube-system
Exempel på utdata>
NAME READY STATUS RESTARTS AGE
csi-csi-secrets-store-provider-azure-tpb4j 1/1 Running 0 3h52m
Du behöver en Azure Key Vault-resurs som innehåller dina hemliga data. Du kan använda en befintlig Azure Key Vault-resurs eller skapa en ny.
Om du behöver skapa en Azure Key Vault-resurs kör du följande kommando. Kontrollera att du är inloggad genom att köra az login
med dina Azure-autentiseringsuppgifter. Ändra sedan följande värden till din miljö:
az keyvault create -n <keyvault-name> -g <resourcegroup-name> -l eastus
Azure Key Vault kan lagra nycklar, hemligheter och certifikat. I följande exempel konfigureras en oformaterad hemlighet med namnet ExampleSecret
:
az keyvault secret set --vault-name <keyvault-name> -n ExampleSecret --value MyAKSHCIExampleSecret
Använd tjänstens huvudnamn för att komma åt Azure Key Vault-instansen som du skapade i föregående steg. Du bör registrera utdata när du kör följande kommandon. Du använder både klienthemligheten och klient-ID:t i nästa steg.
Ange klienthemligheten genom att köra följande kommando:
az ad sp create-for-rbac --role Contributor --scopes /subscriptions/<subscription-id> --name http://secrets-store-test --query 'password' -otsv
Ange klient-ID:t genom att köra följande kommando:
az ad sp show --id http://secrets-store-test --query 'appId' -otsv
Använd värdena från föregående steg för att ange behörigheter enligt följande kommando:
az keyvault set-policy -n <keyvault-name> --secret-permissions get --spn <client-id>
Kör följande kommando för att skapa Kubernetes-hemligheten med autentiseringsuppgifterna för tjänstens huvudnamn. Ersätt följande värden med lämpligt klient-ID och klienthemlighet från föregående steg:
kubectl create secret generic secrets-store-creds --from-literal clientid=<client-id> --from-literal clientsecret=<client-secret>
Som standard har den hemliga butiksprovidern filtrerat klockan aktiverad på hemligheter. Du kan tillåta att kommandot hittar hemligheten i standardkonfigurationen genom att lägga till etiketten secrets-store.csi.k8s.io/used=true
i hemligheten:
kubectl label secret secrets-store-creds secrets-store.csi.k8s.io/used=true
Om du vill använda och konfigurera CSI-drivrutinen för Secrets Store för ditt Kubernetes-kluster skapar du en SecretProviderClass
anpassad resurs. Kontrollera att matrisen objects
matchar de objekt som du har lagrat i Azure Key Vault-instansen:
apiVersion: secrets-store.csi.x-k8s.io/v1alpha1
kind: SecretProviderClass
metadata:
name: <keyvault-name> # The name of the Azure Key Vault
namespace: kube-system
spec:
provider: azure
parameters:
keyvaultName: "<keyvault-name>" # The name of the Azure Key Vault
useVMManagedIdentity: "false"
userAssignedIdentityID: "false"
cloudName: "" # [OPTIONAL for Azure] if not provided, Azure environment defaults to AzurePublicCloud
objects: |
array:
- |
objectName: <secret-name> # In this example, 'ExampleSecret'
objectType: secret # Object types: secret, key or cert
objectVersion: "" # [OPTIONAL] object versions, default to latest if empty
tenantId: "<tenant-id>" # the tenant ID containing the Azure Key Vault instance
Om du vill distribuera den SecretProviderClass
du skapade i föregående steg använder du följande kommando:
kubectl apply -f ./new-secretproviderclass.yaml
Uppdatera YAML-filen för distribution för att säkerställa att klustret använder den nya anpassade resursen. Till exempel:
kind: Pod
apiVersion: v1
metadata:
name: busybox-secrets-store-inline
spec:
containers:
- name: busybox
image: k8s.gcr.io/e2e-test-images/busybox:1.29
command:
- "/bin/sleep"
- "10000"
volumeMounts:
- name: secrets-store-inline
mountPath: "/mnt/secrets-store"
readOnly: true
volumes:
- name: secrets-store-inline
csi:
driver: secrets-store.csi.k8s.io
readOnly: true
volumeAttributes:
secretProviderClass: "<keyvault-name>"
nodePublishSecretRef: # Only required when using service principal mode
name: secrets-store-creds # Only required when using service principal mode
Tillämpa sedan den uppdaterade YAML-distributionsfilen på klustret:
kubectl apply -f ./my-deployment.yaml
Om du vill visa hemligheterna som finns i secrets-store
kör du följande kommando:
kubectl exec busybox-secrets-store-inline --namespace kube-system -- ls /mnt/secrets-store/
Utdata ska visa namnet på hemligheten. I det här exemplet visas följande utdata:
ExampleSecret
Om du vill visa testhemligheten som finns i secrets-store
kör du följande kommando:
kubectl exec busybox-secrets-store-inline --namespace kube-system -- cat /mnt/secrets-store/ExampleSecret
Utdata ska visa hemlighetens värde. I det här exemplet visas följande utdata:
MyAKSHCIExampleSecret
Händelser
17 mars 21 - 21 mars 10
Gå med i mötesserien för att skapa skalbara AI-lösningar baserat på verkliga användningsfall med andra utvecklare och experter.
Registrera dig nuUtbildning
Modul
Hantera hemligheter i dina serverappar med Azure Key Vault - Training
Lär dig hur du skapar en Azure Key Vault för att lagra hemliga värden och hur du aktiverar säker åtkomst till valvet.
Certifiering
Microsoft Certifierad: Azure Security Engineer Associate - Certifications
Demonstrera de färdigheter som krävs för att implementera säkerhetskontroller, upprätthålla en organisations säkerhetsstatus och identifiera och åtgärda säkerhetsrisker.