Montar um volume secreto no Azure Container Instances
Utilize um volume secreto para fornecer informações confidenciais aos contentores num grupo de contentores. O volume secreto armazena os seus segredos em ficheiros dentro do volume, acessíveis pelos contentores no grupo de contentores. Ao armazenar segredos num volume secreto , pode evitar adicionar dados confidenciais, como chaves SSH ou credenciais de base de dados, ao código da aplicação.
- Depois de implementado com segredos num grupo de contentores, um volume secreto é só de leitura.
- Todos os volumes secretos são apoiados por tmpfs, um sistema de ficheiros apoiado por RAM; os respetivos conteúdos nunca são escritos num armazenamento não volátil.
Nota
Os volumes secretos estão atualmente restritos a contentores do Linux. Saiba como transmitir variáveis de ambiente segura para contentores do Windows e do Linux em Definir variáveis de ambiente. Enquanto estamos a trabalhar para trazer todas as funcionalidades para os contentores do Windows, pode encontrar as diferenças atuais da plataforma na descrição geral.
Montar o volume secreto - CLI do Azure
Para implementar um contentor com um ou mais segredos com a CLI do Azure, inclua os --secrets
parâmetros e --secrets-mount-path
no comando az container create . Este exemplo monta um volume secreto que consiste em dois ficheiros que contêm segredos, "mysecret1" e "mysecret2", em /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
A seguinte saída az container exec mostra a abertura de uma shell no contentor em execução, a listagem dos ficheiros no volume secreto e, em seguida, a apresentação dos respetivos conteúdos:
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.
Montar o volume secreto - YAML
Também pode implementar grupos de contentores com a CLI do Azure e um modelo YAML. Implementar por modelo YAML é o método preferencial ao implementar grupos de contentores que consistem em vários contentores.
Quando implementa com um modelo YAML, os valores secretos têm de estar codificados em Base64 no modelo. No entanto, os valores do segredo aparecem em texto simples dentro dos ficheiros no contentor.
O seguinte modelo YAML define um grupo de contentores com um contentor que monta um volume secreto em /mnt/secrets
. O volume secreto tem dois ficheiros que contêm segredos, "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
Para implementar com o modelo YAML, guarde o YAML anterior num ficheiro com o nome deploy-aci.yaml
e, em seguida, execute o comando az container create com o --file
parâmetro :
# Deploy with YAML template
az container create \
--resource-group myResourceGroup \
--file deploy-aci.yaml
Montar o volume secreto - Resource Manager
Além da implementação da CLI e do YAML, pode implementar um grupo de contentores com um modelo de Resource Manager do Azure.
Primeiro, preencha a volumes
matriz na secção do grupo properties
de contentores do modelo. Quando implementa com um modelo de Resource Manager, os valores secretos têm de estar codificados em Base64 no modelo. No entanto, os valores do segredo aparecem em texto simples dentro dos ficheiros no contentor.
Em seguida, para cada contentor no grupo de contentores no qual gostaria de montar o volume secreto , preencha a volumeMounts
matriz na properties
secção da definição do contentor.
O modelo de Resource Manager seguinte define um grupo de contentores com um contentor que monta um volume secreto em /mnt/secrets
. O volume secreto tem dois segredos: "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"
}
}
]
}
}
]
}
Para implementar com o modelo Resource Manager, guarde o JSON anterior num ficheiro com o nome deploy-aci.json
e, em seguida, execute o comando az deployment group create com o --template-file
parâmetro :
# Deploy with Resource Manager template
az deployment group create \
--resource-group myResourceGroup \
--template-file deploy-aci.json
Passos seguintes
Volumes
Saiba como montar outros tipos de volume no Azure Container Instances:
- Montar uma partilha de ficheiros do Azure no Azure Container Instances
- Montar um volume emptyDir no Azure Container Instances
- Montar um volume gitRepo no Azure Container Instances
Proteger variáveis de ambiente
Outro método para fornecer informações confidenciais a contentores (incluindo contentores do Windows) é através da utilização de variáveis de ambiente segura.