Säker åtkomst till dina hanterade HSM:er

Azure Key Vault Managed HSM är en molntjänst som skyddar krypteringsnycklar. Eftersom dessa data är känsliga och affärskritiska måste du skydda åtkomsten till dina hanterade HSM:er genom att endast tillåta auktoriserade program och användare att komma åt dem. Den här artikeln innehåller en översikt över den hanterade HSM-åtkomstkontrollmodellen. Den förklarar autentisering och auktorisering och beskriver hur du skyddar åtkomsten till dina hanterade HSM:er.

I den här självstudien går vi igenom ett enkelt exempel som visar hur du uppnår uppdelning av uppgifter och åtkomstkontroll med azure RBAC och managed HSM local RBAC. Mer information om hanterad HSM-åtkomstkontroll finns i Hanterad HSM-åtkomstkontrollmodell.

Förutsättningar

För att slutföra stegen i den här artikeln måste du ha följande:

Azure Cloud Shell

Azure är värd för Azure Cloud Shell, en interaktiv gränssnittsmiljö som du kan använda via webbläsaren. Du kan använda antingen Bash eller PowerShell med Cloud Shell för att arbeta med Azure-tjänster. Du kan använda förinstallerade Cloud Shell-kommandon för att köra koden i den här artikeln, utan att behöva installera något i din lokala miljö.

Så här startar du Azure Cloud Shell:

Alternativ Exempel/länk
Välj Prova i det övre högra hörnet i en kod eller ett kommandoblock. Om du väljer Prova kopieras inte koden eller kommandot automatiskt till Cloud Shell. Screenshot that shows an example of Try It for Azure Cloud Shell.
Gå till https://shell.azure.com eller Välj knappen Starta Cloud Shell för att öppna Cloud Shell i webbläsaren. Button to launch Azure Cloud Shell.
Välj knappen Cloud Shell på menyn längst upp till höger i Azure-portalen. Screenshot that shows the Cloud Shell button in the Azure portal

Så här använder du Azure Cloud Shell:

  1. Starta Cloud Shell.

  2. Välj knappen Kopiera i ett kodblock (eller kommandoblock) för att kopiera koden eller kommandot.

  3. Klistra in koden eller kommandot i Cloud Shell-sessionen genom att välja Ctrl+Skift+V i Windows och Linux, eller genom att välja Cmd+Shift+V på macOS.

  4. Välj Retur för att köra koden eller kommandot.

Logga in på Azure

Du kan logga in i Azure via CLI genom att skriva:

az login

Mer information om inloggningsalternativ via CLI finns i logga in med Azure CLI

Exempel

I det här exemplet utvecklar vi ett program som använder en RSA 2 048-bitarsnyckel för teckenåtgärder. Vårt program körs på en virtuell Azure-dator (VM) med en hanterad identitet. Båda RSA-nyckeln som används för signering lagras i vår hanterade HSM.

Vi har identifierat följande roller som hanterar, distribuerar och granskar vårt program:

  • Säkerhetsteam: IT-personal från kontoret för CSO (Chief Security Officer) eller liknande deltagare. Säkerhetsteamet ansvarar för korrekt förvaring av nycklar. Nycklarna RSA- eller EC-nycklar för signering och RSA- eller AES-nycklar för datakryptering.
  • Utvecklare och operatörer: Personalen som utvecklar programmet och distribuerar det i Azure. Medlemmarna i det här teamet ingår inte i säkerhetspersonalen. De ska inte ha åtkomst till känsliga data som RSA-nycklar. Endast det program som de distribuerar ska ha åtkomst till dessa känsliga data.
  • Granskare: Den här rollen är till för deltagare som inte är medlemmar i utvecklings- eller allmän IT-personal. De granskar användningen och underhållet av certifikat, nycklar och hemligheter för att säkerställa efterlevnad av säkerhetsstandarder.

Det finns en annan roll som är utanför programmets omfång: prenumerationsadministratören (eller resursgruppen). Prenumerationsadministratören konfigurerar inledande åtkomstbehörigheter för säkerhetsteamet. De ger åtkomst till säkerhetsteamet med hjälp av en resursgrupp som har de resurser som krävs av programmet.

Vi måste auktorisera följande åtgärder för våra roller:

Säkerhetsteamet

  • Skapa den hanterade HSM:en.
  • Ladda ned den hanterade HSM-säkerhetsdomänen (för haveriberedskap)
  • Aktivera loggning.
  • Generera eller importera nycklar
  • Skapa de hanterade HSM-säkerhetskopiorna för haveriberedskap.
  • Ange lokal RBAC för Hanterad HSM för att bevilja behörigheter till användare och program för specifika åtgärder.
  • Rulla nycklarna med jämna mellanrum.

Utvecklare och operatörer

  • Hämta referens (nyckel-URI) från säkerhetsteamet den RSA-nyckel som används för signering.
  • Utveckla och distribuera programmet som kommer åt nyckeln programmatiskt.

Granskare

  • Granska utgångsdatum för nycklar för att säkerställa att nycklarna är uppdaterade
  • Övervaka rolltilldelningar för att säkerställa att nycklar endast kan nås av behöriga användare/program
  • Granska de hanterade HSM-loggarna för att bekräfta korrekt användning av nycklar i enlighet med datasäkerhetsstandarder.

I följande tabell sammanfattas rolltilldelningarna till team och resurser för att få åtkomst till den hanterade HSM:en.

