Mount a secret volume in Azure Container Instances (Montare un volume segreto in Istanze di Azure Container)
Usare un volume segreto per fornire informazioni sensibili ai contenitori di un gruppo di contenitori. Il volume segreto archivia i segreti nei file all'interno del volume a cui i contenitori del gruppo di contenitori possono accedere. Archiviando segreti in un volume segreto è possibile evitare di aggiungere dati sensibili, quali chiavi SSH o credenziali del database, al codice dell'applicazione.
- Dopo la distribuzione con segreti in un gruppo di contenitori, un volume segreto è di sola lettura.
- Tmpfs, un file system supportato da RAM, esegue il backup di tutti i volumi segreti e il relativo contenuto non viene mai scritto nell'archiviazione non volatile.
Nota
I volumi segreti attualmente sono limitati ai contenitori Linux. Per informazioni su come passare variabili di ambiente sicure per i contenitori Windows e Linux, vedere Impostare variabili di ambiente. Mentre stiamo lavorando per portare tutte le funzionalità nei contenitori Windows, puoi trovare le differenze correnti della piattaforma nella panoramica.
Montare un volume segreto - Interfaccia della riga di comando di Azure
Per distribuire un contenitore con uno o più segreti tramite l'interfaccia della riga di comando di Azure, includere i parametri --secrets
e --secrets-mount-path
nel comando az container create. In questo esempio viene montato un volume segreto costituito da due file contenenti segreti, "mysecret1" e "mysecret2", in /mnt/secrets
:
az container create \
--resource-group myResourceGroup \
--name secret-volume-demo \
--image mcr.microsoft.com/azuredocs/aci-helloworld \
--secrets mysecret1="My first secret FOO" mysecret2="My second secret BAR" \
--secrets-mount-path /mnt/secrets
L'output di az container exec seguente mostra l'apertura di una shell nel contenitore in esecuzione, l'elencazione dei file all'interno del volume segreto e la successiva visualizzazione dei relativi contenuti:
az container exec \
--resource-group myResourceGroup \
--name secret-volume-demo --exec-command "/bin/sh"
/usr/src/app # ls /mnt/secrets
mysecret1
mysecret2
/usr/src/app # cat /mnt/secrets/mysecret1
My first secret FOO
/usr/src/app # cat /mnt/secrets/mysecret2
My second secret BAR
/usr/src/app # exit
Bye.
Montare un volume segreto - YAML
È possibile distribuire gruppi di contenitori con l'interfaccia della riga di comando di Azure e un modello YAML. La distribuzione mediante il modello YAML è il metodo preferito quando si distribuiscono gruppi di contenitori costituiti da più contenitori.
Quando si distribuisce un modello YAML, i valori del segreto devono essere con codifica Base64 nel modello. Tuttavia, i valori del segreto sono visualizzati in testo non crittografato all'interno dei file nel contenitore.
Il modello YAML seguente definisce un gruppo di contenitori con un solo contenitore che monta un volume segreto in /mnt/secrets
. Il volume segreto contiene due file contenenti segreti, "mysecret1" e "mysecret2".
apiVersion: '2019-12-01'
location: eastus
name: secret-volume-demo
properties:
containers:
- name: aci-tutorial-app
properties:
environmentVariables: []
image: mcr.microsoft.com/azuredocs/aci-helloworld:latest
ports: []
resources:
requests:
cpu: 1.0
memoryInGB: 1.5
volumeMounts:
- mountPath: /mnt/secrets
name: secretvolume1
osType: Linux
restartPolicy: Always
volumes:
- name: secretvolume1
secret:
mysecret1: TXkgZmlyc3Qgc2VjcmV0IEZPTwo=
mysecret2: TXkgc2Vjb25kIHNlY3JldCBCQVIK
tags: {}
type: Microsoft.ContainerInstance/containerGroups
Per eseguire la distribuzione con il modello YAML, salvare il codice YAML precedente in un file denominato deploy-aci.yaml
, quindi eseguire il comando az container create con il parametro --file
:
# Deploy with YAML template
az container create \
--resource-group myResourceGroup \
--file deploy-aci.yaml
Montare un volume segreto - Resource Manager
Oltre alla distribuzione dall'interfaccia della riga di comando e da YAML, è possibile distribuire un gruppo di contenitori usando un modello di Resource Manager di Azure.
Popolare innanzitutto la matrice volumes
nella sezione properties
del gruppo di contenitori del modello. Quando si esegue la distribuzione con un modello di Resource Manager, i valori del segreto devono essere con codifica Base64 nel modello. Tuttavia, i valori del segreto sono visualizzati in testo non crittografato all'interno dei file nel contenitore.
Successivamente per ogni contenitore del gruppo di contenitori in cui si desidera montare il volume segreto, popolare la matrice volumeMounts
nella sezione properties
della definizione del contenitore.
Il modello di Resource Manager seguente definisce un gruppo di contenitori con un solo contenitore che monta un volume segreto in /mnt/secrets
. Il volume segreto ha due segreti, "mysecret1" e "mysecret2".
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"variables": {
"container1name": "aci-tutorial-app",
"container1image": "microsoft/aci-helloworld:latest"
},
"resources": [
{
"type": "Microsoft.ContainerInstance/containerGroups",
"apiVersion": "2021-03-01",
"name": "secret-volume-demo",
"location": "[resourceGroup().location]",
"properties": {
"containers": [
{
"name": "[variables('container1name')]",
"properties": {
"image": "[variables('container1image')]",
"resources": {
"requests": {
"cpu": 1,
"memoryInGb": 1.5
}
},
"ports": [
{
"port": 80
}
],
"volumeMounts": [
{
"name": "secretvolume1",
"mountPath": "/mnt/secrets"
}
]
}
}
],
"osType": "Linux",
"ipAddress": {
"type": "Public",
"ports": [
{
"protocol": "tcp",
"port": "80"
}
]
},
"volumes": [
{
"name": "secretvolume1",
"secret": {
"mysecret1": "TXkgZmlyc3Qgc2VjcmV0IEZPTwo=",
"mysecret2": "TXkgc2Vjb25kIHNlY3JldCBCQVIK"
}
}
]
}
}
]
}
Per eseguire la distribuzione con il modello di Resource Manager, salvare il codice JSON precedente in un file denominato deploy-aci.json
, quindi eseguire il comando az deployment group create con il parametro --template-file
:
# Deploy with Resource Manager template
az deployment group create \
--resource-group myResourceGroup \
--template-file deploy-aci.json
Passaggi successivi
Volumi
Informazioni su come montare altri tipi di volume in Istanze di Azure Container:
- Mount an Azure file share in Azure Container Instances (Montare una condivisione file di Azure in Istanze di Azure Container)
- Mount an emptyDir volume in Azure Container Instances (Montare un volume emptyDir in Istanze di Azure Container)
- Mount a gitRepo volume in Azure Container Instances (Montare un volume gitRepo in Istanze di Azure Container)
Variabili di ambiente sicure
Un altro metodo per fornire informazioni riservate ai contenitori (inclusi i contenitori di Windows) consiste nell'usare variabili di ambiente sicure.