Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Este artigo explica como configurar a CSP (Política de Segurança de Conteúdo ) para aplicativos de código. Você pode configurar as diretivas CSP individuais, escolher se deseja impor o CSP ou usar apenas relatórios e especificar para onde enviar relatórios.
Defina essas configurações no nível do ambiente a serem aplicadas a todos os aplicativos de código no ambiente.
Por padrão, o CSP é aplicado com a seguinte configuração de diretiva.
O <platform> valor representa os valores exigidos pela plataforma.
| Diretiva | Valor Padrão |
|---|---|
| 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' |
Quando você personaliza uma diretiva, os valores fornecidos são acrescentados ao valor padrão.
Se o valor padrão for 'none', seus valores personalizados substituirão o valor padrão.
Se o ambiente tiver uma instância do Dataverse, você poderá definir as configurações do CSP no centro de administração do Power Platform. Caso contrário, consulte as instruções para configurar o CSP usando a API REST.
Pré-requisitos
- Você deve ser um administrador do ambiente para definir as configurações do CSP.
Configurar o CSP usando o Centro de administração do Power Platform
Para acessar as configurações do CSP para aplicativos de código:
- Entre no centro de administração do Power Platform.
- No painel de navegação, selecione Gerenciar. No painel Gerenciar, selecione Ambientes.
- Na página Ambientes, selecione um ambiente.
- Na barra de comandos, selecione Configurações.
- Expanda Produto e selecione Privacidade + Segurança.
- Na política de segurança de conteúdo, selecione a guia Aplicativo .
Habilitar relatórios
A alternância Habilitar geração de relatórios controla se os relatórios de violação do CSP são enviados. Ao habilitá-lo, especifique um ponto de extremidade válido. O sistema envia relatórios de violação para este endpoint, independentemente de a aplicação da política de segurança de conteúdo estar habilitada. Para obter mais informações sobre relatórios, consulte a documentação de relatório.
Configurar diretivas
Use a seção Configurar diretivas para controlar o valor das diretivas individuais. Se deixar os padrões ativados, você vai usar os valores padrão especificados anteriormente. Se você desativar o alternador, poderá adicionar valores personalizados à diretiva. Os valores personalizados são mesclados com os valores padrão da diretiva. Se desativar uma alternância e deixar a lista Origem em branco, você desabilitará a diretiva.
O exemplo a seguir mostra três diretivas diferentes com configurações diferentes:
-
frame-ancestorsestá habilitado e definido para usar seu valor padrão. O valor da diretiva resultante é:'self' https://*.powerapps.com -
script-srcé habilitado e adiciona outra origem, que é mesclada com o valor padrão. O valor da diretiva resultante é:script-src 'self' https://contoso.com -
img-srcé desabilitado. A diretiva é omitida da política.
Configurar o CSP usando a API REST
Você pode configurar o CSP programaticamente usando a API do Microsoft Power Platform.
Gerenciar configurações usando a API de Configurações de Gerenciamento de Ambiente : https://api.powerplatform.com/environmentmanagement/environments/{environmentId}/settings
As configurações a seguir estão disponíveis:
PowerApps_CSPEnabledCodeAppscontrola se o CSP é imposto para aplicativos de código.PowerApps_CSPReportingEndpointcontrola a comunicação de violações de CSP. Defina essa configuração como uma URL válida para onde os relatórios de violação do CSP são enviados ounullse os relatórios estão desabilitados.PowerApps_CSPConfigCodeAppsé a configuração para diretivas. Defina essa configuração como um objeto JSON com cadeia de caracteres com o formato:{ "default-src": { "sources": [{ "source": "'self'" }] }, "style-src": { "sources": [{ "source": "'self'" }, { "source": "https://contoso.com" }] } // Additional directives }
Funções auxiliares do PowerShell
Para simplificar a chamada à API REST, use as seguintes funções do PowerShell.
Get-CodeAppContentSecurityPolicy
Use a Get-CodeAppContentSecurityPolicy função para recuperar as configurações de CSP atuais para aplicativos de código em um ambiente especificado. A função retorna o status de imposição, o ponto de extremidade de relatório e as diretivas 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
Use a função Set-CodeAppContentSecurityPolicy para atualizar as configurações CSP para aplicativos de codificação em um ambiente especificado. Você pode habilitar ou desabilitar a aplicação da Política de Segurança de Conteúdo (CSP), configurar um endereço de relatório e atualizar diretrizes individuais.
<#
.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
Para usar as funções do PowerShell, forneça um token de autenticação. Use a CLI de Autenticação da Microsoft para gerar esse token. Consulte a documentação deles para obter instruções de instalação. Depois de instalar a ferramenta, use o seguinte comando para gerar um token de autenticação:
$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
Exemplos
Os exemplos a seguir mostram como usar as funções auxiliares do PowerShell para gerenciar as configurações de CSP.
Recuperar configurações
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 ou desabilitar a imposição
Use o -Enabled parâmetro para ativar ou desativar a imposição do CSP para aplicativos de código.
Set-CodeAppContentSecurityPolicy -Token $token -Env "<your-env-id>" -Enabled $true
Habilitar ou desabilitar relatórios
Utilize o parâmetro -ReportingEndpoint para especificar para onde os relatórios de violação do CSP são enviados ou passe $null para desabilitar os relatórios.
Set-CodeAppContentSecurityPolicy -Token $token -Env "<your-env-id>" -ReportingEndpoint "https://contoso.com/report"
Para desabilitar a geração de relatórios, passe $null:
Set-CodeAppContentSecurityPolicy -Token $token -Env "<your-env-id>" -ReportingEndpoint $null
Atualizar diretivas
Aviso
A atualização das diretivas substitui toda a coleção de diretivas. Para atualizar as diretivas existentes, primeiro obtenha-as e depois atualize-as diretamente.
Para redefinir uma diretiva para seu valor padrão, omita-a da coleção. Para desabilitar totalmente uma diretiva, passe uma matriz vazia para a diretiva.
$env = "<your-env-id>"
$directives = (Get-CodeAppContentSecurityPolicy -Token $token -Env $env).Directives
# Update existing directives
Set-CodeAppContentSecurityPolicy -Token $token -Env $env -Directives $directives