Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Azure Functions-Zugriffsschlüssel fungieren als geteilte Geheimnisse, die den Zugriff auf Funktionsendpunkte autorisieren. In diesem Artikel werden die Arten von Zugriffsschlüsseln beschrieben, die Funktionen unterstützen, und wie Sie mit Zugriffsschlüsseln arbeiten.
Während Zugriffsschlüssel einen gewissen Schutz vor unerwünschtem Zugriff bieten, sollten Sie andere Optionen in Betracht ziehen, um HTTP-Endpunkte in der Produktion zu sichern. Zum Beispiel sollten Sie keine gemeinsamen Geheimnisse in einer öffentlichen App verteilen. Wenn ein öffentlicher Client Ihre Funktion aufruft, sollten Sie diese oder andere Sicherheitsmechanismen implementieren:
- Aktivieren der App Service-Authentifizierung/-Autorisierung
- Verwenden von Azure API Management (APIM) zum Authentifizieren von Anforderungen
- Bereitstellen der Funktions-App in einem virtuellen Netzwerk
- Isoliertes Bereitstellen Ihrer Funktions-App
Zugriffsschlüssel bilden die Grundlage für die HTTP-Autorisierung in HTTP-ausgelösten Funktionen. Weitere Informationen finden Sie unter Autorisierungsebene.
Zugriffstastentypen
Der Geltungsbereich eines Zugriffsschlüssels und die von ihm unterstützten Aktionen hängen von der Art des Zugriffsschlüssels ab.
| Schlüsseltyp | Schlüsselname | HTTP-Authentifizierungsebene | BESCHREIBUNG |
|---|---|---|---|
| Funktion |
default oder benutzerdefiniert |
function |
Gewährt nur Zugriff auf einen bestimmten Funktionsendpunkt. |
| Gastgeber |
default oder benutzerdefiniert |
function |
Gewährt Zugriff auf alle Funktionsendpunkte in einer Funktions-App. |
| Master | _master |
admin |
Spezieller Hostschlüssel, der auch Administratorzugriff auf die Runtime-REST-APIs in einer Funktions-App bietet. Da der Masterschlüssel erhöhte Berechtigungen in deiner Funktions-App gewährt, solltest du diesen Schlüssel nicht mit Dritten teilen oder in nativen Client-Anwendungen verteilen. |
| System | Abhängig von der Erweiterung | – | Für bestimmte Erweiterungen kann ein systemseitig verwalteter Schlüssel für den Zugriff auf Webhook-Endpunkte erforderlich sein. Systemschlüssel sind für erweiterungsspezifische Funktionsendpunkte konzipiert, die von internen Komponenten aufgerufen werden. Beispielsweise erfordert der Event Grid-Auslöser, dass das Abonnement beim Aufruf des Endpunkts des Auslösers einen Systemschlüssel nutzt. Das Feature „Durable Functions“ nutzt auch Systemschlüssel zum Aufrufen von Durable Task-Erweiterungs-APIs. Nur bestimmte Erweiterungen können Systemschlüssel erstellen. Sie können deren Werte nicht explizit festlegen. Wie bei anderen Schlüsseln können Sie einen neuen Wert für den Schlüssel über das Portal oder mithilfe der Schlüssel-APIs generieren. |
Jeder Schlüssel hat einen Namen zur Referenz. Die Funktions-App und die Funktionsstufen haben jeweils eine Standardtaste namens default. Funktionsschlüssel haben Vorrang vor Hostschlüsseln. Wenn zwei Tasten denselben Namen haben, wird immer die Funktionstaste verwendet.
In der folgenden Tabelle wird der Zweck der verschiedenen Arten von Zugriffsschlüsseln verglichen:
| Aktion | `Scope` | Schlüsseltyp |
|---|---|---|
| Funktion ausführen | Spezifische Funktion | Funktion |
| Funktion ausführen | Beliebige Funktion | Funktion oder Host |
Aufrufen eines admin-Endpunkts |
Funktionen-App | Meister |
| Durable Task-Erweiterungs-APIs aufrufen | Funktions-App* | System |
| Rufen Sie einen erweiterungsspezifischen Webhook (intern) auf | Funktions-App* | System |
* Von der Erweiterung bestimmter Geltungsbereich.
Anforderungen an den Zugriffsschlüssel
In Azure Functions sind Zugriffsschlüssel nach dem Zufallsprinzip generierte 32-Byte-Arrays, die als URL-sichere Base64-Zeichenfolgen codiert werden. Während du deine eigenen Zugangsschlüssel generieren und mit Funktionen verwenden kannst, verwende stattdessen den Standard-Zugangsschlüssel-Generierungsprozess.
Durch Funktionen generierte Zugriffstasten umfassen spezielle Signatur- und Prüfsummenwerte, die den Typ des Zugriffsschlüssels angeben und von Azure Functions generiert wurden. Diese zusätzlichen Komponenten im Schlüssel erleichtern es, die Herkunft solcher Geheimnisse während Sicherheitsscans und anderer automatisierter Prozesse zu bestimmen.
Damit Functions Ihre Schlüssel generieren kann, stellen Sie den Schlüssel value nicht an irgendeine der APIs bereit, mit denen Sie Schlüssel generieren können.
Speicherung von Zugriffsschlüsseln
Deine Funktions-App in Azure speichert Schlüssel und verschlüsselt sie im Ruhemodus. Standardmäßig speichert die Einstellung AzureWebJobsStorage Schlüssel in einem Blob-Speichercontainer im bereitgestellten Konto. Nutze die Einstellung AzureWebJobsSecretStorageType , um dieses Standardverhalten zu überschreiben und speichere die Schlüssel an einem dieser alternativen Orte:
| Standort | Wert | BESCHREIBUNG |
|---|---|---|
| Zweites Speicherkonto | blob |
Speichert Schlüssel im Blob-Speicher in einem Speicherkonto, das sich von dem unterscheidet, das von der Functions-Laufzeit verwendet wird. Das verwendete Konto und der verwendete Container werden durch eine SAS-URL (Shared Access Signature) definiert, die in der AzureWebJobsSecretStorageSas Einstellung festgelegt ist. Die Einstellung AzureWebJobsSecretStorageSas muss beibehalten werden, wenn sich die SAS-URL ändert. |
| Azure Key Vault | keyvault |
Speichert Schlüssel im Schlüsseltresor in .AzureWebJobsSecretStorageKeyVaultUri |
| Dateisystem | files |
Schlüssel werden im Dateisystem persistent gespeichert. Dies ist die Standardeinstellung in Azure Functions v1.x. Die Speicherung im Dateisystem wird nicht empfohlen. |
| Kubernetes-Geheimnisse | kubernetes |
Speichert Schlüssel in der Ressource, die in gesetzt ist AzureWebJobsKubernetesSecretName. Wird nur unterstützt, wenn Ihre Funktions-App für Kubernetes bereitgestellt wird.
Azure Functions Core Tools generiert die Werte automatisch, wenn Sie Ihre App damit in einem Kubernetes-Cluster bereitstellen.
Unveränderliche Geheimschlüssel werden nicht unterstützt. |
| Geheime Azure-Container-Apps | containerapps |
Schlüssel werden im Azure Container Apps geheimen Speicher gespeichert, bei dem es sich um das interne Verwaltungssystem für geheime Schlüssel für Container-Apps handelt. Wird nur unterstützt, wenn Ihre Funktions-App in Azure-Container-Apps bereitgestellt wird. Informationen finden Sie unter Konfigurieren des geheimen Container-Apps-Stores. |
Wenn Sie Key Vault zur Schlüsselspeicherung verwenden, hängen die benötigten App-Einstellungen davon ab, wie die App sich bei Key Vault authentifiziert: eine systemzugewiesene verwaltete Identität, eine benutzerzugewiesene verwaltete Identität oder eine App-Registrierung.
| Einstellungsname | Systemseitig zugewiesen | Benutzerseitig zugewiesen | App-Registrierung |
|---|---|---|---|
AzureWebJobsSecretStorageKeyVaultUri |
Ja | Ja | Ja |
AzureWebJobsSecretStorageKeyVaultClientId |
No | Ja | Ja |
AzureWebJobsSecretStorageKeyVaultClientSecret |
No | No | Ja |
AzureWebJobsSecretStorageKeyVaultTenantId |
No | No | Ja |
Von Bedeutung
Geheimnisse werden nicht über die AzureWebJobsSecretStorageKeyVaultUri-Einstellung für einzelne Funktions-Apps festgelegt. Wenn mehrere Funktions-Apps so konfiguriert sind, dass sie denselben Schlüsseltresor verwenden, verwenden sie die gleichen Geheimnisse, was möglicherweise zu Schlüsselkonflikten oder Überschreibungen führt. Um unbeabsichtigtes Verhalten zu vermeiden, empfiehlt es sich, für jede Funktions-App eine separate Key Vault-Instanz zu verwenden.
Aufruf-Endpunkte mit Zugriffsschlüsseln
Sie können HTTP-ausgelöste Funktionen aufrufen, indem Sie eine URL verwenden, die den Funktionsnamen enthält. Wenn Sie die Autorisierungsstufe einer Funktion auf einen anderen Wert als anonymoussetzen, müssen Sie auch einen Zugangsschlüssel in Ihrer Anfrage angeben. Sie können den Zugangsschlüssel in die URL einfügen, indem Sie die ?code= Abfrage-String oder im Anfrage-Header (x-functions-key). verwenden. Weitere Informationen zur Zugriffsschlüsselautorisierung finden Sie hier.
Um auf die Runtime-REST-APIs (unter /admin/) zuzugreifen, müssen Sie den Hauptschlüssel (_master) im Anforderungsheader x-functions-key bereitstellen. Du kannst administrative Endpunkte deaktivieren, indem du die functionsRuntimeAdminIsolationEnabled Site-Eigenschaft einstellst.
Abrufen Ihrer Funktionszugriffsschlüssel
Funktions- und Hostschlüssel können programmgesteuert über die folgenden Azure Resource Manager-APIs abgerufen werden:
- Funktionsschlüssel auflisten
- Hostschlüssel auflisten
- Funktionsschlüssel für Slots auflisten
- Hostschlüsselplatz auflisten
Informationen zum Aufrufen von Azure Resource Manager-APIs finden Sie in der Azure REST-API-Referenz.
Hinweis
Wenn Sie Ihre Funktions-App in Azure Container Apps bereitstellen und verwendenAzureWebJobsSecretStorageType=ContainerApps, müssen Sie Container Apps-spezifische Methoden verwenden, um Funktionsschlüssel abzurufen. Weitere Informationen finden Sie unter Zugangsschlüssel verwalten in der Container Apps-Dokumentation.
Nutzen Sie diese Methoden, um Zugriffsschlüssel zu erhalten, ohne die REST-APIs zu verwenden.
Melden Sie sich im Azure-Portal an und suchen Sie dann nach und wählen Sie Function App.
Wählen Sie die gewünschte Funktions-App aus.
Erweitern Sie im linken Menü "Funktionen", und wählen Sie dann "App-Tasten" aus.
Die Seite App-Schlüssel wird angezeigt. Auf dieser Seite werden die Host-Schlüssel angezeigt, mit denen Sie auf jede Funktion in der App zugreifen können. Außerdem wird der Systemschlüssel angezeigt. Dieser gibt einem beliebigen Benutzer Zugriff auf Administratorebene auf alle Funktions-App-APIs.
Sie können auch das Prinzip der geringsten Rechte anwenden, indem Sie den Schlüssel für eine spezifische Funktion verwenden. Funktionsspezifische Schlüssel können über die Registerkarte Funktionsschlüssel einer bestimmten Funktion mit HTTP-Trigger abgerufen werden.
Tipp
Du kannst auch Zugriffsschlüssel für deine Funktionen erhalten, indem du den Befehl Azure Functions Core Tools mit der --show-keys Option benutztfunc azure functionapp list-functions. Weitere Informationen finden Sie in der Referenz zu Azure Functions Core Tools.
Erneuern oder Erstellen von Zugriffsschlüsseln
Wenn Sie Ihre Funktionsschlüsselwerte erneuern oder erstellen, müssen die aktualisierten Schlüsselwerte manuell an alle Clients verteilt werden, von denen Ihre Funktion aufgerufen wird.
Funktions- und Hostschlüssel können programmgesteuert über die folgenden Azure Resource Manager-APIs erneuert oder neu erstellt werden:
- Funktionsgeheimnis erstellen oder aktualisieren
- Funktionsgeheimnis für Slots erstellen oder aktualisieren
- Hostgeheimnis erstellen oder aktualisieren
- Hostgeheimnis für Slot erstellen oder aktualisieren
Informationen zum Aufrufen von Azure Resource Manager-APIs finden Sie in der Azure REST-API-Referenz.
Sie können diese Methoden verwenden, um Zugriffsschlüssel abzurufen, ohne manuell Aufrufe für die REST-APIs erstellen zu müssen.
Melden Sie sich im Azure-Portal an und suchen Sie dann nach und wählen Sie Function App.
Wählen Sie die gewünschte Funktions-App aus.
Erweitern Sie im linken Menü "Funktionen", und wählen Sie dann "App-Tasten" aus.
Die Seite App-Schlüssel wird angezeigt. Auf dieser Seite werden die Host-Schlüssel angezeigt, mit denen Sie auf jede Funktion in der App zugreifen können. Außerdem wird der Systemschlüssel angezeigt. Dieser gibt einem beliebigen Benutzer Zugriff auf Administratorebene auf alle Funktions-App-APIs.
Wählen Sie neben dem Schlüssel, den Sie erneuern möchten, den Schlüsselwert erneuern und wählen Sie dann Verlängern und speichern.
Funktionsschlüssel können auch auf der Registerkarte Funktionsschlüssel einer bestimmten Funktion mit HTTP-Trigger erneuert werden.
Löschen von Zugriffsschlüsseln
Funktions- und Hostschlüssel können programmgesteuert über die folgenden Azure Resource Manager-APIs gelöscht werden:
- Funktionsgeheimnis löschen
- Funktionsgeheimnis für Slots löschen
- Hostgeheimnis löschen
- Hostgeheimnis für Slots löschen
Informationen zum Aufrufen von Azure Resource Manager-APIs finden Sie in der Azure REST-API-Referenz.