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.
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:
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 aliasX-Rudel-Sandbox) - cookien
rudel_environment(äldre aliasrudel_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
--urlvars 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_DIRtill sandlådans katalogtmp - anger
WP_CACHE_KEY_SALTtill ett sandlådespecifikt värde så att beständiga objektcacher håller isär sandlådenycklar - erbjuder
WP_DEBUG-loggning till sandlådansdebug.logsamt 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:
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.