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

การจัดการข้อมูลรับรองอย่างปลอดภัย

นำแนวทางปฏิบัติที่ดีมาใช้ในการจัดการข้อมูลรับรองของผู้ให้บริการคลาวด์และข้อมูลละเอียดอ่อนภายในกระบวนการ Terraform อัตโนมัติอย่างปลอดภัย

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

การรักษาความปลอดภัยของข้อมูลรับรองใน CI/CD

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

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

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

ข้อผิดพลาดที่พบบ่อยคือการฝังข้อมูลสำคัญ เช่น คีย์ API หรือรหัสผ่าน ลงในไฟล์การกำหนดค่า Terraform หรือสคริปต์ CI/CD โดยตรง วิธีนี้เรียกว่า การฝังข้อมูลลับไว้ในโค้ด

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

ตัวแปรสภาพแวดล้อม (พื้นฐาน)

สำหรับการพัฒนาในเครื่องหรือกรณีพื้นฐาน ตัวแปรสภาพแวดล้อมเป็นวิธีง่าย ๆ ในการส่งข้อมูลรับรองโดยไม่ต้องฝังไว้ในโค้ด คุณกำหนดตัวแปรเหล่านี้ในเชลล์ก่อนเรียกใช้ Terraform

แม้จะดีกว่าการฝังข้อมูลลับไว้ในโค้ด แต่วิธีนี้ไม่เหมาะนักสำหรับไปป์ไลน์ CI/CD ที่ใช้ร่วมกัน เนื่องจากข้อมูลลับอาจยังมองเห็นได้ในบันทึกกิจกรรมหรือรายการกระบวนการ หากจัดการไม่รอบคอบ

export AWS_ACCESS_KEY_ID="AKIA..."
export AWS_SECRET_ACCESS_KEY="abcdef..."
terraform plan

ตัวจัดการข้อมูลลับของแพลตฟอร์ม CI/CD

แพลตฟอร์ม CI/CD สมัยใหม่มีความสามารถจัดการข้อมูลลับในตัว ซึ่งช่วยให้คุณจัดเก็บข้อมูลสำคัญอย่างปลอดภัยภายในแพลตฟอร์ม โดยแยกจากคลังโค้ดของคุณ

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

ตัวอย่างข้อมูลลับใน GitHub Actions

GitHub Actions มีส่วนเฉพาะสำหรับข้อมูลลับของคลังโค้ด คุณสามารถเพิ่มข้อมูลลับได้ที่ Settings > Secrets and variables > Actions > New repository secret

จากนั้นในไฟล์กระบวนการทำงาน คุณสามารถอ้างอิงข้อมูลลับเหล่านี้ผ่านบริบท secrets โดยระบบจะปิดบังข้อมูลเหล่านี้ในบันทึกกิจกรรมโดยอัตโนมัติ

name: Deploy Infra
on: [push]
jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v3
    - name: Configure AWS Credentials
      uses: aws-actions/configure-aws-credentials@v1
      with:
        aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
        aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
        aws-region: us-east-1
    - name: Terraform Init
      run: terraform init

บทบาท IAM ของคลาวด์สำหรับไปป์ไลน์

แนวทางที่ปลอดภัยที่สุดสำหรับการยืนยันตัวตนของ CI/CD คือการใช้บทบาท Identity and Access Management (IAM) หรือบัญชีบริการที่ผู้ให้บริการคลาวด์จัดเตรียมไว้

แทนที่จะใช้คีย์สำหรับเข้าถึงที่มีอายุการใช้งานยาวนาน ไปป์ไลน์ CI/CD จะรับบทบาทชั่วคราวที่มีสิทธิ์เฉพาะ โดยมักใช้ OpenID Connect (OIDC) เพื่อสร้างความสัมพันธ์ด้านความน่าเชื่อถือ วิธีนี้ทำให้ไม่จำเป็นต้องจัดเก็บข้อมูลรับรองแบบตายตัวเลย

ตัวอย่างบทบาท IAM ของ AWS + OIDC

