DevOps Bootcamp · บทเรียน

บัญชีบริการและอัตลักษณ์ของเวิร์กโหลด

เรียนรู้ว่าบัญชีบริการมอบอัตลักษณ์เฉพาะให้พ็อดได้อย่างไร โทเค็นทำงานอย่างไร และจะมอบสิทธิ์เข้าถึงเท่าที่จำเป็นให้พ็อดได้อย่างไร

บทเรียน 4 จาก 413 ขั้นตอน

บัญชีบริการและอัตลักษณ์ของเวิร์กโหลด เป็นบทเรียน DevOps Bootcamp ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน DevOps Bootcamp และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส DevOps Bootcamp มีบทเรียนทั้งหมด 4 บทเรียน

ตัวตนสำหรับเวิร์กโหลด

ผู้ใช้ยืนยันตัวตนกับ Kubernetes แต่พ็อดก็ต้องมีตัวตนเช่นกัน เพื่อให้สื่อสารกับเซิร์ฟเวอร์ส่วนติดต่อโปรแกรมประยุกต์ได้อย่างปลอดภัย ตัวตนนั้นคือบัญชีบริการ

บัญชีบริการคืออะไร

ServiceAccount คือออบเจ็กต์ที่อยู่ภายในเนมสเปซและแทนตัวตนของเวิร์กโหลด พ็อดทุกตัวทำงานภายใต้บัญชีหนึ่ง โดยใช้ default หากคุณไม่ได้ระบุบัญชี

apiVersion: v1
kind: ServiceAccount
metadata:
  name: report-generator
  namespace: analytics

การกำหนดบัญชีบริการให้พ็อด

ตั้งค่า serviceAccountName ในข้อกำหนดของพ็อด เพื่อให้พ็อดทำงานภายใต้ตัวตนที่ระบุ

apiVersion: v1
kind: Pod
metadata:
  name: reporter
spec:
  serviceAccountName: report-generator
  containers:
  - name: app
    image: reporter:1.0

โทเค็นที่เมาต์

Kubernetes จะเมาต์โทเค็นเจดับเบิลยูทีอายุสั้นสำหรับบัญชีบริการไว้ในพ็อด เพื่อใช้ยืนยันตัวตนของการเรียกส่วนติดต่อโปรแกรมประยุกต์

# inside the Pod
cat /var/run/secrets/kubernetes.io/serviceaccount/token

เหตุใดบัญชีเริ่มต้นจึงมีความเสี่ยง

ServiceAccount default ถูกใช้ร่วมกันโดยพ็อดทั้งหมดในเนมสเปซ การมอบสิทธิ์ให้บัญชีนี้จะเปิดเผยทุกสิ่งมากเกินไป ควรใช้บัญชีเฉพาะสำหรับแต่ละเวิร์กโหลด

การปิดการเมาต์โทเค็นอัตโนมัติ

หากพ็อดไม่เคยเรียกส่วนติดต่อโปรแกรมประยุกต์ ให้ปิดการเมาต์โทเค็นเพื่อลดพื้นผิวการโจมตี

apiVersion: v1
kind: Pod
metadata:
  name: no-api-pod
spec:
  automountServiceAccountToken: false
  containers:
  - name: app
    image: myapp:1.0

การมอบสิทธิ์ด้วย RBAC

บัญชีบริการจะยังไม่มีอำนาจจนกว่าคุณจะผูกบัญชีนั้นเข้ากับบทบาท หัวข้อของ RoleBinding คือบัญชีบริการ

apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: reporter-read
  namespace: analytics
subjects:
- kind: ServiceAccount
  name: report-generator
roleRef:
  kind: Role
  name: pod-reader
  apiGroup: rbac.authorization.k8s.io

การใช้สิทธิ์น้อยที่สุดในทางปฏิบัติ

  • ใช้บัญชีบริการหนึ่งบัญชีต่อเวิร์กโหลดหนึ่งรายการ
  • มอบเฉพาะการกระทำและทรัพยากรที่จำเป็นจริง ๆ
  • จำกัดขอบเขตไว้ที่เนมสเปซด้วยบทบาทเมื่อทำได้ แทนการใช้ ClusterRole

