Hoppa till innehåll

Isolering

Rudel är ett överlagringssystem som väljs per förfrågan. En vald förfrågan använder sandlådans databastabeller och temafiler medan den fortfarande körs genom värdens WordPress-installation.

Isolerat per sandlåda

WordPress-tabeller

Varje sandlåda får ett genererat tabellprefix: värdens prefix plus de första sju hextecknen i MD5 för sandlådans ID.

Text
wp_b65338d_options
wp_b65338d_posts
wp_b65338d_users

Rudel byter WordPresss tabellprefix innan WordPress har startat klart, så varje fråga under en sandlådeförfrågan läser och skriver sandlådans kopior.

Användare

Tabellerna users och usermeta klonas tillsammans med resten. En sandlåda börjar med värdens användare och lösenord vid skapandet; därefter påverkar användare som skapas, ändras eller tas bort i sandlådan inte värden, och ändringar på värden når inte sandlådan.

Aktiva temafiler

Det valda temat kopieras till sandlådans katalog:

Text
wp-content/rudel-environments/{environment_id}/themes/{theme_slug}

Om temat är ett barntema kopierar Rudel även det överordnade temat så att mallrelationen förblir giltig. En sandlåda visar alltid temat som registrerades vid skapandet; temabyten i sandlådan har ingen effekt.

Delat med värden

  • WordPress-kärna
  • pluginfiler
  • uppladdade mediefiler

Ett plugin som installeras eller uppdateras på värden installeras eller uppdateras för varje sandlåda. Vilka pluginer som är aktiva lagras i alternativtabellen, så aktiveringsstatusen är separat per sandlåda. Uppladdningar som görs i en sandlåda hamnar i värdens uppladdningskatalog. Det gör att sandlådor skapas snabbt och att man slipper ersätta WP_CONTENT_DIR globalt.

Håll Rudel aktivt i varje sandlåda. Dess blockering av e-post och temalager körs från pluginet, och om det inaktiveras medan en sandlåda är vald tas även bootstrap-raden bort från den delade wp-config.php, vilket stänger av sandlådevalet för hela installationen (ärende #13).

Välja en sandlåda

HTTP-förfrågningar väljer en sandlåda via:

  • rubriken X-Rudel-Environment (äldre alias X-Rudel-Sandbox)
  • cookien rudel_environment (äldre alias rudel_sandbox)

Rudel anger eller rensar aldrig cookien. Ta bort den för att återgå till värden; objektet Sandlåda i adminfältet länkar till värdens URL men låter cookien vara kvar (ärende #10).

WP-CLI-kommandon väljer en sandlåda via:

  • miljövariabeln RUDEL_ENVIRONMENT
  • en --url vars värdnamn börjar med sandlådans ID, till exempel --url=http://alpha-3be7.example.test

Väljaren saknar autentisering. Alla klienter som kan nå webbplatsen och skickar ett giltigt sandlåde-ID får åtkomst till den sandlådan, och sandlåde-ID:n (namn plus fyra hextecken) är lätta att gissa. Behandla inte sandlådeval som en åtkomstkontroll; skydda en offentlig värd på webbserver- eller nätverksnivå.

Standardvärden för förfrågningar

För en vald förfrågan Rudel:

  • blockerar utgående e-post genom ett pre_wp_mail-filter
  • anger WP_TEMP_DIR till sandlådans katalog tmp
  • anger WP_CACHE_KEY_SALT till ett sandlådespecifikt värde så att beständiga objektcacher håller isär sandlådenycklar
  • erbjuder WP_DEBUG-loggning till sandlådans debug.log samt autentiseringsnycklar och salter som härletts från sandlåde-ID:t

Bootstrapen definierar var och en av dessa konstanter endast om wp-config.php inte redan har definierat den. En standardinstallation av wp-config.php definierar WP_DEBUG samt alla nycklar och salter, så på en sådan installation använder sandlådeförfrågningar värdens felsökningsinställning och värdens nycklar och salter (ärende #4). Eftersom användarna också klonas kan en inloggningscookie från värden vara giltig i en sandlåda.

Metadata vid körning

Rudel-metadata vid körning lagras i värdens WordPress-tabeller MySQL:

Text
wp_rudel_environments
wp_rudel_worktrees

Dessa tabeller är Rudels enda sanningskälla. Miljökataloger innehåller hanterade filer och artefakter, inte registertillstånd vid körning.