Kurz: Příprava nasazení pro důvěrný kontejner ve službě Azure Container Instances

Ve službě Azure Container Instances můžete pomocí důvěrných kontejnerů na bezserverové platformě spouštět kontejnerové aplikace v hardwarovém a ověřeném důvěryhodném spouštěcím prostředí (TEE). Tato funkce může pomoct chránit užitá data a poskytuje šifrování v paměti prostřednictvím zabezpečeného vnořeného stránkování.

V tomto kurzu se naučíte:

  • Vytvořte šablonu Azure Resource Manageru (šablonu ARM) pro důvěrnou skupinu kontejnerů.
  • Vygenerujte zásady vynucení důvěrných výpočetních operací (CCE).
  • Nasaďte důvěrnou skupinu kontejnerů do Azure.

Požadavky

K dokončení tohoto kurzu musíte splnit následující požadavky:

  • Azure CLI: Na místním počítači musíte mít nainstalované Rozhraní příkazového řádku Azure CLI verze 2.44.1 nebo novější. Pokud chcete najít svou verzi, spusťte az --versionpříkaz . Pokud potřebujete instalaci nebo upgrade, přečtěte si téma Instalace rozhraní příkazového řádku Azure CLI.

  • Rozšíření Confcom pro Azure CLI: Abyste mohli generovat důvěrné zásady vynucení výpočetních prostředků, musíte mít nainstalované rozšíření Azure CLI confcom verze 0.30 nebo novější.

    az extension add -n confcom
    
  • Docker: Potřebujete Docker nainstalovaný místně. Docker poskytuje balíčky, které nakonfigurují prostředí Dockeru v systému macOS, Windows a Linux.

    V tomto kurzu se předpokládá základní znalost základních konceptů Dockeru, jako jsou kontejnery, image kontejnerů a základní docker příkazy. Základní informace o Dockeru a kontejnerech najdete v článku Docker Overview (Přehled Dockeru).

Důležité

Vzhledem k tomu, že Azure Cloud Shell neobsahuje démona Dockeru, musíte nainstalovat Azure CLI i Modul Dockeru do místního počítače , abyste mohli absolvovat tento kurz. Pro účely tohoto kurzu nemůžete použít Azure Cloud Shell.

Vytvoření šablony ARM pro skupinu kontejnerů Container Instances

V tomto kurzu nasadíte aplikaci Hello World, která generuje sestavu ověření hardwaru. Začnete vytvořením šablony ARM s prostředkem skupiny kontejnerů, která definuje vlastnosti této aplikace. Tuto šablonu ARM pak použijete s nástroji azure CLI confcom k vygenerování zásad CCE pro ověření identity.

Tento kurz používá tuto šablonu ARM jako příklad. Pokud chcete zobrazit zdrojový kód pro tuto aplikaci, přečtěte si téma Azure Confidential Container Instances Hello World.

Ukázková šablona přidá do definice prostředku Container Instances dvě vlastnosti, aby byla skupina kontejnerů důvěrná:

  • sku: Umožňuje vybrat mezi důvěrnými a standardními nasazeními skupin kontejnerů. Pokud tuto vlastnost do prostředku nepřidáte, skupina kontejnerů bude standardním nasazením.
  • confidentialComputeProperties: Umožňuje předat vlastní zásady CCE pro ověření vaší skupiny kontejnerů. Pokud tento objekt do prostředku nepřidáte, softwarové komponenty, které běží v rámci skupiny kontejnerů, nebudou ověřeny.

Poznámka:

Parametr ccePolicy v části confidentialComputeProperties je prázdný. Vyplníte ho, až zásady vygenerujete později v kurzu.

Pomocí upřednostňovaného textového editoru uložte tuto šablonu ARM na místní počítač jako 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/public/acc/samples/aci/helloworld:2.7",
        "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]"
      }
    }
  }

Vytvoření vlastní zásady CCE

