Šifrování dat nasazení
Při spouštění prostředků Azure Container Instances (ACI) v cloudu služba ACI shromažďuje a udržuje data související s vašimi kontejnery. ACI tato data automaticky šifruje, když se zachovají v cloudu. Toto šifrování chrání vaše data, aby pomohla splnit závazky vaší organizace v oblasti zabezpečení a dodržování předpisů. ACI také nabízí možnost šifrovat tato data pomocí vlastního klíče, což vám dává větší kontrolu nad daty souvisejícími s nasazeními ACI.
Šifrování dat ACI
Data v ACI se šifrují a dešifrují pomocí 256bitového šifrování AES. Je povolená pro všechna nasazení ACI a nemusíte upravovat nasazení ani kontejnery, abyste mohli toto šifrování využít. Toto pokrytí zahrnuje metadata o nasazení, proměnných prostředí, předání klíčů do kontejnerů a trvalé protokoly po zastavení kontejnerů, abyste je stále viděli. Šifrování nemá vliv na výkon vaší skupiny kontejnerů a žádné další náklady na šifrování.
Při šifrování dat kontejneru můžete spoléhat na klíče spravované Microsoftem nebo můžete šifrování spravovat pomocí vlastních klíčů. Následující tabulka porovnává tyto možnosti:
Klíče spravované Microsoftem | Klíče spravované zákazníkem | |
---|---|---|
Operace šifrování/dešifrování | Azure | Azure |
Úložiště klíčů | Úložiště klíčů Microsoftu | Azure Key Vault |
Odpovědnost za obměnu klíčů | Microsoft | Zákazník |
Přístup ke klíči | Pouze Microsoft | Microsoft, zákazník |
Tento článek popisuje dva toky pro šifrování dat pomocí klíče spravovaného zákazníkem:
- Šifrování dat pomocí klíče spravovaného zákazníkem uloženým ve standardní službě Azure Key Vault
- Šifrovat data pomocí klíče spravovaného zákazníkem uloženým v síti chráněném službou Azure Key Vault s povolenými důvěryhodnými službami.
Šifrování dat pomocí klíče spravovaného zákazníkem uloženým ve standardní službě Azure Key Vault
Požadavky
Použijte prostředí Bash v Azure Cloud Shellu. Další informace najdete v tématu Rychlý start pro Bash v Azure Cloud Shellu.
Pokud dáváte přednost místnímu spouštění referenčních příkazů rozhraní příkazového řádku, nainstalujte Azure CLI. Pokud používáte Windows nebo macOS, zvažte spuštění Azure CLI v kontejneru Docker. Další informace najdete v tématu Jak spustit Azure CLI v kontejneru Dockeru.
Pokud používáte místní instalaci, přihlaste se k Azure CLI pomocí příkazu az login. Pokud chcete dokončit proces ověřování, postupujte podle kroků zobrazených na terminálu. Další možnosti přihlášení najdete v tématu Přihlášení pomocí Azure CLI.
Po zobrazení výzvy nainstalujte rozšíření Azure CLI při prvním použití. Další informace o rozšířeních najdete v tématu Využití rozšíření v Azure CLI.
Spuštěním příkazu az version zjistěte verzi a závislé knihovny, které jsou nainstalované. Pokud chcete upgradovat na nejnovější verzi, spusťte az upgrade.
Vytvoření instančního objektu pro ACI
Prvním krokem je zajistit, aby váš tenant Azure má přiřazený instanční objekt pro udělení oprávnění ke službě Azure Container Instances.
Důležité
Pokud chcete spustit následující příkaz a úspěšně vytvořit instanční objekt, ověřte, že máte oprávnění k vytváření instančních objektů ve vašem tenantovi.
Následující příkaz rozhraní příkazového řádku nastaví službu ACI SP ve vašem prostředí Azure:
az ad sp create --id 6bb8e274-af5d-4df2-98a3-4fd78b4cafd9
Výstup spuštění tohoto příkazu by měl zobrazovat instanční objekt nastavený na displayName: Azure Container Instance Service.
Pokud se vám nedaří úspěšně vytvořit instanční objekt:
- Potvrďte, že máte oprávnění k tomu ve vašem tenantovi.
- zkontrolujte, jestli instanční objekt již ve vašem tenantovi existuje pro nasazení do ACI. Můžete to provést spuštěním
az ad sp show --id 6bb8e274-af5d-4df2-98a3-4fd78b4cafd9
a použitím instančního objektu.
Vytvoření prostředku služby Key Vault
Vytvořte službu Azure Key Vault pomocí webu Azure Portal, Azure CLI nebo Azure PowerShellu.
Pro vlastnosti trezoru klíčů použijte následující pokyny:
- Název: Je potřeba zadat jedinečný název.
- Předplatné: Zvolte předplatné.
- V části Skupina prostředků zvolte existující skupinu prostředků nebo vytvořte novou a zadejte název skupiny prostředků.
- V rozevírací nabídce Umístění zvolte umístění.
- Ostatní možnosti můžete ponechat na výchozích nastaveních nebo vybrat na základě dalších požadavků.
Důležité
Při použití klíčů spravovaných zákazníkem k šifrování šablony nasazení ACI se doporučuje nastavit následující dvě vlastnosti v trezoru klíčů, obnovitelné odstranění a nevyprázdnit. Tyto vlastnosti nejsou ve výchozím nastavení povolené, ale je možné je povolit pomocí PowerShellu nebo Azure CLI v novém nebo existujícím trezoru klíčů.
Vygenerování nového klíče
Po vytvoření trezoru klíčů přejděte k prostředku na webu Azure Portal. V levé navigační nabídce okna prostředku v části Nastavení vyberte Klíče. V zobrazení klíče vyberte Generovat/Importovat a vygenerovat nový klíč. Pro tento klíč použijte libovolný jedinečný název a jakékoli další předvolby na základě vašich požadavků.
Nastavit zásady přístupu
Vytvořte novou zásadu přístupu, která službě ACI umožní přístup k vašemu klíči.
- Po vygenerování klíče v okně prostředku trezoru klíčů v části Nastavení vyberte Zásady přístupu.
- Na stránce Zásady přístupu pro váš trezor klíčů zvolte Přidat zásady přístupu.
- Nastavení oprávnění ke klíči pro zahrnutí klíče Get a Unwrap Key
- Pro výběr objektu zabezpečení vyberte službu Azure Container Instance Service.
- Výběr možnosti Přidat v dolní části
Zásady přístupu by se teď měly zobrazovat v zásadách přístupu trezoru klíčů.
Úprava šablony nasazení JSON
Důležité
Šifrování dat nasazení pomocí klíče spravovaného zákazníkem je k dispozici v nejnovější verzi rozhraní API (2019–12-01), která se aktuálně zavádí. Zadejte tuto verzi rozhraní API v šabloně nasazení. Pokud s tím máte nějaké problémy, obraťte se na podporu Azure.
Po nastavení klíče trezoru klíčů a zásad přístupu přidejte do šablony nasazení ACI následující vlastnosti. Další informace o nasazení prostředků ACI pomocí šablony v kurzu: Nasazení skupiny více kontejnerů pomocí šablony Resource Manageru
- V části
resources
, nastavenoapiVersion
na2019-12-01
. - V části vlastností skupiny kontejnerů šablony nasazení přidejte položku
encryptionProperties
, která obsahuje následující hodnoty:vaultBaseUrl
: Název DNS vašeho trezoru klíčů, který najdete v okně přehledu prostředku trezoru klíčů na portálu.keyName
: název klíče vygenerovaného dřívekeyVersion
: aktuální verze klíče. Toto pole najdete tak, že přejdete do samotného klíče (v části Klíče v části Nastavení prostředku trezoru klíčů).
- Pod vlastnosti skupiny kontejnerů přidejte
sku
vlastnost s hodnotouStandard
. Vlastnostsku
je vyžadována ve verzi rozhraní API 2019-12-01.
Následující fragment kódu šablony ukazuje tyto další vlastnosti pro šifrování dat nasazení:
[...]
"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": {
[...]
}
}
}
]
Následuje kompletní šablona přizpůsobená šabloně v kurzu: Nasazení skupiny s více kontejnery pomocí šablony Resource Manageru.
{
"$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]"
}
}
}
Nasazení prostředků
Pokud jste soubor šablony vytvořili a upravili na ploše, můžete ho nahrát do adresáře Cloud Shellu přetažením souboru do něj.
Vytvořte skupinu prostředků pomocí příkazu az group create.
az group create --name myResourceGroup --location eastus
Nasaďte šablonu pomocí příkazu az deployment group create .
az deployment group create --resource-group myResourceGroup --template-file deployment-template.json
Během několika sekund by se měla zobrazit první odezva z Azure. Jakmile se nasazení dokončí, všechna data související s ním uložená službou ACI se zašifrují klíčem, který jste zadali.
Šifrování dat pomocí klíče spravovaného zákazníkem v síti chráněném službou Azure Key Vault s povolenými důvěryhodnými službami
Vytvoření prostředku služby Key Vault
Vytvořte službu Azure Key Vault pomocí webu Azure Portal, Azure CLI nebo Azure PowerShellu. Abyste mohli začít, nepoužívejte žádná omezení sítě, abychom mohli do trezoru přidat potřebné klíče. V dalších krocích přidáme omezení sítě a povolíme důvěryhodné služby.
Pro vlastnosti trezoru klíčů použijte následující pokyny:
- Název: Je potřeba zadat jedinečný název.
- Předplatné: Zvolte předplatné.
- V části Skupina prostředků zvolte existující skupinu prostředků nebo vytvořte novou a zadejte název skupiny prostředků.
- V rozevírací nabídce Umístění zvolte umístění.
- Ostatní možnosti můžete ponechat na výchozích nastaveních nebo vybrat na základě dalších požadavků.
Důležité
Při použití klíčů spravovaných zákazníkem k šifrování šablony nasazení ACI se doporučuje nastavit následující dvě vlastnosti v trezoru klíčů, obnovitelné odstranění a nevyprázdnit. Tyto vlastnosti nejsou ve výchozím nastavení povolené, ale je možné je povolit pomocí PowerShellu nebo Azure CLI v novém nebo existujícím trezoru klíčů.
Vygenerování nového klíče
Po vytvoření trezoru klíčů přejděte k prostředku na webu Azure Portal. V levé navigační nabídce okna prostředku v části Nastavení vyberte Klíče. V zobrazení klíče zvolte Generovat/Importovat a vygenerovat nový klíč. Pro tento klíč použijte libovolný jedinečný název a jakékoli další předvolby na základě vašich požadavků. Nezapomeňte zaznamenat název klíče a verzi pro další kroky.
Vytvoření spravované identity přiřazené uživatelem pro vaši skupinu kontejnerů
Vytvořte ve svém předplatném identitu pomocí příkazu az identity create . Můžete použít stejnou skupinu prostředků, kterou jste použili k vytvoření trezoru klíčů, nebo použít jinou.
az identity create \
--resource-group myResourceGroup \
--name myACIId
Pokud chcete použít identitu v následujících krocích, pomocí příkazu az identity show uložte ID instančního objektu a ID prostředku identity do proměnných.
# Get service principal ID of the user-assigned identity
spID=$(az identity show \
--resource-group myResourceGroup \
--name myACIId \
--query principalId --output tsv)
Nastavit zásady přístupu
Vytvořte novou zásadu přístupu, která umožňuje identitě přiřazené uživatelem přístup k šifrovacím účelům a rozbalení klíče.
az keyvault set-policy \
--name mykeyvault \
--resource-group myResourceGroup \
--object-id $spID \
--key-permissions get unwrapKey
Úprava síťových oprávnění služby Azure Key Vault
Následující příkazy nastaví bránu Azure Firewall pro službu Azure Key Vault a povolí důvěryhodné služby Azure, jako je například přístup ACI.
az keyvault update \
--name mykeyvault \
--resource-group myResourceGroup \
--default-action Deny
az keyvault update \
--name mykeyvault \
--resource-group myResourceGroup \
--bypass AzureServices
Úprava šablony nasazení JSON
Důležité
Šifrování dat nasazení pomocí klíče spravovaného zákazníkem je k dispozici ve verzi rozhraní API 2022-09-01 nebo novější. Verze rozhraní API z 9. 9. 2022 je dostupná pouze prostřednictvím ARM nebo REST. Pokud s tím máte nějaké problémy, obraťte se na podporu Azure. Po nastavení klíče trezoru klíčů a zásad přístupu přidejte do šablony nasazení ACI následující vlastnosti. Další informace o nasazení prostředků ACI pomocí šablony v kurzu: Nasazení skupiny více kontejnerů pomocí šablony Resource Manageru
- V části
resources
, nastavenoapiVersion
na2022-09-01
. - V části vlastností skupiny kontejnerů šablony nasazení přidejte položku
encryptionProperties
, která obsahuje následující hodnoty:vaultBaseUrl
: Název DNS vašeho trezoru klíčů. Tuto vlastnost najdete v okně přehledu prostředku trezoru klíčů na portálu.keyName
: název klíče vygenerovaného dřívekeyVersion
: aktuální verze klíče. Tuto vlastnost najdete kliknutím na samotný klíč (v části Klíče v části Nastavení prostředku trezoru klíčů).identity
: Tato vlastnost je identifikátor URI prostředku instance spravované identity vytvořené dříve.
- Pod vlastnosti skupiny kontejnerů přidejte
sku
vlastnost s hodnotouStandard
. Vlastnost je vyžadovánasku
ve verzi rozhraní API 2022-09-01. - V části prostředků přidejte
identity
objekt potřebný k použití spravované identity s ACI, který obsahuje následující hodnoty:type
: typ používané identity (přiřazené uživatelem nebo systémem). Tento případ je nastavený na UserAssigned.userAssignedIdentities
: identifikátor resourceURI stejné identity přiřazené uživatelem použitý v objektuencryptionProperties
.
Následující fragment kódu šablony ukazuje tyto další vlastnosti pro šifrování dat nasazení:
[...]
"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": {
[...]
}
}
}
]
Následuje kompletní šablona přizpůsobená šabloně v kurzu: Nasazení skupiny s více kontejnery pomocí šablony Resource Manageru.
{
"$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]"
}
}
}
Nasazení prostředků
Pokud jste soubor šablony vytvořili a upravili na ploše, můžete ho nahrát do adresáře Cloud Shellu přetažením souboru do něj.
Vytvořte skupinu prostředků pomocí příkazu az group create.
az group create --name myResourceGroup --location eastus
Nasaďte šablonu pomocí příkazu az deployment group create .
az deployment group create --resource-group myResourceGroup --template-file deployment-template.json
Během několika sekund by se měla zobrazit první odezva z Azure. Jakmile se nasazení dokončí, všechna data související s ním uložená službou ACI se zašifrují klíčem, který jste zadali.