0Pricing
DevOps Bootcamp · บทเรียน

การจัดการข้อมูลลับและ RBAC

เรียนรู้กลยุทธ์ขั้นสูงสำหรับจัดการข้อมูลละเอียดอ่อนและนำการควบคุมการเข้าถึงตามบทบาท (RBAC) มาใช้ในสภาพแวดล้อมคอนเทนเนอร์

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

รักษาความปลอดภัยสภาพแวดล้อมคอนเทนเนอร์

ยินดีต้อนรับ! ในบทเรียนนี้ เราจะเจาะลึกแนวทางปฏิบัติด้านความปลอดภัยที่สำคัญสำหรับแอปพลิเคชันแบบคอนเทนเนอร์ ได้แก่ การจัดการข้อมูลลับ และการควบคุมการเข้าถึงตามบทบาท (RBAC)

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

การจัดการข้อมูลลับและ RBAC — ภาพประกอบ 1

อันตรายของการฝังข้อมูลลับไว้ในโค้ด

การฝังข้อมูลอ่อนไหว เช่น คีย์ API รหัสผ่านฐานข้อมูล หรือใบรับรองส่วนตัว ลงในโค้ดแอปพลิเคชันหรือ Dockerfile โดยตรงถือเป็นความเสี่ยงด้านความปลอดภัยอย่างมาก

  • การเปิดเผย: ทุกคนที่เข้าถึงคลังโค้ดหรืออิมเมจที่สร้างแล้วสามารถมองเห็นข้อมูลเหล่านี้ได้ง่าย
  • ขาดการควบคุม: การเปลี่ยนข้อมูลลับจำเป็นต้องสร้างและนำแอปพลิเคชันทั้งหมดไปใช้งานใหม่
  • ปัญหาด้านการปฏิบัติตามข้อกำหนด: ละเมิดแนวทางปฏิบัติด้านความปลอดภัยและข้อกำหนดทางกฎหมายจำนวนมาก

ตัวแปรสภาพแวดล้อม (ใช้ด้วยความระมัดระวัง)

วิธีทั่วไปในการส่งข้อมูลลับคือการใช้ตัวแปรสภาพแวดล้อม แต่วิธีนี้ไม่ได้ปลอดภัยเสมอไป Docker อนุญาตให้คุณส่งตัวแปรเหล่านี้ด้วยแฟล็ก -e และแอปพลิเคชันสามารถอ่านตัวแปรเหล่านี้ได้

อย่างไรก็ตาม ตัวแปรสภาพแวดล้อมสามารถตรวจสอบได้ง่าย (เช่นด้วย docker inspect) และอาจคงอยู่ในประวัติเชลล์หรือบันทึก สำหรับข้อมูลที่อ่อนไหวอย่างแท้จริง ยังมีวิธีแก้ไขที่ดีกว่า

การใช้ Docker Secrets จริง

Docker Secrets ช่วยให้คุณจัดเก็บและส่งข้อมูลอ่อนไหวไปยังคอนเทนเนอร์ได้อย่างปลอดภัย เมื่อแนบข้อมูลลับเข้ากับคอนเทนเนอร์ ข้อมูลนั้นจะถูกเมานต์เป็นไฟล์ชั่วคราวใน /run/secrets/

ขั้นแรก คุณจะสร้างข้อมูลลับ (เช่น echo "my_secure_pass" | docker secret create app_secret -) จากนั้นแอปพลิเคชันของคุณจะสามารถอ่านข้อมูลนั้นได้:

import os

def main():
    secret_path = "/run/secrets/app_secret"
    try:
        with open(secret_path, 'r') as f:
            secret_value = f.read().strip()
        print(f"Secret read: {secret_value}")
    except FileNotFoundError:
        print("Secret file not found. Make sure it's mounted.")
    except Exception as e:
        print(f"An error occurred: {e}")

if __name__ == "__main__":
    main()

ภาพรวม Kubernetes Secrets

Kubernetes มีออบเจ็กต์ของตนเองที่เรียกว่า "Secrets" เช่นเดียวกับ Docker Secrets เพื่อจัดเก็บและจัดการข้อมูลอ่อนไหว ข้อมูลลับเหล่านี้สามารถเมานต์เป็นไฟล์ลงใน Pod หรือเปิดเผยเป็นตัวแปรสภาพแวดล้อมได้

สำคัญ: โดยค่าเริ่มต้น Kubernetes Secrets จะเข้ารหัสด้วย base64 ไม่ใช่การเข้ารหัสข้อมูล ซึ่งหมายความว่าสามารถถอดรหัสได้ง่าย หากต้องการเข้ารหัสข้อมูลขณะจัดเก็บอย่างแท้จริง คุณต้องกำหนดค่าเพิ่มเติม (เช่น การผสานรวมกับ KMS)

การนำไปใช้งานด้วย K8s Secrets

มาดูตัวอย่างการกำหนด Kubernetes Secret และการนำไปใช้ภายใน Pod กัน คุณสามารถกำหนดข้อมูลลับใน YAML หรือสร้างข้อมูลลับผ่านคำสั่ง kubectl ได้

เมื่อสร้างแล้ว Pod สามารถอ้างอิงข้อมูลลับเพื่อเมานต์เป็นโวลุมหรือแทรกค่าเป็นตัวแปรสภาพแวดล้อมได้

apiVersion: v1
kind: Pod
metadata:
  name: my-secret-pod
