🐳 Docker study 6th

Last Chapter of Docker Study : Least Previlege in Docker for Autonomous Driving

by Arielle


Docker Study

μ§€λ‚œ λͺ‡ μ£Όκ°„ Azureλ₯Ό μ΄μš©ν•΄ Dockerλ₯Ό 곡뢀해보며 κ½€ λ§Žμ€ 것듀을 λ°°μ› λ‹€. λ¬Όλ‘  머릿속에 μ •ν™•νžˆ λ‚΄κ²ƒμœΌλ‘œ λ‚¨μ•„μžˆλŠ” 것듀이 λ§Žμ§„ μ•Šμ§€λ§Œ γ…Žγ…Ž, λ‚˜μ€‘μ— ν”„λ‘œμ νŠΈλ₯Ό ν•˜κ²Œ 되면 Dockerλ₯Ό μ΄μš©ν•΄λ³΄μž λΌλŠ” μš©κΈ°λŠ” 생긴 것 κ°™λ‹€!

λ‚΄κ°€ κ·Έκ°„ 배운 DockerλŠ” 둜컬이 μ•„λ‹Œ κ°€μƒν™˜κ²½κ³Ό μ»¨ν…Œμ΄λ„ˆλ₯Ό μ΄μš©ν•΄ 더 λ‚˜μ€ κ°œλ°œν™˜κ²½μ„ ꡬ좕할 수 있고, 개인이 μ•„λ‹Œ νŒ€ ν”„λ‘œμ νŠΈμ—μ„œκ·Έ λ©”λ¦¬νŠΈκ°€ 더 ν™•μ‹€ν•΄μ§€λŠ” 것 κ°™λ‹€. Dockerλ₯Ό μ΄μš©ν•΄ ν•˜λ‚˜μ˜ ν”„λ‘œμ νŠΈμ— νŒ€μ› 개개인의 μ»¨ν…Œμ΄λ„ˆλ₯Ό μ—°κ²°ν•΄ κ°œλ°œν•  수 μžˆλ‹€λ©΄? 보닀 μœ μ—°ν•˜κ³  효율적인 곡동 μž‘μ—…μ΄ κ°€λŠ₯해진닀.

이번 Docker study μ‹œλ¦¬μ¦ˆ λ§ˆμ§€λ§‰ ν¬μŠ€νŒ…μ—μ„œλŠ” κ΄€λ¦¬μž κΆŒν•œ 외에도 κ°œλ³„ νŒ€μ›μ—κ²Œ κΆŒν•œμ„ λΆ€μ—¬ν•˜λŠ” 방법에 λŒ€ν•΄ μ‹€μŠ΅ν•΄λ³΄λ €κ³  ν•œλ‹€. 🏁


1. Add new user

ν˜„μž¬ λ‚΄ 가상머신은 β€˜Arielle’이 superuser(root)이닀. μƒˆλ‘œμš΄ μœ μ €λ₯Ό μΆ”κ°€ν•˜λŠ” 방법은 κ°„λ‹¨ν•˜λ‹€.

sudo adduser <new_user_name> 둜 μƒˆλ‘œμš΄ μœ μ €λ₯Ό 등둝해주면 λœλ‹€. New passwordλ₯Ό μž…λ ₯ν•˜λΌκ³  λ‚˜μ˜€λŠ”λ° μ λ‹Ήνžˆ μ„€μ •ν•΄ μ£Όλ©΄ λœλ‹€. sudo usermdod -aG docker dataengineer λͺ…λ Ήμ–΄λ‘œ docker 그룹에 β€˜dataengineer’λ₯Ό μΆ”κ°€ν•΄ docker λͺ…λ Ήμ–΄λ₯Ό μ‚¬μš©ν•  수 μžˆλ„λ‘ ν–ˆλ‹€.

Descriptive Alt Text

🚨 참고둜 sudo usermod -aG sudo dataengineer 을 μ΄μš©ν•΄ μ‹ κ·œ μœ μ €μ—κ²Œ β€˜Arielle’과 같은 κΆŒν•œμ„ λΆ€μ—¬ν•  μˆ˜λ„ μžˆλ‹€. μœ„μ—μ„œ Docker 그룹에 μ‹ κ·œ μœ μ €λ₯Ό μΆ”κ°€ν•΄ μ£ΌλŠ” λͺ…λ Ήμ–΄λž‘ λΉ„μŠ·ν•΄λ³΄μ΄μ§€λ§Œ, 이 λͺ…λ Ήμ–΄μ˜ μ‚¬μš©μ€ 지양 ν•΄μ•Ό ν•œλ‹€!

κ΄€λ¦¬μž κΆŒν•œμ„ κ°–κ²Œ 되면 μ‹œμŠ€ν…œμ˜ 거의 λͺ¨λ“  μž‘μ—…μ„ ν•  수 μžˆλŠ” κ°•λ ₯ν•œ νž˜μ„ μ–»κ²Œ λœλ‹€λŠ” λœ»μ΄λ‹€. λ¬Όλ‘  μ–΄λ–€ 관점이냐에 따라 μ„œλ²„λ₯Ό 지킬 수 μžˆλŠ” 힘이 λ˜κΈ°λ„ ν•˜κ² μ§€λ§Œ, μž‘μ€ λ²„κ·Έλ‘œλ„ μ‹œμŠ€ν…œ 전체λ₯Ό 뒀흔듀 수 μžˆλŠ” μ–‘λ‚ μ˜ κ²€ 같은 μ‘΄μž¬κ°€ λ˜κΈ°λ„ ν•œλ‹€.

1.1 Risk of Security Breaches

μžμœ¨μ£Όν–‰ νšŒμ‚¬ ν”„λ‘œμ νŠΈμ— 막 ν•©λ₯˜ν•œ μ£Όλ‹ˆμ–΄ μ—”μ§€λ‹ˆμ–΄κ°€ μžˆλ‹€κ³  κ°€μ •ν•΄ 보자! πŸ‘©β€πŸ’»

