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.
In diesem Artikel wird erläutert, wie Sie die Inhaltssicherheitsrichtlinie (Content Security Policy , CSP) für Code-Apps konfigurieren. Sie können die einzelnen CSP-Direktiven einrichten, auswählen, ob CSP erzwungen oder nur Berichterstellung verwendet werden soll, und angeben, wo Berichte gesendet werden sollen.
Legen Sie diese Einstellungen auf Umgebungsebene fest, um sie auf alle Code-Apps in der Umgebung anzuwenden.
Standardmäßig wird CSP mit der folgenden Direktivenkonfiguration erzwungen.
Der <platform> Wert stellt werte dar, die von der Plattform benötigt werden.
| Richtlinie | Standardwert |
|---|---|
| frame-ancestors | 'self' https://*.powerapps.com |
| script-src | 'self' <platform> |
| img-src | 'self' data: <platform> |
| style-src | 'self' 'unsafe-inline' |
| font-src | 'self' |
| connect-src | 'none' |
| frame-src | 'self' |
| `Form-Action` | 'none' |
| base-uri | 'self' |
| child-src | 'none' |
| default-src | 'self' |
| manifest-src | 'none' |
| media-src | 'self' data: |
| object-src | 'self' data: |
| worker-src | 'none' |
Wenn Sie eine Direktive anpassen, werden die angegebenen Werte an den Standardwert angefügt.
Wenn der Standardwert lautet 'none', ersetzen Die benutzerdefinierten Werte den Standardwert.
Wenn Ihre Umgebung über eine Dataverse-Instanz verfügt, können Sie die CSP-Einstellungen im Power Platform Admin Center konfigurieren. Lesen Sie andernfalls die Anweisungen zum Konfigurieren von CSP mithilfe der REST-API.
Voraussetzungen
- Sie müssen ein Administrator der Umgebung sein, um CSP-Einstellungen zu konfigurieren.
Konfigurieren von CSP mithilfe des Power Platform Admin Centers
So greifen Sie auf die CSP-Einstellungen für Code-Apps zu:
- Melden Sie sich beim Power Platform Admin Center an.
- Wählen Sie im Navigationsbereich die Option Verwalten aus. Wählen Sie im Bereich VerwaltenUmgebungen aus.
- Wählen Sie auf der Seite Umgebungen eine Umgebung aus.
- Wählen Sie in der Befehlsleiste Einstellungen aus.
- Erweitern Sie Produkt und wählen Sie dann Datenschutz und Sicherheit aus.
- Wählen Sie unter " Inhaltssicherheitsrichtlinie" die Registerkarte "App " aus.
Aktivieren der Berichterstellung
Der Umschalter " Bericht aktivieren " steuert, ob CSP-Verletzungsberichte gesendet werden. Wenn Sie sie aktivieren, geben Sie einen gültigen Endpunkt an. Das System sendet Berichte über Verstöße an diesen Endpunkt, unabhängig davon, ob die Inhaltssicherheitsrichtlinie aktiviert ist. Weitere Informationen zur Berichterstellung finden Sie in der Berichterstellungsdokumentation.
Richtlinien konfigurieren
Verwenden Sie den Abschnitt " Direktiven konfigurieren ", um den Wert einzelner Direktiven zu steuern. Wenn Sie die Standardeinstellungen aktiviert lassen, verwenden Sie die zuvor angegebenen Werte. Wenn Sie die Umschaltfläche deaktivieren, können Sie benutzerdefinierte Werte für die Direktive hinzufügen. Benutzerdefinierte Werte werden mit den Standardwerten für die Direktive zusammengeführt. Wenn Sie einen Umschalter deaktivieren und die Quellliste leer lassen, deaktivieren Sie die Direktive.
Das folgende Beispiel zeigt drei verschiedene Direktiven mit unterschiedlichen Konfigurationen:
-
frame-ancestorsist aktiviert und für die Verwendung des Standardwerts festgelegt. Der resultierende Direktivewert lautet:'self' https://*.powerapps.com -
script-srcist aktiviert und fügt eine weitere Quelle hinzu, die mit dem Standardwert zusammengeführt wird. Der resultierende Direktivewert lautet:script-src 'self' https://contoso.com -
img-srcist deaktiviert. Die Richtlinie wird aus der Politik weggelassen.
Konfigurieren von CSP mithilfe der REST-API
Sie können CSP programmgesteuert mithilfe der Microsoft Power Platform-API konfigurieren.
Verwalten von Einstellungen mithilfe der Umgebungsverwaltungseinstellungen-API : https://api.powerplatform.com/environmentmanagement/environments/{environmentId}/settings
Die folgenden Einstellungen sind verfügbar:
PowerApps_CSPEnabledCodeAppssteuert, ob CSP für Code-Apps erzwungen wird.PowerApps_CSPReportingEndpointsteuert die Meldung von CSP-Verstößen. Legen Sie diese Einstellung auf eine gültige URL fest, bei der CSP-Verletzungsberichte gesendet werden odernullwenn die Berichterstellung deaktiviert ist.PowerApps_CSPConfigCodeAppsist die Konfiguration für Direktiven. Legen Sie diese Einstellung auf ein stringified JSON-Objekt mit dem Format fest:{ "default-src": { "sources": [{ "source": "'self'" }] }, "style-src": { "sources": [{ "source": "'self'" }, { "source": "https://contoso.com" }] } // Additional directives }
PowerShell-Hilfsfunktionen
Verwenden Sie die folgenden PowerShell-Funktionen, um das Aufrufen der REST-API zu vereinfachen.
Get-CodeAppContentSecurityPolicy
Verwenden Sie die Get-CodeAppContentSecurityPolicy Funktion, um die aktuellen CSP-Einstellungen für Code-Apps in einer angegebenen Umgebung abzurufen. Die Funktion gibt den Erzwingungsstatus, den Endpunkt für die Berichterstellung und die konfigurierten Direktiven zurück.
<#
.SYNOPSIS
Retrieves the Content Security Policy settings for code apps in a Power Platform environment.
.DESCRIPTION
Gets the current CSP configuration for code apps, including enforcement status,
reporting endpoint, and configured directives from the Power Platform API.
.PARAMETER Env
The environment ID of the Power Platform environment.
.PARAMETER Token
A secure string containing the authentication token for the Power Platform API.
.PARAMETER ApiEndpoint
The base URI of the Power Platform API. Defaults to 'https://api.powerplatform.com/'.
.OUTPUTS
A hashtable containing:
- ReportingEndpoint: The URL where CSP violation reports are sent.
- Enabled: Whether CSP enforcement is enabled.
- Directives: A hashtable of CSP directives and their configured sources.
.EXAMPLE
Get-CodeAppContentSecurityPolicy -Token $token -Env "00000000-0000-0000-0000-000000000000"
#>
function Get-CodeAppContentSecurityPolicy {
[CmdletBinding()]
param(
[Parameter(Mandatory = $true)]
[string]$Env,
[Parameter(Mandatory = $true)]
[securestring]$Token,
[uri]$ApiEndpoint = 'https://api.powerplatform.com/'
)
$ErrorActionPreference = 'Stop'
$escapedEnv = [System.Uri]::EscapeDataString($Env)
$uri = [Uri]::new($ApiEndpoint, "/environmentmanagement/environments/$escapedEnv/settings?api-version=2022-03-01-preview&`$select=PowerApps_CSPReportingEndpoint,PowerApps_CSPEnabledCodeApps,PowerApps_CSPConfigCodeApps")
$resp = Invoke-RestMethod -Uri $uri -Method Get -Authentication Bearer -Token $Token
$data = $resp.objectResult[0];
if ($null -ne $data.PowerApps_CSPConfigCodeApps) {
$parsed = $data.PowerApps_CSPConfigCodeApps | ConvertFrom-Json -AsHashtable -Depth 10
$config = @{}
foreach ($directive in $parsed.Keys) {
$sources = $parsed[$directive].sources | Select-Object -ExpandProperty source
$config[$directive] = $sources
}
}
@{
ReportingEndpoint = $data.PowerApps_CSPReportingEndpoint
Enabled = $data.PowerApps_CSPEnabledCodeApps ?? $true
Directives = $config
}
}
Set-CodeAppContentSecurityPolicy
Verwenden Sie die Set-CodeAppContentSecurityPolicy Funktion, um CSP-Einstellungen für Code-Apps in einer angegebenen Umgebung zu aktualisieren. Sie können die CSP-Erzwingung aktivieren oder deaktivieren, einen Berichtsendpunkt konfigurieren und einzelne Direktiven aktualisieren.
<#
.SYNOPSIS
Updates the Content Security Policy settings for code apps in a Power Platform environment.
.DESCRIPTION
Configures CSP settings for code apps, including enabling or disabling enforcement,
setting a reporting endpoint for violation reports, and updating CSP directives.
.PARAMETER Env
The environment ID of the Power Platform environment.
.PARAMETER Token
A secure string containing the authentication token for the Power Platform API.
.PARAMETER ApiEndpoint
The base URI of the Power Platform API. Defaults to 'https://api.powerplatform.com/'.
.PARAMETER ReportingEndpoint
The URL where CSP violation reports are sent. Pass $null to disable reporting.
.PARAMETER Enabled
Whether to enable or disable CSP enforcement for code apps.
.PARAMETER Directives
A hashtable of CSP directives and their source values. Replaces the entire directive collection.
.EXAMPLE
Set-CodeAppContentSecurityPolicy -Token $token -Env "00000000-0000-0000-0000-000000000000" -Enabled $true
.EXAMPLE
Set-CodeAppContentSecurityPolicy -Token $token -Env "00000000-0000-0000-0000-000000000000" -ReportingEndpoint "https://contoso.com/report"
#>
function Set-CodeAppContentSecurityPolicy {
[CmdletBinding(SupportsShouldProcess = $true)]
param(
[Parameter(Mandatory = $true)]
[string]$Env,
[Parameter(Mandatory = $true)]
[securestring]$Token,
[uri]$ApiEndpoint = 'https://api.powerplatform.com/',
[AllowNull()]
[string]$ReportingEndpoint,
[bool]$Enabled,
[hashtable]$Directives
)
$payload = @{}
if ($PSBoundParameters.ContainsKey('ReportingEndpoint')) {
$payload['PowerApps_CSPReportingEndpoint'] = $ReportingEndpoint
}
if ($PSBoundParameters.ContainsKey('Enabled')) {
$payload['PowerApps_CSPEnabledCodeApps'] = $Enabled
}
if ($PSBoundParameters.ContainsKey('Directives')) {
$allowed = @(
'Frame-Ancestors', 'Script-Src', 'Img-Src', 'Style-Src', 'Font-Src',
'Connect-Src', 'Frame-Src', 'Form-Action', 'Base-Uri', 'Child-Src',
'Default-Src', 'Manifest-Src', 'Media-Src', 'Object-Src', 'Worker-Src'
)
$textInfo = [System.Globalization.CultureInfo]::InvariantCulture.TextInfo
$config = @{}
foreach ($key in $Directives.Keys) {
$directive = $textInfo.ToTitleCase($key)
if ($allowed -notcontains $directive) {
throw "Invalid CSP directive: $directive"
}
$sources = $Directives[$key] | ForEach-Object { @{ source = $_ } }
$config[$directive] = @{ sources = @($sources) }
}
$payload['PowerApps_CSPConfigCodeApps'] = ($config | ConvertTo-Json -Depth 10 -Compress)
}
$escapedEnv = [System.Uri]::EscapeDataString($Env)
$uri = [Uri]::new($ApiEndpoint, "/environmentmanagement/environments/$escapedEnv/settings?api-version=2022-03-01-preview")
$body = $payload | ConvertTo-Json -Depth 10
Invoke-RestMethod -Uri $uri -Method Patch -Authentication Bearer -Token $Token -Body $body -ContentType 'application/json' | Out-Null
}
Authentifizierung
Um die PowerShell-Funktionen zu verwenden, geben Sie ein Authentifizierungstoken an. Verwenden Sie die Microsoft Authentication CLI , um dieses Token zu generieren. Anweisungen zur Installation finden Sie in der Dokumentation. Verwenden Sie nach der Installation des Tools den folgenden Befehl, um ein Authentifizierungstoken zu generieren:
$tenantId = "<your-tenant-id>"
$clientId = "9cee029c-6210-4654-90bb-17e6e9d36617" # This is the client id of the Power Platform CLI
$token = azureauth aad --resource "https://api.powerplatform.com/" --tenant $tenantId --client $clientId --output token | ConvertTo-SecureString -AsPlainText -Force
Examples
Die folgenden Beispiele zeigen, wie Sie die PowerShell-Hilfsfunktionen zum Verwalten von CSP-Einstellungen verwenden.
Abrufen von Einstellungen
Get-CodeAppContentSecurityPolicy -Token $token -Env "<your-env-id>"
Name Value
---- -----
Enabled True
ReportingEndpoint http://constoso.com/report
Directives {[Frame-Ancestors, System.Object[]], [Script-Src, 'self']}
Aktivieren oder Deaktivieren der Erzwingung
Verwenden Sie den -Enabled Parameter, um die CSP-Erzwingung für Code-Apps zu aktivieren oder zu deaktivieren.
Set-CodeAppContentSecurityPolicy -Token $token -Env "<your-env-id>" -Enabled $true
Aktivieren oder Deaktivieren der Berichterstellung
Verwenden Sie den -ReportingEndpoint Parameter, um anzugeben, wohin CSP-Verletzungsberichte gesendet werden, oder übergeben Sie $null, um die Berichterstellung zu deaktivieren.
Set-CodeAppContentSecurityPolicy -Token $token -Env "<your-env-id>" -ReportingEndpoint "https://contoso.com/report"
Um die Berichterstellung zu deaktivieren, geben Sie $null an:
Set-CodeAppContentSecurityPolicy -Token $token -Env "<your-env-id>" -ReportingEndpoint $null
Aktualisieren von Direktiven
Warnung
Durch das Aktualisieren der Direktiven wird die gesamte Direktivensammlung ersetzt. Um die vorhandenen Direktiven zu aktualisieren, rufen Sie sie zuerst ab, und aktualisieren Sie sie dann an Ort und Stelle.
Wenn Sie eine Direktive auf ihren Standardwert zurücksetzen möchten, lassen Sie sie aus der Auflistung aus. Um eine Direktive vollständig zu deaktivieren, übergeben Sie ein leeres Array für die Direktive.
$env = "<your-env-id>"
$directives = (Get-CodeAppContentSecurityPolicy -Token $token -Env $env).Directives
# Update existing directives
Set-CodeAppContentSecurityPolicy -Token $token -Env $env -Directives $directives