Udostępnij przez


Zabezpieczanie dostępu do zarządzanych modułów HSM

Ten samouczek zawiera praktyczny przykład implementacji kontroli dostępu dla zarządzanego modułu HSM usługi Azure Key Vault. Dowiesz się, jak zaimplementować rozdzielenie obowiązków przy użyciu kontroli dostępu opartej na rolach platformy Azure i lokalnego RBAC zarządzanego modułu HSM za pomocą realistycznego scenariusza.

Ważne

Przed kontynuowaniem pracy z tym samouczkiem upewnij się, że znasz model kontroli dostępu do zarządzanego modułu HSM, w tym różnice między dostępem płaszczyzny sterowania i płaszczyzny danych. Aby zapoznać się z tą koncepcją, zobacz Managed HSM access control (Zarządzana kontrola dostępu modułu HSM).

Wymagania wstępne

Azure Cloud Shell

Na platformie Azure hostowane jest interaktywne środowisko wiersza poleceń Azure Cloud Shell, z którego można korzystać przez przeglądarkę. Do pracy z usługami platformy Azure można używać programu Bash lub PowerShell w środowisku Cloud Shell. Aby uruchomić kod w tym artykule, możesz użyć wstępnie zainstalowanych poleceń usługi Cloud Shell bez konieczności instalowania niczego w środowisku lokalnym.

Aby uruchomić środowisko Azure Cloud Shell:

Opcja Przykład/łącze
Wybierz pozycję Wypróbuj w prawym górnym rogu bloku kodu lub polecenia. Wybranie Wypróbuj nie powoduje automatycznego skopiowania kodu ani polecenia do usługi Cloud Shell. Zrzut ekranu przedstawiający przykład narzędzia Try It dla usługi Azure Cloud Shell.
Przejdź do witryny https://shell.azure.com lub wybierz przycisk Uruchom Cloud Shell, aby otworzyć środowisko Cloud Shell w przeglądarce. Przycisk uruchamiania usługi Azure Cloud Shell.
Wybierz przycisk Cloud Shell na pasku menu w prawym górnym rogu witryny Azure Portal. Zrzut ekranu przedstawiający przycisk usługi Cloud Shell w witrynie Azure Portal

Aby użyć usługi Azure Cloud Shell:

  1. Uruchom usługę Cloud Shell.

  2. Wybierz przycisk Kopiuj w bloku kodu (lub bloku poleceń), aby skopiować kod lub polecenie.

  3. Wklej kod lub polecenie do sesji usługi Cloud Shell, wybierając pozycję Ctrl+Shift+V w systemach Windows i Linux lub wybierając pozycję Cmd+Shift+V w systemie macOS.

  4. Wybierz Enter, aby uruchomić kod lub polecenie.

Zaloguj się na platformie Azure

Aby zalogować się do platformy Azure przy użyciu interfejsu wiersza polecenia, możesz wpisać:

az login

Aby uzyskać więcej informacji na temat opcji logowania za pośrednictwem interfejsu wiersza polecenia, zobacz Logowanie się za pomocą interfejsu wiersza polecenia platformy Azure

Omówienie przykładowego scenariusza

W tym przykładzie opracowujemy aplikację, która używa klucza RSA 2048-bitowego do operacji podpisywania. Nasza aplikacja działa na maszynie wirtualnej platformy Azure z tożsamością zarządzaną. Klucz RSA używany do podpisywania jest przechowywany w zarządzanym module HSM.

Definiowanie ról i obowiązków

Zidentyfikowaliśmy następujące role, które zarządzają, wdrażają i przeprowadzają inspekcję aplikacji:

  • Zespół ds. zabezpieczeń: pracownicy DZIAŁU IT z biura CSO (dyrektor ds. zabezpieczeń) lub podobni współautorzy. Zespół ds. zabezpieczeń jest odpowiedzialny za odpowiednie bezpieczne przechowywanie kluczy. Klucze obejmują klucze RSA lub EC do podpisywania oraz klucze RSA lub AES na potrzeby szyfrowania danych.
  • Deweloperzy i operatorzy: pracownicy, którzy opracowują aplikację i wdrażają ją na platformie Azure. Członkowie tego zespołu nie są częścią personelu ochrony. Nie powinni mieć dostępu do poufnych danych, takich jak klucze RSA. Tylko wdrażana aplikacja powinna mieć dostęp do tych poufnych danych.
  • Audytorzy: Ta rola jest dla współautorów, którzy nie są członkami działu rozwoju ani personelu ogólnego IT. Przeglądają użycie i konserwację certyfikatów, kluczy i wpisów tajnych, aby zapewnić zgodność ze standardami zabezpieczeń.

Istnieje inna rola, która znajduje się poza zakresem naszej aplikacji: administrator subskrypcji (lub grupy zasobów). Administrator subskrypcji konfiguruje początkowe uprawnienia dostępu dla zespołu ds. zabezpieczeń. Zapewniają one dostęp do zespołu ds. zabezpieczeń przy użyciu grupy zasobów, która ma zasoby wymagane przez aplikację.

Definiowanie wymaganych operacji na rolę

Musimy autoryzować następujące operacje dla naszych ról:

Zespół ds. zabezpieczeń

  • Tworzenie zarządzanego modułu HSM
  • Pobieranie domeny zabezpieczeń zarządzanego modułu HSM (na potrzeby odzyskiwania po awarii)
  • Włącz rejestrowanie
  • Generowanie lub importowanie kluczy
  • Tworzenie zarządzanych kopii zapasowych modułu HSM na potrzeby odzyskiwania po awarii
  • Ustaw lokalną kontrolę dostępu opartą na rolach dla zarządzanego modułu HSM, aby udzielić uprawnień użytkownikom i aplikacjom do określonych operacji.
  • Okresowe przerzucanie kluczy

