Üzembehelyezési adatok titkosítása

Ha Azure Container Instances (ACI) erőforrásokat futtat a felhőben, az ACI szolgáltatás gyűjti és megőrzi a tárolókhoz kapcsolódó adatokat. Az ACI automatikusan titkosítja ezeket az adatokat, amikor azokat a felhőben megőrzik. Ez a titkosítás védi az adatokat, hogy megfeleljen a szervezet biztonsági és megfelelőségi kötelezettségvállalásainak. Az ACI azt is lehetővé teszi, hogy titkosítsa ezeket az adatokat a saját kulcsával, így nagyobb mértékben szabályozhatja az ACI-üzemelő példányokhoz kapcsolódó adatokat.

Tudnivalók az ACI-adattitkosításról

Az ACI-ben lévő adatok titkosítása és visszafejtése 256 bites AES-titkosítással történik. Minden ACI-üzemelő példány esetében engedélyezve van, és nem kell módosítania az üzembe helyezést vagy a tárolókat a titkosítás előnyeinek kihasználásához. Ez magában foglalja az üzembe helyezés metaadatait, a környezeti változókat, a tárolókba átadott kulcsokat, valamint a tárolók leállítása után a naplókat, hogy továbbra is láthassa őket. A titkosítás nincs hatással a tárolócsoport teljesítményére, és nincs további költség a titkosításhoz.

Támaszkodhat a Microsoft által felügyelt kulcsokra a tárolóadatok titkosításához, vagy kezelheti a titkosítást saját kulcsaival. Az alábbi táblázat az alábbi lehetőségeket hasonlítja össze:

Microsoft által felügyelt kulcsok Felhasználó által kezelt kulcsok
Titkosítási/visszafejtési műveletek Azure Azure
Kulcstároló Microsoft-kulcstároló Azure Key Vault
Kulcsrotálási felelősség Microsoft Ügyfél
Kulcshozzáférés Csak Microsoft Microsoft, ügyfél

Ez a cikk két folyamatot tekint át az adatok ügyfél által felügyelt kulccsal történő titkosításához:

  • Adatok titkosítása egy ügyfél által felügyelt kulccsal, amely egy standard Azure-Key Vault
  • Titkosítsa az adatokat egy ügyfél által felügyelt kulccsal, amely egy hálózat által védett Azure-Key Vault van tárolva, és engedélyezve van a Megbízható szolgáltatások szolgáltatás.

Adatok titkosítása egy ügyfél által felügyelt kulccsal, amely egy standard Azure-Key Vault

Előfeltételek

Szolgáltatásnév létrehozása az ACI-hez

Az első lépés annak biztosítása, hogy az Azure-bérlő rendelkezik egy szolgáltatásnévvel, amely engedélyeket ad a Azure Container Instances szolgáltatásnak.

Fontos

A következő parancs futtatásához és a szolgáltatásnév sikeres létrehozásához győződjön meg arról, hogy rendelkezik szolgáltatásnév-létrehozási engedéllyel a bérlőben.

Az alábbi CLI-parancs beállítja az ACI SP-t az Azure-környezetben:

az ad sp create --id 6bb8e274-af5d-4df2-98a3-4fd78b4cafd9

A parancs futtatásának kimenetében egy olyan szolgáltatásnévnek kell megjelennie, amely a következőhöz van beállítva: "displayName": "Azure Container Instance Service".

Ha nem tudja sikeresen létrehozni a szolgáltatásnevet:

  • győződjön meg arról, hogy rendelkezik erre vonatkozó engedélyekkel a bérlőben
  • ellenőrizze, hogy létezik-e már szolgáltatásnév a bérlőben az ACI-ben való üzembe helyezéshez. Ezt a szolgáltatásnév futtatásával az ad sp show --id 6bb8e274-af5d-4df2-98a3-4fd78b4cafd9 és használatával teheti meg.

Key Vault-erőforrás létrehozása

Azure Key Vault létrehozása Azure Portal, Azure CLI vagy Azure PowerShell használatával.

A kulcstartó tulajdonságaihoz használja az alábbi irányelveket:

  • Név: Egy egyedi nevet kell megadnia.
  • Előfizetés: Válassza ki az előfizetést.
  • Az Erőforráscsoport területen válasszon ki egy meglévő erőforráscsoportot, vagy hozzon létre újat, és adjon meg egy erőforráscsoportnevet.
  • A Hely legördülő menüből válassza ki a helyet.
  • A többi beállítást az alapértelmezett értékre hagyhatja, vagy további követelmények alapján választhat.