spec:
  containers:
  - name: my-app-container
    image: busybox
    command: ["sh", "-c", "echo Username: $(cat /etc/secrets/username) Password: $(cat /etc/secrets/password)"]
    volumeMounts:
    - name: secret-volume
      mountPath: "/etc/secrets"
      readOnly: true
  volumes:
  - name: secret-volume
    secret:
      secretName: my-k8s-secret

คลังข้อมูลลับภายนอก

สำหรับข้อมูลที่อ่อนไหวอย่างมาก หรือเมื่อจัดการข้อมูลลับข้ามหลายคลัสเตอร์และสภาพแวดล้อม เครื่องมือจัดการข้อมูลลับภายนอกมีความสามารถขั้นสูง เช่น:

  • การจัดเก็บแบบรวมศูนย์: แหล่งข้อมูลอ้างอิงเดียวสำหรับข้อมูลลับทั้งหมด
  • การเข้ารหัสขณะจัดเก็บและขณะส่งผ่าน: รับประกันความปลอดภัยที่รัดกุมยิ่งขึ้น
  • ข้อมูลลับแบบไดนามิก: ข้อมูลรับรองที่สร้างขึ้นโดยอัตโนมัติและมีอายุสั้น
  • การตรวจสอบและการควบคุมการเข้าถึง: สิทธิ์ที่ละเอียดและการบันทึกอย่างครอบคลุม

ตัวเลือกยอดนิยม ได้แก่ HashiCorp Vault, AWS Secrets Manager และ Azure Key Vault

RBAC คืออะไร

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

ในการจัดการระบบคอนเทนเนอร์ RBAC ช่วยให้มั่นใจว่าผู้ใช้ แอปพลิเคชัน หรือบริการจะมีเฉพาะสิทธิ์ที่จำเป็นต่อการโต้ตอบกับทรัพยากร (เช่น Pod, Deployment และ Secrets)

องค์ประกอบพื้นฐานของ K8s RBAC

Kubernetes RBAC ใช้ประเภททรัพยากรสำคัญบางประเภท:

  • Role: กำหนดสิทธิ์ภายในเนมสเปซเฉพาะ (เช่น "ดู pod ได้" ในเนมสเปซ "dev")
  • ClusterRole: กำหนดสิทธิ์ทั่วทั้งคลัสเตอร์ (เช่น "ดู pod ทั้งหมดได้" หรือ "จัดการโหนดได้")
  • RoleBinding: มอบสิทธิ์ที่กำหนดไว้ใน Role ให้แก่ผู้ใช้ กลุ่ม หรือบัญชีบริการภายในเนมสเปซ
  • ClusterRoleBinding: มอบสิทธิ์ที่กำหนดไว้ใน ClusterRole ให้แก่ผู้ใช้ กลุ่ม หรือบัญชีบริการทั่วทั้งคลัสเตอร์

ตัวอย่าง RBAC: จำกัดการเข้าถึง

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

apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  namespace: default
  name: pod-reader
rules:
- apiGroups: [""] # "" indicates the core API group
  resources: ["pods"]
  verbs: ["get", "list", "watch"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: read-pods-binding
  namespace: default
subjects:
- kind: ServiceAccount
  name: pod-viewer-sa # Name of the ServiceAccount to bind to
  namespace: default
roleRef:
  kind: Role
  name: pod-reader
  apiGroup: rbac.authorization.k8s.io

ตรวจสอบความเข้าใจของคุณ

คุณได้เรียนรู้เกี่ยวกับการรักษาความปลอดภัยของข้อมูลอ่อนไหวและการควบคุมการเข้าถึงแล้ว ได้เวลาตรวจสอบความเข้าใจสั้น ๆ!

ทบทวน: รักษาความปลอดภัยให้แอปของคุณ

ทำได้ดีมาก! ในบทเรียนนี้ คุณได้เรียนรู้เสาหลักสำคัญสองประการของความปลอดภัยคอนเทนเนอร์:

  • การจัดการข้อมูลลับ: ปกป้องข้อมูลอ่อนไหวโดยใช้ Docker Secrets และ Kubernetes Secrets พร้อมทำความเข้าใจจุดแข็งและข้อจำกัดของสิ่งเหล่านี้
  • การควบคุมการเข้าถึงตามบทบาท (RBAC): ใช้สิทธิ์แบบละเอียดใน Kubernetes เพื่อให้เป็นไปตามหลักการให้สิทธิ์เท่าที่จำเป็น

เมื่อเชี่ยวชาญแนวคิดเหล่านี้ คุณกำลังสร้างแอปพลิเคชันแบบคอนเทนเนอร์ที่แข็งแกร่งและปลอดภัยยิ่งขึ้น!

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

บทเรียน “การจัดการข้อมูลลับและ RBAC” ฟรีหรือไม่

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

คุณจะเรียนรู้อะไรในบทเรียน “การจัดการข้อมูลลับและ RBAC”

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

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

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

บทเรียน “การจัดการข้อมูลลับและ RBAC” ใช้เวลานานแค่ไหน

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

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

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

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

  1. การสแกนความปลอดภัยของอิมเมจคอนเทนเนอร์
  2. ความปลอดภัยของคอนเทนเนอร์ขณะทำงาน
  3. การจัดการข้อมูลลับและ RBAC
  4. นโยบายเครือข่ายและเครือข่ายตามสิทธิ์น้อยที่สุด
← กลับไปที่ DevOps Bootcamp