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
5.7k
0
Share
STNS pepabo_hatena_tech_con
ペパボはてな技術大会福岡編でのシンプルなLinuxユーザー管理システムSTNSの資料です
Kazuhiko Yamashita
July 09, 2016
More Decks by Kazuhiko Yamashita
See All by Kazuhiko Yamashita
継続的な負荷検証を目指して
pyama86
3
1.2k
成長期における、 ユーザー領域の複雑さと 整備の進め方
pyama86
1
560
Stay Hacker 〜九州で生まれ、Perlに出会い、コミュニティで育つ〜
pyama86
2
6.2k
Managing Database Migrations in Go Backend Systems
pyama86
0
450
新しい職場の CI が 20 分かかっていたらあなたならどうする?
pyama86
2
1.5k
事業を差別化する技術を生み出す技術
pyama86
4
2.2k
Re:Define 可用性を支える モニタリング、パフォーマンス最適化、そしてセキュリティ
pyama86
9
11k
AI時代におけるSRE、 あるいはエンジニアの生存戦略
pyama86
6
2k
Tuning GraphQL on Rails
pyama86
2
2.7k
Other Decks in Technology
See All in Technology
Databricks 月刊サービスアップデートまとめ 2026年04月号
tyosi1212
0
140
可視化から活用へ — Mesh化・Segmentation・アライメントの研究動向
gpuunite_official
0
240
TSKaigi 2026 - enumよ、さようなら
teamlab
PRO
1
220
SpeechTranscriber + AIによる文字起こし機能
kazuki1220
0
120
Oracle AI Database@Google Cloud:サービス概要のご紹介
oracle4engineer
PRO
6
1.4k
ラズパイ & Picoで入門:Zephyr(RTOS)の環境構築からビルドまでの紹介
iotengineer22
0
140
サプライチェーン攻撃への備えについて考えている #湘なんか
stefafafan
2
2k
社内RAGの導入で気を付けたポイント
yakumo
1
130
TypeScript の型で副作用の実行順序を制御する
yanaemon
0
120
いつの間にかデータエンジニア以外の業務も増えていたけど、意外と経験が役に立ってる
zozotech
PRO
0
730
How to learn AWS Well-Architected with AWS BuilderCards: Security Edition
coosuke
PRO
0
190
AI飲み会幹事エージェントを作っただけなのに
ykimi
0
240
Featured
See All Featured
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
740
A Soul's Torment
seathinner
6
2.8k
Raft: Consensus for Rubyists
vanstee
141
7.4k
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
62
54k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
830
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
220
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
61
44k
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
370
Statistics for Hackers
jakevdp
799
230k
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
130
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
340
Making Projects Easy
brettharned
120
6.6k
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
͜͜Ͱঁੑਞ͔Β ࣭͕ࡴ౸͢Δ