Gå til hovedinnhold

Lisenspolicy

Lisenspolicyen avgjør hva lisensen til en avhengighet betyr på to steder:

  • Pull requests. Lisensskanningen vurderer lisensene til avhengighetene i en pull request, og sjekken fremforge/license-scan blokkerer eller advarer.
  • Nedlastinger. Pakkepolicyen vurderer lisensene til en fil i registeret ditt før den kan lastes ned.

Begge leser de samme listene. Åpne den under Sikkerhet › Policyer › Lisenspolicy. Bare en eier av organisasjonen kan lagre den.

Reglene

InnstillingPull requestsNedlastinger
Tillatte lisenserGodkjennes alltid. De blir aldri blokkert eller flagget av terskelen.Godkjennes.
Nedlastinger: bare tillatte lisenserIngen effekt.Alle lisenser som ikke står på tillatt-listen, avvises. Krever minst én tillatt lisens.
Blokkerte lisenserBlokkerer merge.Avvises.
Lisenser som gir advarselFunn til informasjon.Tillates med en advarsel.
Ukjent lisensallow, warn eller block for en lisens som mangler eller ikke er et SPDX-uttrykk.Det samme.
Flere lisenserall: hver lisens en komponent oppgir, må godkjennes. any: én godkjent lisens er nok.Det samme, for et uttrykk som MIT OR GPL-3.0-only.
Pull requests: blokker vedEn lisens som ikke står på noen liste, blokkerer på eller over dette nivået og er til informasjon under det. Standard er restricted.Ingen terskel.

Oppføringene i listene er SPDX-identifikatorer, én per linje, for eksempel MIT, LicenseRef-acme eller GPL-2.0-only WITH Classpath-exception-2.0. Samsvaret skiller ikke mellom store og små bokstaver. En lisens kan bare stå på én liste. Hver liste kan ha opptil 100 oppføringer. I et uttrykk sjekkes hver lisens for seg: med OR er én godkjent lisens nok, med AND må alle lisensene godkjennes.

Når pull requests og nedlastinger fortsatt er ulike

Før denne siden fantes, hadde hvert omfang sine egne lister, på fanen Licences og på siden Package policies. Ingenting ble migrert. Hvis de to settene dine allerede er like, viser siden dem som én policy. Hvis de er ulike, sier siden fra og fyller ut skjemaet med et forslag der den strengeste regelen vinner for hvert omfang:

  • de avviste lisensene fra begge;
  • lisensene med advarsel fra begge, uten de avviste;
  • den strengeste handlingen for ukjente lisenser;
  • all for flere lisenser når ett av omfangene sa all;
  • for tillatt-lister: lisensene som står på begge listene, eller den ene listen som har oppføringer. En lisens som også er avvist eller har advarsel, tas ut av tillatt-listen.

En tillatt-liste kan ikke alltid slås sammen uten å løsne på et omfang. I slike tilfeller viser siden en merknad. For eksempel blir en tillatt-liste for nedlastinger også tillatt-listen for pull requests, slik at de lisensene begynner å bli godkjent i pull requests.

Ingenting endres før du lagrer.

Se resultatet før du lagrer

Under What saving changes viser siden:

  • hver lagrede innstilling som endres, for pull requests og for nedlastinger;
  • hver lisens der resultatet endres, med resultatet før og etter i hvert omfang. Den sjekker vanlige lisenser og alle lisenser pull requestene dine har støtt på.

Save licence policy tilbys bare for den policyen som har endringene på skjermen. Redigerer du skjemaet, velger du Preview changes først. En lagring som ikke ville endret noe, tilbys ikke.

Ikke en del av denne policyen

  • Om pull requests skannes. Slå lisensskanning av eller på under Sikkerhet › Policyer › Skannere.
  • Modus for nedlastingssperren. Off, Shadow eller Enforce forblir på Pakkepolicyer.
  • Overstyringer per repository av reglene for pull requests. De står nederst på denne siden, se Overstyringer per repository.
  • Lisensinnstillinger per pakketype i en pakkepolicy. En pakketype som har sine egne lisensregler, beholder dem. Siden viser disse typene.
  • Unntak for én komponent og lisens.

API

EndepunktScopeGjør
GET /orgs/{org}/licence-policypolicy:readPolicyen (unified: true), eller policy: null med forslaget der det strengeste vinner (proposal) og tilhørende proposal_notes. I tillegg de lagrede feltene for hvert omfang og package_policy_version.
POST /orgs/{org}/licence-policy/previewpolicy:readBare lesing. Endringene per omfang og lisensene der resultatet endres.
PUT /orgs/{org}/licence-policypolicy:writeLagrer policyen i begge omfang. Alle felt er påkrevd. Send med package_policy_version du leste.
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 utdatert package_policy_version avvises med 409 policy-version-conflict. En lisens på to lister avvises med 400 licence-on-two-lists. En lagring revisjonslogges som security.licence_policy.updated med hvert endret felt. Nedlastingssiden revisjonslogges i tillegg som package_policy.updated.

De eldre endepunktene virker fortsatt og skriver bare til ett omfang: PUT /orgs/{org}/code-security/licenses/settings og lisensfeltene i PUT /orgs/{org}/package-policy. Bruker du dem, viser siden de to omfangene som ulike igjen.

Relatert