λ‹Ήμ—°ν•œ μ΄μ•ΌκΈ°μ§€λ§Œ, sudo 그룹에 μ†ν•˜κ²Œ 되면 μ€‘μš” μ‹œμŠ€ν…œ νŒŒμΌμ„ μˆ˜μ •ν•˜κ±°λ‚˜ μ‚­μ œν•  수 μžˆλŠ” κΆŒν•œμ„ μ–»κ²Œ λœλ‹€. μžμœ¨μ£Όν–‰ ν”„λ‘œμ νŠΈμ—λŠ” λ„ˆλ¬΄λ‚˜λ„ μ€‘μš”ν•œ ꡬ성 파일과 섀정이 ν¬ν•¨λ˜μ–΄ μžˆλ‹€. λ§Œμ•½ μ£Όλ‹ˆμ–΄ κ°œλ°œμžκ°€ μ‹€μˆ˜λ‘œ μš΄μ˜μ— ν•„μš”ν•œ μ„€μ • νŒŒμΌμ„ μ§€μš°κ±°λ‚˜ 잘λͺ»λœ λͺ…령을 μ‹€ν–‰ν•˜κ²Œ λœλ‹€λ©΄..? μžμœ¨μ£Όν–‰ μ‹œμŠ€ν…œ μžμ²΄κ°€ 버그 μ²œμ§€κ°€ 될 μˆ˜λ„ μžˆλ‹€.😱

특히 μžμœ¨μ£Όν–‰ μ°¨λŸ‰μ€ ν•˜λ‚˜μ˜ μ‹€μˆ˜λ‘œ μ•ˆμ „μ΄ μœ„ν˜‘λ°›μ„ 수 μžˆλŠ” 맀우 μ˜ˆλ―Όν•œ 뢄야라 잘λͺ»λœ λͺ…λ Ή ν•˜λ‚˜κ°€ μ‹œμŠ€ν…œ μ „λ°˜μ— 걸쳐 치λͺ…적인 κ²°κ³Όλ₯Ό μ΄ˆλž˜ν•  κ°€λŠ₯성이 μžˆλ‹€. κ·Έλž˜μ„œ λˆ„κ΅¬λ“  κ΄€λ¦¬μž κΆŒν•œμ„ λΆ€μ—¬ν•˜λŠ” 건 맀우 신쀑해야 ν•œλ‹€!

1.2 Ambiguity in Accountability

μžμœ¨μ£Όν–‰ ν”„λ‘œμ νŠΈλŠ” 각 κ°œλ°œμžκ°€ νŠΉμ • μ—­ν• κ³Ό μ±…μž„μ„ 맑아 μž‘μ—…ν•˜κ³  μžˆμ„ 것이닀. 그런데 κ΄€λ¦¬μž κΆŒν•œμ΄ μ—¬λŸ¬ μ‚¬λžŒμ—κ²Œ 주어지면 λˆ„κ°€ μ–΄λ–€ μž‘μ—…μ„ ν–ˆλŠ”μ§€ νŒŒμ•…ν•˜κΈ° μ–΄λ €μ›Œμ§€λŠ” λ¬Έμ œκ°€ 생길 것이닀. 예λ₯Ό λ“€μ–΄, μ‹œμŠ€ν…œμ—μ„œ κ°‘μžκΈ° 예기치 λͺ»ν•œ 였λ₯˜κ°€ λ°œμƒν–ˆλ‹€λ©΄ λˆ„κ°€ μ–΄λ–€ 섀정을 λ³€κ²½ ν–ˆλŠ”μ§€ μ°Ύμ•„μ•Ό ν•˜μ§€λ§Œ, μ—¬λŸ¬ μ‚¬λžŒμ΄ κ΄€λ¦¬μž κΆŒν•œμ„ κ°–κ³  있으면 좔적이 λ³΅μž‘ν•΄ 질 것이닀.

이런 ν˜Όλž€μ„ ν”Όν•˜κΈ° μœ„ν•΄μ„  각자의 역할에 λ§žλŠ” μ΅œμ†Œν•œμ˜ κΆŒν•œλ§Œ λΆ€μ—¬ν•˜κ³  ν•„μš”ν•œ κ²½μš°μ—λ§Œ κΆŒν•œμ„ ν™•μž₯ν•˜λŠ” 것이 베슀트일 것이닀. μ‹œμŠ€ν…œ μ•ˆμ •μ„±κ³Ό 개발의 신뒰성을 μœ„ν•΄ λˆ„κ°€ 무슨 μž‘μ—…μ„ ν–ˆλŠ”μ§€ λͺ…ν™•ν•˜κ²Œ κΈ°λ‘ν•˜λŠ” 것은 선택이 μ•„λ‹Œ ν•„μˆ˜λ‹€!

1.3 Granting Minimum Necessary Privileges is Safer!

IT λ³΄μ•ˆμ˜ κΈ°λ³Έ 원칙 쀑 ν•˜λ‚˜λŠ” μ΅œμ†Œ κΆŒν•œμ˜ 원칙이닀. ν•„μš” μ΄μƒμœΌλ‘œ κΆŒν•œμ„ λΆ€μ—¬ν•˜λŠ” 건 ν”Όν•˜κ³  κ°μžκ°€ 맑은 역할에 ν•„μš”ν•œ κΆŒν•œλ§Œ λΆ€μ—¬ν•˜λŠ” 것이닀. 예λ₯Ό λ“€μ–΄, μ£Όλ‹ˆμ–΄ μ—”μ§€λ‹ˆμ–΄κ°€ Dockerλ₯Ό μ‚¬μš©ν•  수 μžˆλ„λ‘ Docker κ·Έλ£Ή κΆŒν•œλ§Œ λΆ€μ—¬ν•΄μ£Όλ©΄ μ£Όλ‹ˆμ–΄λŠ” μžμœ¨μ£Όν–‰ ν”„λ‘œμ νŠΈ ν™˜κ²½μ—μ„œ Docker λͺ…λ Ήμ–΄λ₯Ό λ¬Έμ œμ—†μ΄ μ‚¬μš©ν•  수 μžˆλ‹€. (κ΄€λ¦¬μž κΆŒν•œκΉŒμ§€ 쀄 ν•„μš”λŠ” μ—†λ‹€!)