Roll Hanteringsplanroll Dataplansroll
Säkerhetsteamet Hanterad HSM-deltagare Managed HSM-administratör
Utvecklare och operatörer Ingen Ingen
Granskare Ingen Hanterad HSM-kryptorevisor
Hanterad identifiering av den virtuella dator som används av programmet Ingen Hanterad HSM-kryptoanvändare
Hanterad identitet för lagringskontot som används av programmet Ingen Hanterad HSM-tjänstkryptering

De tre teamrollerna behöver åtkomst till andra resurser tillsammans med hanterade HSM-behörigheter. För att distribuera virtuella datorer (eller funktionen Web Apps i Azure App Service) behöver Contributor utvecklare och operatörer åtkomst till dessa resurstyper. Granskare behöver läsbehörighet till lagringskontot där de hanterade HSM-loggarna lagras.

Om du vill tilldela hanteringsplanroller (Azure RBAC) kan du använda Azure-portalen eller något av de andra hanteringsgränssnitten, till exempel Azure CLI eller Azure PowerShell. Om du vill tilldela hanterade HSM-dataplansroller måste du använda Azure CLI. Mer information om hanteringsplanroller finns i Inbyggda Azure-roller. Mer information om hanterade HSM-dataplansroller finns i Lokala RBAC-inbyggda roller för Hanterad HSM.

Azure CLI-kodfragmenten i det här avsnittet skapas med följande antaganden:

  • Microsoft Entra-administratören har skapat säkerhetsgrupper som representerar de tre rollerna: Contoso Security Team, Contoso App DevOps och Contoso App Auditors. Administratören har lagt till användare i sina respektive grupper.
  • Alla resurser finns i resursgruppen ContosoAppRG .
  • De hanterade HSM-loggarna lagras i lagringskontot contosologstorage .
  • ContosoMHSM-hanterade HSM och lagringskontot contosologstorage finns på samma Azure-plats.

Prenumerationsadministratören Managed HSM Contributortilldelar rollen till säkerhetsteamet. Med den här rollen kan säkerhetsteamet hantera befintliga hanterade HSM:er och skapa nya. Om det finns befintliga hanterade HSM:er måste de tilldelas rollen "Hanterad HSM-administratör" för att kunna hantera dem.

# This role assignment allows Contoso Security Team to create new Managed HSMs
az role assignment create --assignee-object-id $(az ad group show -g 'Contoso Security Team' --query 'id' -o tsv) --assignee-principal-type Group --role "Managed HSM Contributor"

# This role assignment allows Contoso Security Team to become administrator of existing managed HSM
az keyvault role assignment create  --hsm-name ContosoMHSM --assignee $(az ad group show -g 'Contoso Security Team' --query 'id' -o tsv) --scope / --role "Managed HSM Administrator"

Säkerhetsteamet konfigurerar loggning och tilldelar roller till granskare och VM-programmet.

# Enable logging
hsmresource=$(az keyvault show --hsm-name ContosoMHSM --query id -o tsv)
storageresource=$(az storage account show --name contosologstorage --query id -o tsv)
az monitor diagnostic-settings create --name MHSM-Diagnostics --resource $hsmresource --logs    '[{"category": "AuditEvent","enabled": true}]' --storage-account $storageresource

# Assign the "Crypto Auditor" role to Contoso App Auditors group. It only allows them to read.
az keyvault role assignment create  --hsm-name ContosoMHSM --assignee $(az ad group show -g 'Contoso App Auditors' --query 'objectId' -o tsv) --scope / --role "Managed HSM Crypto Auditor"

# Grant the "Crypto User" role to the VM's managed identity. It allows to create and use keys. 
# However it cannot permanently delete (purge) keys
az keyvault role assignment create  --hsm-name ContosoMHSM --assignee $(az vm identity show --name "vmname" --resource-group "ContosoAppRG" --query objectId -o tsv) --scope / --role "Managed HSM Crypto Auditor"

# Assign "Managed HSM Crypto Service Encryption User" role to the Storage account ID
storage_account_principal=$(az storage account show --id $storageresource --query identity.principalId -o tsv)
# (if no identity exists), then assign a new one
[ "$storage_account_principal" ] || storage_account_principal=$(az storage account update --assign-identity --id $storageresource)

az keyvault role assignment create --hsm-name ContosoMHSM --role "Managed HSM Crypto Service Encryption User" --assignee $storage_account_principal

Den här självstudien visar endast åtgärder som är relevanta för åtkomstkontrollen för det mesta. Andra åtgärder och åtgärder som rör distribution av program på den virtuella datorn, aktivering av kryptering med kundhanterad nyckel för ett lagringskonto och skapande av hanterad HSM visas inte här för att hålla exemplet fokuserat på åtkomstkontroll och rollhantering.

Vårt exempel beskriver ett enkelt scenario. Verkliga scenarier kan vara mer komplexa. Du kan justera behörigheter till ditt nyckelvalv baserat på dina behov. Vi antog att säkerhetsteamet tillhandahåller nyckel- och hemliga referenser (URI:er och tumavtryck), som används av DevOps-personalen i deras program. Utvecklare och operatörer kräver ingen åtkomst till dataplanet. Vi fokuserade på hur du skyddar ditt nyckelvalv. Tänk på detta när du skyddar dina virtuella datorer, lagringskonton och andra Azure-resurser.

Resurser

Nästa steg

En självstudiekurs för att komma igång för en administratör finns i Vad är Hanterad HSM?.

Mer information om användningsloggning för hanterad HSM-loggning finns i Hanterad HSM-loggning.