Amazon์€ ๊ฒฉ๋ฆฌ๋œ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” Linux ๋ฐฐํฌํŒ์ธ Bottlerocket 1.0.0์„ ์ถœ์‹œํ–ˆ์Šต๋‹ˆ๋‹ค.

์•„๋งˆ์กด ํšŒ์‚ฌ ์ œ์‹œ ์ „์šฉ Linux ๋ฐฐํฌํŒ์˜ ์ฒซ ๋ฒˆ์งธ ์ค‘์š”ํ•œ ๋ฆด๋ฆฌ์Šค ๋ณ‘ ๋กœ์ผ“ 1.0.0, ๊ฒฉ๋ฆฌ๋œ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ํšจ์œจ์ ์ด๊ณ  ์•ˆ์ „ํ•˜๊ฒŒ ์‹คํ–‰ํ•˜๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฐฐํฌํŒ์˜ ๋„๊ตฌ์™€ ์ œ์–ด ๊ตฌ์„ฑ ์š”์†Œ๋Š” Rust๋กœ ์ž‘์„ฑ๋˜์—ˆ์œผ๋ฉฐ ํ™•์‚ฐ MIT ๋ฐ Apache 2.0 ๋ผ์ด์„ผ์Šค์— ๋”ฐ๋ผ. ์ด ํ”„๋กœ์ ํŠธ๋Š” GitHub์—์„œ ๊ฐœ๋ฐœ ์ค‘์ด๋ฉฐ ์ปค๋ฎค๋‹ˆํ‹ฐ ๊ตฌ์„ฑ์›์ด ์ฐธ์—ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. x86_64 ๋ฐ Aarch64 ์•„ํ‚คํ…์ฒ˜์— ๋Œ€ํ•œ ์‹œ์Šคํ…œ ๋ฐฐํฌ ์ด๋ฏธ์ง€๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. OS๋Š” Amazon ECS ๋ฐ AWS EKS Kubernetes ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ์‹คํ–‰๋˜๋„๋ก ์กฐ์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ œ๊ณต๋œ๋‹ค ์ปจํ…Œ์ด๋„ˆ์šฉ ๋‹ค๋ฅธ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ ๋„๊ตฌ, ์ปค๋„ ๋ฐ ๋Ÿฐํƒ€์ž„์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ž์ฒด ์–ด์…ˆ๋ธ”๋ฆฌ ๋ฐ ์—๋””์…˜์„ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค.

๋ฐฐํฌํŒ์€ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๊ตฌ์„ฑ ์š”์†Œ๋งŒ ํฌํ•จํ•˜์—ฌ Linux ์ปค๋„๊ณผ ์ตœ์†Œ ์‹œ์Šคํ…œ ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ์— ๊ด€๋ จ๋œ ํŒจํ‚ค์ง€ ์ค‘์—๋Š” ์‹œ์Šคํ…œ ๊ด€๋ฆฌ์ž systemd, Glibc ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฐ ์–ด์…ˆ๋ธ”๋ฆฌ ๋„๊ตฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
Buildroot, GRUB ๋ถ€ํŠธ๋กœ๋”, ๋„คํŠธ์›Œํฌ ๊ตฌ์„ฑ์ž ์‚ฌ์•…ํ•œ, ๊ฒฉ๋ฆฌ๋œ ์ปจํ…Œ์ด๋„ˆ์— ๋Œ€ํ•œ ๋Ÿฐํƒ€์ž„ ์ปจํ…Œ์ด๋„ˆ, Kubernetes ์ปจํ…Œ์ด๋„ˆ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ ํ”Œ๋žซํผ, aws-iam-authenticator ๋ฐ Amazon ECS ์—์ด์ „ํŠธ.

