Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
STNS pepabo_hatena_tech_con
Search
Kazuhiko Yamashita
July 09, 2016
Technology
0
5.3k
STNS pepabo_hatena_tech_con
ペパボはてな技術大会福岡編でのシンプルなLinuxユーザー管理システムSTNSの資料です
Kazuhiko Yamashita
July 09, 2016
Tweet
Share
More Decks by Kazuhiko Yamashita
See All by Kazuhiko Yamashita
リモートワーク時代の守護神 PHP開発者のためのセキュリティ強化術
pyama86
3
820
実践DevSecOps~クラウドネイティブとオンプレミスの間から~
pyama86
1
35
ペパボOpenTelemetry革命
pyama86
2
1.7k
Site Reliability Engineering for GMO
pyama86
10
1.2k
PHPアプリケーションのスケーラビリティと 信頼性を革新する nginx+ngx_mrubyとGoの融合
pyama86
2
380
ペパボOpenTelemetry革命
pyama86
0
800
ChatGPTの活用を体現し、 組織に浸透する技術
pyama86
1
1k
リリースフラグと プログレッシブデリバリーを活用した 安全なWEBアプリケーションデプロイ
pyama86
2
220
PHPerのためのOpenTelemetry入門
pyama86
1
270
Other Decks in Technology
See All in Technology
AOAI Dev Day LLMシステム開発 Tips集
hirosatogamo
15
3.6k
Docker互換のセキュアなコンテナ実行環境「Podman」超入門
devops_vtj
6
3.2k
MySQLのロックの種類とその競合
yoku0825
6
1.6k
セキュリティ研修 Day1【MIXI 24新卒技術研修】
mixi_engineers
PRO
0
150
[I/O Extended Android 2024] What`s new in Android 2024
kyeongwan
0
220
AIエージェントを現場に導入する目線とは
masahiro_nishimi
1
1.5k
データベース研修 分析向けSQL入門【MIXI 24新卒技術研修】
mixi_engineers
PRO
0
110
成長期に歩みを止めないための創業期の開発文化形成
mayah
6
420
AWS IAMのアンチパターン/AWSが考える最低権限実現へのアプローチ概略(JAWS-UG朝会#59資料改修20分版)
htan
0
330
ゆめみのアクセシビリティの現在地と今後
ryokatsuse
3
290
Classmethod流のPlatform Engineering / classmethod-platform-engineering-devio2024
tomoki10
0
470
エンジニアの生存戦略 〜クラウド潮流の経験から紐解く技術トレンドのメカニズムと乗りこなし方〜
shimy
9
1.9k
Featured
See All Featured
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
189
16k
Gamification - CAS2011
davidbonilla
78
4.9k
Learning to Love Humans: Emotional Interface Design
aarron
269
39k
ParisWeb 2013: Learning to Love: Crash Course in Emotional UX Design
dotmariusz
105
6.8k
Documentation Writing (for coders)
carmenintech
63
4.2k
What's new in Ruby 2.0
geeforr
338
31k
Debugging Ruby Performance
tmm1
71
11k
How to name files
jennybc
67
96k
From Idea to $5000 a Month in 5 Months
shpigford
377
46k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
13
430
Fireside Chat
paigeccino
25
2.8k
Put a Button on it: Removing Barriers to Going Fast.
kastner
58
3.3k
Transcript
QZBNB(.01&1"#0JOD ϖύϘɾͯͳٕज़େձʙΠϯϑϥٕज़ج൫ʙ 45/4
IUUQTUFOTOBQPODPN γχΞɾΤϯδχΞ ࢁԼ!QZBNB ϗεςΟϯάࣄۀ෦ϜʔϜʔυϝΠϯνʔϜ
-JOVYϢʔβʔཧ 1.
-JOVYͱʁ
-JOVY
-JOVYϢʔβʔཧ w -JOVYͰϑΝΠϧॴ༗ऀɺݖݶཧ͕Ϣʔβʔɾάϧʔϓ ΛݩʹߦΘΕΔ w ಛఆͷϢʔβʔݖݶͰίϚϯυΛ࣮ߦ͢Δ4VEPΛ࢝Ίɺ ଟ͘ͷίϚϯυͰϢʔβʔɾάϧʔϓͰ੍ޚ͞Ε͍ͯΔ
-JOVYϢʔβʔཧ Ұͭͷ8&#αʔϏεͰ ଟ͘ͷ-JOVY͕Քಇ͍ͯ͠Δ
-JOVYϢʔβʔཧ ؤுΔ͘Μ
None
͕ΜΕͳ͍܅ʁ
None
-JOVYϢʔβʔཧ
45/4 w (PMBOH w 5PNMܗࣜͷઃఆϑΝΠϧ w +40/ΠϯλʔϑΣʔεͷαʔόɾΫϥΠΞϯτ w 8SBQQFSΛࣗ༝ʹมߋͰ͖Δ ϓϥΨϒϧ
ίϯηϓτ ໊લղܾɺެ։伴औಘɺΞΧϯτೝূͷΈΛఏڙ ͢Δɻଟ͘ΛΒͣɺγϯϓϧʹอͭ͜ͱͰཧɺ Έ߹ΘͤΛ༰қʹɻ https://github.com/STNS/STNS
-JOVYϢʔβʔάϧʔϓͷ໊લղܾ % ls -ltr -rw-r--r-- 1 pyama wheel 0 May
8 00:09 hatena_pepabo.txt % ls -ltr -rw-r--r-- 1 1000 1000 0 May 8 00:09 hatena_pepabo.txt id:1000 is pyama
ΞʔΩςΫνϟ STNS http(1104) ls libnss-stns libpam-stns query-wrapper key-wrapper /user/name/pyama {
name:pyama, id: 1000, dir:/home/pyama … } αʔόɾΫϥΠΞϯτؒhttpΛར༻ͨ͠ JSONܗࣜͷΠϯλʔϑΣʔε
ઃఆϑΝΠϧαʔό QPSU JODMVEFFUDTUOTDPOGE TBMU@FOBCMFUSVF TUSFUDIJOH@OVNCFS VTFSlCBTJD@VTFS QBTTXPSECBTJD@QBTTXPSE <VTFSTFYBNQMF> JE
HSPVQ@JE LFZT<TTISTB99999ʜ> <HSPVQTFYBNQMF> JE VTFST<FYBNQMF> <TVEPFSTFYBNQMF> QBTTXPSE GEDEBGFBBDBEBCGGCCCDEEDCGB
stns.conf(αʔό) stns.conf user.conf group.conf deploy.conf ෳͷઃఆϑΝΠϧʹׂ͠ɺ ׂ৫͝ͱʹཧ͢ΔͱΑ͍
ઃఆϑΝΠϧΫϥΠΞϯτ api_end_point = ["http://<server-master>:1104", "http://<server-slave>:1104"] user = "basic_user" password =
"basic_password" wrapper_path = "/usr/local/bin/stns-query-wrapper" chain_ssh_wrapper = "/usr/libexec/openssh/ssh-ldap-wrapper" ssl_verify = true
ྫ͑͜͏͍͏͜ͱग़དྷΔ process libnss-stns libpam-stns query-wrapper key-wrapper /user/name/pyama { name:pyama, id:
1000, dir:/home/pyama … } LinuxϓϩηεͱͷΓऔΓSTNSΛར༻͠ɺ ϢʔβʔใRailsͰཧ͢Δ
σϓϩΠϢʔβʔͷ ཧ
σϓϩΠϢʔβʔͷཧ
[email protected]
[email protected]
[email protected]
/home/deploy/.ssh/authrized_keys ʹ֤Ϣʔβʔͷެ։伴Λొ
σϓϩΠϢʔβʔͷཧ ࡢࠓͷWebαʔϏεͰσϓϩΠઐ༻ϢʔβʔΛઃ ͚ͯσϓϩΠ͢Δ͜ͱ͕ଟ͍ɻ ͔͠͠ɺطଘͷΈͰ࣮ݱ͢ΔʹσϓϩΠϢʔ βʔͷ~/.ssh/authorized_keysʹσϓϩΠ͢ΔϢʔ βʔͷެ։伴ΛฒͨΓ͢Δඞཁ͕͋ͬͨ
σϓϩΠϢʔβʔͷཧ [users.deploy] id = 1000 group_id = 1000 link_users =
[“foo","bar"] [users.foo] keys = ["ssh-rsa aaa”] [users.bar] keys = ["ssh-rsa bbb"] deployϢʔβʔͰSSHϩάΠϯ͢Δࡍʹɺlink_usersͰ ࢦఆͨ͠Ϣʔβʔͷެ։伴Λར༻ग़དྷΔ →authorized_keysʹॻ͔ͳͯ͘ྑ্͍ʹɺ ɹ୭͕σϓϩΠग़དྷΔͷ͔Ұྎવ
৫ߏΛදݱ͢Δ
৫ߏΛදݱ͢Δ ྫ͑ɺٕज़1՝ʹॴଐ͢ΔϢʔβʔɺٕज़෦ͷϢʔ βʔͰ͋Δɻͱ͋Δαʔόʹٕज़෦ͷϢʔβʔϩά Πϯग़དྷΔΑ͏ʹ͍ͨ͠ɻ
৫ߏΛදݱ͢Δ [groups.tech] users = ["antipop"] link_groups = [“tech-1"] [groups.tech-1] users
= ["pyama"] pyamatech-1ʹॴଐ͢ΔtechͷϢʔβʔͰ͋Δɻ ۩ମతͳར༻γʔϯsshd_configͷAllowGroupsɺ sudoersͳͲɺάϧʔϓͰཧ͢Δ߹ʹศརɻ
ಋೖ
ಋೖ IUUQTUOTKQ
PTT
ಋೖ
ಋೖ w SQN EFCڞʹCJU CJU൛ͷఏڙ SFQPTUOTKQ DVSMGT4-IUUQTSFQPTUOTKQTDSJQUTZVNSFQPTIcTI ZVNJOTUBMMTUOTMJCOTTTUOTMJCQBNTUOT IUUQTHJUIVCDPN45/4TUOTDPPLCPPL
IUUQTHJUIVCDPN45/4QVQQFUTUOT w $IFG 1VQQFUͷΫοΫϒοΫɺϚχϑΣετΛఏڙ 1VQQFUϚχϑΣετ!IGN͕։ൃͯ͘͠Εͨ
ಋೖ Πϯετʔϧʙ44)ެ։伴ೝূ·Ͱඵ
ಋೖࣄྫ
Ϣʔβʔཧ(JUIVC'MPX (JUIVC&OUFSQSJTF͔ΒϢʔβʔσʔλΛ࡞͠ɺ1VMM3FRVFTU %SPOFͰࣗಈςετɾਓͷʹΑΔϨϏϡʔ σϓϩΠ
HFOFSBUFCZUIPS DPOpHZNM UFBNT UFDIBENJO˒(JUIVCͷνʔϜ໊ NVVBENJO NJOOFBENJO LJCBOˑMJOL@HSPVQΛར༻͠৫Λ࿈݁ εΫϦϓτͰใͷऔಘݩΛ()&ʹू͢Δ͜ͱʹΑΓɺϢʔβʔ ͷՃɺআΛ()&ʹҠৡ͢Δɻ ͦ͏͢Δ͜ͱͰγεςϜ͝ͱͷΞΧϯτࢄࡏΛ͙͜ͱ͕ग़དྷ·
͢ɻ
ӡ༻Πϝʔδ 2.
ӡ༻Πϝʔδ nginx stns nginx stns /HJOYͰ44-Λऴͭͭ͠ɺ$BQJTUSBOPͳͲͷσϓϩΠπʔϧͰ TUOTDPOGΛσϓϩΠ
ӡ༻Πϝʔδ nginx stns nginx stns αʔόͷTUOTDPOGΛฤू͠ɺ4$1STZODͰಉظ
ӡ༻Πϝʔδ ͍͢ process libnss-stns libpam-stns query-wrapper key-wrapper FUDEΛར༻͠ɺαʔόϨεͳϢʔβʔཧ
ͱΓ͋͑ͣ৮ͬͯΈΔ
͜Ε͔ΒϢʔβཧΛ࢝ΊΔ ΈΜͳ 3.
45/4ϘΫ͕։ൃऀͩͬͨ͠΄͏͕͍͍ w ࡶԽͮ͠Β͍పఈͨ͠γϯϓϧ͞ w γϯϓϧ͕ނʹ֦ுੑ͕ߴ͍ w ಋೖͷख͕ؒগͳ͍
45/4ͰϢʔβʔཧΛ ࢝ΊΑ͏
5IBOLZPV
͜͜Ͱঁੑਞ͔Β ࣭͕ࡴ౸͢Δ