Fontos

Ha ügyfél által felügyelt kulcsokat használ egy ACI-alapú üzembehelyezési sablon titkosításához, javasoljuk, hogy az alábbi két tulajdonságot állítsa be a kulcstartón: Helyreállítható törlés és Törlés tiltása. Ezek a tulajdonságok alapértelmezés szerint nincsenek engedélyezve, de egy új vagy meglévő kulcstartón a PowerShell vagy az Azure CLI használatával engedélyezhetők.

Új kulcs létrehozása

A kulcstartó létrehozása után lépjen az erőforrásra a Azure Portal. Az erőforrás panel bal oldali navigációs menüjében, a Beállítások területen kattintson a Kulcsok elemre. A "Kulcsok" nézetében kattintson a "Létrehozás/importálás" elemre egy új kulcs létrehozásához. Használja a kulcs egyedi nevét, valamint a követelményeknek megfelelő egyéb beállításokat.

Új kulcs létrehozása

Hozzáférési szabályzat beállítása

Hozzon létre egy új hozzáférési szabályzatot, amely lehetővé teszi az ACI szolgáltatás számára a kulcs elérését.

  • A kulcs létrehozása után a kulcstartó erőforráspaneljén, a Beállítások területen kattintson a Hozzáférési szabályzatok elemre.
  • A kulcstartó "Hozzáférési szabályzatok" lapján kattintson a Hozzáférési szabályzat hozzáadása elemre.
  • A Kulcsengedélyek beállítása a Kulcskészlet kulcsengedélyeklekérése és feloldása beállításra
  • Az Egyszerű kiválasztása beállításnál válassza az Azure Container Instance Service lehetőséget
  • Kattintson az alul található Hozzáadás gombra

A hozzáférési szabályzatnak most meg kell jelennie a kulcstartó hozzáférési szabályzataiban.

Új hozzáférési szabályzat

A JSON üzembehelyezési sablon módosítása

Fontos

Az üzembehelyezési adatok ügyfél által felügyelt kulccsal történő titkosítása a jelenleg futó legújabb API-verzióban (2019-12-01) érhető el. Adja meg ezt az API-verziót az üzembehelyezési sablonban. Ha bármilyen problémája van ezzel kapcsolatban, forduljon az Azure ügyfélszolgálatához.

A kulcstartókulcs és a hozzáférési szabályzat beállítása után adja hozzá az alábbi tulajdonságokat az ACI üzembehelyezési sablonjához. További információ az ACI-erőforrások sablonnal való üzembe helyezéséről az Oktatóanyag: Többtárolós csoport üzembe helyezése Resource Manager sablon használatával.

  • A alatt resourcesállítsa be a következőt apiVersion : 2019-12-01.
  • Az üzembe helyezési sablon tárolócsoport-tulajdonságok szakaszában adjon hozzá egy encryptionProperties, amely a következő értékeket tartalmazza:
    • vaultBaseUrl: a kulcstartó DNS-neve, amely a Portál kulcstartó-erőforrásának áttekintési paneljén található
    • keyName: a korábban létrehozott kulcs neve
    • keyVersion: a kulcs aktuális verziója. Ez a kulcs magára a kulcsra való kattintással érhető el (a kulcstartó-erőforrás Beállítások szakaszában található "Kulcsok" területen)
  • A tárolócsoport tulajdonságai alatt adjon hozzá egy sku értéket Standardtartalmazó tulajdonságot. A sku tulajdonságra az API 2019-12-01-es verziójában van szükség.

Az alábbi sablonrészlet ezeket a további tulajdonságokat mutatja be az üzembehelyezési adatok titkosításához:

[...]
"resources": [
    {
        "name": "[parameters('containerGroupName')]",
        "type": "Microsoft.ContainerInstance/containerGroups",
        "apiVersion": "2019-12-01",
        "location": "[resourceGroup().location]",    
        "properties": {
            "encryptionProperties": {
                "vaultBaseUrl": "https://example.vault.azure.net",
                "keyName": "acikey",
                "keyVersion": "xxxxxxxxxxxxxxxx"
            },
            "sku": "Standard",
            "containers": {
                [...]
            }
        }
    }
]

Az alábbiakban egy teljes sablont talál, amelyet az Oktatóanyag: Többtárolós csoport üzembe helyezése Resource Manager sablonnal című témakörben talál.

