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.
Előző rész: Függőségek és környezeti változók
Az utasítások követését követően az import alkalmazás indítási kódja inicializálja a kérelemkezelési függvényekben használt kulcsváltozókat.
Először az alkalmazás létrehozza a Flask alkalmazásobjektumot, amely az útvonalak meghatározásának és a bejövő HTTP-kérések kezelésének alapja. Ezután lekéri a külső API-végpont URL-címét egy környezeti változóból. Ez a megközelítés megkönnyíti a végpont konfigurálását a kódbázis módosítása nélkül:
app = Flask(__name__)
app.config["DEBUG"] = True
number_url = os.environ["THIRD_PARTY_API_ENDPOINT"]
Ezután lekéri az DefaultAzureCredential objektumot, amely az ajánlott hitelesítő adat, amelyet Azure szolgáltatásokkal való hitelesítéskor érdemes használni. Lásd: Azure-ban üzemeltetett alkalmazások hitelesítése DefaultAzureCredential.
credential = DefaultAzureCredential()
Helyi futtatáskor DefaultAzureCredential megkeresi a helyi fejlesztéshez használt szolgáltatásnév adatait tartalmazó AZURE_TENANT_ID, AZURE_CLIENT_IDés AZURE_CLIENT_SECRET környezeti változókat. Ha az Azure-ban fut, DefaultAzureCredential alapértelmezés szerint az alkalmazásban engedélyezett, rendszer által hozzárendelt felügyelt identitást használja. Az alapértelmezett viselkedést az alkalmazás beállításaival felülbírálhatja, de ebben a példában a rendszer az alapértelmezett viselkedést használja.
A következő kód lekéri a külső API hozzáférési kulcsát az Azure Key Vaultból. Az üzembe helyezési szkriptben a Key Vault a az keyvault create használatával jön létre, a titkot pedig a az keyvault secret set használatával tárolja.
Maga a Key Vault-erőforrás egy URL-címen keresztül érhető el, amely a KEY_VAULT_URL környezeti változóból töltődik be.
key_vault_url = os.environ["KEY_VAULT_URL"]
Ha le szeretne kérni egy titkos kulcsot az Azure Key Vaultból, az alkalmazásnak létre kell hoznia egy ügyfélobjektumot, amely kommunikál a Key Vault szolgáltatással. Mivel a cél egy titkos kód beolvasása, az alkalmazás a SecretClient kódtárból származó osztályt azure.keyvault.secrets használja. Ehhez az ügyfélhez két bemenet szükséges:
- A Key Vault URL-címe – általában egy környezeti változóból kéri le
- Hitelesítő objektum – például a
DefaultAzureCredentialkorábban létrehozott példány, amely azt az identitást jelöli, amely alatt az alkalmazás fut.
keyvault_client = SecretClient(vault_url=key_vault_url, credential=credential)
Az objektum létrehozása SecretClient nem hitelesíti azonnal az alkalmazást. Az ügyfél egyszerűen egy helyi szerkezet, amely tárolja a Key Vault URL-címét és a hitelesítő objektumot. A hitelesítés és az engedélyezés csak akkor történik, ha egy műveletet az ügyfélen keresztül hív meg, például get_secret, amely REST API-hívást hoz létre az Azure-erőforráshoz.
api_secret_name = os.environ["THIRD_PARTY_API_SECRET_NAME"]
vault_secret = keyvault_client.get_secret(api_secret_name)
# The "secret" from Key Vault is an object with multiple properties. The key we
# want for the third-party API is in the value property.
access_key = vault_secret.value
Még akkor is, ha egy alkalmazás identitása jogosult az Azure Key Vault elérésére, külön engedéllyel kell rendelkeznie bizonyos műveletek végrehajtására is – például titkos kódok olvasására. Ezen engedély nélkül a hívás get_secret() meghiúsul, még akkor is, ha az identitás egyébként érvényes. Az engedély kezeléséhez a kiépítési szkript a Azure CLI paranccsal beállít egy "titkos kulcsok lekérése" hozzáférési szabályzatot az keyvault set-policyaz alkalmazáshoz. További információ: Key Vault-hitelesítés és Az alkalmazás hozzáférésének biztosítása a Key Vault. Az utóbbi cikk bemutatja, hogyan állíthat be hozzáférési szabályzatot a Azure portál használatával. (A cikk a felügyelt identitásra is vonatkozik, de ugyanúgy vonatkozik a helyi fejlesztésben használt szolgáltatásnévre.)
Végül az alkalmazáskód beállítja az ügyfélobjektumot, amelyen keresztül üzeneteket írhat egy Azure Storage-üzenetsorba. A várólista URL-címe a STORAGE_QUEUE_URLkörnyezeti változóban található.
queue_url = os.environ["STORAGE_QUEUE_URL"]
queue_client = QueueClient.from_queue_url(queue_url=queue_url, credential=credential)
Az Azure Key Vaulthoz hasonlóan az alkalmazás az Azure SDK egy adott ügyfélobjektumát használja az Azure Queue Storage használatához. Ebben az esetben az QueueClient azure-storage-queue kódtár osztályát használja.
Az ügyfél inicializálásához az alkalmazás a from_queue_url metódust használja, és megadja a sor teljesen képzett URL-címét és egy hitelesítési objektumot. Ez a hitelesítő objektum ismét a korábban létrehozott DefaultAzureCredential példány, amely azt az azonosítót jelöli, amely alatt az alkalmazás fut.
Ahogyan azt az útmutató korábbi részében már említettük, az engedélyezés a "Storage Queue Data Contributor" szerepkörnek az alkalmazás identitásához való hozzárendelésével adható meg – akár felügyelt identitást az Azure-ban, akár egy szolgáltatásnevet a helyi fejlesztés során.
Ez a szerepkör-hozzárendelés a kiépítési szkriptben történik a Azure CLI paranccsalaz role assignment create.
Feltételezve, hogy ez az indítási kód sikeres, az alkalmazás rendelkezik az összes belső változójával a /api/v1/getcode API-végpont támogatásához.