Piezīmes
Lai piekļūtu šai lapai, ir nepieciešama autorizācija. Varat mēģināt pierakstīties vai mainīt direktorijus.
Lai piekļūtu šai lapai, ir nepieciešama autorizācija. Varat mēģināt mainīt direktorijus.
Satura drošības politika (CSP) pašlaik tiek atbalstīta modeļa vadītās, audekla un koda programmās. Šajā rakstā ir paskaidrots, kā konfigurēt CSP modeļa vadītām un audekla programmām. Informāciju par koda lietotņu CSP skatiet koda lietojumprogrammu dokumentācijā. Administratori var kontrolēt, vai CSP galvene tiek nosūtīta un, zināmā mērā, ko tā satur. Iestatījumi ir vides līmenī, kas nozīmē, ka tie tiek lietoti visām programmām vidē, kad tie ir ieslēgti.
Piezīmes
Satura drošības politika attiecas tikai uz vidi, kas izmanto Dataverse.
Katrs CSP galvenes vērtības komponents kontrolē lejupielādējamos līdzekļus. Mozilla izstrādātāju tīkls (MDN) sniedz detalizētākus aprakstus. Noklusējuma vērtības ir šādas:
| Direktīva | Noklusējuma vērtība | Pielāgojami |
|---|---|---|
| skripts-src | * 'unsafe-inline' 'unsafe-eval' blob: |
Nē. |
| Strādnieks-SRC | 'self' blob: |
Nē. |
| stils-src | * 'unsafe-inline' blob: |
Nē. |
| fonts-src | * data: |
Nē. |
| Rāmja senči | 'self' https://*.powerapps.com |
Jā |
Šīs konfigurācijas rezultātā tiek izveidots noklusējuma CSP script-src * 'unsafe-inline' 'unsafe-eval' blob: ; worker-src 'self' blob:; style-src * 'unsafe-inline' blob:; font-src * data:; frame-ancestors 'self' https://*.powerapps.com;.
Stingrs režīms
Stingrā CSP pārslēgs izveido CSP, kurā lielākoties nav iekļautas aizstājējzīmes vai nedrošas direktīvas, piemēram unsafe-inline, . Ieslēdzot stingro CSP, iepriekšējās direktīvas kļūst par tālāk norādītajām direktīvām, kas aprakstītas šajā sadaļā. Šis <platform> apzīmējums nozīmē, ka platformas domēni tiek nodrošināti atbilstoši produkta prasībām. Šajā sadaļā esošie domēni laika gaitā var mainīties, pieaugot produktam.
| Direktīva | Noklusējuma vērtība (atkarīga no modeļa) | Noklusējuma vērtība (audekls) | Pielāgojami |
|---|---|---|---|
| skripts-src | 'self' blob: <platform>' |
'self' <platform>' |
Jā |
| Strādnieks-SRC | 'self' blob: |
'self' blob: |
Nē. |
| stils-src | 'self' 'unsafe-inline' blob: <platform> |
'self' 'unsafe-inline' <platform> |
Jā |
| fonts-src | 'self' data: <platform> |
'self' data: <platform> |
Jā |
| Rāmja senči | 'self' https://*.powerapps.com |
'self' https://*.powerapps.com |
Jā |
| IMG-SRC | 'self' blob: data: <platform> |
'self' data: <platform> |
Jā |
| savienot-src | 'self' blob: data: wss: <platform> |
'self' blob: <platform> |
Jā |
| rāmis-src | 'self' blob: <platform> |
'self' <platform> |
Jā |
| bāze-uri | 'none' |
Nav datu | Nē. |
| Veidlapas darbība | <platform> |
Nav datu | Jā |
| noklusējums-src | 'self' |
'self' |
Nē. |
Priekšnoteikumi
Dynamics 365 klientu iesaistes programmām un citām modeļa vadītām programmām CSP ir pieejams tikai tiešsaistes vidē un organizācijās ar Dynamics 365 Customer Engagement (on-premises), versiju 9.1 vai jaunāku versiju.
Konfigurējiet CSP
CSP var pārslēgt un konfigurēt, izmantojot administrēšanas centru Power Platform . Ir svarīgi vispirms iespējot izstrādes/testēšanas vidi, jo, iespējojot CSP, var sākt bloķēt scenārijus, ja politika tiek pārkāpta. Administrēšanas centrs atbalsta arī tikai atskaišu režīmu, lai atvieglotu ražošanas uzsākšanu.
Lai konfigurētu CSP, veiciet tālāk norādītās darbības.
- Pierakstieties Power Platform administrēšanas centrā.
- Navigācijas rūtī atlasiet Pārvaldīt. Rūtī Pārvaldība atlasiet Vides.
- Lapā Vides atlasiet vidi.
- Komandjoslā atlasiet Iestatījumi.
- Izvērsiet Produkts un pēc tam atlasiet Konfidencialitāte + drošība.
Šajā attēlā parādīts iestatījumu noklusējuma stāvoklis:
Pārskatu veidošana
Pārslēgs Iespējot pārskatus kontrolē, vai modeļa vadītas un audekla programmas sūta pārkāpumu ziņojumus. Lai to iespējotu, norādiet galapunktu. Lietotne nosūta ziņojumus par pārkāpumiem uz šo galapunktu neatkarīgi no tā, vai CSP tiek piemērots vai nē. Ja CSP netiek piemērots, lietotnē tiek izmantots tikai pārskatu režīms. Lai iegūtu vairāk informācijas, skatiet ziņošanas dokumentāciju.
Izpilde
CSP izpilde tiek kontrolēta neatkarīgi no modeļa un kanvas lietotnēm, lai nodrošinātu detalizētu politiku kontroli. Izmantojiet uz modeli balstītu/kanvas rakursu, lai mainītu paredzēto lietotnes veidu.
Pārslēgs Ieviest satura drošības politiku ieslēdz noklusējuma politiku izpildei konkrētajam lietotnes tipam. Ieslēdzot šo pārslēgu, tiek mainīta lietotņu darbība šajā vidē, lai ievērotu politiku. Tāpēc izpildiet šo ieteikto iespējošanas plūsmu:
- Politikas ieviešana izstrādātāja vai testa vidē.
- Ražošanas režīmā iespējojiet tikai atskaites režīmu.
- Ieviest politiku ražošanā, kad nav ziņots par pārkāpumiem.
Norādījumu konfigurēšana
Sadaļa Direktīvu konfigurēšana ļauj kontrolēt atsevišķas politikas direktīvas. Pašlaik direktīvu var pielāgot frame-ancestors tikai.
Ja atstājat ieslēgtu noklusējuma direktīvu, tiek izmantota tabulā norādītā noklusējuma vērtība. Ja izslēdzat pārslēgu, varat norādīt pielāgotas direktīvas vērtības un pievienot tās noklusējuma vērtībai. Šajā piemērā ir iestatītas pielāgotas vērtības .frame-ancestors Šajā piemērā direktīva ir noteikta frame-ancestors: 'self' https://*.powerapps.com https://www.foo.com https://www.bar.com . Šis iestatījums nozīmē, ka programmu var viesot vienā un tajā pašā izcelsmē, https://*.powerapps.com, https://www.foo.comun https://www.bar.com, bet ne citā izcelsmē. Izmantojiet pogu Pievienot, lai sarakstam pievienotu ierakstus, un ikonu Dzēst , lai tos noņemtu.
Izplatītas konfig.
Lai Microsoft Teams integrētu, izmantojot programmu Dynamics 365, pievienojiet tālāk norādīto frame-ancestors.
https://teams.microsoft.com/https://teams.cloud.microsoft/https://msteamstabintegration.dynamics.com/
Pievienojiet Dynamics 365 App for Outlook tālāk norādīto frame-ancestors informāciju:
- Outlook Web App sākumlapas izcelsme
https://outlook.office.comhttps://outlook.office365.com
Lai iegultu Power Apps atskaitēs Power BI , pievienojiet tālāk frame-ancestors norādīto informāciju:
https://app.powerbi.comhttps://ms-pbi.pbi.microsoft.com
Svarīgi ieteikumi
Noklusējuma direktīvas izslēgšana un saglabāšana ar tukšu sarakstu izslēdz direktīvu pilnībā un nenosūta to kā daļu no CSP atbildes galvenes.
CSP konfigurācijas piemēri
Šeit ir daži CSP konfigurāciju piemēri.
1. piemērs — atskaišu izslēgšana
Piemērā:
- Ziņošana ir izslēgta.
- Ir iespējota uz modeli balstīta izpilde.
-
frame-ancestorsir pielāgotshttps://www.contoso.comunhttps://www.fabrikam.com.
-
- Kanvas izpilde ir atspējota.
Efektīvās galvenes ir šādas:
- Uz modeļiem balstītas lietotnes:
Content-Security-Policy: script-src * 'unsafe-inline' 'unsafe-eval' blob: data:; worker-src 'self' blob: data:; style-src * 'unsafe-inline' :blob; font-src * data:; frame-ancestors https://www.contoso.com https://www.fabrikam.com; - Audekla programmas: CSP galvene netiek nosūtīta.
2. piemērs — pārskati ir ieslēgti
Piemērā:
- Ziņošana ir ieslēgta.
- Ziņošanas galapunkts ir iestatīts uz
https://contoso.com/reporting-endpoint
- Ziņošanas galapunkts ir iestatīts uz
- Ir iespējota uz modeli balstīta izpilde.
-
frame-ancestorstiek saglabāts kā noklusējums
-
- Kanvas izpilde ir atspējota.
-
frame-ancestorsir pielāgotshttps://www.contoso.com
-
Efektīvās CSP vērtības ir šādas:
- Uz modeļiem balstītas lietotnes:
Content-Security-Policy: script-src * 'unsafe-inline' 'unsafe-eval' blob:; worker-src 'self' blob:; style-src * 'unsafe-inline' blob:; font-src * data:; frame-ancestors 'self' https://*.powerapps.com; report-uri https://contoso.com/reporting-endpoint; - Kanvas lietotnes:
Content-Security-Policy-Report-Only: script-src * 'unsafe-inline' 'unsafe-eval'; worker-src 'self' blob:; style-src * 'unsafe-inline'; font-src * data:; frame-ancestors https://www.contoso.com; report-uri https://contoso.com/reporting-endpoint;
Tieši mainiet organizācijas iestatījumus
CSP var konfigurēt, neizmantojot lietotāja interfeisu, tieši modificējot šos organizācijas iestatījumus:
IsContentSecurityPolicyEnabled kontrolē, vai Content-Security-Policy galvene tiek nosūtīta modeļa vadītās programmās.
ContentSecurityPolicyConfiguration kontrolē kadru priekšteču daļas vērtību (kā redzams iepriekš, tā tiek iestatīta uz
'self'ifContentSecurityPolicyConfigurationnav iestatīts). Definējiet šo iestatījumu, izmantojot JSON objektu ar šādu struktūru —{ "Frame-Ancestor": { "sources": [ { "source": "foo" }, { "source": "bar" } ] } }. Šī konfigurācija nozīmēscript-src * 'unsafe-inline' 'unsafe-eval'; worker-src 'self' blob:; style-src * 'unsafe-inline' blob:; font-src * data:; frame-ancestors 'foo' 'bar';- (No MDN) HTTP Content-Security-Policy (CSP) frame-ancestors direktīvā ir norādīti derīgie vecinātāji, kas var ievietot lapu, izmantojot
<frame>,<iframe>,<object>,<embed>vai<applet>.
- (No MDN) HTTP Content-Security-Policy (CSP) frame-ancestors direktīvā ir norādīti derīgie vecinātāji, kas var ievietot lapu, izmantojot
IsContentSecurityPolicyEnabledForCanvas kontrolē, vai Content-Security-Policy galvene tiek nosūtīta audekla programmās.
ContentSecurityPolicyConfigurationForCanvas kontrolē audekla politiku, izmantojot to pašu procesu, kas aprakstīts
ContentSecurityPolicyConfiguration.ContentSecurityPolicyReportUri kontrolē, vai jāizmanto atskaišu veidošana. Šo iestatījumu izmanto gan modeļa, gan kanvas lietotnēs. Derīga virkne nosūta pārkāpumu ziņojumus uz norādīto galapunktu, izmantojot tikai atskaišu režīmu, ja
IsContentSecurityPolicyEnabled/IsContentSecurityPolicyEnabledForCanvastas ir izslēgts. Tukša virkne atspējo ziņošanu. Lai iegūtu vairāk informācijas, skatiet ziņošanas dokumentāciju.
CSP konfigurēšana bez UI
Īpaši vidēs, kas nav Power Platform administrēšanas centrā, piemēram, vietējās konfigurācijās, administratori var vēlēties konfigurēt CSP, izmantojot skriptus, lai tieši mainītu iestatījumus.
Iespējot CSP bez lietotāja interfeisa
Veiciet tālāk norādītās darbības, lai iespējotu CSP bez lietotāja interfeisa.
- Atveriet pārlūkprogrammas izstrādes rīkus, vienlaikus izmantojot uz modeli balstītu lietotni kā lietotājs ar organizācijas vienības atjaunināšanas privilēģijām (labs variants ir sistēmas administrators).
- Ielīmējiet un izpildiet tālāk norādīto skriptu konsolē.
- Lai iespējotu CSP, nododiet noklusējuma konfigurāciju -
enableFrameAncestors(["'self'"]) - Kā piemērs, kā iespējot citu izcelsmes lietotāju iegulšanu -
enableFrameAncestors(["*.powerapps.com", "'self'", "abcxyz"])
async function enableFrameAncestors(sources) {
const baseUrl = Xrm.Utility.getGlobalContext().getClientUrl();
if (!Array.isArray(sources) || sources.some(s => typeof s !== 'string')) {
throw new Error('sources must be a string array');
}
const orgResponse = await fetch(`${baseUrl}/api/data/v9.1/organizations`);
if (!orgResponse.ok) throw new Error('Failed to retrieve org info');
const orgs = await orgResponse.json();
const { organizationid, contentsecuritypolicyconfiguration, iscontentsecuritypolicyenabled } = orgs.value[0];
console.log(`Organization Id: ${organizationid}`);
console.log(`CSP Enabled?: ${iscontentsecuritypolicyenabled}`);
console.log(`CSP Config: ${contentsecuritypolicyconfiguration}`);
const orgProperty = prop => `${baseUrl}/api/data/v9.1/organizations(${organizationid})/${prop}`;
console.log('Updating CSP configuration...')
const config = {
'Frame-Ancestor': {
sources: sources.map(source => ({ source })),
},
};
const cspConfigResponse = await fetch(orgProperty('contentsecuritypolicyconfiguration'), {
method: 'PUT',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
value: JSON.stringify(config),
}),
});
if (!cspConfigResponse.ok) {
throw new Error('Failed to update csp configuration');
}
console.log('Successfully updated CSP configuration!')
if (iscontentsecuritypolicyenabled) {
console.log('CSP is already enabled! Skipping update.')
return;
}
console.log('Enabling CSP...')
const cspEnableResponse = await fetch(orgProperty('iscontentsecuritypolicyenabled'), {
method: 'PUT',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
value: true,
}),
});
if (!cspEnableResponse.ok) {
throw new Error('Failed to enable csp');
}
console.log('Successfully enabled CSP!')
}
CSP atspējot bez lietotāja interfeisa
Veiciet tālāk norādītās darbības, lai atspējotu CSP bez lietotāja interfeisa.
- Atveriet pārlūkprogrammas izstrādes rīkus, vienlaikus izmantojot uz modeli balstītu lietotni kā lietotājs ar organizācijas vienības atjaunināšanas privilēģijām (labs variants ir sistēmas administrators).
- Ielīmējiet un izpildiet tālāk norādīto skriptu konsolē.
- Lai atspējotu CSP, ielīmējiet konsolē:
disableCSP()
async function disableCSP() {
const baseUrl = Xrm.Utility.getGlobalContext().getClientUrl();
const orgResponse = await fetch(`${baseUrl}/api/data/v9.1/organizations`);
if (!orgResponse.ok) throw new Error('Failed to retrieve org info');
const orgs = await orgResponse.json();
const { organizationid, iscontentsecuritypolicyenabled } = orgs.value[0];
console.log(`Organization Id: ${organizationid}`);
console.log(`CSP Enabled?: ${iscontentsecuritypolicyenabled}`);
const orgProperty = prop => `${baseUrl}/api/data/v9.1/organizations(${organizationid})/${prop}`;
if (!iscontentsecuritypolicyenabled) {
console.log('CSP is already disabled! Skipping update.')
return;
}
console.log('Disabling CSP...')
const cspEnableResponse = await fetch(orgProperty('iscontentsecuritypolicyenabled'), {
method: 'PUT',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
value: false,
}),
});
if (!cspEnableResponse.ok) {
throw new Error('Failed to disable csp');
}
console.log('Successfully disabled CSP!')
}