{
  "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "containerGroupName": {
      "type": "string",
      "defaultValue": "myContainerGroup",
      "metadata": {
        "description": "Container Group name."
      }
    }
  },
  "variables": {
    "container1name": "aci-tutorial-app",
    "container1image": "mcr.microsoft.com/azuredocs/aci-helloworld:latest",
    "container2name": "aci-tutorial-sidecar",
    "container2image": "mcr.microsoft.com/azuredocs/aci-tutorial-sidecar"
  },
  "resources": [
    {
      "name": "[parameters('containerGroupName')]",
      "type": "Microsoft.ContainerInstance/containerGroups",
      "apiVersion": "2019-12-01",
      "location": "[resourceGroup().location]",
      "properties": {
        "encryptionProperties": {
            "vaultBaseUrl": "https://example.vault.azure.net",
            "keyName": "acikey",
            "keyVersion": "xxxxxxxxxxxxxxxx"
        },
        "sku": "Standard",  
        "containers": [
          {
            "name": "[variables('container1name')]",
            "properties": {
              "image": "[variables('container1image')]",
              "resources": {
                "requests": {
                  "cpu": 1,
                  "memoryInGb": 1.5
                }
              },
              "ports": [
                {
                  "port": 80
                },
                {
                  "port": 8080
                }
              ]
            }
          },
          {
            "name": "[variables('container2name')]",
            "properties": {
              "image": "[variables('container2image')]",
              "resources": {
                "requests": {
                  "cpu": 1,
                  "memoryInGb": 1.5
                }
              }
            }
          }
        ],
        "osType": "Linux",
        "ipAddress": {
          "type": "Public",
          "ports": [
            {
              "protocol": "tcp",
              "port": "80"
            },
            {
                "protocol": "tcp",
                "port": "8080"
            }
          ]
        }
      }
    }
  ],
  "outputs": {
    "containerIPv4Address": {
      "type": "string",
      "value": "[reference(resourceId('Microsoft.ContainerInstance/containerGroups/', parameters('containerGroupName'))).ipAddress.ip]"
    }
  }
}

Erőforrások üzembe helyezése

Ha az asztalon hozta létre és szerkesztette a sablonfájlt, feltöltheti azt a Cloud Shell könyvtárba a fájl húzásával.

Hozzon létre egy erőforráscsoportot az az group create paranccsal.

az group create --name myResourceGroup --location eastus

Helyezze üzembe a sablont az az deployment group create paranccsal.

az deployment group create --resource-group myResourceGroup --template-file deployment-template.json

Néhány másodpercen belül meg kell kapnia az Azure kezdeti válaszát. Az üzembe helyezés befejeződése után az ACI szolgáltatás által megőrzött összes adat titkosítva lesz a megadott kulccsal.

Adatok titkosítása ügyfél által felügyelt kulccsal egy hálózattal védett Azure-Key Vault megbízható szolgáltatásokkal engedélyezve

Key Vault-erőforrás létrehozása

Azure-Key Vault létrehozása Azure Portal, Azure CLI vagy Azure PowerShell használatával. Első lépésként ne alkalmazzon hálózati korlátozásokat, hogy a szükséges kulcsokat hozzáadhassuk a tárolóhoz. A következő lépésekben hálózati korlátozásokat adunk hozzá, és engedélyezzük a megbízható szolgáltatásokat.

A kulcstartó tulajdonságaihoz kövesse az alábbi irányelveket:

  • Név: Egy egyedi nevet kell megadnia.
  • Előfizetés: Válassza ki az előfizetést.
  • Az Erőforráscsoport területen válasszon ki egy meglévő erőforráscsoportot, vagy hozzon létre újat, és adja meg az erőforráscsoport nevét.
  • A Hely legördülő menüből válassza ki a helyet.
  • A többi beállítást az alapértelmezett értékükre hagyhatja, vagy további követelmények alapján választhat.

Fontos

Ha ügyfél által kezelt kulcsokat használ egy ACI-üzembehelyezési sablon titkosításához, javasoljuk, hogy a következő két tulajdonságot állítsa be a kulcstartón: Helyreállítható törlés és Ne ürítse ki. Ezek a tulajdonságok alapértelmezés szerint nincsenek engedélyezve, de egy új vagy meglévő kulcstartón a PowerShell vagy az Azure CLI használatával engedélyezhetők.

Új kulcs létrehozása