สำหรับ AWS คุณสามารถกำหนดค่าบทบาท IAM ที่กระบวนการทำงานของ GitHub Actions จะรับได้โดยตรงผ่าน OIDC ซึ่งหมายความว่าจะไม่มีการจัดเก็บคีย์สำหรับเข้าถึง AWS ไว้ที่ใดเลย!

คุณกำหนดนโยบายความน่าเชื่อถือสำหรับบทบาท โดยอนุญาตให้ผู้ให้บริการ OIDC ของ GitHub รับบทบาทนั้นได้ตามเงื่อนไขเฉพาะ (เช่น คลังโค้ดหรือสาขา)

resource "aws_iam_role" "github_actions_role" {
  name = "github-actions-oidc-role"
  assume_role_policy = jsonencode({
    Version = "2012-10-17"
    Statement = [
      {
        Effect = "Allow"
        Principal = {
          Federated = "arn:aws:iam::123456789012:oidc-provider/token.actions.githubusercontent.com"
        }
        Action = "sts:AssumeRoleWithWebIdentity"
        Condition = {
          StringEquals = {
            "token.actions.githubusercontent.com:aud" : "sts.amazonaws.com"
          }
          StringLike = {
            "token.actions.githubusercontent.com:sub" : "repo:your-org/your-repo:*"
          }
        }
      }
    ]
  })
}

เอาต์พุตที่มีข้อมูลสำคัญของ Terraform

บางครั้งเอาต์พุตของ Terraform อาจมีข้อมูลสำคัญ เช่น รหัสผ่านฐานข้อมูลหรือคีย์ส่วนตัว คุณควรกำหนดเอาต์พุตเหล่านี้ให้เป็น sensitive

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

output "database_password" {
  value       = aws_db_instance.main.password
  description = "The database root password."
  sensitive   = true
}

ตรวจสอบการรักษาความปลอดภัยของข้อมูลรับรอง

โดยทั่วไป วิธีใดถือว่าปลอดภัยที่สุดสำหรับให้ไปป์ไลน์ CI/CD ยืนยันตัวตนกับผู้ให้บริการคลาวด์ โดยไม่จำเป็นต้องจัดเก็บข้อมูลรับรองแบบตายตัวที่มีอายุการใช้งานยาวนาน

ทบทวน: การรักษาความปลอดภัยของข้อมูลรับรอง

คุณได้เรียนรู้กลยุทธ์สำคัญสำหรับจัดการข้อมูลสำคัญในไปป์ไลน์ Terraform CI/CD แล้ว:

  • หลีกเลี่ยงการฝังข้อมูลลับไว้ในโค้ด: อย่าฝังข้อมูลลับลงในโค้ดโดยตรง
  • ใช้ข้อมูลลับของ CI/CD: ใช้ตัวจัดการข้อมูลลับเฉพาะของแพลตฟอร์มสำหรับข้อมูลรับรองแบบตายตัว
  • ใช้บทบาท IAM/OIDC: เพื่อความปลอดภัยสูงสุด ให้ใช้บทบาท IAM ของผู้ให้บริการคลาวด์ร่วมกับ OIDC เพื่อรับสิทธิ์ชั่วคราวโดยไม่ต้องจัดเก็บคีย์
  • ทำเครื่องหมายเอาต์พุตที่มีข้อมูลสำคัญ: ปกป้องข้อมูลสำคัญที่ถูกเปิดเผยผ่านเอาต์พุตของ Terraform

แนวทางเหล่านี้มีความสำคัญอย่างยิ่งต่อการรักษาโครงสร้างพื้นฐานให้แข็งแกร่งและปลอดภัย

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

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

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

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

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

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

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

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

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

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

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

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

  1. Terraform ในกระบวนการ CI/CD
  2. การทำ `plan` และ `apply` โดยอัตโนมัติ
  3. การจัดการข้อมูลรับรองอย่างปลอดภัย
  4. GitOps และระบบอัตโนมัติสำหรับคำขอดึง
← กลับไปที่ DevOps Bootcamp