
ในฐานะที่เป็นส่วนหนึ่งของเป้าหมายของเราในการจัดหาโซลูชันการรักษาความปลอดภัยโอเพ่นซอร์สที่ครอบคลุมสำหรับทุกคนเราได้รวบรวมความพยายามที่เกี่ยวข้องกับการสแกนทั้งหมดของเราไว้ในที่เดียวและนั่นก็เป็นเรื่องเล็กน้อย
ในช่วงปีที่ผ่านมา TFSEC ได้วางรากฐานในความสามารถในการสแกน IAC & Misconfigurations ของ Trivy รวมถึงการสแกน Terraform ซึ่งได้รับการสนับสนุนในเรื่อง Trivy มาเป็นเวลานาน
ก้าวไปข้างหน้าเราต้องการส่งเสริมให้ชุมชน TFSEC เปลี่ยนไปสู่ Trivy การย้ายไปที่ Trivy ทำให้คุณมีเครื่องยนต์สแกน Terraform ที่ยอดเยี่ยมเหมือนกันพร้อมกับประโยชน์เพิ่มเติมบางอย่าง:
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีการเปรียบเทียบกับ TFSEC และย้ายจาก TFSEC เป็น Trivy อย่างไรให้ดูที่คู่มือการย้ายถิ่น
TFSEC ใช้การวิเคราะห์แบบคงที่ของรหัส Terraform ของคุณเพื่อดูการกำหนดค่าผิดพลาดที่อาจเกิดขึ้น
concat()ให้คะแนน นำมาใช้ โดยเรดาร์ TeholdWorks Tech:
สำหรับโครงการของเราที่ใช้ Terraform TFSEC ได้กลายเป็นเครื่องมือการวิเคราะห์แบบคงที่เริ่มต้นอย่างรวดเร็วเพื่อตรวจจับความเสี่ยงด้านความปลอดภัยที่อาจเกิดขึ้น เป็นเรื่องง่ายที่จะรวมเข้ากับท่อส่ง CI และมีห้องสมุดที่เพิ่มขึ้นของการตรวจสอบกับผู้ให้บริการคลาวด์และแพลตฟอร์มที่สำคัญทั้งหมดเช่น Kubernetes ด้วยความสะดวกในการใช้งานเราเชื่อว่า TFSEC อาจเป็นส่วนเสริมที่ดีในโครงการ Terraform ใด ๆ

