Oharra
Orrialde honetara sartzeak baimena behar du. Saioa hasteko edo direktorioak aldatzen saia zaitezke.
Orrialde honetara sartzeak baimena behar du. Direktorioak aldatzen saia zaitezke.
En este artículo se explica cómo configurar la directiva de seguridad de contenido (CSP) para aplicaciones de código. Puede configurar las directivas de CSP individuales, elegir si aplicar CSP o solo generar informes, y especificar dónde enviar los informes.
Establezca esta configuración en el nivel de entorno para que se aplique a todas las aplicaciones de código del entorno.
De forma predeterminada, CSP se aplica con la siguiente configuración de directiva.
El <platform> valor representa los valores requeridos por la plataforma.
| Directiva | Valor predeterminado |
|---|---|
| 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' |
Al personalizar una directiva, los valores proporcionados se anexan al valor predeterminado.
Si el valor predeterminado es 'none', los valores personalizados reemplazan el valor predeterminado.
Si el entorno tiene una instancia de Dataverse, puede configurar las opciones de CSP en el Centro de administración de Power Platform. De lo contrario, consulte las instrucciones para configurar CSP mediante la API REST.
Prerrequisitos
- Debe ser administrador del entorno para configurar las opciones de CSP.
Configuración de CSP mediante el Centro de administración de Power Platform
Para acceder a la configuración de CSP de las aplicaciones de código:
- Inicie sesión en el Centro de administración de Power Platform.
- En el panel de navegación, seleccione Administrar. En el panel Administrar, seleccione Entornos.
- Seleccione un entorno en la página Entornos.
- Seleccione Configuración en la barra de comandos.
- Expanda Producto y luego seleccione Privacidad + Seguridad.
- En Directiva de seguridad de contenido, seleccione la pestaña Aplicación .
Habilitar informes
El botón de alternancia Habilitar informes de informes controla si se envían informes de infracciones de CSP. Al habilitarlo, especifique un punto de conexión válido. El sistema envía informes de infracciones a este punto de conexión, independientemente de si la directiva de seguridad de contenido está habilitada. Para obtener más información sobre los informes, consulte la documentación de informes.
Configurar directivas
Use la sección Configurar directivas para controlar el valor de las directivas individuales. Si dejas activados los valores predeterminados, utilizas los valores por defecto especificados anteriormente. Si desactiva el interruptor, puede añadir valores personalizados a la directiva. Los valores personalizados se combinan con los valores predeterminados de la directiva . Si desactiva un interruptor y deja la lista de origen en blanco, deshabilita la directiva.
En el ejemplo siguiente se muestran tres directivas diferentes con configuraciones diferentes:
-
frame-ancestorsestá habilitado y establecido para usar su valor predeterminado. El valor de la directiva resultante es:'self' https://*.powerapps.com -
script-srcestá habilitado y agrega otro origen, que se combina con el valor predeterminado. El valor de la directiva resultante es:script-src 'self' https://contoso.com -
img-srcestá deshabilitado. La directiva se omite de la política.
Configuración de CSP mediante la API REST
Puede configurar CSP mediante programación mediante microsoft Power Platform API.
Administre la configuración mediante la API de configuración de administración de entornos : https://api.powerplatform.com/environmentmanagement/environments/{environmentId}/settings
Están disponibles las siguientes opciones de configuración:
PowerApps_CSPEnabledCodeAppscontrola si CSP se aplica a las aplicaciones de código.PowerApps_CSPReportingEndpointcontrola la notificación de infracciones de CSP. Establezca esta opción en una dirección URL válida en la que se envían informes de infracciones de CSP onullsi se deshabilitan los informes.PowerApps_CSPConfigCodeAppses la configuración para directivas. Establezca esta configuración en un objeto JSON con cadena con el formato :{ "default-src": { "sources": [{ "source": "'self'" }] }, "style-src": { "sources": [{ "source": "'self'" }, { "source": "https://contoso.com" }] } // Additional directives }
Funciones auxiliares de PowerShell
Para simplificar la llamada a la API REST, use las siguientes funciones de PowerShell.
Get-CodeAppContentSecurityPolicy
Use la Get-CodeAppContentSecurityPolicy función para recuperar la configuración actual de CSP para las aplicaciones de código en un entorno especificado. La función devuelve el estatus de ejecución, el punto final de informes y las directivas configuradas.
<#
.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
Utilice la función Set-CodeAppContentSecurityPolicy para actualizar la configuración de CSP en aplicaciones de código en un entorno especificado. Puede habilitar o deshabilitar la aplicación de CSP, configurar un punto de conexión de informes y actualizar directivas individuales.
<#
.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
}
Autenticación
Para usar las funciones de PowerShell, proporcione un token de autenticación. Use la CLI de autenticación de Microsoft para generar este token. Consulte su documentación para obtener instrucciones de instalación. Después de instalar la herramienta, use el siguiente comando para generar un token de autenticación:
$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
En los ejemplos siguientes se muestra cómo usar las funciones auxiliares de PowerShell para administrar la configuración de CSP.
Recuperación de la configuración
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']}
Habilitar o deshabilitar la aplicación
Usa el parámetro -Enabled para activar o desactivar el cumplimiento de CSP para las aplicaciones de código.
Set-CodeAppContentSecurityPolicy -Token $token -Env "<your-env-id>" -Enabled $true
Habilitar o deshabilitar informes
Utilice el parámetro -ReportingEndpoint para especificar dónde se envían los informes de infracción de CSP, o bien, introduzca $null para desactivar los informes.
Set-CodeAppContentSecurityPolicy -Token $token -Env "<your-env-id>" -ReportingEndpoint "https://contoso.com/report"
Para desactivar los informes, pase $null:
Set-CodeAppContentSecurityPolicy -Token $token -Env "<your-env-id>" -ReportingEndpoint $null
Directivas de actualización
Advertencia
La actualización de las directivas reemplaza a toda la colección de directivas. Para actualizar las directivas existentes, primero recuperelas y, a continuación, actualícelas en su lugar.
Para restablecer una directiva a su valor predeterminado, omita la directiva de la colección. Para deshabilitar una directiva por completo, pase una matriz vacía para la directiva.
$env = "<your-env-id>"
$directives = (Get-CodeAppContentSecurityPolicy -Token $token -Env $env).Directives
# Update existing directives
Set-CodeAppContentSecurityPolicy -Token $token -Env $env -Directives $directives