Dela via


Säker åtkomst till dina hanterade HSM:er

Den här handledningen innehåller ett praktiskt implementeringsexempel på åtkomstkontroll för Azure Key Vault Managed HSM. Du får lära dig hur du implementerar uppdelning av uppgifter med hjälp av Azure RBAC och managed HSM local RBAC via ett realistiskt scenario.

Viktigt!

Innan du fortsätter med den här självstudien ska du se till att du förstår modellen för hanterad HSM-åtkomstkontroll, inklusive skillnaderna mellan åtkomst till kontrollplan och dataplan. Den här konceptuella grunden finns i Hanterad HSM-åtkomstkontroll.

Förutsättningar

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 Försök i det övre högra hörnet av kod- eller kommandoblocket. Om du väljer Prova kopieras inte koden eller kommandot automatiskt till Cloud Shell. Skärmbild som visar ett exempel på 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. Knapp för att starta Azure Cloud Shell.
Välj knappen Cloud Shell på menyn längst upp till höger i Azure-portalen. Skärmbild som visar Cloud Shell-knappen i Azure-portalen

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

  1. Starta den 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+Skift+V på macOS.

  4. Välj Ange 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

Förstå exempelscenariot

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. RSA-nyckeln som används för signering lagras i vår hanterade HSM.

Definiera roller och ansvarsområden

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 innehåller 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.

Definiera nödvändiga åtgärder per roll

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 katastrofåterställning)
  • Aktivera loggning
  • Generera eller importera nycklar
  • Skapa hanterade HSM-säkerhetskopior 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 för den RSA-nyckel som används för signering
  • Utveckla och distribuera programmet som kommer åt nyckeln programmatiskt

Revisorer

  • 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

Tilldela lämpliga roller

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

Roll Kontrollplansroll Dataplansroll
Säkerhetsteamet Hanterad HSM-medverkande Managed HSM-administratör
Utvecklare och operatörer Ingen Ingen
Granskare Ingen Hanterad HSM-kryptorevisor
Hanterad identitet för den virtuella dator som används av programmet Ingen Hanterad HSM-kryptoanvändare
Hanterad identitet för lagringskontot som används av programmet Ingen Kryptering för hanterad HSM-kryptotjänst

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.

Implementera med Azure CLI

Om du vill tilldela kontrollplansroller (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 eller Azure REST API.

Mer information om kontrollplansroller finns i Inbyggda Azure-roller. Mer information om hanterade HSM-dataplansroller finns i Managed HSM local RBAC built-in roles for Managed HSM (Hanterade HSM-inbyggda roller för Managed HSM).

Azure CLI-kodfragmenten nedan visar hur du implementerar rolltilldelningarna som beskrivs ovan:

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.

Tilldela kontrollplansroller

Prenumerationsadministratören Managed HSM Contributor tilldelar rollen till säkerhetsteamet. Med den här rollen kan säkerhetsteamet hantera befintliga hanterade HSM:er och skapa nya.

# 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"

Tilldela dataplansroller

För befintliga hanterade HSM:er måste säkerhetsteamet tilldelas rollen "Hanterad HSM-administratör" för att hantera dem:

# 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"

Konfigurera loggning och tilldela ytterligare roller

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 'id' -o tsv) --scope / --role "Managed HSM Crypto Auditor"

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

# Assign "Managed HSM Crypto Service Encryption User" role to the Storage account identity
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 --query identity.principalId -o tsv)

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

Överväganden för produktionsmiljöer

Den här handledningen visar ett förenklat scenario för att illustrera implementeringen av åtkomstkontroll.

Justera behörigheter till din hanterade HSM baserat på dina specifika krav. I det här exemplet antog vi att säkerhetsteamet tillhandahåller nyckel- och hemliga referenser (URI:er och tumavtryck) till DevOps-personalen för användning i sina program. Utvecklare och operatörer kräver inte direkt åtkomst till dataplanet. Den här självstudien fokuserar på att skydda din hanterade HSM, men tillämpa liknande säkerhetsåtgärder på andra Azure-resurser, till exempel virtuella datorer, lagringskonton och andra.

Nästa steg