Skip to main content
Drupalista.sk

Main navigation

  • Home
User account menu
  • Kontakt

Breadcrumb

  1. Home

Ako v Drupale presunúť API kľúče a citlivé dáta do .env?

By drupalista, 12 March, 2024

Pred časom som pre jedného klienta programoval jednoduchý modul na integráciu so službou tretej strany. K tomu, aby fungoval, bolo potrebné mať vygenerovaný API kľúč, ktorý som v module ukladal do konfigurácie. Keď som konfiguráciu vyexportoval a pushol na github, prakticky o niekoľko sekúnd som dostal e-mail o tom, že kľúč bol kompromitovaný. Akoby nie - bol to verejný repozitár a tak ho mohol vidieť ktokoľvek. Hneď prvé riešenie, ktoré mi napadlo, bolo nastaviť repozitár ako privátny. To som aj spravil, ale aj tak mi vŕtalo hlavou či neexistuje lepší spôsob ako ukladať takéto citlivé údaje. Existuje ich viac, ukážeme si teraz jeden konkrétny. Budeme k tomu využívať moduly dotenv a key.

Načo nám budú tie moduly?

Modul dotenv zabezpečí to, aby si Drupal vedel nájsť súbor .env do ktorého budeme tieto citlivé údaje ukladať a ktorý bude bezpečne ukrytý pred zrakmi prípadných zneužitiachtivých osôb. Tieto kroky sa, samozrejme, dajú spraviť aj manuálne a v popise modulu je k tomu dokonca aj návod, ale keďže sme pohodlní, necháme aby to modul spravil za nás.

Modul key je viac vecí, ale my ho využijeme na to, aby nám nahradil konfiguračné entity za kľúče, ku ktorým on si potom vie priradiť príslušné hodnoty podľa toho ako mu povieme.

Poďme sa na to pozrieť.

Vitaj v našej codebase, .env!

Súbor .env istotne poznáte, akurát že štandardne v drupalovskej codebase nie je. Ale my si nainštalujeme modul dotenv a spustíme nový drush príkaz drush dotenv:init, ktorý spraví nasledovné:

  • vytvorí .env súbor a zapíše doň údaje k prihláseniu sa k databáze zo settings.php
    - vytvorí príslušný .env.example súbor
    - pridá .env do .gitignore - toto je dôležité, ináč by sme sa ocitli presne tam, kde ja na začiatku tohto článku
    - pridá súbor load.environment.php do codebase a nastaví jeho autoload v composer.json

V dokumentácii k tomuto modulu sa dočítate aj návod na manuálne nastavenie. My budeme mať po spustení drush príkazu všetko pripravené, takže môžeme rovno do .env súboru pridať napríklad náš API kľúč, napríklad:

MAILCHIMP_API=553ae7da92f5505a92bbb8c9d47be76ab9f65bc2

...a teraz prichádza na rad modul key.

Nainštalujeme ho a v administrácii pridáme nový kľúč (admin/config/system/keys/add). Zvolíme si meno, podľa ktorého ho budeme identifikovať a typ. V prípade API kľúča to bude authentication. Kľúčovým nastavením v tomto prípade bude Provider settings, kde zvolíme environment. To totiž znamená, že si Drupal. resp. modul key bude čítať tento kľúč z .env súboru, resp. z $_ENV premennej. Hodnotu necháme prázdnu. Uložíme, ale to ešte nie je všetko. Keď sa vrátime na zoznam kľúčov, pri našom kľúči zvolíme v Operations menu možnosť Add config override. V tomto formulári zvolíme hodnotu v konfigurácii, ktorú chceme prepísať.

Teraz keď vyexportujeme konfiguráciu, pre ktorú sme pridali override, všimneme si, že miesto API hodnoty je tam teraz hodnota null. Tak je to správne, o tom nám celý čas išlo - dostať citlivé dáta preč z yml súborov konfigurácie.

Teraz môžete pokojne pushnúť celý codebase do verejného github repozitára a žiadna kompromitácia vám nehrozí. Práve naopak - vaše citlivé dáta budú chránené ešte lepšie ako predtým.

Tags

  • dotenv
  • key
  • Log in or register to post comments

Comments

Language switcher

  • English
  • Slovak

Recent content

  • Quick idea: How to filter view result by content entity ID?
    2 years ago
  • How to add a new token for existing module?
    2 years ago
  • Drupal Migrate API: How to migrate images
    2 years 5 months ago
RSS feed
Powered by Drupal