μ•„! 그리고 μ—¬λ‹΄μœΌλ‘œ κ°œλ°œμžλ‘œμ„œ μžμ‹ μ—κ²Œ ν•„μš”ν•œ κΆŒν•œμ„ λͺ…ν™•ν•˜κ²Œ μš”κ΅¬ν•  수 μžˆλŠ” λŠ₯λ ₯은 생각보닀 κ½€ μ€‘μš”ν•œ 것 κ°™λ‹€. κ°œλ°œμžκ°€ μ½”λ“œλ§Œ 잘 짜면 λ˜μ§€ 라고 생각할 μˆ˜λ„ μžˆμ§€λ§Œ 이 이야기λ₯Ό ν•˜λŠ” μ΄μœ λŠ” λ°”λ‘œ μ •ν™•ν•œ κΆŒν•œ μš”μ²­μ΄ λ³΄μ•ˆμ˜ μ—°μž₯선에 있기 λ•Œλ¬Έμ΄λ‹€.

λΆˆν•„μš”ν•œ κΆŒν•œμ„ μš”μ²­ν•˜μ§€ μ•ŠμŒμœΌλ‘œμ¨ μ‹œμŠ€ν…œμ˜ λ³΄μ•ˆ 리슀크λ₯Ό 쀄일 수 있고, 덕뢄에 λ―Όκ°ν•œ λ°μ΄ν„°λ‚˜ 섀정이 λΆˆν•„μš”ν•˜κ²Œ λ…ΈμΆœλ  μœ„ν—˜λ„ μ€„μ–΄λ“€κ²Œ 될 것이닀. 그리고 λ§€λ‹ˆμ €λ„ νŒ€μ›μ΄ μ–΄λ–€ κΆŒν•œμ΄ ν•„μš”ν•œμ§€ μ •ν™•νžˆ νŒŒμ•…ν•  수 μžˆμ–΄ 업무에 ν•„μš”ν•œ κΆŒν•œμ„ μ μ‹œμ— μ œκ³΅ν•˜λ©° ν˜‘μ—…μ˜ νš¨μœ¨λ„ 크게 λ†’μ•„μ§€κ²Œ λœλ‹€.

λ³΄μ•ˆκ³Ό νš¨μœ¨μ„±, 두 마리 토끼λ₯Ό μž‘μ„ 수 있게 λ˜λŠ” 것이닀! πŸ‡


2. Let new user access to VM with xrdp

<🐳 Docker Study 2nd, 3. Connect to GUI via RDP (MAC)> μ—μ„œ XRDPλ₯Ό μ΄μš©ν•΄ λ°μŠ€ν¬νƒ‘μ„ μ΄μš©ν•΄ 가상머신에 접속할 수 μžˆλ„λ‘ ν–ˆλ‹€.μ‹ κ·œ μœ μ €(dataengineer) μ—­μ‹œ λ™μΌν•œ 과정을 μ§„ν–‰ν–ˆλ‹€. λ‹€λ₯Έ 점은 κ·Έλ£Ή 기반 κΆŒν•œμ„ 톡해 νŠΉμ • 그룹의 μœ μ €μ—κ²Œλ§Œ 접근을 ν—ˆμš©ν•˜λ„λ‘ κ΅¬μ„±ν•œ 점이닀. (κΈ°μ‘΄ λ‚΄μš©κ³Ό λΉ„κ΅ν•΄λ³΄λŠ” 것을 μΆ”μ²œν•œλ‹€!)

κ°€μž₯ λ¨Όμ € sudo groupadd tsuser 으둜 tsusers 그룹을 생성해 μ£Όμ—ˆλ‹€. 이후 sudo usermod -aG tsusers dataengineer 둜 β€˜dataengineer’, sudo usermod -aG tsusers Arielleβ€˜Arielle’을 tsusers 그룹에 μΆ”κ°€ν•΄ μ£Όμ—ˆλ‹€. (λͺ…λ Ήμ–΄ μž…λ ₯ μˆœμ„œλŠ” 상관 μ—†μŒ!)

Descriptive Alt Text

κ·Έ λ‹€μŒμ—λŠ” sudo nano /etc/xrdp/sesman.ini νŒŒμΌμ„ μˆ˜μ •ν•΄ μ£Όμ—ˆλ‹€. [Security] μ„Ήμ…˜μ—μ„œ TerminalServerUsers=tsusers ν™•μΈν•˜κ³ , AlwaysGroupCheck=true 둜 λ³€κ²½ν•΄ μ£Όμ—ˆλ‹€. (ν•˜λ‹¨ 사진 μ°Έκ³ πŸ‘‡)

이후 su dataengineer μ‹€ν–‰ μ‹œ, Arielle@kaggle-linux-gpu-vm β†’ dataengineer@kaggle-linux\gpu-vm으둜 κ°€μƒλ¨Έμ‹ μ˜ μœ μ €κ°€ λ³€κ²½λ˜λŠ” 것을 확인할 수 μžˆλ‹€. (su : switch user)

Descriptive Alt Text

참고둜 echo xfce4-session > ~/.xsession 의 경우 μ‚¬μš©μžκ°€ XRDP와 같은 원격 접속을 톡해 λ‘œκ·ΈμΈν•  λ•Œ μžλ™μœΌλ‘œ XFCE λ°μŠ€ν¬νƒ‘ ν™˜κ²½μ„ μ‹œμž‘ν•˜λ„λ‘ ν•˜λŠ” 역할을 ν•œλ‹€.

Descriptive Alt Text

