Öğretici: Azure Container Instances'ta gizli bir kapsayıcı için dağıtım hazırlama
Azure Container Instances'ta, kapsayıcı uygulamalarını donanım tabanlı ve güvenilir bir güvenilir yürütme ortamında (TEE) çalıştırmak için sunucusuz platformdaki gizli kapsayıcıları kullanabilirsiniz. Bu özellik kullanımdaki verilerin korunmasına yardımcı olabilir ve Güvenli İç İçe Disk Belleği aracılığıyla bellek içi şifreleme sağlar.
Bu öğreticide aşağıdakilerin nasıl yapılacağını öğreneceksiniz:
- Gizli kapsayıcı grubu için bir Azure Resource Manager şablonu (ARM şablonu) oluşturun.
- Gizli bilgi işlem uygulama (CCE) ilkesi oluşturun.
- Gizli kapsayıcı grubunu Azure'a dağıtın.
Önkoşullar
Bu öğreticiyi tamamlamak için aşağıdaki gereksinimleri karşılamanız gerekir:
Azure CLI: Yerel bilgisayarınızda Azure CLI sürüm 2.44.1 veya üzeri yüklü olmalıdır. Sürümünüzü bulmak için komutunu çalıştırın
az --version
. Yükleme veya yükseltme yapmanız gerekirse bkz. Azure CLI'yı yükleme.Azure CLI confcom uzantısı: Gizli bilgi işlem uygulama ilkeleri oluşturmak için Azure CLI confcom uzantısı sürüm 0.30+ yüklü olmalıdır.
az extension add -n confcom
Docker: Docker'ın yerel olarak yüklenmesi gerekir. Docker, macOS, Windows ve Linux üzerinde Docker ortamını yapılandıran paketler sağlar.
Bu öğreticide kapsayıcılar, kapsayıcı görüntüleri ve temel komutlar gibi temel Docker kavramları hakkında temel
docker
bilgiler yer alır. Docker ve kapsayıcı temel bilgileri ile ilgili giriş yapmak için Docker’a genel bakış bölümüne bakın.
Önemli
Azure Cloud Shell Docker daemon'ını içermediğinden, bu öğreticiyi tamamlamak için yerel bilgisayarınıza hem Azure CLI hem de Docker Altyapısı'nı yüklemeniz gerekir. Bu öğretici için Azure Cloud Shell'i kullanamazsınız.
Kapsayıcı Örnekleri kapsayıcı grubu için ARM şablonu oluşturma
Bu öğreticide, donanım kanıtlama raporu oluşturan bir Merhaba Dünya uygulaması dağıtacaksınız. Bu uygulamanın özelliklerini tanımlamak için kapsayıcı grubu kaynağıyla bir ARM şablonu oluşturarak başlarsınız. Ardından bu ARM şablonunu Azure CLI confcom araçlarıyla kullanarak kanıtlama için bir CCE ilkesi oluşturursunuz.
Bu öğreticide örnek olarak bu ARM şablonu kullanılmaktadır. Bu uygulamanın kaynak kodunu görüntülemek için bkz. Azure Gizli Kapsayıcı Örnekleri Merhaba Dünya.
Örnek şablon, kapsayıcı grubunu gizli hale getirmek için Kapsayıcı Örnekleri kaynak tanımına iki özellik ekler:
sku
: Gizli ve standart kapsayıcı grubu dağıtımları arasında seçim yapmaya olanak tanır. Bu özelliği kaynağa eklemezseniz kapsayıcı grubu standart bir dağıtımdır.confidentialComputeProperties
: Kapsayıcı grubunuzun kanıtlaması için özel bir CCE ilkesi geçirmenizi sağlar. Bu nesneyi kaynağa eklemezseniz, kapsayıcı grubu içinde çalışan yazılım bileşenleri doğrulanmaz.
Not
altındaki ccePolicy
confidentialComputeProperties
parametresi boş. İlkeyi öğreticinin ilerleyen bölümlerinde oluştururken doldurursunuz.
Bu ARM şablonunu yerel makinenize template.json olarak kaydetmek için tercih ettiğiniz metin düzenleyicisini kullanın.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"name": {
"type": "string",
"defaultValue": "helloworld",
"metadata": {
"description": "Name for the container group"
}
},
"location": {
"type": "string",
"defaultValue": "North Europe",
"metadata": {
"description": "Location for all resources."
}
},
"image": {
"type": "string",
"defaultValue": "mcr.microsoft.com/acc/samples/aci/helloworld:2.8",
"metadata": {
"description": "Container image to deploy. Should be of the form repoName/imagename:tag for images stored in public Docker Hub, or a fully qualified URI for other registries. Images from private registries require additional registry credentials."
}
},
"port": {
"type": "int",
"defaultValue": 80,
"metadata": {
"description": "Port to open on the container and the public IP address."
}
},
"cpuCores": {
"type": "int",
"defaultValue": 1,
"metadata": {
"description": "The number of CPU cores to allocate to the container."
}
},
"memoryInGb": {
"type": "int",
"defaultValue": 1,
"metadata": {
"description": "The amount of memory to allocate to the container in gigabytes."
}
},
"restartPolicy": {
"type": "string",
"defaultValue": "Never",
"allowedValues": [
"Always",
"Never",
"OnFailure"
],
"metadata": {
"description": "The behavior of Azure runtime if container has stopped."
}
}
},
"resources": [
{
"type": "Microsoft.ContainerInstance/containerGroups",
"apiVersion": "2023-05-01",
"name": "[parameters('name')]",
"location": "[parameters('location')]",
"properties": {
"confidentialComputeProperties": {
"ccePolicy": ""
},
"containers": [
{
"name": "[parameters('name')]",
"properties": {
"image": "[parameters('image')]",
"ports": [
{
"port": "[parameters('port')]",
"protocol": "TCP"
}
],
"resources": {
"requests": {
"cpu": "[parameters('cpuCores')]",
"memoryInGB": "[parameters('memoryInGb')]"
}
}
}
}
],
"sku": "Confidential",
"osType": "Linux",
"restartPolicy": "[parameters('restartPolicy')]",
"ipAddress": {
"type": "Public",
"ports": [
{
"port": "[parameters('port')]",
"protocol": "TCP"
}
]
}
}
}
],
"outputs": {
"containerIPv4Address": {
"type": "string",
"value": "[reference(resourceId('Microsoft.ContainerInstance/containerGroups', parameters('name'))).ipAddress.ip]"
}
}
}
Özel CCE ilkesi oluşturma
Oluşturduğunuz ARM şablonu ve Azure CLI confcom uzantısı ile özel bir CCE ilkesi oluşturabilirsiniz. CCE ilkesi kanıtlama için kullanılır. Araç, arm şablonunu ilkeyi oluşturmak için giriş olarak alır. İlke, kapsayıcı grubu başlatıldığında doğrulanabilen belirli kapsayıcı görüntülerini, ortam değişkenlerini, bağlamaları ve komutları zorlar. Azure CLI confcom uzantısı hakkında daha fazla bilgi için GitHub belgelerine bakın.
CCE ilkesini oluşturmak için, giriş olarak ARM şablonunu kullanarak aşağıdaki komutu çalıştırın:
az confcom acipolicygen -a .\template.json
Bu komut tamamlandığında, çıkış olarak oluşturulan bir Base64 dizesi ARM şablonunun
ccePolicy
özelliğinde otomatik olarak görünür.
Şablonu dağıtma
Aşağıdaki adımlarda, şablonu dağıtmak için Azure portalını kullanırsınız. Azure PowerShell, Azure CLI veya REST API'yi de kullanabilirsiniz. Diğer dağıtım yöntemleri hakkında bilgi edinmek için bkz . Şablonları dağıtma.
Azure'da oturum açmak ve Kapsayıcı Örnekleri dağıtımına başlamak için Azure'a Dağıt düğmesini seçin.
Düzenleyicide kendi şablonunuzu oluşturun'u seçin.
Görüntülenen JSON şablonu çoğunlukla boş.
Dosya yükle'yi seçin ve önceki adımlarda CCE ilkesini ekleyerek değiştirdiğiniz template.json karşıya yükleyin.
Kaydet'i seçin.
Aşağıdaki değerleri seçin veya girin:
- Abonelik: Bir Azure aboneliği seçin.
- Kaynak grubu: Yeni oluştur'u seçin, kaynak grubu için benzersiz bir ad girin ve tamam'ı seçin.
- Ad: Örnek için oluşturulan adı kabul edin veya bir ad girin.
- Konum: Kaynak grubu için bir konum seçin. Gizli kapsayıcıların desteklendiği bir bölge seçin. Örnek: Kuzey Avrupa.
- Resim: Varsayılan görüntü adını kabul edin. Bu örnek Linux görüntüsü bir donanım kanıtlaması görüntüler.
Kalan özellikler için varsayılan değerleri kabul edin ve gözden geçir + oluştur'u seçin.
Hüküm ve koşulları gözden geçirin. Kabul ediyorsanız, yukarıda belirtilen hüküm ve koşulları kabul ediyorum'ı seçin.
Dağıtım başarılı bildirimi görünene kadar bekleyin. Örneği başarıyla oluşturduğunuzu onaylar.
Dağıtılan kaynakları gözden geçirme
Aşağıdaki adımlarda Azure portalını kullanarak kapsayıcı örneğinin özelliklerini gözden geçireceksiniz. Azure CLI gibi bir araç da kullanabilirsiniz.
Portalda Kapsayıcı Örnekleri'ni arayın ve oluşturduğunuz kapsayıcı örneğini seçin.
Genel Bakış sayfasında, örneğin durumunu ve IP adresini not edin.
Örneğin durumu Çalışıyor olduğunda, tarayıcınızda IP adresine gidin.
Azure Container Instances logosunun altındaki kanıtlama raporunun varlığı, kapsayıcının TEE'yi destekleyen donanımlarda çalıştığını doğrular.
TEE'yi desteklemeyen bir donanıma dağıtım yaparsanız (örneğin, Gizli Kapsayıcı Örneklerinin kullanılamadığı bir bölge seçerek), kanıtlama raporu görüntülenmez.
İlgili içerik
Kapsayıcı Örnekleri'ne gizli bir kapsayıcı grubu dağıttığınız için ilkelerin nasıl uygulandığı hakkında daha fazla bilgi edinebilirsiniz: