Üzembehelyezési adatok titkosítása
Amikor Azure Container Instances (ACI) erőforrásokat futtat a felhőben, az ACI szolgáltatás összegyűjti és megőrzi a tárolókhoz kapcsolódó adatokat. Az ACI automatikusan titkosítja ezeket az adatokat, amikor az a felhőben marad. 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 ezeket az adatokat saját kulccsal titkosítsa, így nagyobb mértékben szabályozhatja az ACI-üzemelő példányokhoz kapcsolódó adatokat.
ACI-adattitkosítás
Az ACI-ben lévő adatok titkosítása és visszafejtése 256 bites AES-titkosítással történik. Az összes ACI-telepítés 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 a lefedettség 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 is megmaradó naplókat, hogy továbbra is láthassa őket. A titkosítás nem befolyásolja a tárolócsoport teljesítményét, és a titkosításnak nincs további költsége.
A tárolóadatok titkosításához a Microsoft által felügyelt kulcsokra támaszkodhat, vagy saját kulcsokkal kezelheti a titkosítást. 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 |
Kulcsforgatási felelősség | Microsoft | Vevő |
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 standard Azure Key Vaultban tárolt, ügyfél által felügyelt kulccsal
- Titkosítsa az adatokat egy, a hálózat által védett Azure Key Vaultban tárolt, ügyfél által felügyelt kulccsal, amelyen engedélyezve van a Megbízható szolgáltatások szolgáltatás.
Adatok titkosítása egy standard Azure Key Vaultban tárolt, ügyfél által felügyelt kulccsal
Előfeltételek
Használja a Bash-környezetet az Azure Cloud Shellben. További információ: A Bash rövid útmutatója az Azure Cloud Shellben.
Ha inkább helyi cli-referenciaparancsokat szeretne futtatni, telepítse az Azure CLI-t. Ha Windows vagy macOS rendszert használ, fontolja meg az Azure CLI Docker-tárolóban való futtatását. További információ: Az Azure CLI futtatása Docker-tárolóban.
Ha helyi telepítést használ, jelentkezzen be az Azure CLI-be az az login parancs futtatásával. A hitelesítési folyamat befejezéséhez kövesse a terminálon megjelenő lépéseket. További bejelentkezési lehetőségekért lásd : Bejelentkezés az Azure CLI-vel.
Amikor a rendszer kéri, először telepítse az Azure CLI-bővítményt. További információ a bővítményekről: Bővítmények használata az Azure CLI-vel.
Futtassa az az version parancsot a telepített verzió és a függő kódtárak megkereséséhez. A legújabb verzióra az az upgrade paranccsal frissíthet.
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 biztosít az Azure Container Instances szolgáltatásnak.
Fontos
A következő parancs sikeres futtatásához és a szolgáltatásnév létrehozásához győződjön meg arról, hogy rendelkezik jogosultságokkal a szolgáltatásnevek létrehozásához 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 meg kell jelennie egy "displayName" beállítású szolgáltatásnévnek: "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őjé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 az Azure Portal, az Azure CLI vagy az Azure PowerShell használatával.
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 csoportban 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 kulcsokkal titkosít egy ACI-üzembehelyezési sablont, javasoljuk, hogy a következő két tulajdonság legyen beállítva a kulcstartón, a Helyreállítható törlés és a Törlés tiltása. Ezek a tulajdonságok alapértelmezés szerint nem engedélyezettek, 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 keresse meg az erőforrást az Azure Portalon. Az erőforrás panel bal oldali navigációs menüjében, a Beállítások csoportban válassza a Kulcsok lehetőséget. A "Kulcsok" nézetében válassza a "Létrehozás/importálás" lehetőséget egy új kulcs létrehozásához. Használjon egyedi nevet ehhez a kulcshoz, valamint a követelményeknek megfelelő egyéb beállításokat.
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.
- Miután létrejött a kulcs, a kulcstartó erőforráspaneljén, a Beállítások területen válassza a Hozzáférési szabályzatok lehetőséget.
- A kulcstartó "Hozzáférési szabályzatok" lapján válassza az Add Access Policy (Hozzáférési szabályzat hozzáadása) lehetőséget.
- Kulcsengedélyek beállítása a Kulcs lekérése és feloldása beállításhoz
- Az egyszerűség kiválasztásához válassza az Azure Container Instance Service lehetőséget
- Válassza a Hozzáadás elemet az alján
A hozzáférési szabályzatnak most meg kell jelennie a kulcstartó hozzáférési szabályzataiban.
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.
Miután beállította a kulcstartókulcsot és a hozzáférési szabályzatot, adja hozzá az alábbi tulajdonságokat az ACI-telepítési sablonhoz. További információ az ACI-erőforrások sablonnal való üzembe helyezéséről az oktatóanyagban: Többtárolós csoport üzembe helyezése Resource Manager-sablonnal.
- Alatta
resources
állítsa be a következőtapiVersion
2019-12-01
: . - Az üzembehelyezési sablon tárolócsoport-tulajdonságok szakaszában adjon hozzá egy
encryptionProperties
, a következő értékeket tartalmazó értéket:vaultBaseUrl
: a kulcstartó DNS-neve, amely a Key Vault-erőforrás áttekintő paneljén található a PortálonkeyName
: a korábban létrehozott kulcs nevekeyVersion
: a kulcs aktuális verziója. Ez a mező a kulcsra való lépéssel (a kulcstartó erőforrás Beállítások szakaszában található "Kulcsok" alatt) található.
- A tárolócsoport tulajdonságai alatt adjon hozzá egy
sku
értéketStandard
tartalmazó tulajdonságot. Asku
tulajdonságra az API 2019-12-01-es verziójában van szükség.
Az alábbi 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]",
"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 sablonjából alakítottunk ki: Többtárolós csoport üzembe helyezése Resource Manager-sablonnal.
{
"$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-címtá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 az ahhoz kapcsolódó összes adat titkosítva lesz a megadott kulccsal.
Adatok titkosítása ügyfél által felügyelt kulccsal egy hálózati védelemmel ellátott Azure Key Vaultban a megbízható szolgáltatások engedélyezésével
Key Vault-erőforrás létrehozása
Azure Key Vault létrehozása az Azure Portal, az Azure CLI vagy az 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 csoportban 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 kulcsokkal titkosít egy ACI-üzembehelyezési sablont, javasoljuk, hogy a következő két tulajdonság legyen beállítva a kulcstartón, a Helyreállítható törlés és a Törlés tiltása. Ezek a tulajdonságok alapértelmezés szerint nem engedélyezettek, 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 keresse meg az erőforrást az Azure Portalon. Az erőforrás panel bal oldali navigációs menüjében, a Beállítások csoportban válassza a Kulcsok lehetőséget. A "Kulcsok" nézetében válassza a "Létrehozás/importálás" lehetőséget egy új kulcs létrehozásához. Használjon egyedi nevet ehhez a kulcshoz, valamint a követelményeknek megfelelő egyéb beállításokat. A következő lépésekhez mindenképpen rögzítse a kulcs nevét és verzióját.
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ésben 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élokra való 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-tűzfalat az Azure Key Vaulthoz, és engedélyezik az Azure Trusted Servicest, 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 történő titkosítása a 2022-09-01 API 2022-09-01-es vagy újabb verziójá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. Miután beállította a kulcstartókulcsot és a hozzáférési szabályzatot, adja hozzá az alábbi tulajdonságokat az ACI-telepítési sablonhoz. További információ az ACI-erőforrások sablonnal való üzembe helyezéséről az oktatóanyagban: Többtárolós csoport üzembe helyezése Resource Manager-sablonnal.
- Alatta
resources
állítsa be a következőtapiVersion
2022-09-01
: . - Az üzembehelyezési sablon tárolócsoport-tulajdonságok szakaszában adjon hozzá egy
encryptionProperties
, a következő értékeket tartalmazó értéket:vaultBaseUrl
: a kulcstartó DNS-neve. Ez a tulajdonság a Key Vault-erőforrás áttekintő paneljén található a PortálonkeyName
: a korábban létrehozott kulcs nevekeyVersion
: a kulcs aktuális verziója. Ez a tulajdonság a kulcsra való kattintással (a kulcstartó-erőforrás Beállítások szakaszának "Kulcsok" területén) található.identity
: ez a tulajdonság 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éketStandard
tartalmazó tulajdonságot. Asku
tulajdonságra az API 2022-09-01-es verziójában van szükség. - Az erőforrások között 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 van állítvauserAssignedIdentities
: az objektumban használt azonos felhasználó által hozzárendelt identitás resourceURI-jaencryptionProperties
.
Az alábbi 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 sablonjából alakítottunk ki: Többtárolós csoport üzembe helyezése Resource Manager-sablonnal.
{
"$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, feltöltheti azt a Cloud Shell-címtá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 az ahhoz kapcsolódó összes adat titkosítva lesz a megadott kulccsal.