μ—¬κΈ°κΉŒμ§€ μƒˆλ‘œμš΄ μœ μ €(dataengineer)λ₯Ό μƒμ„±ν•˜κ³ , μœ μ €μ—κ²Œ Remote Desktop Protocol(XRDP)둜 μ ‘κ·Ό κ°€λŠ₯ν•˜λ„λ‘ μ€€λΉ„ν•΄μ£Όμ—ˆλ‹€. λ‹€μŒ λ‹¨κ³„λŠ” 이 μƒˆλ‘œμš΄ μœ μ €μ—κ²Œ KEYλ₯Ό μ‚¬μš©ν•΄ 가상머신에 μ ‘κ·Όν•  수 μžˆλ„λ‘ μ„€μ •ν•΄ μ£Όμ–΄μ•Ό ν•œλ‹€. <3. ssh key creation by admin> 으둜 계속 진행해주면 λœλ‹€! πŸ‘Š


3. ssh key creation by admin (Admin Role)

기쑴에 가상머신에 μ ‘κ·Όν•˜κΈ° μœ„ν•΄μ„œ ssh폴더λ₯Ό 생성 ν›„ .pem 파일의 가상머신 ν‚€λ₯Ό μ €μž₯ν•΄ λ†“μ•˜μ—ˆλ‹€. μƒˆλ‘œμš΄ μœ μ € μ—­μ‹œ λ§ˆμ°¬κ°€μ§€λ‘œ ssh폴더λ₯Ό 생성 ν›„ κΈ°μ‘΄ 킀에 λŒ€ν•œ κΆŒν•œμ„ λΆ€μ—¬ν•΄ μ£Όμ–΄μ•Ό ν•œλ‹€. μ—¬λŸ¬ 단계가 ν•„μš”ν•˜μ§€λ§Œ 사싀 κ·Έλ ‡κ²Œ 어렡지 μ•Šμ•„μ„œ ν•˜λ‚˜μ”© 천천히 따라가면 μ‰½κ²Œ 진행될 것이닀!

1οΈβƒ£Β μƒˆλ‘œμš΄ μœ μ €μ— λŒ€ν•΄ mkdir ~/ssh ssh폴더λ₯Ό 생성해 μ£Όμ—ˆλ‹€.

2️⃣ touch ~/ssh/authorized_keys λͺ…령을 μ‚¬μš©ν•΄ ssh λ‚΄λΆ€ 디렉토리에 authorized_keys νŒŒμΌμ„ λ§Œλ“€μ–΄ μ£Όμ—ˆλ‹€.

3️⃣ chmod 700 ~/.ssh 둜 ν•΄λ‹Ή 폴더에 λŒ€ν•œ κΆŒν•œμ„ μ„€μ •ν–ˆλ‹€.

참고둜 μ—¬κΈ°μ„œ 700에 λŒ€ν•΄μ„œ 잠깐 μ΄μ•ΌκΈ°ν•΄λ³΄μžλ©΄! κΆŒν•œμ˜ ν—ˆμš© λ²”μœ„μ— 따라 이 μˆ«μžκ°€ λ‹¬λΌμ§ˆ 수 μžˆλ‹€. 700은 읽기(4), μ“°κΈ°(2), μ‹€ν–‰(1)의 κΆŒν•œμ„ λ”ν•΄μ„œ λ§Œλ“  것이닀. 쑰금만 더 μžμ„Ένžˆ 이야기해보면 μ•„λž˜μ™€ κ°™λ‹€!

  • 7 (4 + 2 + 1) : μ†Œμœ μžμ—κ²Œ 읽기, μ“°κΈ°, μ‹€ν–‰μ˜ λͺ¨λ“  κΆŒν•œμ„ λΆ€μ—¬ (ν˜„μž¬ μœ μ €)
  • 0 : κ·Έλ£Ήμ—λŠ” μ ‘κ·Ό κΆŒν•œμ΄ μ—†μŒ (ν˜„μž¬ μœ μ €κ°€ μ†ν•œ κ·Έλ£Ή)
  • 0 : λ‹€λ₯Έ μ‚¬μš©μžμ—κ²Œλ„ μ ‘κ·Ό κΆŒν•œ μ—†μŒ (κ·Έ μ™Έμ˜ μ‚¬μš©μž)

즉, dataengineer μœ μ €μ—κ²Œλ§Œ ν•΄λ‹Ή 폴더λ₯Ό 열어보고 μˆ˜μ •ν•˜κ³  μ‹€ν–‰ν•  수 μžˆλŠ” 것이닀. μ΄λ ‡κ²Œ μ΄ν•΄ν•˜λ©΄ μΆ”ν›„ λ‚΄κ°€ νŠΉμ • μœ μ €μ—κ²Œ κΆŒν•œμ„ μ„Έλ°€ν•˜κ²Œ λΆ€μ—¬ν•  수 μžˆμ„ 것이닀!

4️⃣ authorized_keys νŒŒμΌμ—λŠ” chmod 600 ~/.ssh/authorized_keys 으둜 λ³΄μ•ˆμ„±μ„ λ†’μ—¬ μ£Όμ—ˆλ‹€. ν•΄λ‹Ή νŒŒμΌμ€ μ‹€μ œ SSH Key λ¦¬μŠ€νŠΈκ°€ λ“€μ–΄ μžˆλ‹€. λ”°λΌμ„œ 600(4+2)둜 μ‹€ν–‰ κΆŒν•œμ€ 주지 μ•Šμ•˜λ‹€.