A kulcstartó létrehozása után lépjen az erőforráshoz Azure Portal. Az erőforrás paneljének bal oldali navigációs menüjében, a Beállítások területen kattintson a Kulcsok elemre. A "Kulcsok" nézetében kattintson a "Létrehozás/importálás" elemre egy új kulcs létrehozásához. Ehhez a kulcshoz bármilyen egyedi nevet, valamint a követelményeknek megfelelő egyéb beállításokat használhat. A következő lépésekhez mindenképpen rögzítse a kulcs nevét és verzióját.

Képernyőkép a kulcslétrehozás beállításairól, a PNG-ről.

Felhasználó által hozzárendelt felügyelt identitás létrehozása a tárolócsoporthoz

Hozzon létre egy identitást az előfizetésében az az identity create paranccsal. Használhatja ugyanazt az erőforráscsoportot, amelyet a kulcstartó létrehozásához használ, vagy használhat egy másikat.

az identity create \
  --resource-group myResourceGroup \
  --name myACIId

Az identitás a következő lépésekben való használatához használja az az identity show parancsot az identitás szolgáltatásnév-azonosítójának és erőforrás-azonosítójának változókban való tárolásához.

# Get service principal ID of the user-assigned identity
spID=$(az identity show \
  --resource-group myResourceGroup \
  --name myACIId \
  --query principalId --output tsv)

Hozzáférési szabályzat beállítása

Hozzon létre egy új hozzáférési szabályzatot, amely lehetővé teszi a felhasználó által hozzárendelt identitás számára a kulcs titkosítási célú elérését és kicsomagolását.

az keyvault set-policy \
    --name mykeyvault \
    --resource-group myResourceGroup \
    --object-id $spID \
    --key-permissions get unwrapKey

Az Azure Key Vault hálózati engedélyeinek módosítása

Az alábbi parancsok beállítanak egy Azure Firewall az Azure-Key Vault számára, és engedélyezik az Azure Megbízható szolgáltatások, például az ACI-hozzáférést.

az keyvault update \
    --name mykeyvault \
    --resource-group myResourceGroup \
    --default-action Deny
az keyvault update \
    --name mykeyvault \
    --resource-group myResourceGroup \
    --bypass AzureServices

A JSON üzembehelyezési sablon módosítása

Fontos

Az üzembehelyezési adatok ügyfél által felügyelt kulccsal való titkosítása a 2022-09-01 API-verzióban vagy újabb verzióban érhető el. A 2022-09-01 API-verzió csak ARM-en vagy REST-en keresztül érhető el. Ha bármilyen problémája van ezzel kapcsolatban, forduljon az Azure ügyfélszolgálatához. A Key Vault kulcs- és hozzáférési szabályzatának beállítása után adja hozzá a következő tulajdonságokat az ACI üzembehelyezési sablonjához. Az ACI-erőforrások sablonnal történő üzembe helyezéséről további információt a Többtárolós csoport üzembe helyezése Resource Manager sablonnal című oktatóanyagban talál.

  • A alatt resourcesállítsa a következőre apiVersion : 2022-09-01.
  • Az üzembe helyezési sablon tárolócsoport-tulajdonságok szakaszában adjon hozzá egy encryptionProperties, amely a következő értékeket tartalmazza:
    • vaultBaseUrl: a kulcstartó DNS-neve. Ez a Key Vault-erőforrás áttekintési paneljén található a Portálon
    • keyName: a korábban létrehozott kulcs neve
    • keyVersion: a kulcs aktuális verziója. Ez a kulcsra való kattintással érhető el (a Key Vault-erőforrás Beállítások szakaszának "Kulcsok" területén)
    • identity: ez a korábban létrehozott felügyelt identitáspéldány erőforrás-URI-ja
  • A tárolócsoport tulajdonságai alatt adjon hozzá egy sku értéket Standardtartalmazó tulajdonságot. A sku tulajdonságot az API 2022-09-01-es verziójában kell megadni.
  • Az erőforrások területen adja hozzá a identity felügyelt identitás ACI-vel való használatához szükséges objektumot, amely a következő értékeket tartalmazza:
    • type: a használt identitás típusa (felhasználó által hozzárendelt vagy rendszer által hozzárendelt). Ez az eset a "UserAssigned" értékre lesz állítva
    • userAssignedIdentities: az objektumban encryptionProperties fentebb használt, felhasználó által hozzárendelt identitás resourceURI azonosítója.

A következő sablonrészlet az üzembehelyezési adatok titkosításához szükséges további tulajdonságokat mutatja be:

[...]
"resources": [
    {
        "name": "[parameters('containerGroupName')]",
        "type": "Microsoft.ContainerInstance/containerGroups",
        "apiVersion": "2019-12-01",
        "location": "[resourceGroup().location]",    
        "identity": {
         "type": "UserAssigned",
         "userAssignedIdentities": {
           "/subscriptions/XXXXXXXXXXXXXXXXXXXXXX/resourcegroups/XXXXXXXXXXXXXXXXXXXXXX/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myACIId": {}
         }
        },
        "properties": {
            "encryptionProperties": {
                "vaultBaseUrl": "https://example.vault.azure.net",
                "keyName": "acikey",
                "keyVersion": "xxxxxxxxxxxxxxxx",
                "identity": "/subscriptions/XXXXXXXXXXXXXXXXXXXXXX/resourcegroups/XXXXXXXXXXXXXXXXXXXXXX/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myACIId"
            },
            "sku": "Standard",
            "containers": {
                [...]
            }
        }
    }
]

Az alábbiakban egy teljes sablont talál, amelyet az Oktatóanyag: Többtárolós csoport üzembe helyezése Resource Manager sablonnal című témakörben talál.

{
  "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "containerGroupName": {
      "type": "string",
      "defaultValue": "myContainerGroup",
      "metadata": {
        "description": "Container Group name."
      }
    }
  },
  "variables": {
    "container1name": "aci-tutorial-app",
    "container1image": "mcr.microsoft.com/azuredocs/aci-helloworld:latest",
    "container2name": "aci-tutorial-sidecar",
    "container2image": "mcr.microsoft.com/azuredocs/aci-tutorial-sidecar"
  },
  "resources": [
    {
      "name": "[parameters('containerGroupName')]",
      "type": "Microsoft.ContainerInstance/containerGroups",
      "apiVersion": "2022-09-01",
      "location": "[resourceGroup().location]",
      "identity": {
        "type": "UserAssigned",
        "userAssignedIdentities": {
          "/subscriptions/XXXXXXXXXXXXXXXXXXXXXX/resourcegroups/XXXXXXXXXXXXXXXXXXXXXX/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myACIId": {}
        }
      },
      "properties": {
        "encryptionProperties": {
          "vaultBaseUrl": "https://example.vault.azure.net",
          "keyName": "acikey",
          "keyVersion": "xxxxxxxxxxxxxxxx",
          "identity": "/subscriptions/XXXXXXXXXXXXXXXXXXXXXX/resourcegroups/XXXXXXXXXXXXXXXXXXXXXX/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myACIId"
        },
        "sku": "Standard",
        "containers": [
          {
            "name": "[variables('container1name')]",
            "properties": {
              "image": "[variables('container1image')]",
              "resources": {
                "requests": {
                  "cpu": 1,
                  "memoryInGb": 1.5
                }
              },
              "ports": [
                {
                  "port": 80
                },
                {
                  "port": 8080
                }
              ]
            }
          },
          {
            "name": "[variables('container2name')]",
            "properties": {
              "image": "[variables('container2image')]",
              "resources": {
                "requests": {
                  "cpu": 1,
                  "memoryInGb": 1.5
                }
              }
            }
          }
        ],
        "osType": "Linux",
        "ipAddress": {
          "type": "Public",
          "ports": [
            {
              "protocol": "tcp",
              "port": "80"
            },
            {
              "protocol": "tcp",
              "port": "8080"
            }
          ]
        }
      }
    }
  ],
  "outputs": {
    "containerIPv4Address": {
      "type": "string",
      "value": "[reference(resourceId('Microsoft.ContainerInstance/containerGroups/', parameters('containerGroupName'))).ipAddress.ip]"
    }
  }
}

Erőforrások üzembe helyezése

Ha az asztalon hozta létre és szerkesztette a sablonfájlt, a fájl húzásával feltöltheti azt a Cloud Shell könyvtárba.

Hozzon létre egy erőforráscsoportot az az group create paranccsal.

az group create --name myResourceGroup --location eastus

Helyezze üzembe a sablont az az deployment group create paranccsal.

az deployment group create --resource-group myResourceGroup --template-file deployment-template.json

Néhány másodpercen belül meg kell kapnia az Azure kezdeti válaszát. Az üzembe helyezés befejeződése után az ACI szolgáltatás által megőrzött összes adat titkosítva lesz a megadott kulccsal.