Тэставае асяроддзе — не прадакшн: дайце яму ўласную мяжу доступу
Этыкетка тэставага асяроддзя не вырашае, хто можа дабрацца да праграмы і чаго яна можа дакрануцца. Прайдзіце аўдыторыю, даныя, уліковыя даныя і адміністрацыйныя паверхні перад публікацыяй.
Тэставае асяроддзе выглядае як тэставая сістэма, пакуль вы не заўважыце скапіяваную прадакшн-базу даных, жывы паштовы ўліковы запіс і плацежны ключ у яго асяроддзі. У гэты момант этыкетка на ўкладцы перастае мець значэнне, і сапраўднае пытанне ў тым, чаго гэтае разгортванне можа дасягнуць і хто можа дасягнуць яго. VPN на ўваходных дзвярах не адказвае на гэтае пытанне, бо абмяжоўвае адзін шлях у сістэму і нічога не кажа пра тое, што сістэма можа рабіць на выхадзе. Пачніце з аўдыторыі і рухайцеся вонкі.
Пачніце з аўдыторыі, а не з URL
Тры аўдыторыі даюць тры розныя праекты. Прыватнае інжынернае асяроддзе патрабуе ідэнтычнасці і маршруту; тэст прыёмкі кліента патрабуе ўліковых запісаў, якія прадстаўляюць кліентаў; публічная дэманстрацыя патрабуе наўмыснага раскрыцця з уласнымі сродкамі кантролю. Запіс аўдыторыі перш за ўсё прадухіляе звычайны дрыфт, калі URL папярэдняга прагляду ціха робіцца пастаянным. Усё астатняе ў аглядзе залежыць ад гэтага адказу.
Калі ніхто не можа назваць аўдыторыю, лічыце гэта першай знаходкай, а не прабелам у дакументацыі.
Прайдзіце праз уваходныя дзверы і паверхні за імі
Вызначыце імёны, перш чым давяраць дадзенаму вам URL, затым запытайце адміністрацыйныя шляхі напрамую.
dig +short staging.example.com
curl -sS -o /dev/null -w "%{http_code}\n" https://staging.example.com/
curl -sS -o /dev/null -w "%{http_code}\n" https://staging.example.com/adminДадатковыя запісы часта выяўляюць адрас прамога паходжання, які абыходзіць CDN або ўваход VPN, што робіць прызначаны кантроль неабавязковым. Перанакіраванне кажа вам, дзе праграма, на яе думку, жыве, а нечаканая схема або імя хоста заслугоўвае дадатковай праверкі. Спроба верагоднага адмін-маршруту павінна даць адмову, а не старонку. Адказ 200 на неаўтэнтыфікаваным адміністрацыйным шляху — гэта знаходка, якую шукаў увесь агляд.
Праверце, што асяроддзе можа рабіць, а не толькі што яно паказвае
Старонка, якая патрабуе ўваходу, усё роўна пастаўляецца з паўнамоцтвамі бэкэнда. Спытайце, пад якой ідэнтычнасцю працуе нагрузка, затым прачытайце палітыкі, прывязаныя да яе.
aws sts get-caller-identityГэты выклік паведамляе пра ўліковы запіс і прынцыпал, які асяроддзе фактычна выкарыстоўвае, што з’яўляецца адпраўной кропкай для кожнага далейшага пытання аб дазволах. Адтуль праверце, ці можа ідэнтычнасць адпраўляць пошту, перамяшчаць грошы, чытаць прадакшн-сакрэты або запісваць прадакшн-даныя. Замяніце агульныя прадакшн-уліковыя даныя на абмежаваныя тэставыя ідэнтычнасці і аддавайце перавагу пастаўшчыцкім пясочніцам, дзе яны ёсць. Тэставы ўліковы запіс, які можа спагнаць сродак з рэальнай карты, — гэта прадакшн-сістэма з іншым імем хоста.
Захавайце мяжу пасля завяршэння агляду
Асяроддзе не абараняецца адным аўдытам; яно абараняецца ўласнасцю, якая перажывае змены супрацоўнікаў. Прызначце, хто здымае доступ, скідае тэставыя даныя і выводзіць разгортванне з эксплуатацыі, і дайце папярэдняму прагляду тэрмін дзеяння, які нехта павінен прадоўжыць. Ізаляцыя дапамагае толькі пакуль ізаляванае падтрымліваецца. Пераправерце тыя ж шляхі пасля наступнага рэлізу, бо сцяг функцыі або новая інтэграцыя — гэта менавіта тое, як забаронены маршрут робіцца адчыненым.
Прыміце праект з дазволеным працоўным патокам і адмоўленым. Калі абодва паводзяць сябе як дакументавана, мяжа існуе; калі тэставаўся толькі шчаслівы шлях, гэта надзея.