Licenspolicy
Licenspolicyn avgör vad ett beroendes licens betyder på två ställen:
- Pull requests. Licensskanningen bedömer
licenserna för en pull requests beroenden, och kontrollen
fremforge/license-scanblockerar eller varnar. - Nedladdningar. Paketpolicyn bedömer licenserna för en fil i ditt registry innan den får laddas ned.
Båda läser samma listor. Du hittar policyn under Säkerhet › Policyer › Licenspolicy. Bara en ägare av organisationen kan spara den.
Reglerna
| Inställning | Pull requests | Nedladdningar |
|---|---|---|
| Tillåtna licenser | Godkänns alltid. De blockeras aldrig och flaggas aldrig av tröskeln. | Godkänns. |
| Nedladdningar: endast tillåtna licenser | Ingen effekt. | Varje licens som inte står på listan över tillåtna licenser nekas. Kräver minst en tillåten licens. |
| Nekade licenser | Blockerar merge. | Nekas. |
| Licenser som varnar | Rådgivande fynd. | Tillåts med en varning. |
| Okänd licens | allow, warn eller block för en licens som saknas eller inte är ett SPDX-uttryck. | Samma sak. |
| Flera licenser | all: varje licens som en komponent anger måste godkännas. any: det räcker att en licens godkänns. | Samma sak, för ett uttryck som MIT OR GPL-3.0-only. |
| Pull requests: blockera från | En licens som inte står på någon lista blockerar på eller över den här nivån och är rådgivande under den. Standard är restricted. | Ingen tröskel. |
Posterna i listorna är SPDX-identifierare, en per rad, till exempel MIT,
LicenseRef-acme eller GPL-2.0-only WITH Classpath-exception-2.0.
Matchningen skiljer inte på versaler och gemener. En licens kan bara stå på en
lista. Varje lista rymmer högst 100 poster. I ett uttryck kontrolleras varje
licens för sig: med OR räcker det att en licens godkänns, med AND måste
alla licenser godkännas.
När pull requests och nedladdningar fortfarande skiljer sig åt
Innan den här sidan fanns hade varje omfång egna listor, på fliken Licenser och på sidan Paketpolicyer. Ingenting migrerades. Om dina två uppsättningar redan stämmer överens visar sidan dem som en enda policy. Om de skiljer sig åt säger sidan det och fyller i formuläret med ett förslag där den striktare regeln vinner för varje omfång:
- de nekade licenserna från båda;
- de varnande licenserna från båda, utom de nekade;
- den striktare åtgärden för okända licenser;
allför flera licenser när något av omfången angavall;- för listorna över tillåtna licenser: de licenser som står på båda listorna, eller den enda lista som har poster. En licens som också är nekad eller varnande tas bort från listan över tillåtna.
En lista över tillåtna licenser kan inte alltid slås ihop utan att ett omfång blir mindre strikt. I de fallen visar sidan en notering. Till exempel blir en lista över tillåtna licenser för nedladdningar även listan över tillåtna licenser för pull requests, så att de licenserna börjar godkännas i pull requests.
Ingenting ändras förrän du sparar.
Se resultatet innan du sparar
Under Vad det ändrar att spara listar sidan:
- varje sparad inställning som ändras, för pull requests och för nedladdningar;
- varje licens vars resultat ändras, med resultatet före och efter i varje omfång. Sidan kontrollerar vanliga licenser och varje licens som dina pull requests har stött på.
Spara licenspolicy erbjuds bara för den policy vars ändringar visas på skärmen. Om du redigerar formuläret väljer du Visa ändringar först. En sparning som inte skulle ändra något erbjuds inte.
Inte en del av den här policyn
- Om pull requests skannas. Slå på eller av licensskanning under Säkerhet › Policyer › Skannrar.
- Läge för nedladdningsspärren. Av, Skugga eller Tvinga ställs fortfarande in under Paketpolicyer.
- Undantag per repository från reglerna för pull requests. De finns längst ned på den här sidan, se Undantag per repo.
- Licensinställningar per typ i en paketpolicy. En pakettyp som har egna licensregler behåller dem. Sidan listar de typerna.
- Undantag för en enskild komponent och licens.
API
| Endpoint | Scope | Gör |
|---|---|---|
GET /orgs/{org}/licence-policy | policy:read | Policyn (unified: true), eller policy: null med förslaget där den striktare regeln vinner (proposal) och dess proposal_notes. Dessutom de sparade fälten för varje omfång och package_policy_version. |
POST /orgs/{org}/licence-policy/preview | policy:read | Endast läsning. Ändringarna per omfång och de licenser vars resultat ändras. |
PUT /orgs/{org}/licence-policy | policy:write | Sparar policyn i båda omfången. Alla fält är obligatoriska. Skicka med den package_policy_version du läste. |
curl -X PUT "https://frem.sh/_app/api/v1/orgs/acme/licence-policy" \
-H "Authorization: Bearer $FREMFORGE_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"allow": ["MIT", "Apache-2.0", "BSD-3-Clause"],
"deny": ["AGPL-3.0-only", "SSPL-1.0"],
"warn": ["MPL-2.0"],
"allow_only_downloads": false,
"unknown": "warn",
"multiple": "all",
"block_severity": "restricted",
"package_policy_version": 7
}'En inaktuell package_policy_version nekas med 409 policy-version-conflict. En licens som står på två listor nekas med 400 licence-on-two-lists. En sparning granskningsloggas som
security.licence_policy.updated med varje ändrat fält. Nedladdningssidan
granskningsloggas dessutom som package_policy.updated.
De äldre endpointerna fungerar fortfarande och skriver bara till ett omfång:
PUT /orgs/{org}/code-security/licenses/settings och licensfälten i
PUT /orgs/{org}/package-policy. Om du använder dem visar sidan de två
omfången som olika igen.