Pomocí šablony ARM, kterou jste vytvořili a rozšíření Confcom pro Azure CLI, můžete vygenerovat vlastní zásady CCE. Zásady CCE se používají k ověření identity. Nástroj vezme šablonu ARM jako vstup pro vygenerování zásady. Zásada vynucuje konkrétní image kontejneru, proměnné prostředí, připojení a příkazy, které se pak dají ověřit při spuštění skupiny kontejnerů. Další informace o rozšíření Confcom v Azure CLI najdete v dokumentaci na GitHubu.

  1. Pokud chcete vygenerovat zásadu CCE, spusťte následující příkaz pomocí šablony ARM jako vstupu:

    az confcom acipolicygen -a .\template.json
    

    Po dokončení tohoto příkazu se řetězec Base64 vygenerovaný jako výstup automaticky zobrazí ve ccePolicy vlastnosti šablony ARM.

Nasazení šablony

V následujících krocích nasadíte šablonu pomocí webu Azure Portal. Můžete také použít Azure PowerShell, Azure CLI nebo rozhraní REST API. Další informace o dalších metodách nasazení najdete v tématu Nasazení šablon.

  1. Vyberte tlačítko Nasadit do Azure, abyste se přihlásili k Azure a zahájili nasazení služby Container Instances.

    Tlačítko pro nasazení šablony Resource Manageru do Azure

  2. Vyberte Vytvořit vlastní šablonu v editoru.

    Snímek obrazovky s tlačítkem pro vytvoření vlastní šablony v editoru

    Formát JSON šablony, který se zobrazí, je většinou prázdný.

  3. Vyberte Načíst soubor a nahrajte template.json, které jste upravili přidáním zásad CCE v předchozích krocích.

    Snímek obrazovky s tlačítkem pro načtení souboru

  4. Zvolte Uložit.

  5. Vyberte a zadejte následující hodnoty:

    • Předplatné: Vyberte předplatné Azure.
    • Skupina prostředků: Vyberte Vytvořit nový, zadejte jedinečný název skupiny prostředků a pak vyberte OK.
    • Název: Přijměte vygenerovaný název instance nebo zadejte název.
    • Umístění: Vyberte umístění pro skupinu prostředků. Zvolte oblast, ve které se podporují důvěrné kontejnery. Příklad: Severní Evropa.
    • Obrázek: Přijměte výchozí název image. Tato ukázková image Linuxu zobrazuje ověření hardwaru.

    Přijměte výchozí hodnoty pro zbývající vlastnosti a pak vyberte Zkontrolovat a vytvořit.

    Snímek obrazovky s podrobnostmi pro vlastní nasazení šablony ARM

  6. Přečtěte si podmínky a ujednání. Pokud souhlasíte, vyberte Souhlasím s podmínkami a ujednáními uvedenými výše.

  7. Počkejte, až se zobrazí oznámení o úspěšném nasazení. Potvrdí, že jste instanci úspěšně vytvořili.

    Snímek obrazovky s oznámením portálu pro úspěšné nasazení

Kontrola nasazených prostředků

V následujících krocích pomocí webu Azure Portal zkontrolujete vlastnosti instance kontejneru. Můžete také použít nástroj, jako je Azure CLI.

  1. Na portálu vyhledejte službu Container Instances a pak vyberte instanci kontejneru, kterou jste vytvořili.

  2. Na stránce Přehled si poznamenejte stav instance a její IP adresy.

    Snímek obrazovky se stránkou přehledu instance skupiny kontejnerů

  3. Pokud je instance spuštěná, přejděte v prohlížeči na IP adresu.

    Snímek obrazovky se zobrazením prohlížeče aplikace nasazené prostřednictvím služby Azure Container Instances

    Přítomnost sestavy ověření identity pod logem Azure Container Instances potvrzuje, že kontejner běží na hardwaru, který podporuje TEE.

    Pokud nasadíte na hardware, který nepodporuje TEE (například výběrem oblasti, ve které nejsou k dispozici důvěrné instance kontejnerů), nezobrazí se žádná sestava ověření identity.

Teď, když jste nasadili důvěrnou skupinu kontejnerů ve službě Container Instances, najdete další informace o tom, jak se zásady vynucují: