Aracılığıyla paylaş


Yönetilen HSM'lerinize güvenli erişim

Bu öğretici, Azure Key Vault Yönetilen HSM için erişim denetimine yönelik pratik bir uygulama örneği sağlar. Gerçekçi bir senaryo aracılığıyla Azure RBAC ve Yönetilen HSM yerel RBAC kullanarak görev ayrımı gerçekleştirmeyi öğreneceksiniz.

Önemli

Bu öğreticiye devam etmeden önce, denetim düzlemi ile veri düzlemi erişimi arasındaki farklar dahil olmak üzere Yönetilen HSM erişim denetimi modelini anladığınızdan emin olun. Bu kavramsal temel için bkz. Yönetilen HSM erişim denetimi.

Önkoşullar

Azure Cloud Shell

Azure, tarayıcınız aracılığıyla kullanabileceğiniz etkileşimli bir kabuk ortamı olan Azure Cloud Shell'i barındırıyor. Azure hizmetleriyle çalışmak için Cloud Shell ile Bash veya PowerShell kullanabilirsiniz. Yerel ortamınıza herhangi bir şey yüklemek zorunda kalmadan bu makaledeki kodu çalıştırmak için Cloud Shell önceden yüklenmiş komutlarını kullanabilirsiniz.

Azure Cloud Shell'i başlatmak için:

Seçenek Örnek/Bağlantı
Kodun veya komut bloğunun sağ üst köşesindeki Deneyin'i seçin. Deneyin seçildiğinde kod veya komut otomatik olarak Cloud Shell'e kopyalanmaz. Azure Cloud Shell için Deneyin örneğini gösteren ekran görüntüsü.
https://shell.azure.comadresine gidin veya Cloud Shell'i tarayıcınızda açmak için Cloud Shell'i Başlat düğmesini seçin. Azure Cloud Shell'i başlatmak için Düğmesi.
Azure portalının sağ üst kısmındaki menü çubuğunda Cloud Shell düğmesini seçin. Azure portalında Cloud Shell düğmesini gösteren ekran görüntüsü

Azure Cloud Shell'i kullanmak için:

  1. Cloud Shell'i başlatın.

  2. Kodu veya komutu kopyalamak için kod bloğundaki (veya komut bloğundaki) Kopyala düğmesini seçin.

  3. Kodu veya komutu Cloud Shell oturumuna yapıştırmak için Windows ve Linux'ta Ctrl+Shift+V'yi veya macOS'te Cmd+Shift+V'yi seçin.

  4. Kodu veya komutu çalıştırmak için Enter'ı seçin.

Azure'da oturum açma

CLI kullanarak Azure'da oturum açmak için şunu yazabilirsiniz:

az login

CLI aracılığıyla oturum açma seçenekleri hakkında daha fazla bilgi için bkz. Azure CLI ile oturum açma

Örnek senaryoyu anlama

Bu örnekte, imzalama işlemleri için RSA 2.048 bit anahtar kullanan bir uygulama geliştiriyoruz. Uygulamamız yönetilen kimliğe sahip bir Azure sanal makinesinde (VM) çalışır. İmzalama için kullanılan RSA anahtarı yönetilen HSM'mizde depolanır.

Rolleri ve sorumlulukları tanımlama

Uygulamamızı yöneten, dağıtan ve denetleyen aşağıdaki rolleri belirledik:

  • Güvenlik ekibi: CSO ofisinden (Güvenlik Sorumlusu) veya benzer katkıda bulunanlardan BT personeli. Güvenlik ekibi anahtarların düzgün bir şekilde güvende olmasıyla sorumludur. Anahtarlar, imzalama için RSA veya EC anahtarlarını ve veri şifrelemesi için RSA veya AES anahtarlarını içerir.
  • Geliştiriciler ve operatörler: Uygulamayı geliştiren ve Azure'da dağıtan personel. Bu ekibin üyeleri güvenlik personelinin bir parçası değil. RSA anahtarları gibi hassas verilere erişimleri olmamalıdır. Yalnızca dağıttığı uygulamanın bu hassas verilere erişimi olmalıdır.
  • Denetçiler: Bu rol, geliştirme veya genel BT personeline üye olmayan katkıda bulunanlara yöneliktir. Güvenlik standartlarıyla uyumluluğu sağlamak için sertifikaların, anahtarların ve gizli dizilerin kullanımını ve bakımını gözden geçirir.

Uygulamamızın kapsamı dışında olan başka bir rol daha var: abonelik (veya kaynak grubu) yöneticisi. Abonelik yöneticisi, güvenlik ekibi için ilk erişim izinlerini ayarlar. Uygulamanın gerektirdiği kaynaklara sahip bir kaynak grubu kullanarak güvenlik ekibine erişim verir.

Rol başına gerekli işlemleri tanımlama

Rollerimiz için aşağıdaki işlemleri yetkilendirmemiz gerekir:

Güvenlik ekibi

  • Yönetilen HSM'yi oluşturma
  • Yönetilen HSM güvenlik etki alanını indirme (olağanüstü durum kurtarma için)
  • Günlüğe kaydetmeyi açma
  • Anahtar oluşturma veya içeri aktarma
  • Olağanüstü durum kurtarma için yönetilen HSM yedeklemelerini oluşturma
  • Yönetilen HSM yerel RBAC'yi belirli işlemler için kullanıcılara ve uygulamalara izinler vermek üzere ayarlayın
  • Anahtarları düzenli aralıklarla yuvarlayın

