Zelfstudie: Een implementatie voorbereiden voor een vertrouwelijke container in Azure Container Instances
In Azure Container Instances kunt u vertrouwelijke containers op het serverloze platform gebruiken om containertoepassingen uit te voeren in een hardwaregebaseerde en geteste TEE (Trusted Execution Environment). Deze mogelijkheid kan helpen bij het beveiligen van gegevens die in het geheugen worden gebruikt en biedt versleuteling in het geheugen via beveiligde geneste paging.
In deze zelfstudie leert u het volgende:
- Maak een Azure Resource Manager-sjabloon (ARM-sjabloon) voor een vertrouwelijke containergroep.
- Genereer een CCE-beleid (Confidential Computing Enforcement).
- Implementeer de vertrouwelijke containergroep in Azure.
Vereisten
Voor het voltooien van deze zelfstudie moet u aan de volgende vereisten voldoen:
Azure CLI: Azure CLI versie 2.44.1 of hoger moet zijn geïnstalleerd op uw lokale computer. Voer uit
az --version
om uw versie te vinden. Als u uw CLI wilt installeren of upgraden, raadpleegt u De Azure CLI installeren.Azure CLI confcom-extensie: u moet azure CLI-extensie versie 0.30+ hebben geïnstalleerd om beleidsregels voor het afdwingen van vertrouwelijke computing te genereren.
az extension add -n confcom
Docker: Docker moet lokaal zijn geïnstalleerd. Docker biedt pakketten waarmee de Docker-omgeving op MacOS, Windows en Linux kan worden geconfigureerd.
In deze zelfstudie wordt ervan uitgegaan dat u basiskennis hebt van Docker-kernconcepten, zoals containers, containerinstallatiekopieën en basisopdrachten
docker
. Zie het Docker-overzicht voor een inleiding tot de basisprincipes van Docker en containers.
Belangrijk
Omdat Azure Cloud Shell de Docker-daemon niet bevat, moet u zowel de Azure CLI als docker-engine op uw lokale computer installeren om deze zelfstudie te voltooien. U kunt Azure Cloud Shell niet gebruiken voor deze zelfstudie.
Een ARM-sjabloon maken voor een Container Instances-containergroep
In deze zelfstudie implementeert u een Hallo wereld-toepassing waarmee een hardware attestation-rapport wordt gegenereerd. U begint met het maken van een ARM-sjabloon met een containergroepresource om de eigenschappen van deze toepassing te definiëren. Vervolgens gebruikt u deze ARM-sjabloon met de Azure CLI-hulpprogramma's voor confcom om een CCE-beleid voor attestation te genereren.
In deze zelfstudie wordt deze ARM-sjabloon als voorbeeld gebruikt. Zie Azure Confidential Container Instances Hallo wereld om de broncode voor deze toepassing weer te geven.
Met de voorbeeldsjabloon worden twee eigenschappen toegevoegd aan de resourcedefinitie containerinstanties om de containergroep vertrouwelijk te maken:
sku
: Hiermee kunt u kiezen tussen implementaties van vertrouwelijke en standaardcontainergroepen. Als u deze eigenschap niet aan de resource toevoegt, is de containergroep een standaardimplementatie.confidentialComputeProperties
: Hiermee kunt u een aangepast CCE-beleid doorgeven voor attestation van uw containergroep. Als u dit object niet toevoegt aan de resource, worden de softwareonderdelen die in de containergroep worden uitgevoerd, niet gevalideerd.
Notitie
De ccePolicy
parameter onder confidentialComputeProperties
is leeg. U vult het in wanneer u het beleid later in de zelfstudie genereert.
Gebruik de gewenste teksteditor om deze ARM-sjabloon op uw lokale computer op te slaan als template.json.
{
"$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]"
}
}
}
Een aangepast CCE-beleid maken
Met de ARM-sjabloon die u hebt gemaakt en de Azure CLI confcom-extensie, kunt u een aangepast CCE-beleid genereren. Het CCE-beleid wordt gebruikt voor attestation. Het hulpprogramma gebruikt de ARM-sjabloon als invoer om het beleid te genereren. Het beleid dwingt de specifieke containerinstallatiekopieën, omgevingsvariabelen, koppels en opdrachten af, die vervolgens kunnen worden gevalideerd wanneer de containergroep wordt gestart. Zie de documentatie op GitHub voor meer informatie over de Azure CLI confcom-extensie.
Als u het CCE-beleid wilt genereren, voert u de volgende opdracht uit met behulp van de ARM-sjabloon als invoer:
az confcom acipolicygen -a .\template.json
Wanneer deze opdracht is voltooid, wordt een Base64-tekenreeks die als uitvoer wordt gegenereerd, automatisch weergegeven in de
ccePolicy
eigenschap van de ARM-sjabloon.
De sjabloon implementeren
In de volgende stappen gebruikt u Azure Portal om de sjabloon te implementeren. U kunt ook Azure PowerShell, de Azure CLI of de REST API gebruiken. Zie Sjablonen implementeren voor meer informatie over andere implementatiemethoden.
Selecteer de knop Implementeren in Azure om u aan te melden bij Azure en een Container Instances-implementatie te starten.
Selecteer Bouw uw eigen sjabloon in de editor.
De sjabloon-JSON die wordt weergegeven, is meestal leeg.
Selecteer Bestand laden en upload template.json, die u hebt gewijzigd door het CCE-beleid toe te voegen in de vorige stappen.
Selecteer Opslaan.
Selecteer de volgende waarden of voer deze in:
- Subscription: selecteer een Azure-abonnement.
- Resourcegroep: Selecteer Nieuwe maken, voer een unieke naam in voor de resourcegroep en selecteer VERVOLGENS OK.
- Naam: Accepteer de gegenereerde naam voor het exemplaar of voer een naam in.
- Locatie: selecteer een locatie voor de resourcegroep. Kies een regio waarin vertrouwelijke containers worden ondersteund. Voorbeeld: Europa - noord.
- Afbeelding: Accepteer de standaardnaam van de installatiekopieën. In deze Linux-voorbeeldinstallatiekopieën wordt een hardwareverklaring weergegeven.
Accepteer standaardwaarden voor de resterende eigenschappen en selecteer Beoordelen en maken.
Bekijk de voorwaarden. Selecteer Ik ga akkoord met de bovenstaande voorwaarden als u akkoord gaat.
Wacht totdat de melding Implementatie is voltooid wordt weergegeven. Er wordt bevestigd dat u het exemplaar hebt gemaakt.
Geïmplementeerde resources bekijken
In de volgende stappen gebruikt u Azure Portal om de eigenschappen van de containerinstantie te controleren. U kunt ook een hulpprogramma zoals de Azure CLI gebruiken.
Zoek in de portal naar Container Instances en selecteer vervolgens de containerinstantie die u hebt gemaakt.
Noteer op de pagina Overzicht de status van het exemplaar en het BIJBEHORENDE IP-adres.
Wanneer de status van het exemplaar wordt uitgevoerd, gaat u naar het IP-adres in uw browser.
De aanwezigheid van het attestation-rapport onder het Logo van Azure Container Instances bevestigt dat de container wordt uitgevoerd op hardware die ondersteuning biedt voor een TEE.
Als u implementeert op hardware die geen TEE ondersteunt (bijvoorbeeld door een regio te kiezen waarin Confidential Container Instances niet beschikbaar is), wordt er geen attestation-rapport weergegeven.
Gerelateerde inhoud
Nu u een vertrouwelijke containergroep hebt geïmplementeerd in Container Instances, kunt u meer informatie krijgen over hoe beleidsregels worden afgedwongen: