requirements.txt - fametrahana pip requirements.txt - fijanonan'ny pip requirements.txt

Loza miafina amin'ny Requirements.txt: Ahoana no ahafahan'ny Dependency Pinning mamonjy anao

requirements.txt: Fitaovana fototra sa fandrahonana miafina?

Manana izany ny tetikasa Python rehetra. Ilay endrika tsy manan-tsiny requirements.txt mipetraka eo amin'ny fototry ny repo-nao, ny rakitra pip install requirements.txt consumes, dia lisitry ny fiankinan-doha, mazava ho azy, fa raha tsy mitandrina ianao dia mety ho varavarana misokatra malalaka mankany amin'ny fananganana tsy marin-toerana, fonosana marefo ary olana ara-piarovana lehibe ihany koa izany.

Ao amin'ny fotony, fitakiana.txt mifehy izay fonosana avy amin'ny antoko fahatelo izay sintonin'ny fampiharanao. Rehefa miasa ianao pip install -r requirements.txt, ny mpitantana ny fonosana Python dia mametraka ny fiankinan-doha rehetra voatanisa. Saingy ity ny olana: raha tsy mametraka dikan-teny marina ianao dia matoky ny PyPI mba hanolotra dikan-teny azo antoka, mifanaraka ary tsy novaina foana, isaky ny mandeha. Tsy izany no fomba fiasan'ny AppSec maoderina.

Raha tsy misy pinning dia mety ho simba ny builds. Ratsy kokoa aza, mety tsy ho fantatrao ny fangatahanao handray fonosana manimba. Open-ended versioning (Tavoara >=1.0, ohatra) na fameperana amin'ny dikan-teny malalaka (django~=3.2) dia tany lonaka ho an'ny fampidirana kaody tsy azo antoka. Izany no antony tokony handaminana tsara ny fitakiana.txt dia asa fototra momba ny fiarovana.

Aiza no misy ny pip freeze sy ny pip install requirements.txt Famaritana

fijanonan'ny fantsona mety, nefa mampidi-doza ihany koa rehefa ampiasaina tsy mahatakatra izay voarainy. Matetika ny mpamorona dia mamorona fitakiana.txt mampiasa pip freeze requirements.txt, manantena fa hanidy ny tontolo iainany izy. Saingy ny freeze dia tsy manamarina ny fiarovana na ny niandohan'ny fiankinan-doha; fa manala fotsiny izay rehetra napetraka amin'izao fotoana izao, anisan'izany ny fonosana transitive sy mety ho efa lany andro.

Alaivo sary an-tsaina ange ny mpiara-miasa aminao, na ny CI-nao, mihazakazaka an-jambany fotsiny pip install -r requirements.txtRaha toa ka misy rakitra efa tsy ampiasaina intsony, marefo, na dia fonosana misy diso tsipelina, vao avy nanao ho azy ny tranga fiarovana ianao.

Ohatra haingana:

# Developer's freeze output pip freeze > requirements.txt boto3==1.24.20 requests==2.27.1 

⚠️ Ohatra tsy azo antoka, aza ampiasaina amin'ny famokarana

Ampio amin'ny CI-nao izao ity pipeline:

- name: Install dependencies run: pip install -r requirements.txt

Matoky ianao fa azo averina ny tontolo iainana, tsy misy fiovana ao amin'ny PyPI, ary izany fiankinan-doha rehetra mbola azo antoka. Fiheverana goavana izany rehefa miantehitra amin'ny pip freeze requirements.txt workflows.

Loza tena izy amin'ny AppSec: Fisafotofotoana amin'ny fampiasana typosquatting sy fiankinan-doha amin'ny requirements.txt

Tian'ireo mpanafika ny tontolo iainana open-source. Fa maninona? Satria matetika ireo mpamorona rindrambaiko dia miantehitra amin'ny "defaults" sy ny fitokisana an-kolaka. Toy izao ny fomba fampiasan'izy ireo ny "ecosystems" fitakiana.txt:

  • Typosquatting: Fampidirana fonosana manimba manana anarana toy ny fangatahana raha tokony ho fangatahanaRaha latsaky ny iray ny endri-tsoratra dia efa lasa fananana ny fanangananao.

fangatahana # ⚠️ Ohatra fanoharana, fa tsy fonosana tena izy hapetraka

  • Fisafotofotoana momba ny fiankinan-dohaRaha tsy voasokajy na voasokajy manokana ny fonosana anatiny, dia afaka mamoaka dikan-teny ratsy ao amin'ny PyPI mitovy anarana amin'izany ireo mpanafika. Raha tsy manamarina ny loharano ny CI-nao, dia ianao no hametraka ny fonosany fa tsy ny anao.

Samy manararaotra ny tsy fahampian'ny pinning sy ny fanaraha-maso ny loharano henjana ireo fanafihana roa ireo. fitakiana.txtRaha ny anao milaza fotsiny lib-anatiny sasany, ary mihazakazaka ianao pip install requirements.txt ao amin'ny CI, mety haka fonosana diso avy amin'ny toerana diso izy.

Fametrahana ny requirements.txt ao amin'ny CI/CD Pipelines miaraka amin'ny Hashes sy Pinning

Toy izao ny fomba hanamafisana fitakiana.txt manohitra ny fandrahonana tena izy:

  • Ampidiro ny dikan-teny marina: Ampiasao foana == ho an'ny fonosana tsirairay ao amin'ny anao fitakiana.txtTsy misy wildcard, tsy misy elanelana.
  • Use -mitaky-hashes: Izany dia mahatonga pip install -r requirements.txt hamarino ny fahamarinan'ny fonosana alaina rehetra.

ohatra:

flask==2.2.5 \ --hash=sha256:<actual_hash_here> 

⚠️ Ohatra iray, soloo amin'ny tenifototra tena izy amin'ny tetikasa tena izy

  • Saraho ireo zavatra namboarinaoAtaovy ao anaty fitoeran-javatra madio sy tsy dia misy fangarony foana. Aza matoky an-jambany fotsiny ny sary fototra.
  • Mampiasà index PyPI manokanaMampiantrano ny proxy/cache-nao manokana ary mitaratra ireo fonosana azo itokisana ihany.

Alefaso ny scan dependencyAmpidiro ireo fitaovana toy ny fanaraha-maso ny pip na fampiasana SBOMfanadihadiana mifototra amin'ny anao pipelines.

Ohatra amin'ny sombin-dahatsoratra GitHub Actions:

- name: Secure install   run: pip install --require-hashes -r requirements.txt

⚠️ Fanabeazana pipeline ohatra, mifanaraka amin'ny tontolo iainanao

Fitantanana hentitra ny pip install -r requirements.txt in CI/CD no iray amin'ireo fomba mora indrindra hampihenana ny risika amin'ny loharano misokatra.

Fanamboarana azo averina: Fitazonana azy ireo ho marin-toerana manerana ny tontolo iainana

Raha miasa eo an-toerana ny fampiharanao saingy tsy mahomby amin'ny staging na prod, dia misy fiankinan-doha tsy mitovy amin'ny fitakiana.txt no mahazatra. Na dia ny fiovaovan'ny dikan-teny kely aza dia miteraka olana lehibe.

Ampiasao ireto paikady ireto:

  • pip-fitaovana: Mampiasà pip-compile hiteraka fitakiana.txt avy amin'ny fepetra takiana.inMamaha ny fiankinan-doha amin'ny alàlan'ny fametahana pin mety izy io.
  • Marika momba ny tontolo iainanaHo an'ny fonosana manokana ho an'ny OS na fiankinan-doha manokana amin'ny dikan-teny Python, ampiasao marika toy ny platform_system == 'Linux'.
  • Docker cachingAo amin'ny CI, tehirizo ao amin'ny cache ny sosona Docker-nao rehefa avy mametraka dependencies avy amin'ny fitakiana.txt mba hampihenana ny fiovaovan'ny fanorenana.

Ohatra amin'ny pip-tools:

# requirements.in flask  # Compile pip-compile requirements.in 

⚠️ Ohatra iray, miankina amin'ny tontolo iainanao ny vokatra tena izy

Voatsindrona tanteraka ny vokatra fitakiana.txt.

Fitaovana toy ny fijanonan'ny fantsona, rehefa atambatra amin'ny pip install -r requirements.txt mandritra ny fanorenana, dia mitaky fitsipi-pifehezana sy fiarovana fanampiny.

Fehiny: Fametrahana amim-pahatokiana ny zavatra takinao

Fitantanana tsy mety fitakiana.txt Tsy fomba fanao ratsy fotsiny izany; fa risika ara-piarovana mavitrika. Ny fametrahana tsy voaaro, ny fametrahana tsy voamarina, ary ny fitokisana jamba amin'ny rejisitra misokatra no fomba fanararaotan'ny mpanafika ny anao CI/CD pipelineTsy lesoka ara-teoria ireo; fa hararaotina isan'andro.

Ny "dependency pinning" dia mihoatra noho ny fomba fanao tsara indrindra. Io no fiarovana voalohany amin'ny fanafihana amin'ny rojo famatsiana amin'ny Python. Ampiarahina amin'izany -mitaky-hashes, fananganana fitokana-monina, ary fitaovana azo averina toy ny pip-fitaovana, ary mahazo a pipeline sarotra kokoa ny marimaritra iraisana amin'izany.

Na mampiasa ianao pip install requirements.txt eo an-toerana na ao amin'ny CI, hamarino sy araho maso foana izay miditra amin'ny fanangananao. Fitaovana toy ny Xygeni manome fahitana, fampiharana ny politika, ary fanamarinana mandeha ho azy izay manidy ny rojo famatsiana Python anao pip freeze requirements.txt mandritra ny famokarana rehetra.

fitaovana-fandrafetana-rindrambaiko-sca-fitaovana-famakafakana-firafitra
Ataovy laharam-pahamehana, amboary ary arovy ny loza mety hitranga amin'ny rindrambaikonao
Alao ny kaontinao maimaim-poana.
Tsy mila carte de crédit.

Arovy ny Famoronana sy ny Fanaterana Rindrambaiko Anao

miaraka amin'ny Xygeni Product Suite