การจัดการข้อมูลรับรองอย่างปลอดภัย
นำแนวทางปฏิบัติที่ดีมาใช้ในการจัดการข้อมูลรับรองของผู้ให้บริการคลาวด์และข้อมูลละเอียดอ่อนภายในกระบวนการ 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- Terraform ในกระบวนการ CI/CD
- การทำ `plan` และ `apply` โดยอัตโนมัติ
- การจัดการข้อมูลรับรองอย่างปลอดภัย
- GitOps และระบบอัตโนมัติสำหรับคำขอดึง