일단, λ‚˜λŠ” μ—¬κΈ°μ„œ μ™œ ssh처럼 700κΆŒν•œμ„ λΆ€μ—¬ν•˜μ§€ μ•Šμ•˜λŠ”μ§€ κΆκΈˆν–ˆλ‹€. κ·Έλž˜μ„œ 쑰금 더 μ°Ύμ•„λ³΄λ‹ˆ 사싀 λ‹Ήμ—°ν•œ μ΄μœ μ˜€λ‹€. authorized_keys νŒŒμΌμ—λŠ” SSH 접속을 ν—ˆμš©ν•˜λŠ” 곡개 ν‚€ λͺ©λ‘λ§Œ μ €μž₯λ˜μ–΄ μžˆλ‹€. 이 파일 μžμ²΄κ°€ μ‹€ν–‰λ˜λŠ” ν”„λ‘œκ·Έλž¨μ΄λ‚˜ μŠ€ν¬λ¦½νŠΈκ°€ μ•„λ‹ˆλΌλŠ” 것이 ν¬μΈνŠΈλ‹€! κ·Έλž˜μ„œ μ‹€ν–‰ κΆŒν•œμ„ 쀄 ν•„μš”κ°€ μ—†κ³  였히렀 μ£ΌλŠ” 게 λ³΄μ•ˆ μΈ‘λ©΄μ—μ„œ λΆˆν•„μš”ν•˜κ²Œ κΆŒν•œμ„ λ„“νžˆλŠ” 일이 λ˜λ²„λ¦°λ‹€. λ”°λΌμ„œ 읽기와 μ“°κΈ° κΆŒν•œλ§Œ μ„€μ •ν•˜λ©΄ μΆ©λΆ„ν•˜κ³ , μœ„μ—μ„œ μ„€λͺ…ν•œ Principle of Least Privilege(μ΅œμ†Œ κΆŒν•œμ˜ 원칙)κ³Ό λ”± λ§žμ•„ 떨어진닀! πŸ”

5️⃣ ssh-keygen -t rsa -m PEM λͺ…λ Ήμ–΄λ‘œ dataengineer μ‚¬μš©μžλ§Œμ˜ PEM ν˜•μ‹μ˜ μƒˆλ‘œμš΄ SSH ν‚€ μŒμ„ 생성해 μ£Όμ—ˆλ‹€. β€˜Enter file in which to save the key…’ 라고 ν‚€λ₯Ό μ €μž₯ν•  νŒŒμΌμ„ μž…λ ₯ν•˜λΌλŠ” 메세지가 λ‚˜μ˜¬ν…λ°, Enterν‚€λ₯Ό 눌러 κΈ°λ³Έ μœ„μΉ˜(/home/dataengineer/.ssh/id_rsa)λ₯Ό 선택해주면 λœλ‹€. μ΅œμ’…μ μœΌλ‘œ .pub으둜 λλ‚˜μ§€ μ•ŠλŠ” κ°œμΈν‚€μ™€ .pub으둜 λλ‚˜λŠ” 곡개 ν‚€κ°€ μƒμ„±λ˜λ‹ˆ 확인해 μ£Όλ©΄ λœλ‹€!

<1️⃣~5οΈβƒ£Β μ•„λž˜ 사진 μ°Έκ³ πŸ‘‡ >

Descriptive Alt Text

6️⃣  nano ~/.ssh/authorized_keys 둜 ν•΄λ‹Ή νŒŒμΌμ— 접근해보면 아무것도 없을 것이닀. 이 곳에 μœ„μ—μ„œ 5οΈβƒ£Β μ—μ„œΒ μƒμ„±ν•œ 곡개 ν‚€(public key)λ₯Ό 볡사해 μ£Όμ–΄μ•Ό ν•œλ‹€!

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys λͺ…λ Ήμ–΄λ‘œ 곡개 ν‚€λ₯Ό 볡사해 μ£Όλ©΄ λœλ‹€. μ‹€ν–‰ 화면을 보고 이야기 해보둝 ν•˜μžλ©΄, ν˜„μž¬ .ssh 폴더에 authorized_keys, id_rsa, id_rsa.pub 파일이 μžˆλŠ” 것을 확인할 수 μžˆλ‹€. 각각의 파일 νŠΉμ§•μ€ μ•„λž˜μ™€ κ°™λ‹€.

  • authorized_keys
    • id_rsa.pub : public key(곡개 ν‚€)
  • id_rsa : private key(개인 ν‚€)

Descriptive Alt Text

λ§Œμ•½ μ™ΈλΆ€μ—μ„œ id_rsaλΌλŠ” private keyλ₯Ό μ΄μš©ν•΄ μ™ΈλΆ€μ—μ„œ 가상머신에 μ ‘κ·Όν•˜λ €κ³  ν•  λ•Œ, private key와 authorized keys파일 내뢀에 μžˆλŠ” public key와 λ§€μΉ­μ‹œμΌœ μ—°κ²° ν˜Ήμ€ 거절 ν•˜λŠ” λ°©μ‹μœΌλ‘œ μ§„ν–‰λœλ‹€.

Descriptive Alt Text

7️⃣ 6οΈβƒ£μ—μ„œ κ³΅κ°œν‚€λ₯Ό authorized_keys둜 볡사 ν•΄μ£Όμ—ˆμœΌλ‹ˆ μ΄λ²ˆμ— nano ~/.ssh/authorized_keys μ‹€ν–‰μ‹œμΌœλ³΄λ©΄ key λ‚΄μš©μ΄ λ“€μ–΄μžˆμ„ 것이닀.

전체λ₯Ό λ³΅μ‚¬ν•œ ν›„ kaggle-linux-gpu-vm_key_dataengineer.pem μ΄λΌλŠ” 파일둜 ssh 폴더에 μ‹ κ·œ μœ μ €λ§Œμ˜ ν‚€λ₯Ό 생성해 μ£Όμ—ˆλ‹€.

Descriptive Alt Text

8️⃣ ’dataengineer’ μœ μ €λ‘œ μ‹€μ œ ν•΄λ‹Ή 가상머신에 접속해보면 μ •μƒμ μœΌλ‘œ 싀행됨을 확인할 수 μžˆμ„ 것이닀! (ssh -i <μ‹ κ·œ μœ μ € pemν‚€> <μœ μ € 이름>@<가상머신 IP>)

Descriptive Alt Text


4. User Setting: ssh key creation by admin (User Role)

이제 μƒˆλ‘œμš΄ μœ μ €, dataengineerκ°€ κ°€μƒλ¨Έμ‹ μœΌλ‘œ μž‘μ—…μ„ μ§„ν–‰ν•˜κΈ° μœ„ν•΄μ„œλŠ” 둜컬과 가상머신을 μ—°κ²°ν•΄μ•Ό ν•œλ‹€. 사싀 λ‘œμ»¬μ—μ„œ 가상머신을 μ—°κ²°ν•˜λŠ” 과정은 이미 κΈ°μ‘΄ ν¬μŠ€νŒ…μ—μ„œ μ„€λͺ…ν•œ λ‚΄μš©μ΄λ‹€. 정리 된 λ‚΄μš©μ€ πŸ”—Β Remote Tunnel Connect λ§ν¬μ—μ„œ 확인해주면 λœλ‹€!


