Een geheim volume koppelen in Azure Container Instances
Gebruik een geheim volume om gevoelige informatie op te geven aan de containers in een containergroep. Op het geheime volume worden uw geheimen opgeslagen in bestanden binnen het volume, die toegankelijk zijn voor de containers in de containergroep. Door geheimen op te slaan in een geheim volume, kunt u voorkomen dat gevoelige gegevens, zoals SSH-sleutels of databasereferenties, worden toegevoegd aan uw toepassingscode.
- Zodra het is geïmplementeerd met geheimen in een containergroep, heeft een geheim volume het kenmerk Alleen-lezen.
- Alle geheime volumes worden ondersteund door tmpfs, een door RAM ondersteund bestandssysteem; hun inhoud wordt nooit naar niet-vluchtige opslag geschreven.
Notitie
Geheime volumes zijn momenteel beperkt tot Linux-containers. Meer informatie over het doorgeven van beveiligde omgevingsvariabelen voor zowel Windows- als Linux-containers in Omgevingsvariabelen instellen. Hoewel we alle functies naar Windows-containers willen overbrengen, kunt u de huidige platformverschillen vinden in het overzicht.
Geheim volume koppelen - Azure CLI
Als u een container met een of meer geheimen wilt implementeren met behulp van de Azure CLI, neemt u de --secrets
en --secrets-mount-path
parameters op in de opdracht az container create . In dit voorbeeld wordt een geheim volume gekoppeld dat bestaat uit twee bestanden met geheimen, 'mysecret1' en 'mysecret2', op /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
De volgende az container exec-uitvoer toont het openen van een shell in de actieve container, het weergeven van de bestanden binnen het geheime volume en het weergeven van hun inhoud:
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.
Geheim volume koppelen - YAML
U kunt ook containergroepen implementeren met de Azure CLI en een YAML-sjabloon. Implementeren door YAML-sjabloon is de voorkeursmethode bij het implementeren van containergroepen die bestaan uit meerdere containers.
Wanneer u implementeert met een YAML-sjabloon, moeten de geheime waarden base64 in de sjabloon zijn gecodeerd . De geheime waarden worden echter weergegeven in tekst zonder opmaak in de bestanden in de container.
Met de volgende YAML-sjabloon wordt een containergroep gedefinieerd met één container waarmee een geheim volume wordt gekoppeld aan /mnt/secrets
. Het geheime volume bevat twee bestanden met geheimen, 'mysecret1' en '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
Als u wilt implementeren met de YAML-sjabloon, slaat u de voorgaande YAML op in een bestand met de naam deploy-aci.yaml
en voert u vervolgens de opdracht az container create uit met de --file
parameter:
# Deploy with YAML template
az container create \
--resource-group myResourceGroup \
--file deploy-aci.yaml
Geheim volume koppelen - Resource Manager
Naast de CLI- en YAML-implementatie kunt u een containergroep implementeren met behulp van een Azure Resource Manager-sjabloon.
Vul eerst de volumes
matrix in de sectie containergroep properties
van de sjabloon. Wanneer u implementeert met een Resource Manager-sjabloon, moeten de geheime waarden base64-gecodeerd zijn in de sjabloon. De geheime waarden worden echter weergegeven in tekst zonder opmaak in de bestanden in de container.
Vul vervolgens voor elke container in de containergroep waarin u het geheime volume wilt koppelen de volumeMounts
matrix in de properties
sectie van de containerdefinitie.
Met de volgende Resource Manager-sjabloon wordt een containergroep gedefinieerd met één container waarmee een geheim volume wordt gekoppeld aan /mnt/secrets
. Het geheime volume heeft twee geheimen: 'mysecret1' en '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"
}
}
]
}
}
]
}
Als u wilt implementeren met de Resource Manager-sjabloon, slaat u de voorgaande JSON op in een bestand met de naam deploy-aci.json
en voert u vervolgens de opdracht az deployment group create uit met de --template-file
parameter:
# Deploy with Resource Manager template
az deployment group create \
--resource-group myResourceGroup \
--template-file deploy-aci.json
Volgende stappen
Volumes
Meer informatie over het koppelen van andere volumetypen in Azure Container Instances:
- Een Azure-bestandsshare koppelen in Azure Container Instances
- Een emptyDir-volume koppelen in Azure Container Instances
- Een gitRepo-volume koppelen in Azure Container Instances
Omgevingsvariabelen beveiligen
Een andere methode voor het verstrekken van gevoelige informatie aan containers (inclusief Windows-containers) is via het gebruik van veilige omgevingsvariabelen.