๋ฐฐํฌํŒ์€ ์›์ž์ ์œผ๋กœ ์—…๋ฐ์ดํŠธ๋˜๋ฉฐ ๋ถ„ํ• ํ•  ์ˆ˜ ์—†๋Š” ์‹œ์Šคํ…œ ์ด๋ฏธ์ง€ ํ˜•ํƒœ๋กœ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. ๋‘ ๊ฐœ์˜ ๋””์Šคํฌ ํŒŒํ‹ฐ์…˜์ด ์‹œ์Šคํ…œ์— ํ• ๋‹น๋˜๋ฉฐ ๊ทธ ์ค‘ ํ•˜๋‚˜์—๋Š” ํ™œ์„ฑ ์‹œ์Šคํ…œ์ด ํฌํ•จ๋˜๊ณ  ์—…๋ฐ์ดํŠธ๋Š” ๋‘ ๋ฒˆ์งธ ํŒŒํ‹ฐ์…˜์— ๋ณต์‚ฌ๋ฉ๋‹ˆ๋‹ค. ์—…๋ฐ์ดํŠธ๊ฐ€ ๋ฐฐํฌ๋˜๋ฉด ๋‘ ๋ฒˆ์งธ ํŒŒํ‹ฐ์…˜์ด ํ™œ์„ฑํ™”๋˜๊ณ  ์ฒซ ๋ฒˆ์งธ ํŒŒํ‹ฐ์…˜์—์„œ๋Š” ๋‹ค์Œ ์—…๋ฐ์ดํŠธ๊ฐ€ ๋„์ฐฉํ•  ๋•Œ๊นŒ์ง€ ์ด์ „ ๋ฒ„์ „์˜ ์‹œ์Šคํ…œ์ด ์ €์žฅ๋˜์–ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ๊ฒฝ์šฐ ๋กค๋ฐฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์—…๋ฐ์ดํŠธ๋Š” ๊ด€๋ฆฌ์ž ๊ฐœ์ž… ์—†์ด ์ž๋™์œผ๋กœ ์„ค์น˜๋ฉ๋‹ˆ๋‹ค.

Fedora CoreOS, CentOS/Red Hat Atomic Host์™€ ๊ฐ™์€ ์œ ์‚ฌํ•œ ๋ฐฐํฌํŒ๊ณผ์˜ ์ฃผ์š” ์ฐจ์ด์ ์€ ์ตœ๋Œ€์˜ ๋ณด์•ˆ ๊ฐ€๋Šฅํ•œ ์œ„ํ˜‘์œผ๋กœ๋ถ€ํ„ฐ ์‹œ์Šคํ…œ ๋ณดํ˜ธ๋ฅผ ๊ฐ•ํ™”ํ•˜๋Š” ๋งฅ๋ฝ์—์„œ OS ๊ตฌ์„ฑ ์š”์†Œ์˜ ์ทจ์•ฝ์ ์„ ์•…์šฉํ•˜๊ธฐ๊ฐ€ ๋” ์–ด๋ ค์›Œ์ง€๊ณ  ์ปจํ…Œ์ด๋„ˆ ๊ฒฉ๋ฆฌ๊ฐ€ ์ฆ๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ์ปจํ…Œ์ด๋„ˆ๋Š” ํ‘œ์ค€ Linux ์ปค๋„ ๋ฉ”์ปค๋‹ˆ์ฆ˜(cgroup, ๋„ค์ž„์ŠคํŽ˜์ด์Šค ๋ฐ seccomp)์„ ์‚ฌ์šฉํ•˜์—ฌ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ์ถ”๊ฐ€ ๊ฒฉ๋ฆฌ๋ฅผ ์œ„ํ•ด ๋ฐฐํฌํŒ์€ "๊ฐ•์ œ" ๋ชจ๋“œ์—์„œ SELinux๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ๋ชจ๋“ˆ์€ ๋ฃจํŠธ ํŒŒํ‹ฐ์…˜์˜ ๋ฌด๊ฒฐ์„ฑ์— ๋Œ€ํ•œ ์•”ํ˜ธํ™” ๊ฒ€์ฆ์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. DM-์ง„์‹ค. ๋ธ”๋ก ์žฅ์น˜ ์ˆ˜์ค€์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ •ํ•˜๋ ค๋Š” ์‹œ๋„๊ฐ€ ๊ฐ์ง€๋˜๋ฉด ์‹œ์Šคํ…œ์ด ์žฌ๋ถ€ํŒ…๋ฉ๋‹ˆ๋‹ค.

