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.7k
STNS pepabo_hatena_tech_con
ペパボはてな技術大会福岡編でのシンプルなLinuxユーザー管理システムSTNSの資料です
Kazuhiko Yamashita
July 09, 2016
Tweet
Share
More Decks by Kazuhiko Yamashita
See All by Kazuhiko Yamashita
Stay Hacker 〜九州で生まれ、Perlに出会い、コミュニティで育つ〜
pyama86
2
5.7k
Managing Database Migrations in Go Backend Systems
pyama86
0
170
新しい職場の CI が 20 分かかっていたらあなたならどうする?
pyama86
2
1.5k
事業を差別化する技術を生み出す技術
pyama86
4
2k
Re:Define 可用性を支える モニタリング、パフォーマンス最適化、そしてセキュリティ
pyama86
9
10k
AI時代におけるSRE、 あるいはエンジニアの生存戦略
pyama86
6
1.9k
Tuning GraphQL on Rails
pyama86
2
2.6k
ttlcacheのここがスゴい
pyama86
1
230
クラウドサービスの 利用コストを削減する技術 - 円安の真南風を感じて -
pyama86
3
700
Other Decks in Technology
See All in Technology
LLM活用の壁を超える:リクルートR&Dの戦略と打ち手
recruitengineers
PRO
1
210
【PyCon mini Shizuoka 2026】生成AI時代に画像処理やオーディオ処理のノードエディターを作る理由
kazuhitotakahashi
0
270
「データとの対話」の現在地と未来
kobakou
0
1.3k
Agentic Software Modernization - Back to the Roots (Zürich Agentic Coding and Architectures, März 2026)
feststelltaste
0
120
マイグレーションガイドに書いてないRiverpod 3移行話
taiju59
0
340
生成AI活用によるPRレビュー改善の歩み
lycorptech_jp
PRO
4
2k
dbt meetup #19 『dbtを『なんとなく動かす』を卒業します』
tiltmax3
0
150
Exadata Fleet Update
oracle4engineer
PRO
0
1.3k
AI時代にエンジニアはどう成長すれば良いのか?
recruitengineers
PRO
1
110
Kiro のクレジットを使い切る!
otanikohei2023
0
110
Security Diaries of an Open Source IAM
ahus1
0
190
社内でAWS BuilderCards体験会を立ち上げ、得られた気づき / 20260225 Masaki Okuda
shift_evolve
PRO
1
160
Featured
See All Featured
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
250
The SEO identity crisis: Don't let AI make you average
varn
0
400
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
170
Reality Check: Gamification 10 Years Later
codingconduct
0
2k
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
120
Building the Perfect Custom Keyboard
takai
2
710
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
1
460
HDC tutorial
michielstock
1
480
The Curse of the Amulet
leimatthew05
1
9.5k
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
0
190
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
0
210
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
190
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
͜͜Ͱঁੑਞ͔Β ࣭͕ࡴ౸͢Δ