πŸ”—Β Remote Tunnel Connect (πŸ‘‰κ΄€λ ¨λ‚΄μš© μ°Έκ³ )

  • ssh μ—°κ²°
  • RDP(Remote Desktop Protocol) GUI μ—°κ²°
    • Chrome μ„€μΉ˜
    • Visual Studio Code μ„€μΉ˜

βœ‹ μ—¬κΈ°μ„œ 잠깐! μ‹ κ·œ μœ μ € μ„€μ • μ‹œ μ•Œμ•„μ•Ό ν•  점

μΌλ°˜μ μœΌλ‘œλŠ” μƒˆ μœ μ €κ°€ 가상머신에 μ ‘μ†ν•˜λ €λ©΄ Chromeμ΄λ‚˜ VSCode 같은 툴이 ν•„μš”ν•  μˆ˜λ„ μžˆλŠ”λ°, 이 κ²½μš°λŠ” λ³„λ„λ‘œ μ„€μΉ˜ν•˜μ§€ μ•Šμ•„λ„ λœλ‹€! μ™œλƒν•˜λ©΄ κ΄€λ¦¬μž(Arielle)κ°€ 이미 μ„€μΉ˜ν–ˆκΈ° λ•Œλ¬Έμ΄λ‹€.

이게 무슨 말인가 싢을 수 μžˆλ‹€. μ‹ κ·œ μœ μ €λŠ” μ†Œν”„νŠΈμ›¨μ–΄λ₯Ό μ„€μΉ˜ν•œ 적이 μ—†λŠ”λ° 말이닀.

κ·Έ μ΄μœ λŠ” κ΄€λ¦¬μžκ°€ Chromeκ³Ό VSCodeλ₯Ό 이미 μ‹œμŠ€ν…œ λ ˆλ²¨μ— μ„€μΉ˜ν–ˆκΈ° λ•Œλ¬Έμ— μ‹ κ·œ μœ μ €λ„ 이 μ†Œν”„νŠΈμ›¨μ–΄λ“€μ„ κ·ΈλŒ€λ‘œ μ‚¬μš©ν•  수 μžˆλ‹€. 이 말인즉, μ‹œμŠ€ν…œμ— ν•œ 번 μ„€μΉ˜λœ μ†Œν”„νŠΈμ›¨μ–΄λŠ” μ—¬λŸ¬ μœ μ €κ°€ 곡용으둜 μ‚¬μš©ν•  수 μžˆλŠ” μƒνƒœκ°€ λ˜λŠ” 것이닀.

κ³„μ†ν•΄μ„œ λ°˜λ³΅λ˜λŠ” 말이긴 ν•˜μ§€λ§Œ κΈ°μ–΅ν•  점은, κ΄€λ¦¬μž κΆŒν•œμ„ μƒˆ μœ μ €μ—κ²Œ λΆ€μ—¬ν•˜μ§€ μ•ŠλŠ”λ‹€λŠ” 원칙이닀.(λ°˜λ³΅λ˜λŠ” 것을 λ³΄λ‹ˆ κ½€ μ€‘μš”ν•œ λΆ€λΆ„μž„!) κ΄€λ¦¬μžλŠ” μ‹œμŠ€ν…œ μ „μ²΄μ˜ 섀정을 λ³€κ²½ν•  수 μžˆμ§€λ§Œ 일반 μœ μ €μ—κ²ŒλŠ” λΆˆν•„μš”ν•œ κΆŒν•œμ„ 주지 μ•ŠλŠ” 것이 λ³΄μ•ˆμ„ μœ μ§€ν•˜λŠ” 데 μ€‘μš”ν•œ 점을 λ‹€μ‹œν•œλ²ˆ 머릿속에 μ •λ¦¬ν•˜λ©΄ μ’‹κ² λ‹€.

λ‚˜λŠ” MAC을 μ‚¬μš©ν•˜κ³  μžˆμœΌλ‹ˆ Window App을 톡해 dataenginner μœ μ €λ‘œ μ ‘μ†ν•΄μ£Όμ—ˆλ‹€. 이후 VSCode β†’ Account β†’ Turn on Remote Tunnel Access β†’ Install as a service β†’ Sign in with Github (Use weaker encryption 버그 μ°Έκ³ ) 으둜 진행해 μ£Όμ—ˆλ‹€.

Descriptive Alt Text

둜컬의 VSCode둜 λŒμ•„μ™€ dataenginner의 Tunnel λ°©μ‹μœΌλ‘œ 접속해 μ£Όμ—ˆλ”λ‹ˆ μ •μƒμ μœΌλ‘œ 접속됨을 ν™•μΈν–ˆλ‹€!

Descriptive Alt Text


5. The connection between autonomous driving and Docker πŸš—πŸ€–

Docker μ‹œλ¦¬μ¦ˆ λ§ˆμ§€λ§‰ ν¬μŠ€νŒ…μ΄λ‹ˆ 만큼, Dockerλ₯Ό κ³΅λΆ€ν•˜κ²Œ 된 κ°€μž₯ 큰 이유인 μžμœ¨μ£Όν–‰ 개발의 νŠΉμ΄μ μ— λŒ€ν•΄ 이야기해보렀고 ν•œλ‹€. μžμœ¨μ£Όν–‰μ„ κ³΅λΆ€ν•΄λ³΄μž! 라고 마음 λ¨Ήμ—ˆμ„ λ•Œ μ—„μ²­λ‚˜κ²Œ 사λͺ…감 μžˆλŠ” μ΄μœ λŠ” μ—†μ—ˆλ‹€. μ†”μ§νžˆ λ§ν•˜λ©΄ κ·Έμ € μ‚¬λžŒ 없이 μ£Όν–‰ν•˜λŠ” μžλ™μ°¨λ₯Ό 보고 μžˆμžλ‹ˆ λ„νŒŒλ―Όμ΄ ν„°μ Έμ„œ μ—¬κΈ°κΉŒμ§€ μ™”λ‹¬κΉŒ πŸ˜‚?

