Š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ž jsou uložená v cloudu. Toto šifrování chrání vaše data a pomáhá tak plnit 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 abyste mohli využít výhod tohoto šifrování, nemusíte upravovat nasazení ani kontejnery. Patří sem metadata o nasazení, proměnných prostředí, klíčích předávaných do kontejnerů a protokolech, které se zachovají i po zastavení kontejnerů, abyste je pořád viděli. Šifrování nemá vliv na výkon skupiny kontejnerů a za šifrování nejsou žádné další náklady.
Při šifrování dat kontejneru se můžete spolehnout 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ého ve standardním azure Key Vault
- Šifrování dat pomocí klíče spravovaného zákazníkem uloženého v Key Vault Azure chráněném sítí s povolenými důvěryhodnými službami.
Šifrování dat pomocí klíče spravovaného zákazníkem uloženého ve standardním azure Key Vault
Požadavky
Použijte prostředí Bash v Azure Cloud Shell. Další informace najdete v tématu Rychlý start pro Bash v Azure Cloud Shell.
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í ACI SP ve vašem prostředí Azure:
az ad sp create --id 6bb8e274-af5d-4df2-98a3-4fd78b4cafd9
Ve výstupu spuštění tohoto příkazu by se měl zobrazit instanční objekt, který je nastavený pomocí displayName: Azure Container Instance Service.
V případě, že se vám nedaří úspěšně vytvořit instanční objekt:
- ověřte, že k tomu máte oprávnění ve svém tenantovi.
- Zkontrolujte, jestli už ve vašem tenantovi existuje instanční objekt 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 místo toho.
Vytvoření prostředku Key Vault
Vytvořte Key Vault Azure pomocí Azure Portal, Azure CLI nebo Azure PowerShell.
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í.
- U ostatních možností můžete ponechat výchozí hodnoty nebo je můžete 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 v trezoru klíčů následující dvě vlastnosti: 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 na prostředek v Azure Portal. V levé navigační nabídce okna prostředku v části Nastavení klikněte na Klíče. V zobrazení klíče klikněte na Vygenerovat/importovat a vygenerujte nový klíč. Pro tento klíč použijte libovolný jedinečný název a další předvolby na základě vašich požadavků.
Nastavení zásad přístupu
Vytvořte nové zásady 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í klikněte na Zásady přístupu.
- Na stránce Zásady přístupu pro váš trezor klíčů klikněte na Přidat zásady přístupu.
- Nastavení oprávnění ke klíči tak, aby klíče Get a Unwrap Key Set
- V části Vybrat objekt zabezpečení vyberte Azure Container Instance Service.
- V dolní části klikněte na Přidat .
Zásady přístupu by se teď měly zobrazit 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 právě zavádí. V šabloně nasazení zadejte tuto verzi rozhraní API. 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 najdete v kurzu Nasazení vícekontejnerové skupiny pomocí šablony Resource Manager.
- V části
resources
nastavteapiVersion
na2019-12-01
. - V části vlastnosti skupiny kontejnerů v šabloně nasazení přidejte objekt
encryptionProperties
, který obsahuje následující hodnoty:vaultBaseUrl
: Název DNS vašeho trezoru klíčů 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. Najdete ho tak, že kliknete na samotný klíč (v části Klíče v části Nastavení prostředku trezoru klíčů).
- Do vlastností 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 upravená podle šablony v kurzu Nasazení skupiny s více kontejnery pomocí šablony Resource Manager.
{
"$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 Shell 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. Po dokončení nasazení se všechna data související s ním uložená službou ACI zašifrují pomocí klíče, který jste zadali.
Šifrování dat pomocí klíče spravovaného zákazníkem v síti chráněném azure Key Vault s povolenými důvěryhodnými službami
Vytvoření prostředku Key Vault
Vytvořte Key Vault Azure pomocí Azure Portal, Azure CLI nebo Azure PowerShell. Začněte tím, že neuplatníte žá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í.
- U ostatních možností můžete ponechat výchozí hodnoty nebo je můžete 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 v trezoru klíčů následující dvě vlastnosti: 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 na prostředek v Azure Portal. V levé navigační nabídce okna prostředku v části Nastavení klikněte na Klíče. V zobrazení klíče klikněte na Vygenerovat/importovat a vygenerujte nový klíč. Pro tento klíč použijte libovolný jedinečný název a další předvolby na základě vašich požadavků. Pro další kroky nezapomeňte zaznamenat název a verzi klíče.
Vytvoření spravované identity přiřazené uživatelem pro 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 identitu použít 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)
Nastavení zásad přístupu
Vytvořte novou zásadu přístupu, která identitě přiřazené uživatelem umožní přístup ke klíči a jeho rozbalení pro účely šifrování.
az keyvault set-policy \
--name mykeyvault \
--resource-group myResourceGroup \
--object-id $spID \
--key-permissions get unwrapKey
Úprava síťových oprávnění Azure Key Vault
Následující příkazy nastaví Azure Firewall pro Key Vault Azure a povolí přístup k důvěryhodným službám Azure, jako je například 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 2022-09-01 je k dispozici 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 najdete v kurzu Nasazení vícekontejnerové skupiny pomocí šablony Resource Manager.
- V části
resources
nastavteapiVersion
na2022-09-01
. - V části vlastnosti skupiny kontejnerů v šabloně nasazení přidejte objekt
encryptionProperties
, který obsahuje následující hodnoty:vaultBaseUrl
: Název DNS vašeho trezoru klíčů. Najdete ho 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. Najdete ho tak, že kliknete na samotný klíč (v části Klíče v části Nastavení prostředku trezoru klíčů).identity
: Toto je identifikátor URI prostředku instance spravované identity vytvořené dříve.
- Do vlastností skupiny kontejnerů přidejte
sku
vlastnost s hodnotouStandard
. Vlastnostsku
se vyžaduje ve verzi rozhraní API 2022-09-01. - V části Prostředky přidejte
identity
objekt požadovaný pro použití spravované identity s ACI, který obsahuje následující hodnoty:type
: typ používané identity (buď přiřazené uživatelem, nebo systémem). Tento případ se nastaví na userAssigned.userAssignedIdentities
: identifikátor resourceURI stejné identity přiřazené uživatelem, který se používá výše 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 upravená podle šablony v kurzu Nasazení skupiny s více kontejnery pomocí šablony Resource Manager.
{
"$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 Shell 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. Po dokončení nasazení se všechna data související s ním uložená službou ACI zašifrují pomocí klíče, který jste zadali.