Kryptera distributionsdata
När du kör ACI-resurser (Azure Container Instances) i molnet samlar ACI-tjänsten in och bevarar data som är relaterade till dina containrar. ACI krypterar automatiskt dessa data när de bevaras i molnet. Den här krypteringen skyddar dina data för att uppfylla organisationens säkerhets- och efterlevnadsåtaganden. ACI ger dig också möjlighet att kryptera dessa data med din egen nyckel, vilket ger dig större kontroll över de data som är relaterade till dina ACI-distributioner.
ACI-datakryptering
Data i ACI krypteras och dekrypteras med hjälp av 256-bitars AES-kryptering. Den är aktiverad för alla ACI-distributioner och du behöver inte ändra distributionen eller containrarna för att dra nytta av den här krypteringen. Den här täckningen omfattar metadata om distributionen, miljövariabler, nycklar som skickas till dina containrar och loggar som sparas efter att containrarna har stoppats så att du fortfarande kan se dem. Kryptering påverkar inte containergruppens prestanda och det finns ingen ytterligare kostnad för kryptering.
Du kan förlita dig på Microsoft-hanterade nycklar för kryptering av dina containerdata, eller så kan du hantera krypteringen med dina egna nycklar. I följande tabell jämförs dessa alternativ:
Microsoft-hanterade nycklar | Kundhanterade nycklar | |
---|---|---|
Krypterings-/dekrypteringsåtgärder | Azure | Azure |
Nyckellagring | Microsoft-nyckelarkiv | Azure Key Vault |
Ansvar för nyckelrotation | Microsoft | Kund |
Nyckelåtkomst | Endast Microsoft | Microsoft, kund |
Den här artikeln granskar två flöden för kryptering av data med en kundhanterad nyckel:
- Kryptera data med en kundhanterad nyckel som lagras i ett Standard Azure Key Vault
- Kryptera data med en kundhanterad nyckel som lagras i ett nätverksskyddat Azure Key Vault med Betrodda tjänster aktiverat.
Kryptera data med en kundhanterad nyckel som lagras i ett Standard Azure Key Vault
Förutsättningar
Använd Bash-miljön i Azure Cloud Shell. Mer information finns i Snabbstart för Bash i Azure Cloud Shell.
Om du föredrar att köra CLI-referenskommandon lokalt installerar du Azure CLI. Om du kör i Windows eller macOS kan du köra Azure CLI i en Docker-container. Mer information finns i Så här kör du Azure CLI i en Docker-container.
Om du använder en lokal installation loggar du in på Azure CLI med hjälp av kommandot az login. Slutför autentiseringsprocessen genom att följa stegen som visas i terminalen. Andra inloggningsalternativ finns i Logga in med Azure CLI.
När du uppmanas att installera Azure CLI-tillägget vid första användningen. Mer information om tillägg finns i Använda tillägg med Azure CLI.
Kör az version om du vill hitta versionen och de beroende bibliotek som är installerade. Om du vill uppgradera till den senaste versionen kör du az upgrade.
Skapa tjänstens huvudnamn för ACI
Det första steget är att se till att din Azure-klientorganisation har ett tjänsthuvudnamn tilldelat för att bevilja behörigheter till Azure Container Instances-tjänsten.
Viktigt!
För att kunna köra följande kommando och skapa ett huvudnamn för tjänsten kontrollerar du att du har behörighet att skapa tjänstens huvudnamn i klientorganisationen.
Följande CLI-kommando konfigurerar ACI SP i din Azure-miljö:
az ad sp create --id 6bb8e274-af5d-4df2-98a3-4fd78b4cafd9
Utdata från körningen av det här kommandot bör visa ett huvudnamn för tjänsten med "displayName": "Azure Container Instance Service".
Om du inte kan skapa tjänstens huvudnamn:
- bekräfta att du har behörighet att göra det i din klientorganisation
- kontrollera om det redan finns ett huvudnamn för tjänsten i klientorganisationen för distribution till ACI. Du kan göra det genom att köra
az ad sp show --id 6bb8e274-af5d-4df2-98a3-4fd78b4cafd9
och använda tjänstens huvudnamn i stället
Skapa en Key Vault-resurs
Skapa ett Azure Key Vault med hjälp av Azure-portalen, Azure CLI eller Azure PowerShell.
Använd följande riktlinjer för egenskaperna för ditt nyckelvalv:
- Namn: Ett unikt namn krävs.
- Prenumeration: Välj en prenumeration.
- Under Resursgrupp väljer du antingen en befintlig resursgrupp eller skapar en ny och anger ett resursgruppsnamn.
- Välj en plats i listrutan Plats.
- Du kan lämna de andra alternativen till deras standardvärden eller välja baserat på ytterligare krav.
Viktigt!
När du använder kundhanterade nycklar för att kryptera en ACI-distributionsmall rekommenderar vi att följande två egenskaper anges i nyckelvalvet, Mjuk borttagning och Rensa inte. De här egenskaperna är inte aktiverade som standard, men kan aktiveras med antingen PowerShell eller Azure CLI i ett nytt eller befintligt nyckelvalv.
Generera en ny nyckel
När ditt nyckelvalv har skapats navigerar du till resursen i Azure-portalen. På den vänstra navigeringsmenyn på resursbladet går du till Inställningar och väljer Nycklar. I vyn för "Nycklar" väljer du "Generera/importera" för att generera en ny nyckel. Använd ett unikt namn för den här nyckeln och andra inställningar baserat på dina krav.
Konfigurera åtkomstprincip
Skapa en ny åtkomstprincip för att tillåta att ACI-tjänsten får åtkomst till din nyckel.
- När nyckeln har genererats går du tillbaka till resursbladet för nyckelvalvet under Inställningar och väljer Åtkomstprinciper.
- På sidan Åtkomstprinciper för nyckelvalvet väljer du Lägg till åtkomstprincip.
- Ange nyckelbehörigheterna så att de inkluderar Hämta och Packa upp nyckel
- För Välj huvudnamn väljer du Azure Container Instance Service
- Välj Lägg till längst ned
Åtkomstprincipen bör nu visas i nyckelvalvets åtkomstprinciper.
Ändra JSON-distributionsmallen
Viktigt!
Kryptering av distributionsdata med en kundhanterad nyckel är tillgänglig i den senaste API-versionen (2019-12-01) som för närvarande lanseras. Ange den här API-versionen i distributionsmallen. Om du har problem med detta kontaktar du Azure-supporten.
När nyckelvalvets nyckel och åtkomstprincip har konfigurerats lägger du till följande egenskaper i ACI-distributionsmallen. Läs mer om att distribuera ACI-resurser med en mall i Självstudie: Distribuera en grupp med flera containrar med hjälp av en Resource Manager-mall.
- Under
resources
anger duapiVersion
till2019-12-01
. - Under avsnittet egenskaper för containergrupper i distributionsmallen lägger du till en
encryptionProperties
, som innehåller följande värden:vaultBaseUrl
: DNS-namnet på ditt nyckelvalv, som finns på översiktsbladet för nyckelvalvsresursen i portalenkeyName
: namnet på nyckeln som genererades tidigarekeyVersion
: den aktuella versionen av nyckeln. Det här fältet kan hittas genom att gå till själva nyckeln (under "Nycklar" i avsnittet Inställningar i nyckelvalvsresursen)
- Under egenskaperna för containergruppen lägger du till en
sku
egenskap med värdetStandard
. Egenskapensku
krävs i API-version 2019-12-01.
Följande mallfragment visar dessa ytterligare egenskaper för att kryptera distributionsdata:
[...]
"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": {
[...]
}
}
}
]
Följande är en fullständig mall som är anpassad från mallen i Självstudie: Distribuera en grupp med flera containrar med hjälp av en Resource Manager-mall.
{
"$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]"
}
}
}
Distribuera dina resurser
Om du har skapat och redigerat mallfilen på skrivbordet kan du ladda upp den till Cloud Shell-katalogen genom att dra filen till den.
Skapa en resursgrupp med kommandot az group create.
az group create --name myResourceGroup --location eastus
Distribuera mallen med kommandot az deployment group create .
az deployment group create --resource-group myResourceGroup --template-file deployment-template.json
Inom några sekunder bör du få ett första svar från Azure. När distributionen är klar krypteras alla data som är relaterade till den som behålls av ACI-tjänsten med den nyckel som du angav.
Kryptera data med en kundhanterad nyckel i ett nätverksskyddat Azure Key Vault med betrodda tjänster aktiverade
Skapa en Key Vault-resurs
Skapa ett Azure Key Vault med hjälp av Azure-portalen, Azure CLI eller Azure PowerShell. Börja med att inte tillämpa några nätverksbegränsningar så att vi kan lägga till nödvändiga nycklar i valvet. I efterföljande steg lägger vi till nätverksbegränsningar och aktiverar betrodda tjänster.
Använd följande riktlinjer för egenskaperna för ditt nyckelvalv:
- Namn: Ett unikt namn krävs.
- Prenumeration: Välj en prenumeration.
- Under Resursgrupp väljer du antingen en befintlig resursgrupp eller skapar en ny och anger ett resursgruppsnamn.
- Välj en plats i listrutan Plats.
- Du kan lämna de andra alternativen till deras standardvärden eller välja baserat på ytterligare krav.
Viktigt!
När du använder kundhanterade nycklar för att kryptera en ACI-distributionsmall rekommenderar vi att följande två egenskaper anges i nyckelvalvet, Mjuk borttagning och Rensa inte. De här egenskaperna är inte aktiverade som standard, men kan aktiveras med antingen PowerShell eller Azure CLI i ett nytt eller befintligt nyckelvalv.
Generera en ny nyckel
När ditt nyckelvalv har skapats navigerar du till resursen i Azure-portalen. På den vänstra navigeringsmenyn på resursbladet går du till Inställningar och väljer Nycklar. I vyn "Nycklar" väljer du "Generera/importera" för att generera en ny nyckel. Använd ett unikt namn för den här nyckeln och andra inställningar baserat på dina krav. Se till att samla in nyckelnamn och version för efterföljande steg.
Skapa en användartilldelad hanterad identitet för din containergrupp
Skapa en identitet i din prenumeration med kommandot az identity create . Du kan använda samma resursgrupp som används för att skapa nyckelvalvet eller använda en annan.
az identity create \
--resource-group myResourceGroup \
--name myACIId
Om du vill använda identiteten i följande steg använder du kommandot az identity show för att lagra identitetens tjänsthuvudnamns-ID och resurs-ID i variabler.
# Get service principal ID of the user-assigned identity
spID=$(az identity show \
--resource-group myResourceGroup \
--name myACIId \
--query principalId --output tsv)
Konfigurera åtkomstprincip
Skapa en ny åtkomstprincip för att tillåta att den användartilldelade identiteten får åtkomst till och packa upp nyckeln i krypteringssyfte.
az keyvault set-policy \
--name mykeyvault \
--resource-group myResourceGroup \
--object-id $spID \
--key-permissions get unwrapKey
Ändra Nätverksbehörigheter för Azure Key Vault
Följande kommandon konfigurerar en Azure Firewall för ditt Azure Key Vault och tillåter Azure Trusted Services, till exempel ACI-åtkomst.
az keyvault update \
--name mykeyvault \
--resource-group myResourceGroup \
--default-action Deny
az keyvault update \
--name mykeyvault \
--resource-group myResourceGroup \
--bypass AzureServices
Ändra JSON-distributionsmallen
Viktigt!
Kryptering av distributionsdata med en kundhanterad nyckel är tillgängligt i API-versionen 2022-09-01 eller senare. API-versionen 2022-09-01 är endast tillgänglig via ARM eller REST. Om du har problem med detta kontaktar du Azure-supporten. När nyckelvalvets nyckel och åtkomstprincip har konfigurerats lägger du till följande egenskaper i ACI-distributionsmallen. Läs mer om att distribuera ACI-resurser med en mall i Självstudie: Distribuera en grupp med flera containrar med hjälp av en Resource Manager-mall.
- Under
resources
anger duapiVersion
till2022-09-01
. - Under avsnittet egenskaper för containergrupper i distributionsmallen lägger du till en
encryptionProperties
, som innehåller följande värden:vaultBaseUrl
: DNS-namnet på ditt nyckelvalv. Den här egenskapen finns på översiktsbladet för nyckelvalvsresursen i portalenkeyName
: namnet på nyckeln som genererades tidigarekeyVersion
: den aktuella versionen av nyckeln. Du hittar den här egenskapen genom att klicka på själva nyckeln (under "Nycklar" i avsnittet Inställningar i nyckelvalvsresursen)identity
: Den här egenskapen är resurs-URI:n för den hanterade identitetsinstansen som skapades tidigare
- Under egenskaperna för containergruppen lägger du till en
sku
egenskap med värdetStandard
. Egenskapensku
krävs i API-version 2022-09-01. - Under resurser lägger du till det
identity
objekt som krävs för att använda hanterad identitet med ACI, som innehåller följande värden:type
: den typ av identitet som används (antingen användartilldelad eller systemtilldelad). Det här fallet är inställt på "UserAssigned"userAssignedIdentities
: resourceURI för samma användartilldelade identitet som används iencryptionProperties
objektet.
Följande mallfragment visar dessa ytterligare egenskaper för att kryptera distributionsdata:
[...]
"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": {
[...]
}
}
}
]
Följande är en fullständig mall som är anpassad från mallen i Självstudie: Distribuera en grupp med flera containrar med hjälp av en Resource Manager-mall.
{
"$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]"
}
}
}
Distribuera dina resurser
Om du har skapat och redigerat mallfilen på skrivbordet kan du ladda upp den till Cloud Shell-katalogen genom att dra filen till den.
Skapa en resursgrupp med kommandot az group create.
az group create --name myResourceGroup --location eastus
Distribuera mallen med kommandot az deployment group create .
az deployment group create --resource-group myResourceGroup --template-file deployment-template.json
Inom några sekunder bör du få ett första svar från Azure. När distributionen är klar krypteras alla data som är relaterade till den som behålls av ACI-tjänsten med den nyckel som du angav.