μ•„λ¬΄νŠΌ 이 세상에 처음 λ“€μ–΄μ™€μ„œ 곡뢀λ₯Ό ν•΄λ³Έ μ†Œκ°μ€.. 정말이지 λ‹€μ–‘ν•œ μ„Όμ„œλ“€κ³Ό 그에 λ”°λ₯Έ μ—„μ²­λ‚œ μ–‘μ˜ λ°μ΄ν„°λ“€κΉŒμ§€.λ„ˆλ¬΄λ‚˜λ„ λ‹€μ–‘ν•œ μ‹œμŠ€ν…œλ“€μ΄ μ‹€μ‹œκ°„μœΌλ‘œ μƒν˜Έμž‘μš©ν•΄μ•Ό ν•˜λŠ” κ΅¬μ‘°μ˜€λ‹€. μ™œ μžμœ¨μ£Όν–‰ μ˜΅μ…˜μ΄ λΉ„μ‹Έκ³  빨리 μƒμš©ν™”λ˜μ§€ μ•ŠλŠ”μ§€μ— λŒ€ν•΄ λ°”λ‘œ μˆ˜κΈν•˜κ²Œ λ˜μ—ˆλ‹€.

λŒ€μ²΄ 이런 μ‹œμŠ€ν…œμ„ μ–΄λ–»κ²Œ μ²˜λ¦¬ν•˜κ³  μžˆλŠ”κ°€ μ°Ύμ•„λ³΄λ‹ˆ Docker와 같은 가상화, μ»¨ν…Œμ΄λ„ˆ 기술둜 μžμœ¨μ£Όν–‰ 개발의 λ³΅μž‘μ„±μ„ ν•΄κ²°ν•˜λŠ” 것 κ°™μ•˜λ‹€. κ°€μž₯ λ¨Όμ € μ„Όμ„œλ“€! Lidar, Rader, Camera, GPSλŠ” μΌλ°˜μΈλ“€λ„ μ•Œκ³  μžˆλŠ” μžμœ¨μ£Όν–‰μ˜ μ„Όμ„œλ“€μ΄λ‹€. 그런데 이 μ„Όμ„œλ“€μ΄ μ²˜λ¦¬ν•˜λŠ” λ°μ΄ν„°μ˜ μš©λŸ‰μ΄ 정말 μ–΄λ§ˆλ¬΄μ‹œν•œλ°, 이 λ•Œ Docker κΈ°μˆ μ„ μ‚¬μš©ν•΄ μ„Όμ„œ ν˜Ήμ€ μ‹œμŠ€ν…œμ— ν•„μš”ν•œ λΌμ΄λΈŒλŸ¬λ¦¬λ‚˜ 쒅속성(dependencies)을 μ»¨ν…Œμ΄λ„ˆλ³„λ‘œ 관리할 수 μžˆμ–΄ λ‹€λ₯Έ μ„Όμ„œλ“€κ³Όμ˜ 좩돌 없이 λ…λ¦½μ μœΌλ‘œ μž‘λ™ ν•  수 μžˆλ‹€.

μ‹€μ œλ‘œ μš”μ¦˜ μ„Όμ„œ 처리의 νŠΈλžœλ“œλŠ” Sensor Fusion(μ„Όμ„œ μœ΅ν•©)이닀. 각기 μ„Όμ„œλ§ˆλ‹€ μž₯단점듀이 λͺ…ν™•ν•΄ μž₯점듀을 μ΅œλŒ€ν•œμœΌλ‘œ λ°œνœ˜ν•  수 μžˆλ„λ‘ μ‹œμŠ€ν…œμ„ μ²˜λ¦¬ν•˜λŠ” 것이닀. μ£Όκ°„μ—λŠ” 카메라λ₯Ό μ΄μš©ν•΄ 객체λ₯Ό νƒμ§€ν•˜κ³ , μ•…μ²œν›„ ν˜Ήμ€ μ•Όκ°„μ—λŠ” λ‹€λ₯Έ μ„Όμ„œλ“€μ„ μ“°λŠ” 것이 훨씬 더 μ•ˆμ „ν•˜κ³ , 경제적인 것이 핡심이닀.

μ΄λ ‡κ²Œ ν™˜κ²½μ˜ 영ν–₯을 많이 λ°›λŠ” μžμœ¨μ£Όν–‰ νŠΉμ„± 상 μ‹€μ œλ‘œ λ‹€μ–‘ν•œ 툴과 λΌμ΄λΈŒλŸ¬λ¦¬λ“€μ΄ μš”κ΅¬λ˜κ³  μžˆλŠ”λ° 심지어 이 λͺ¨λ“  것듀이 Sensor Fusion에 맞게 λ™μ‹œμ—! μž‘λ™ν•΄μ•Όν•œλ‹€. μ΄λ•Œ DockerλŠ” μ£Όν–‰ ν™˜κ²½ λ³„λ‘œ μ»¨ν…Œμ΄λ„ˆ μ΄λ―Έμ§€λ‘œ μ €μž₯ν•΄ 두고, ν•„μš”ν•  λ•Œλ§ˆλ‹€ λΆˆλŸ¬μ™€ μ‚¬μš©ν•  수 μžˆλ‹€. 이게 λ‚΄κ°€ λŠλ‚€ μžμœ¨μ£Όν–‰ μ—”μ§€λ‹ˆμ–΄κ°€ Dockerλ₯Ό λ°°μ›Œμ•Ό ν•˜λŠ” κ°€μž₯ 큰 μ΄μœ λ‹€.