โทเค็นแบบผูกและฉาย

โทเค็นสมัยใหม่จะถูกฉายและผูกกับอายุการใช้งานของพ็อด โดยมีวันหมดอายุสั้น โทเค็นจะหมุนเวียนโดยอัตโนมัติ ดังนั้นโทเค็นที่รั่วไหลจึงอันตรายน้อยกว่าข้อมูลลับอายุยาวแบบเก่ามาก

ตัวตนของเวิร์กโหลดบนคลาวด์

แพลตฟอร์มคลาวด์จะจับคู่ ServiceAccount ของ Kubernetes กับตัวตน IAM บนคลาวด์ (เช่น IRSA บน AWS และตัวตนของเวิร์กโหลดบน GKE) ทำให้พ็อดเข้าถึงทรัพยากรคลาวด์ได้โดยไม่ต้องจัดเก็บข้อมูลรับรองแบบคงที่

metadata:
  annotations:
    eks.amazonaws.com/role-arn: arn:aws:iam::123:role/report-role

การตรวจสอบสิทธิ์

ใช้ kubectl auth can-i โดยแอบอ้างเป็นบัญชีบริการ เพื่อยืนยันว่าบัญชีนั้นมีสิทธิ์เข้าถึงตรงตามที่คุณคาดหวังทุกประการ

kubectl auth can-i list pods \
  --as=system:serviceaccount:analytics:report-generator \
  -n analytics

ตรวจสอบความเข้าใจอย่างรวดเร็ว

ทดสอบความเข้าใจเรื่องบัญชีบริการ

สรุปทบทวน

คุณได้เรียนรู้ว่า ServiceAccount มอบตัวตนของตนเองให้พ็อด โดยมีโทเค็นแบบฉายอายุสั้นรองรับ ใช้สิทธิ์น้อยที่สุดด้วยบัญชีเฉพาะสำหรับแต่ละเวิร์กโหลด มอบสิทธิ์ผ่านการผูกแบบ RBAC ปิดการเมาต์โทเค็นเมื่อไม่ใช้งาน และจับคู่บัญชีกับ IAM บนคลาวด์เพื่อเข้าถึงโดยไม่ต้องใช้ข้อมูลรับรอง

เริ่มต้นได้ฟรี

เรียนรู้ DevOps Bootcamp ด้วย AI tutor — ฟรี

เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป

คอร์ส
142
บทเรียน
568

คำถามที่พบบ่อย

บทเรียน “บัญชีบริการและอัตลักษณ์ของเวิร์กโหลด” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “บัญชีบริการและอัตลักษณ์ของเวิร์กโหลด” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส DevOps Bootcamp ให้อัปเกรดเป็น CoddyKit PRO คอร์ส DevOps Bootcamp มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “บัญชีบริการและอัตลักษณ์ของเวิร์กโหลด”

เรียนรู้ว่าบัญชีบริการมอบอัตลักษณ์เฉพาะให้พ็อดได้อย่างไร โทเค็นทำงานอย่างไร และจะมอบสิทธิ์เข้าถึงเท่าที่จำเป็นให้พ็อดได้อย่างไร คุณปฏิบัติ DevOps Bootcamp ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน DevOps Bootcamp หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน DevOps Bootcamp บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน

บทเรียน “บัญชีบริการและอัตลักษณ์ของเวิร์กโหลด” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน DevOps Bootcamp นี้ได้ไหม

ได้ บทเรียน DevOps Bootcamp ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. การควบคุมการเข้าถึงตามบทบาท (RBAC)
  2. นโยบายเครือข่ายสำหรับการแยกส่วน
  3. มาตรฐานความปลอดภัยของ Pod
  4. บัญชีบริการและอัตลักษณ์ของเวิร์กโหลด
← กลับไปที่ DevOps Bootcamp