ติดตั้งด้วย Brew/Linuxbrew
brew install tfsecติดตั้งด้วยช็อคโกแลต
choco install tfsecติดตั้งด้วย Scoop
scoop install tfsecสคริปต์ทุบตี (Linux):
curl -s https://raw.githubusercontent.com/aquasecurity/tfsec/master/scripts/install_linux.sh | bashนอกจากนี้คุณยังสามารถคว้าระบบไบนารีสำหรับระบบของคุณจากหน้ารีลีส
หรือติดตั้งด้วย GO:
go install github.com/aquasecurity/tfsec/cmd/tfsec@latest โปรดทราบว่าการใช้ go install จะติดตั้งโดยตรงจากสาขา master และหมายเลขเวอร์ชันจะไม่ถูกรายงานผ่าน tfsec --version
ไบนารีในหน้ารีลีสลงนามด้วยคีย์การลงนาม TFSEC D66B222A3EA4C25D5D1A097FC34ACEFB46EC39CE
แบบฟอร์มข้อมูลเพิ่มเติมตรวจสอบหน้าการลงชื่อสำหรับคำแนะนำเกี่ยวกับการตรวจสอบ
TFSEC จะสแกนไดเรกทอรีที่ระบุ หากไม่ได้ระบุไดเรกทอรีไดเรกทอรีการทำงานปัจจุบันจะถูกใช้
สถานะการออกจะไม่เป็นศูนย์หาก TFSEC พบปัญหามิฉะนั้นสถานะการออกจะเป็นศูนย์
tfsec . เป็นทางเลือกในการติดตั้งและเรียกใช้ TFSEC ในระบบของคุณคุณอาจเรียกใช้ TFSEC ในคอนเทนเนอร์ Docker
มีตัวเลือก Docker จำนวนมาก
| ชื่อภาพ | ฐาน | การแสดงความคิดเห็น |
|---|---|---|
| Aquasec/TFSEC | อัลไพน์ | ภาพ TFSEC ปกติ |
| Aquasec/TFSEC-Alpine | อัลไพน์ | เหมือนกับ Aquasec/TFSEC แต่สำหรับผู้ที่ชอบทั้งหมดที่ชัดเจน |
| Aquasec/TFSEC-CI | อัลไพน์ | TFSEC ที่ไม่มีจุดเข้าใช้ - มีประโยชน์สำหรับ CI Builds ที่คุณต้องการแทนที่คำสั่ง |
| Aquasec/TFSEC-scratch | เกา | ภาพที่สร้างขึ้นบนรอยขีดข่วน - ไม่มีอะไรที่มีความคร่ำครวญเพียงแค่วิ่ง tfsec |
วิ่ง:
docker run --rm -it -v " $( pwd ) :/src " aquasec/tfsec /srcส่วนขยายรหัส Visual Studio ได้รับการพัฒนาเพื่อรวมเข้ากับผลลัพธ์ TFSEC ข้อมูลเพิ่มเติมสามารถพบได้ในหน้าตลาด TFSEC
หากคุณต้องการเรียกใช้ TFSEC ในที่เก็บของคุณเป็นการกระทำของ GitHub คุณสามารถใช้ https://github.com/aquasecurity/tfsec-pr-commenter-action
ตอนนี้คุณสามารถติดตั้งงาน TFSEC อย่างเป็นทางการ โปรดเพิ่มปัญหา/คำขอคุณสมบัติใด ๆ ในที่เก็บงาน
คุณอาจต้องการเพิกเฉยต่อคำเตือนบางอย่าง หากคุณต้องการทำเช่นนั้นคุณสามารถเพิ่มความคิดเห็นที่มี tfsec:ignore:<rule> ไปยังบรรทัดที่ละเมิดในเทมเพลตของคุณ หรือคุณสามารถเพิ่มความคิดเห็นไปยังบรรทัดด้านบนบล็อกที่มีปัญหาหรือไปยังบล็อกโมดูลเพื่อละเว้นการเกิดปัญหาทั้งหมดภายในโมดูล
ตัวอย่างเช่นการละเว้นกฎกลุ่มความปลอดภัยแบบเปิด:
resource "aws_security_group_rule" "my-rule" {
type = " ingress "
cidr_blocks = [ " 0.0.0.0/0 " ] # tfsec:ignore:aws-vpc-no-public-ingress-sgr
}...หรือ...
resource "aws_security_group_rule" "my-rule" {
type = " ingress "
# tfsec:ignore:aws-vpc-no-public-ingress-sgr
cidr_blocks = [ " 0.0.0.0/0 " ]
}หากคุณไม่แน่ใจว่าจะเพิ่มความคิดเห็นบรรทัดใดให้ตรวจสอบเอาต์พุต TFSEC สำหรับหมายเลขบรรทัดของปัญหาที่ค้นพบ
คุณสามารถเพิกเฉยต่อกฎหลายข้อโดยการเชื่อมต่อกฎในบรรทัดเดียว:
# tfsec:ignore:aws-s3-enable-bucket-encryption tfsec:ignore:aws-s3-enable-bucket-logging
resource "aws_s3_bucket" "my-bucket" {
bucket = " foobar "
acl = " private "
} คุณสามารถกำหนดวันหมดอายุสำหรับ ignore ด้วยรูปแบบ yyyy-mm-dd นี่เป็นคุณสมบัติที่มีประโยชน์เมื่อคุณต้องการให้แน่ใจว่าปัญหาที่ถูกละเว้นจะไม่ถูกลืมและควรได้รับการเยี่ยมชมในอนาคต
#tfsec:ignore:aws-s3-enable-bucket-encryption:exp:2025-01-02
ละเว้นเช่นนี้จะใช้งานได้จนถึง 2025-01-02 หลังจากวันที่นี้จะถูกปิดการใช้งาน
คุณอาจต้องการยกเว้นการตรวจสอบบางส่วนจากการทำงาน หากคุณต้องการทำเช่นนั้นคุณสามารถเพิ่มอาร์กิวเมนต์ใหม่ -e check1,check2,etc ลงในคำสั่ง cmd ของคุณ
tfsec . -e general-secrets-sensitive-in-variable,google-compute-disk-encryption-customer-keys คุณสามารถรวมค่าจากไฟล์ tfvars ในการสแกนโดยใช้ตัวอย่างเช่น: --tfvars-file terraform.tfvars
TFSEC รองรับผู้ให้บริการคลาวด์และแพลตฟอร์มยอดนิยมจำนวนมาก
| ตรวจสอบ |
|---|
| ตรวจสอบ AWS |
| การตรวจสอบสีฟ้า |
| GCP ตรวจสอบ |
| ตรวจสอบ CloudStack |
| การตรวจสอบ DigitalOcean |
| GitHub ตรวจสอบ |
| Kubernetes ตรวจสอบ |
| การตรวจสอบ OpenStack |
| Oracle ตรวจสอบ |
TFSEC ได้รับการออกแบบมาสำหรับการทำงานในท่อส่ง CI คุณอาจต้องการเรียกใช้ TFSEC เป็นส่วนหนึ่งของงานสร้างของคุณโดยไม่มีเอาต์พุตสี คุณสามารถทำได้โดยใช้ --no-colour (หรือ --no-color สำหรับเพื่อนชาวอเมริกันของเรา)
คุณสามารถส่งออกผลลัพธ์ TFSEC เป็น JSON, CSV, CheckStyle, Sarif, Junit หรือรูปแบบที่อ่านได้ง่าย ใช้ --format ฟอร์แมตธงเพื่อระบุรูปแบบที่คุณต้องการ
หากคุณต้องการรวมเข้ากับการแจ้งเตือนความปลอดภัยของ GitHub และรวมเอาท์พุทของการตรวจสอบ TFSEC ของคุณคุณสามารถใช้การกระทำของ GitHub การกระทำ TFSEC-Sarif-Action เพื่อเรียกใช้การวิเคราะห์แบบคงที่จากนั้นอัปโหลดผลลัพธ์ไปยังแท็บการแจ้งเตือนความปลอดภัย
การแจ้งเตือนที่สร้างขึ้นสำหรับ TFSEC-Example-Project มีลักษณะเช่นนี้

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

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการเพิ่มการแจ้งเตือนความปลอดภัยตรวจสอบเอกสาร GitHub
หากคุณต้องการสนับสนุน Terraform รุ่นที่ใช้ HCL V1 (Terraform <0.12) คุณสามารถใช้ v0.1.3 ของ TFSEC แม้ว่าการสนับสนุนจะมี จำกัด มากและมีการตรวจสอบน้อยลง
เรายินดีต้อนรับการมีส่วนร่วมเสมอ ใหญ่หรือเล็กอาจเป็นการอัปเดตเอกสารเพิ่มเช็คใหม่หรือสิ่งที่ใหญ่กว่า โปรดตรวจสอบคู่มือการสนับสนุนสำหรับรายละเอียดเกี่ยวกับวิธีการช่วยเหลือ
ทำกับผู้มีส่วนร่วม-IMG
tfsec เป็นโครงการโอเพนซอร์สความปลอดภัยของน้ำ เรียนรู้เกี่ยวกับงานโอเพ่นซอร์สและผลงานของเราที่นี่ เข้าร่วมชุมชนและพูดคุยกับเราเกี่ยวกับเรื่องใด ๆ ในการอภิปราย GitHub หรือ Slack