빅데이터, DB μˆ˜μ—…μ„ λ“£κ³  ν˜Ήμ€ 곡뢀해봀닀면 Roll Back(λ‘€λ°±)에 λŒ€ν•΄ λ“€μ–΄ 봀을 것이닀. μ‹œμŠ€ν…œμ΄λ‚˜ μ†Œν”„νŠΈμ›¨μ–΄ μ—…λ°μ΄νŠΈ 이후에 λ°œμƒν•˜λŠ” λ¬Έμ œλ“€μ„ 이전 λ²„μ „μœΌλ‘œ λ˜λŒλ¦°λ‹€λŠ” κ°œλ…μΈλ°, Docker의 이미지 버전 κ΄€λ¦¬λ‘œ μ‰½κ²Œ λ‘€λ°± ν•  수 μžˆλ‹€. (이 뢀뢄은 μ‹œλ¦¬μ¦ˆμ—μ„œ 닀루지 μ•Šμ€ λ‚΄μš©μ΄λΌ 더 곡뢀해보렀고 ν•œλ‹€.)

Tesla, Waymo 같은 μžμœ¨μ£Όν–‰ 기업듀은 μ‹€μ œλ‘œ μ†Œν”„νŠΈμ›¨μ–΄ μ—…λ°μ΄νŠΈλ₯Ό 톡해 μ£Όν–‰ μ•ˆμ •μ„±μ„ 높이고 μžˆλŠ”λ°, μ•½κ°„μ”© κ·Έ μ‹œκΈ°λŠ” νšŒμ‚¬λ§ˆλ‹€ λ‹€λ₯Έ 것 κ°™λ‹€.TeslaλŠ” OTA(Over-the-Air) λ°©μ‹μœΌλ‘œ μ°¨λŸ‰μ΄ μ‹€μ‹œκ°„ λ°μ΄ν„°λ‘œ μžκ°€ν•™μŠ΅ μ—…λ°μ΄νŠΈλ₯Ό μ§„ν–‰ν•˜κΈ°μ— κ½€ μž¦μ€ 편이고, WaymoλŠ” μ£Όν–‰ ꡬ역 λ³„λ‘œ μΌμ •ν•œ 주기에 따라 μ—…λ°μ΄νŠΈλ₯Ό μ§„ν–‰ν•œλ‹€.

핡심은 μžμœ¨μ£Όν–‰ μ†Œν”„νŠΈμ›¨μ–΄λŠ” κΎΈμ€€ν•œ μ—…λ°μ΄νŠΈμ™€ 관리가 ν•„μˆ˜λΌλŠ” 것이며 이 λ•Œ λ„μ»€μ˜ 이미지 Roll Back πŸ”„ κΈ°λŠ₯이 μ—…λ°μ΄νŠΈ μ‹œ λ°œμƒν•˜λŠ” 문제λ₯Ό λΉ λ₯΄κ²Œ 되돌렀 μ‹œμŠ€ν…œμ˜ μ•ˆμ •μ„±μ„ μœ μ§€ν•΄μ£ΌκΈ°λ„ ν•˜κ³ , μ‹ κ·œ μ—…λ°μ΄νŠΈλ₯Ό μ μš©ν•˜κΈ° 전에 λ‹€μ–‘ν•œ μ£Όν–‰ ν™˜κ²½μ—μ„œ μΆ©λΆ„νžˆ ν…ŒμŠ€νŠΈ 해도 μ›λž˜ μƒνƒœλ‘œ μ‰½κ²Œ 되돌릴 수 μžˆλ‹€.

이 외에도 λ‹€μ–‘ν•œ 이점듀이 μžˆκ² μ§€λ§Œ μ΄μ •λ„λ‘œλ§Œ 정리해도 μžμœ¨μ£Όν–‰ μ—”μ§€λ‹ˆμ–΄μ—κ²Œ DockerλŠ” ν•„μš”μΆ©λΆ„μ‘°κ±΄μ΄ μ•„λ‹κΉŒ μƒκ°ν•œλ‹€.


이번 Docker study 6th을 끝으둜 도컀 μ‹œλ¦¬μ¦ˆκ°€ 끝났닀. μ‹œλ¦¬μ¦ˆκ°€ 끝났닀고 ν•œλ“€ λ‚΄κ°€ 도컀에 λŒ€ν•΄ λͺ¨λ“  κ±Έ μ•Œκ²Œ λ˜μ—ˆλ‹€κ³  μ ˆλŒ€λ‘œ μ ˆλŒ€λ‘œ μƒκ°ν•˜μ§€ μ•ŠλŠ”λ‹€. 였히렀 이제 λ‚΄κ°€ μΆ”ν›„ λ„μ»€μ˜ μ–΄λ–€ 세뢀적인 μ‹œλ¦¬μ¦ˆλ₯Ό μ€€λΉ„ν•΄μ•Ό ν•˜λŠ”μ§€ μ•Œκ²Œ λ˜μ—ˆλ‹€κ³  λ§ν•˜λŠ” 게 더 μ •ν™•ν•  것 κ°™λ‹€.

Microsoft Certified: Azure AI Fundamentals AI와 λ¨Έμ‹ λŸ¬λ‹μ˜ 기본을 λ°”νƒ•μœΌλ‘œ ν΄λΌμš°λ“œ ν™˜κ²½μ—μ„œ λ°°ν¬ν•˜λŠ” 과정을 닀룬 μžκ²©μ¦μ΄λ‹€. μ‹œκ°„ μ§€λ‚˜λ©΄ μžŠμ–΄λ²„λ¦΄κ²Œ λ»”ν•˜λ‹ˆ Docker에 λŒ€ν•΄ 머리속에 μ‘°κΈˆμ΄λ‚˜ λ‚¨μ•˜μ„ λ•Œ ν•œλ²ˆ 도전해보렀고 ν•œλ‹€.πŸ›«

Descriptive Alt Text


Reference

What is the Principle of Least Privilege?_Google Cloud Tech

Fusion of Imaging Radar and Camera Sensors: Elevating Autonomous Vehicle Reliability

Tesla vs Waymo: The Battle for Autonomous Vehicle Leadership

Tags: DockerBigDataADLS2CloudStorageAzureAutonomous_DrivingAcconunt

Subscribe via RSS