Licenspolitik
Licenspolitikken afgør, hvad en afhængigheds licens betyder to steder:
- Pull requests. Licensscanningen vurderer
licenserne for en pull requests afhængigheder, og tjekket
fremforge/license-scanblokerer eller advarer. - Downloads. Pakkepolitikken vurderer licenserne for en fil i dit registry, før den må downloades.
Begge læser de samme lister. Åbn den under Sikkerhed › Politikker › Licenspolitik. Kun en ejer af organisationen kan gemme den.
Reglerne
| Indstilling | Pull requests | Downloads |
|---|---|---|
| Tilladte licenser | Består altid. De blokeres eller markeres aldrig af tærsklen. | Består. |
| Downloads: kun tilladte licenser | Ingen virkning. | Enhver licens, der ikke står på listen over tilladte, afvises. Kræver mindst én tilladt licens. |
| Afviste licenser | Blokerer merge. | Afvises. |
| Licenser, der giver advarsel | Fund til orientering. | Tilladt med en advarsel. |
| Ukendt licens | allow, warn eller block for en licens, der mangler eller ikke er et SPDX-udtryk. | Det samme. |
| Flere licenser | all: hver licens, en komponent angiver, skal bestå. any: én licens, der består, er nok. | Det samme, for et udtryk som MIT OR GPL-3.0-only. |
| Pull requests: bloker ved | En licens, der ikke står på nogen liste, blokerer på eller over dette niveau og er til orientering under det. Standard er restricted. | Ingen tærskel. |
Listernes poster er SPDX-identifikatorer, én pr. linje, såsom MIT,
LicenseRef-acme eller GPL-2.0-only WITH Classpath-exception-2.0. Der skelnes
ikke mellem store og små bogstaver. En licens kan kun stå på én liste. Hver liste
rummer op til 100 poster. I et udtryk tjekkes hver licens for sig: med OR er
én licens, der består, nok; med AND skal hver licens bestå.
Når pull requests og downloads stadig er forskellige
Før denne side fandtes, havde hvert område sine egne lister, på fanen Licenser og på siden Pakkepolitikker. Intet blev migreret. Hvis dine to sæt allerede er enige, viser siden dem som én politik. Hvis de er forskellige, siger siden det og udfylder formularen med et forslag, hvor den strengeste regel vinder for hvert område:
- de afviste licenser fra begge;
- de advarende licenser fra begge, uden de afviste;
- den strengeste handling for ukendte licenser;
allfor flere licenser, når et af områderne havdeall;- for lister over tilladte: de licenser, der står på begge lister, eller den ene liste, der har poster. En licens, der også er afvist eller advarende, fjernes fra listen over tilladte.
En liste over tilladte kan ikke altid flettes uden at løsne et område. I de tilfælde viser siden en note. For eksempel bliver en liste over tilladte for downloads også listen over tilladte for pull requests, så de licenser begynder at bestå i pull requests.
Intet ændres, før du gemmer.
Se resultatet, før du gemmer
Under Hvad det ændrer at gemme viser siden:
- hver gemt indstilling, der ændres, for pull requests og for downloads;
- hver licens, hvis resultat ændres, med resultatet før og efter i hvert område. Den tjekker almindelige licenser og hver licens, dine pull requests har mødt.
Gem licenspolitik tilbydes kun for den politik, hvis ændringer står på skærmen. Hvis du redigerer formularen, så vælg Vis ændringer først. Det tilbydes ikke at gemme, hvis det intet ville ændre.
Ikke en del af denne politik
- Om pull requests scannes. Slå licensscanning til eller fra under Sikkerhed › Politikker › Scannere.
- Tilstand for download-gaten. Fra, Skygge eller Håndhæv forbliver på Pakkepolitikker.
- Tilsidesættelser pr. repository af reglerne for pull requests. De står nederst på denne side, se Tilsidesættelser pr. repository.
- Licensindstillinger pr. type i en pakkepolitik. En pakketype, der har sine egne licensregler, beholder dem. Siden viser de typer.
- Undtagelser for én komponent og licens.
API
| Endpoint | Scope | Gør |
|---|---|---|
GET /orgs/{org}/licence-policy | policy:read | Politikken (unified: true), eller policy: null med forslaget proposal, hvor det strengeste vinder, og dets proposal_notes. Desuden de gemte felter for hvert område og package_policy_version. |
POST /orgs/{org}/licence-policy/preview | policy:read | Kun læsning. Ændringerne pr. område og de licenser, hvis resultat ændres. |
PUT /orgs/{org}/licence-policy | policy:write | Gemmer politikken i begge områder. Alle felter er påkrævede. Send 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 forældet package_policy_version afvises med 409 policy-version-conflict. En licens på to lister afvises med 400 licence-on-two-lists. Når politikken gemmes, registreres det i revisionsloggen
som security.licence_policy.updated med hvert ændret felt. Download-siden
registreres også som package_policy.updated.
De ældre endpoints virker stadig og skriver kun til ét område:
PUT /orgs/{org}/code-security/licenses/settings og licensfelterne i
PUT /orgs/{org}/package-policy. Hvis du bruger dem, viser siden igen de to
områder som forskellige.