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

Azure Key Vault Yönetilen HSM, şifreleme anahtarlarını koruyan bir bulut hizmetidir. Bu veriler hassas ve iş açısından kritik olduğundan, yönetilen HSM'lerinize erişimi yalnızca yetkili uygulamaların ve kullanıcıların erişmesine izin vererek güvenlik altına almanız gerekir. Bu makalede, Yönetilen HSM erişim denetimi modeline genel bir bakış sağlanır. Kimlik doğrulama ve yetkilendirmeyi açıklar ve yönetilen HSM'lerinize erişimin güvenliğini sağlamayı açıklar.

Bu öğreticide, Azure RBAC ve Yönetilen HSM yerel RBAC kullanarak görev ayrımı ve erişim denetimi elde etmeyi gösteren basit bir örnek gösterilmektedir. Yönetilen HSM erişim denetimi modeli hakkında bilgi edinmek için bkz. Yönetilen HSM erişim denetimi.

Önkoşullar

Bu makaledeki adımları tamamlamak için aşağıdaki öğelere sahip olmanız gerekir:

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. Screenshot that shows an example of Try It for Azure Cloud Shell.
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. Button to launch Azure Cloud Shell.
Azure portalının sağ üst kısmındaki menü çubuğunda Cloud Shell düğmesini seçin. Screenshot that shows the Cloud Shell button in the Azure portal

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. Windows ve Linux'ta Ctrl+Shift V'yi seçerek veya macOS üzerinde Cmd+Shift++V'yi seçerek kodu veya komutu Cloud Shell oturumuna yapıştırın.

  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

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 her iki RSA anahtarı da yönetilen HSM'mizde depolanır.

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. İmzalama için RSA veya EC anahtarları ve veri şifreleme için RSA veya AES anahtarları.
  • 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.

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

Güvenlik ekibi

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

Geliştiriciler ve işleçler

  • Güvenlik ekibinden imzalama için kullanılan RSA anahtarının başvuru (anahtar URI'sini) alın.
  • Anahtara program aracılığıyla erişen uygulamayı geliştirin ve dağıtın.

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.

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

Role Yönetim 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çbiri Hiçbiri
Denetçiler Hiçbiri Yönetilen HSM Şifreleme Denetçisi
Uygulama tarafından kullanılan VM'nin yönetilen kimliği Hiçbiri Yönetilen HSM Şifreleme Kullanıcısı
Uygulama tarafından kullanılan Depolama hesabının yönetilen kimliği Hiçbiri Yönetilen HSM 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.

Yönetim düzlemi rolleri (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 kullanmanız gerekir. Yönetim düzlemi rolleri hakkında daha fazla bilgi için bkz . Azure yerleşik rolleri. Yönetilen HSM veri düzlemi rolleri hakkında daha fazla bilgi için bkz . Yönetilen HSM için yerel RBAC yerleşik rolleri.

Bu bölümdeki Azure CLI kod parçacıkları aşağıdaki varsayımlarla derlenir:

  • 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 depolanır.
  • ContosoMHSM tarafından yönetilen HSM ve contosologstorage depolama hesabı aynı Azure konumundadır.

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. Mevcut yönetilen HSM'ler varsa, bunları yönetebilmeleri için "Yönetilen HSM Yönetici istrator" rolüne atanmaları gerekir.

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

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 '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

Bu öğreticide yalnızca çoğunlukla erişim denetimiyle ilgili eylemler gösterilir. Vm'nizde uygulama dağıtma, depolama hesabı için müşteri tarafından yönetilen anahtarla şifrelemeyi açma, yönetilen HSM oluşturma ile ilgili diğer eylemler ve işlemler, örneğin erişim denetimi ve rol yönetimine odaklanması için burada gösterilmez.

Örneğimizde basit bir senaryo açıklanmaktadır. Gerçek hayattaki senaryolar daha karmaşık olabilir. Anahtar kasanızın izinlerini ihtiyaçlarınıza göre ayarlayabilirsiniz. Güvenlik ekibinin, uygulamalarında DevOps personeli tarafından kullanılan anahtar ve gizli dizi başvurularını (URI'ler ve parmak izleri) sağladığını varsaydık. Geliştiriciler ve operatörler herhangi bir veri düzlemi erişimi gerektirmez. Anahtar kasanızın güvenliğini sağlamaya odaklandık. VM'lerinizin, depolama hesaplarınızın ve diğer Azure kaynaklarınızın güvenliğini sağlarken de benzer konuları dikkate alın.

Kaynaklar

Sonraki adımlar

Yöneticiye yönelik başlangıç öğreticisi için bkz . Yönetilen HSM nedir?.

Yönetilen HSM günlüğü kullanım günlüğü hakkında daha fazla bilgi için bkz . Yönetilen HSM günlüğü.