๋ฃจํŠธ ํŒŒํ‹ฐ์…˜์€ ์ฝ๊ธฐ ์ „์šฉ์œผ๋กœ ๋งˆ์šดํŠธ๋˜๊ณ , /etc ์„ค์ • ํŒŒํ‹ฐ์…˜์€ tmpfs์— ๋งˆ์šดํŠธ๋˜์–ด ์žฌ์‹œ์ž‘ ํ›„ ์›๋ž˜ ์ƒํƒœ๋กœ ๋ณต์›๋ฉ๋‹ˆ๋‹ค. /etc/resolv.conf ๋ฐ /etc/containerd/config.toml๊ณผ ๊ฐ™์€ /etc ๋””๋ ‰ํ† ๋ฆฌ์˜ ํŒŒ์ผ์„ ์ง์ ‘ ์ˆ˜์ •ํ•˜๋Š” ๊ฒƒ์€ ์ง€์›๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์„ค์ •์„ ์˜๊ตฌ์ ์œผ๋กœ ์ €์žฅํ•˜๋ ค๋ฉด API๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ๊ธฐ๋Šฅ์„ ๋ณ„๋„์˜ ์ปจํ…Œ์ด๋„ˆ๋กœ ์ด๋™ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋Œ€๋ถ€๋ถ„์˜ ์‹œ์Šคํ…œ ๊ตฌ์„ฑ ์š”์†Œ๋Š” After Free ๋ฉ”๋ชจ๋ฆฌ ์•ก์„ธ์Šค, ๋„ ํฌ์ธํ„ฐ ์—ญ์ฐธ์กฐ ๋ฐ ๋ฒ„ํผ ์˜ค๋ฒ„๋Ÿฐ์œผ๋กœ ์ธํ•œ ์ทจ์•ฝ์ ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ๋ฉ”๋ชจ๋ฆฌ ์•ˆ์ „ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” Rust๋กœ ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ๋นŒ๋“œํ•  ๋•Œ "--enable-default-pie" ๋ฐ "--enable-default-ssp" ์ปดํŒŒ์ผ ๋ชจ๋“œ๋Š” ์‹คํ–‰ ํŒŒ์ผ์˜ ์ฃผ์†Œ ๊ณต๊ฐ„ ๋ฌด์ž‘์œ„ํ™”๋ฅผ ํ™œ์„ฑํ™”ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค(PIE) ๋ฐ ์นด๋‚˜๋ฆฌ์•„ ๋Œ€์ฒด๋ฅผ ํ†ตํ•œ ์Šคํƒ ์˜ค๋ฒ„ํ”Œ๋กœ ๋ณดํ˜ธ.
C/C++๋กœ ์ž‘์„ฑ๋œ ํŒจํ‚ค์ง€์˜ ๊ฒฝ์šฐ ์ถ”๊ฐ€ ํ”Œ๋ž˜๊ทธ๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.
"-Wall", "-Werror=format-security", "-Wp,-D_FORTIFY_SOURCE=2", "-Wp,-D_GLIBCXX_ASSERTIONS" ๋ฐ "-fstack-clash-protection".

์ปจํ…Œ์ด๋„ˆ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ ๋„๊ตฌ๋Š” ๋ณ„๋„๋กœ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. ์ œ์–ด ์ปจํ…Œ์ด๋„ˆ, ์ด๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ํ™œ์„ฑํ™”๋˜์–ด ์žˆ์œผ๋ฉฐ ๋‹ค์Œ์„ ํ†ตํ•ด ์ œ์–ด๋ฉ๋‹ˆ๋‹ค. API ๋ฐ AWS SSM ์—์ด์ „ํŠธ. ๊ธฐ๋ณธ ์ด๋ฏธ์ง€์—๋Š” ๋ช…๋ น ์…ธ, SSH ์„œ๋ฒ„ ๋ฐ ํ•ด์„๋œ ์–ธ์–ด(์˜ˆ: Python ๋˜๋Š” Perl ์—†์Œ)๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๊ด€๋ฆฌ ๋„๊ตฌ ๋ฐ ๋””๋ฒ„๊น… ๋„๊ตฌ๋Š” ๋‹ค์Œ ์œ„์น˜์— ์žˆ์Šต๋‹ˆ๋‹ค. ๋ณ„๋„์˜ ์„œ๋น„์Šค ์ปจํ…Œ์ด๋„ˆ, ์ด๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๋น„ํ™œ์„ฑํ™”๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€