Geliştiriciler ve operatörler

  • İmzalama için kullanılan RSA anahtarı için güvenlik ekibinden başvuru (anahtar URI'si) alma
  • Anahtara program aracılığıyla erişen uygulamayı geliştirme ve dağıtma

Denetçiler

  • Anahtarların güncel olduğundan emin olmak için anahtarların süre sonu tarihlerini gözden geçirin
  • Anahtarlara yalnızca yetkili kullanıcılar/uygulamalar tarafından erişilebildiğini sağlamak için rol atamalarını izleme
  • Anahtarların veri güvenliği standartlarına uygun şekilde kullanıldığını onaylamak için yönetilen HSM günlüklerini gözden geçirin

Uygun rolleri atama

Aşağıdaki tabloda, yönetilen HSM'ye erişmek için ekiplere ve kaynaklara yapılan rol atamaları özetlenmiştir.

Rol Kontrol düzlemi rolü Veri düzlemi rolü
Güvenlik ekibi Yönetilen HSM Katkıda Bulunanı Yönetilen HSM Yöneticisi
Geliştiriciler ve operatörler Hiç kimse Hiç kimse
Denetçiler Hiç kimse Yönetilen HSM Şifreleme Denetçisi
Uygulama tarafından kullanılan VM'nin yönetilen kimliği Hiç kimse Yönetimli HSM Şifreleme Kullanıcısı
Uygulama tarafından kullanılan Depolama hesabının yönetilen kimliği Hiç kimse Yönetilen HSM Şifreleme Hizmeti Şifrelemesi

Üç ekip rolünün, yönetilen HSM izinleriyle birlikte diğer kaynaklara erişmesi gerekir. VM'leri (veya Azure Uygulaması Hizmeti'nin Web Uygulamaları özelliğini) dağıtmak için geliştiricilerin ve operatörlerin bu kaynak türlerine erişmesi gerekirContributor. Denetçiler, yönetilen HSM günlüklerinin depolandığı Depolama hesabına okuma erişimine ihtiyaç duyar.

Azure CLI ile uygulama

Denetim düzlemi rollerini (Azure RBAC) atamak için Azure portalını veya Azure CLI veya Azure PowerShell gibi diğer yönetim arabirimlerinden herhangi birini kullanabilirsiniz. Yönetilen HSM veri düzlemi rollerini atamak için Azure CLI veya Azure REST API kullanmanız gerekir.

Kontrol düzlemi rolleri hakkında daha fazla bilgi için Azure yerleşik rolleri bölümüne göz atın. Yönetilen HSM veri düzlemi rolleri hakkında daha fazla bilgi için bkz. Yönetilen HSM için yönetilen HSM yerel RBAC yerleşik rolleri.

Aşağıdaki Azure CLI kod parçacıklarında yukarıda açıklanan rol atamalarının nasıl uygulandığı gösterilmektedir:

Varsayımlar

  • Microsoft Entra yöneticisi üç rolü temsil eden güvenlik grupları oluşturmuştur: Contoso Güvenlik Ekibi, Contoso Uygulama DevOps ve Contoso Uygulama Denetçileri. Yönetici, ilgili gruplarına kullanıcı eklemiştir.
  • Tüm kaynaklar ContosoAppRG kaynak grubunda bulunur.
  • Yönetilen HSM günlükleri contosologstorage depolama hesabında saklanır.
  • ContosoMHSM tarafından yönetilen HSM ve contosologstorage depolama hesabı aynı Azure konumundadır.

Denetim düzlemi rollerini atama

Abonelik yöneticisi rolü güvenlik ekibine atar Managed HSM Contributor . Bu rol, güvenlik ekibinin mevcut yönetilen HSM'leri yönetmesine ve yenilerini oluşturmasına olanak tanır.

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

Veri düzlemi rolleri atayın

Mevcut yönetilen HSM'ler için güvenlik ekibine bunları yönetmek için "Yönetilen HSM Yöneticisi" rolü atanması gerekir:

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

Günlüğü yapılandırın ve ek roller atayın

Güvenlik ekibi günlüğe kaydetmeyi ayarlar ve denetçilere ve VM uygulamasına roller atar:

# 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

Üretim ortamları için dikkat edilmesi gerekenler

Bu öğretici, erişim denetimi uygulamasını göstermek için basitleştirilmiş bir senaryoyu gösterir.

Özel gereksinimlerinize göre yönetilen HSM'nize yönelik izinleri ayarlayın. Bu örnekte, güvenlik ekibinin DevOps personeline uygulamalarında kullanılmak üzere anahtar ve gizli dizi başvuruları (URI'ler ve parmak izleri) sağladığını varsaydık. Geliştiriciler ve operatörler doğrudan veri düzlemi erişimi gerektirmez. Bu öğretici, yönetilen HSM'nizin güvenliğini sağlamaya odaklansa da sanal makineler, depolama hesapları ve diğerleri gibi diğer Azure kaynaklarına benzer güvenlik önlemleri uygulayın.

Sonraki adımlar