Hoppa till huvudinnehållet

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-scan blockerar 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ällningPull requestsNedladdningar
Tillåtna licenserGodkänns alltid. De blockeras aldrig och flaggas aldrig av tröskeln.Godkänns.
Nedladdningar: endast tillåtna licenserIngen effekt.Varje licens som inte står på listan över tillåtna licenser nekas. Kräver minst en tillåten licens.
Nekade licenserBlockerar merge.Nekas.
Licenser som varnarRådgivande fynd.Tillåts med en varning.
Okänd licensallow, warn eller block för en licens som saknas eller inte är ett SPDX-uttryck.Samma sak.
Flera licenserall: 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ånEn 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;
  • all för flera licenser när något av omfången angav all;
  • 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

EndpointScopeGör
GET /orgs/{org}/licence-policypolicy:readPolicyn (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/previewpolicy:readEndast läsning. Ändringarna per omfång och de licenser vars resultat ändras.
PUT /orgs/{org}/licence-policypolicy:writeSparar 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.

Relaterat