Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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
- Subskrypcja Microsoft Azure. Jeśli go nie masz, możesz utworzyć konto bezpłatnej wersji próbnej.
- Azure CLI w wersji 2.25.0 lub nowszej. Uruchom
az --version, aby znaleźć wersję. Jeśli konieczna będzie instalacja lub uaktualnienie interfejsu, zobacz Instalowanie interfejsu wiersza polecenia platformy Azure. - Zarządzany moduł HSM w ramach subskrypcji. Zobacz Szybki start: aprowizuj i aktywuj zarządzany moduł HSM przy użyciu interfejsu wiersza polecenia platformy Azure, aby aprowizować i aktywować zarządzany moduł HSM.
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. |
|
| Przejdź do witryny https://shell.azure.com lub wybierz przycisk Uruchom Cloud Shell, aby otworzyć środowisko Cloud Shell w przeglądarce. |
|
| Wybierz przycisk Cloud Shell na pasku menu w prawym górnym rogu witryny Azure Portal. |
|
Aby użyć usługi Azure Cloud Shell:
Uruchom usługę Cloud Shell.
Wybierz przycisk Kopiuj w bloku kodu (lub bloku poleceń), aby skopiować kod lub polecenie.
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.
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
- Aby zapoznać się z koncepcyjnym modelem kontroli dostępu zarządzanego modułu HSM, zobacz Managed HSM access control (Zarządzana kontrola dostępu modułu HSM)
- Aby zapoznać się z samouczkiem wprowadzającym dla administratora, zobacz Co to jest zarządzany moduł HSM?
- Aby uzyskać więcej informacji na temat rejestrowania użycia zarządzanego modułu HSM, zobacz rejestrowanie zarządzanego modułu HSM.
- Aby dowiedzieć się więcej o zarządzaniu rolami w Managed HSM, zobacz Managed HSM Lokalny RBAC
- Dokumentacja Azure RBAC
- Azure RBAC: role wbudowane
- Zarządzanie kontrolą dostępu opartą na rolach platformy Azure przy użyciu interfejsu wiersza polecenia platformy Azure