Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Az Azure-on kívül (például helyszíni vagy külső adatközpontban) üzemeltetett alkalmazásoknak az Azure-erőforrások elérésekor egy alkalmazásszolgáltatás-egyszerű használatával kell hitelesítést végeznie az Azure-ban. Az alkalmazásszolgáltatás egyszerű objektumai az azure-beli alkalmazásregisztrációs folyamattal jönnek létre. Egy új alkalmazásszolgáltatás-tag létrehozása létrehoz egy ügyfél-azonosítót és egy titkos ügyfélkulcsot az alkalmazáshoz. Az ügyfélazonosítót, az ügyfélkulcsot és a bérlőazonosítót olyan környezeti változókban tárolja, amelyeket az Azure SDK for Python használ az alkalmazás futtatókörnyezetben történő hitelesítéséhez az Azure-ban.
Minden olyan környezethez létre kell hozni egy másik alkalmazásregisztrációt, amelyben az alkalmazás üzemel. Egy másik alkalmazásregisztráció létrehozása lehetővé teszi a környezetspecifikus erőforrás-engedélyek konfigurálását minden egyes szolgáltatásnévhez, és biztosítja, hogy az egyik környezetben üzembe helyezett alkalmazások ne beszéljenek egy másik környezet részét képező Azure-erőforrásokkal.
Az alkalmazás regisztrálása az Azure-ban
Egy alkalmazás regisztrálható az Azure-ban az Azure Portal vagy az Azure CLI használatával.
APP_NAME=<app-name>
az ad sp create-for-rbac --name $APP_NAME
A parancs kimenete a következőhöz hasonló. Jegyezze fel ezeket az értékeket, vagy tartsa nyitva ezt az ablakot, mivel a következő lépésekben szüksége lesz ezekre az értékekre, és nem fogja tudni újra megtekinteni a jelszó (titkos ügyfélkód) értékét.
{
"appId": "00001111-aaaa-2222-bbbb-3333cccc4444",
"displayName": "msdocs-python-sdk-auth-prod",
"password": "Ee5Ff~6Gg7.-Hh8Ii9Jj0Kk1Ll2Mm3_Nn4Oo5Pp6",
"tenant": "aaaabbbb-0000-cccc-1111-dddd2222eeee"
}
Ezután le kell kérnie az appID értéket, és egy változóban kell tárolnia. Ez az érték környezeti változók beállítására szolgál a helyi fejlesztési környezetben, hogy a Pythonhoz készült Azure SDK hitelesítést végezzen az Azure-ban a szolgáltatásnév használatával.
APP_ID=$(az ad sp create-for-rbac \
--name $APP_NAME --query appId --output tsv)
Szerepkörök hozzárendelése az application service principalhez
Ezután meg kell határoznia, hogy az alkalmazásnak milyen szerepkörökre (engedélyekre) van szüksége az adott erőforrásokhoz, és ki kell osztania ezeket a szerepköröket az alkalmazáshoz. Szerepkörök hozzárendelhetők egy erőforrás, erőforráscsoport vagy előfizetés hatóköréhez. Ez a példa bemutatja, hogyan rendelhet szerepköröket a szolgáltatásnévhez az erőforráscsoport hatókörében, mivel a legtöbb alkalmazás egyetlen erőforráscsoportba csoportosítja az összes Azure-erőforrást.
A szolgáltatásnév-objektum az Azure-ban egy szerepkörhöz van rendelve a az role assignment create parancs használatával.
RESOURCE_GROUP_NAME=<resource-group-name>
SUBSCRIPTION_ID=$(az account show --query id --output tsv)
ROLE_NAME=<role-name>
az role assignment create \
--assignee "$APP_ID" \
--scope "./subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP_NAME" \
--role "$ROLE_NAME"
![!MEGJEGYZÉS] Annak érdekében, hogy a Git Bash ne kezelje az /subscriptions/...-t fájlelőttútként, helyezze a "./" karaktereket a
scopeparaméter sztringje elé, és helyezze a teljes sztringet dupla idézőjelbe.
A szolgáltatás-azonosítóhoz hozzárendelhető szerepkörnevek lekéréséhez használja az az role definition list parancsot.
az role definition list \
--query "sort_by([].{roleName:roleName, description:description}, &roleName)" \
--output table
Az alábbi parancs segítségével az alkalmazásszolgáltatásközpontot a Blobtároló adat-közreműködője szerepkörhöz rendelheti hozzá. Például ahhoz, hogy a 00001111-aaaa-2222-bbbb-3333cccc4444 appId-val rendelkező szolgáltatásközpontnak engedélyezze az olvasási, írási és törlési hozzáférést az előfizetés msdocs-python-sdk-auth-example erőforráscsoportjában található összes tárfiók Azure Storage-blobtárolóihoz és adataihoz, a következő parancsot használja.
az role assignment create --assignee 00001111-aaaa-2222-bbbb-3333cccc4444 \
--scope "./subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/msdocs-python-sdk-auth-example" \
--role "Storage Blob Data Contributor"
Az engedélyek erőforrás- vagy előfizetési szinten az Azure CLI-vel való hozzárendeléséről az Azure CLI-vel történő Azure-szerepkörök hozzárendelése című cikk nyújt tájékoztatást.
Környezeti változók konfigurálása alkalmazáshoz
A Python-alkalmazást futtató folyamathoz be kell állítania a AZURE_CLIENT_ID, AZURE_TENANT_IDés AZURE_CLIENT_SECRET a környezeti változókat, hogy az alkalmazás szolgáltatásnév-hitelesítő adatait futásidőben elérhetővé tegye az alkalmazás számára. Az DefaultAzureCredential objektum ezekben a környezeti változókban keresi a szolgáltatásnév adatait.
Ha a Gunicorn használatával futtatja a Python-webalkalmazásokat UNIX-kiszolgálói környezetben, az alkalmazás környezeti változói a EnvironmentFile irányelv használatával a gunicorn.server fájlban határozhatók meg. Tekintse meg a következő példát.
[Unit]
Description=gunicorn daemon
After=network.target
[Service]
User=www-user
Group=www-data
WorkingDirectory=/path/to/python-app
EnvironmentFile=/path/to/python-app/py-env/app-environment-variables
ExecStart=/path/to/python-app/py-env/gunicorn --config config.py wsgi:app
[Install]
WantedBy=multi-user.target
Az irányelvben EnvironmentFile megadott fájlnak tartalmaznia kell a környezeti változók listáját az alábbi értékekkel.
AZURE_CLIENT_ID=<value>
AZURE_TENANT_ID=<value>
AZURE_CLIENT_SECRET=<value>
DefaultAzureCredential implementálása az alkalmazásban
Az Azure SDK-ügyfélobjektumok Azure-beli hitelesítéséhez az alkalmazásnak a DefaultAzureCredential csomagból származó azure.identity osztályt kell használnia.
Először adja hozzá az azure.identity csomagot az alkalmazáshoz.
pip install azure-identity
Ezután az azure SDK-ügyfélobjektumot az alkalmazásban létrehozó Bármely Python-kód esetében a következőket kell tenni:
- Importálja az osztályt
DefaultAzureCredentialaazure.identitymodulból. - Hozzon létre egy objektumot
DefaultAzureCredential. - Adja át az
DefaultAzureCredentialobjektumot az Azure SDK ügyfélobjektum-konstruktorának.
Erre a megközelítésre az alábbi kódszegmensben mutatunk be példát.
from azure.identity import DefaultAzureCredential
from azure.storage.blob import BlobServiceClient
# Acquire a credential object
token_credential = DefaultAzureCredential()
blob_service_client = BlobServiceClient(
account_url="https://<my_account_name>.blob.core.windows.net",
credential=token_credential)
Ebből a példából, amikor a kód példányosítja az DefaultAzureCredential objektumot, DefaultAzureCredential beolvassa a környezeti változókat AZURE_TENANT_ID, AZURE_CLIENT_IDés AZURE_CLIENT_SECRET az alkalmazásszolgáltatás fő információit az Azure-hoz való csatlakozáshoz.