Deweloperzy i operatorzy

  • Uzyskaj referencję (identyfikator URI klucza) od zespołu ds. zabezpieczeń dla klucza RSA używanego do podpisywania
  • Programowanie i wdrażanie aplikacji, która uzyskuje dostęp do klucza programowo

Audytorzy

  • Przejrzyj daty wygaśnięcia kluczy, aby upewnić się, że klucze są aktualne
  • Monitorowanie przypisań ról w celu zapewnienia, że dostęp do kluczy mogą uzyskiwać tylko autoryzowani użytkownicy/aplikacje
  • Przejrzyj dzienniki zarządzanego modułu HSM, aby potwierdzić prawidłowe użycie kluczy zgodnie ze standardami zabezpieczeń danych

Przypisywanie odpowiednich ról

Poniższa tabela zawiera podsumowanie przypisań ról do zespołów i zasobów w celu uzyskania dostępu do zarządzanego modułu HSM.

Rola Rola płaszczyzny sterowania Rola płaszczyzny danych
Zespół ds. zabezpieczeń Współautor zarządzanego modułu HSM Administrator zarządzanego modułu HSM
Deweloperzy i operatorzy Żaden Żaden
Audytorzy Żaden Zarządzany audytor kryptograficzny modułu HSM
Tożsamość zarządzana maszyny wirtualnej używanej przez aplikację Żaden Zarządzany użytkownik kryptograficzny modułu HSM
Tożsamość zarządzana konta magazynowego używanego przez aplikację Żaden Zarządzane szyfrowanie usługi kryptograficznej HSM

Trzy role zespołu muszą mieć dostęp do innych zasobów wraz z uprawnieniami zarządzanego modułu HSM. Aby wdrożyć VM (lub funkcję Web Apps usługi Azure App Service), deweloperzy i operatorzy muszą mieć Contributor dostęp do tych typów zasobów. Audytorzy potrzebują dostępu do odczytu do konta magazynu, na którym są przechowywane zarządzane dzienniki modułu HSM.

Implementowanie za pomocą interfejsu wiersza polecenia platformy Azure

Aby przypisać role płaszczyzny sterowania (RBAC) platformy Azure, możesz użyć witryny Azure Portal lub dowolnego z innych interfejsów zarządzania, takich jak interfejs wiersza polecenia platformy Azure lub program Azure PowerShell. Aby przypisać role zarządzanej płaszczyzny danych modułu HSM, musisz użyć interfejsu wiersza polecenia platformy Azure lub interfejsu API REST platformy Azure.

Aby uzyskać więcej informacji na temat ról płaszczyzny sterowania, zobacz Role wbudowane platformy Azure. Aby uzyskać więcej informacji na temat ról płaszczyzny danych zarządzanego modułu HSM, zobacz Managed HSM local RBAC built-in roles for Managed HSM (Zarządzanie lokalnymi rolami RBAC dla zarządzanego modułu HSM).

Poniższe fragmenty kodu interfejsu wiersza polecenia platformy Azure pokazują, jak zaimplementować przypisania ról opisane powyżej:

Założenia

  • Administrator firmy Microsoft Entra utworzył grupy zabezpieczeń do reprezentowania trzech ról: Zespół ds. zabezpieczeń Firmy Contoso, DevOps aplikacji Firmy Contoso i Audytorzy aplikacji Firmy Contoso. Administrator dodał użytkowników do odpowiednich grup.
  • Wszystkie zasoby znajdują się w grupie zasobów ContosoAppRG .
  • Dzienniki zarządzanego modułu HSM są przechowywane na koncie magazynu contosologstorage .
  • Zarządzany HSM ContosoMHSM i konto magazynu contosologstorage znajdują się w tej samej lokalizacji platformy Azure.

Przypisywanie ról płaszczyzny sterowania

Administrator subskrypcji przypisuje Managed HSM Contributor rolę zespołowi ds. zabezpieczeń. Ta rola umożliwia zespołowi ds. zabezpieczeń zarządzanie istniejącymi zarządzanymi modułami HSM i tworzenie nowych.

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

Przydziel role płaszczyzny danych

W przypadku istniejących zarządzanych modułów HSM zespół ds. zabezpieczeń musi mieć przypisaną rolę "Administrator zarządzanego modułu HSM", aby zarządzać nimi:

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

Konfigurowanie rejestrowania i przypisywanie dodatkowych ról

Zespół ds. zabezpieczeń konfiguruje rejestrowanie i przypisuje role audytorom i aplikacji maszyny wirtualnej:

# 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

Zagadnienia dotyczące środowisk produkcyjnych

W tym samouczku przedstawiono uproszczony scenariusz ilustrowania implementacji kontroli dostępu.

Dostosuj uprawnienia do zarządzanego modułu HSM na podstawie określonych wymagań. W tym przykładzie założono, że zespół ds. zabezpieczeń udostępnia odwołania do kluczy i tajemnic (URI i odciski palca) pracownikom DevOps do wykorzystania w ich aplikacjach. Deweloperzy i operatorzy nie wymagają bezpośredniego dostępu do płaszczyzny danych. Chociaż ten samouczek koncentruje się na zabezpieczaniu zarządzanego modułu HSM, zastosuj podobne środki zabezpieczeń do innych zasobów platformy Azure, takich jak maszyny wirtualne, konta magazynu i inne.

Następne kroki