Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Cet article explique comment configurer la stratégie de sécurité de contenu (CSP) pour les applications de code. Vous pouvez configurer les directives CSP individuelles, choisir d'appliquer la politique CSP ou d'utiliser uniquement la création de rapports et spécifier où envoyer des rapports.
Définissez ces paramètres au niveau de l’environnement pour qu’ils s’appliquent à toutes les applications de code de l’environnement.
Par défaut, CSP est appliqué avec la configuration de directives suivante.
La <platform> valeur représente les valeurs requises par la plateforme.
| Instructions | Valeur par défaut |
|---|---|
| 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' |
Lorsque vous personnalisez une directive, les valeurs que vous fournissez sont ajoutées à la valeur par défaut.
Si la valeur par défaut est 'none', vos valeurs personnalisées remplacent la valeur par défaut.
Si votre environnement a une instance Dataverse, vous pouvez configurer les paramètres CSP dans le Centre d’administration Power Platform. Sinon, consultez les instructions de configuration du fournisseur de solutions Cloud à l’aide de l’API REST.
Prerequisites
- Vous devez être administrateur de l’environnement pour configurer les paramètres CSP.
Configurer csp à l’aide du Centre d’administration Power Platform
Pour accéder aux paramètres CSP pour les applications de code :
- Connectez-vous au Centre d’administration Power Platform.
- Dans le volet de navigation, sélectionnez Gérer. Dans le volet Gérer, sélectionnez Environnements.
- Sur la page Environnements, sélectionnez un environnement.
- Dans la barre de commandes, sélectionnez Paramètres.
- Développez Produit, puis sélectionnez Confidentialité + Sécurité.
- Sous Stratégie de sécurité du contenu, sélectionnez l’onglet Application .
Activer la création de rapports
Le bouton bascule Activer la création de rapports détermine si les rapports de violation CSP sont envoyés. Lorsque vous l’activez, spécifiez un point de terminaison valide. Le système envoie des rapports de violation à ce point de terminaison, que l'application de la stratégie de sécurité de contenu soit activée ou non. Pour plus d’informations sur la création de rapports, consultez la documentation de création de rapports.
Configurer les instructions
Utilisez la section Configurer les directives pour contrôler la valeur des directives individuelles. Si vous conservez les valeurs par défaut activées, vous utilisez les valeurs par défaut spécifiées précédemment. Si vous désactivez l'interrupteur, vous pouvez ajouter des valeurs personnalisées pour la directive. Les valeurs personnalisées sont fusionnées avec les valeurs par défaut de la directive. Si vous désactivez un interrupteur et laissez la Liste de sources vide, vous désactivez la directive.
L’exemple suivant montre trois directives différentes avec différentes configurations :
-
frame-ancestorsest activé et défini pour utiliser sa valeur par défaut. La valeur de directive résultante est la suivante :'self' https://*.powerapps.com -
script-srcest activé et ajoute une autre source, qui est fusionnée avec la valeur par défaut. La valeur de directive résultante est la suivante :script-src 'self' https://contoso.com -
img-srcest désactivé. La directive est omise de la stratégie.
Configurer CSP à l’aide de l’API REST
Vous pouvez configurer programmatiquement csp à l’aide de l’API Microsoft Power Platform.
Gérez les paramètres à l’aide de l’API Paramètres de gestion de l’environnement : https://api.powerplatform.com/environmentmanagement/environments/{environmentId}/settings
Les paramètres suivants sont disponibles :
PowerApps_CSPEnabledCodeAppscontrôle si la politique de sécurité de contenu (CSP) est appliquée pour les applications de code.PowerApps_CSPReportingEndpointcontrôle le signalement des violations CSP. Définissez ce paramètre sur une URL valide dans laquelle les rapports de violation CSP sont envoyés ounullsi la création de rapports est désactivée.PowerApps_CSPConfigCodeAppsest la configuration des directives. Définissez ce paramètre sur un objet JSON stringified au format suivant :{ "default-src": { "sources": [{ "source": "'self'" }] }, "style-src": { "sources": [{ "source": "'self'" }, { "source": "https://contoso.com" }] } // Additional directives }
Fonctions d’assistance PowerShell
Pour simplifier l’appel de l’API REST, utilisez les fonctions PowerShell suivantes.
Get-CodeAppContentSecurityPolicy
Utilisez la Get-CodeAppContentSecurityPolicy fonction pour récupérer les paramètres CSP actuels pour les applications de code dans un environnement spécifié. La fonction retourne l'état d'application, le point de terminaison de rapport et les directives configurées.
<#
.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
Utilisez la Set-CodeAppContentSecurityPolicy fonction pour mettre à jour les paramètres CSP pour les applications de code dans un environnement spécifié. Vous pouvez activer ou désactiver l'application de la CSP, configurer un point de terminaison de rapport et mettre à jour des directives de la CSP individuelles.
<#
.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
}
Authentication
Pour utiliser les fonctions PowerShell, fournissez un jeton d’authentification. Utilisez l’interface CLI d’authentification Microsoft pour générer ce jeton. Reportez-vous à leur documentation pour obtenir des instructions d’installation. Après avoir installé l’outil, utilisez la commande suivante pour générer un jeton d’authentification :
$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
Les exemples suivants montrent comment utiliser les fonctions d’assistance PowerShell pour gérer les paramètres CSP.
Récupérer les paramètres
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']}
Activer ou désactiver l’application
Utilisez le paramètre -Enabled pour activer ou désactiver l'application de la stratégie CSP pour les applications de code.
Set-CodeAppContentSecurityPolicy -Token $token -Env "<your-env-id>" -Enabled $true
Activer ou désactiver la création de rapports
Utilisez le -ReportingEndpoint paramètre pour spécifier l’emplacement où les rapports de violation CSP sont envoyés ou passez $null pour désactiver la création de rapports.
Set-CodeAppContentSecurityPolicy -Token $token -Env "<your-env-id>" -ReportingEndpoint "https://contoso.com/report"
Pour désactiver la création de rapports, passez $null:
Set-CodeAppContentSecurityPolicy -Token $token -Env "<your-env-id>" -ReportingEndpoint $null
Directives de mise à jour
Avertissement
La mise à jour des directives remplace l’ensemble de la collection de directives. Pour mettre à jour les directives existantes, commencez par les récupérer, puis les mettez à jour en place.
Pour réinitialiser une directive à sa valeur par défaut, omettez-la de la collection. Pour désactiver entièrement une directive, transmettez un tableau vide pour la directive.
$env = "<your-env-id>"
$directives = (Get-CodeAppContentSecurityPolicy -Token $token -Env $env).Directives
# Update existing directives
Set-CodeAppContentSecurityPolicy -Token $token -Env $env -Directives $directives