ฉันจะกำหนดช่วง IP ที่เกิดซ้ำสำหรับกลุ่มความปลอดภัย AWS ได้อย่างไร

เรากำลังใช้งานสภาพแวดล้อมบน AWS ที่ซับซ้อนมากขึ้นทุกวัน ฉันต้องการมีความสามารถบางอย่างในการกำหนดช่วงแหล่งที่มาของ IP ที่ฉันจะใช้ซ้ำแล้วซ้ำเล่าแม้ว่าจะเปลี่ยนพอร์ตและโปรโตคอลก็ตาม

ตัวอย่างง่ายๆ คือการอนุญาตให้เข้าถึง HTTP, HTTPS, SSH และ MySQL จากเครือข่ายสำนักงานของเราไปยังเซิร์ฟเวอร์ที่แตกต่างกัน บางครั้งภายในสภาพแวดล้อมเองก็เป็นไปได้โดยการกำหนดกลุ่มความปลอดภัย "ปิดเสียง" ซึ่งฉันสามารถอ้างอิงเป็นช่วงได้ เป็นไปได้สำหรับช่วง IP นอก AWS หรือไม่


person Agam Rafaeli    schedule 13.04.2015    source แหล่งที่มา


คำตอบ (1)


ในที่สุดเราก็เขียนสคริปต์ที่ใช้เครื่องมือ AWS CLI เพื่อสร้างกลุ่มความปลอดภัยของเรา โดยสรุปจะเรียก ec2-describe-group เพื่อรับสถานะปัจจุบันของกลุ่มความปลอดภัย จากนั้นวนซ้ำบริการและช่วงที่อยู่ IP เพื่อโทร อนุญาต ec2 เพื่อเพิ่มกฎใหม่ให้กับกลุ่มความปลอดภัย

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

แก้ไข: นี่เป็นตัวอย่างส่วนสำคัญของหนึ่งในสคริปต์ทุบตีของเราที่เราใช้:

CORPORATE_NETBLOCKS="1.2.3.4/24 4.3.2.1/27"
REMOTE_OFFICE="5.6.7.8/32"
...
ec2-describe-group --show-empty-fields > $TMPGRPFILE
...
echo "Allow access to the utility server"
grp=${myregion}-util
for cidr in $CORPORATE_NETBLOCKS $REMOTE_OFFICE; do
  for p in 22 80 443 8000-8080; do
    ptest=$(echo $p | sed -e 's/-/[[:space:]]+/')
    egrep "PERMISSION.*${AWS_ACCOUNT_ID}.*${grp}[[:space:]].*ALLOWS.*tcp.*${ptest}.*CIDR.*${cidr}.*ingress" $TMPGRPFILE > /dev/null
    if [[ $? -eq 0 ]]; then
      echo "$cidr -> $grp:${p} already in place"
      continue
    fi
    CMD="ec2-authorize -P tcp -p ${p} -s $cidr $grp"
    # echo $CMD
    $CMD
    if [ $? -ne 0 ]; then
      echo "Failed to create permission. Line $LINENO"
      exit 2
    fi
  done
done

สคริปต์มีการวนซ้ำหลายสิบรอบคล้ายกับอันนี้ซึ่ง grep สำหรับพอร์ต/cidrs ต่างๆ ในเอาต์พุตจาก ec2-describe-group และเรียก ec2-authorize เพื่อเพิ่มกฎใดๆ ที่ยังไม่มีใช้

person Bruce P    schedule 13.04.2015
comment
คุณช่วยใส่รหัสบางส่วนได้ไหม? ทั้งหมดนี้คลุมเครือมาก - person George Stocker; 13.04.2015
comment
ดูเหมือนน่าแปลกใจสำหรับฉันที่ไม่มีฟีเจอร์ในตัวสำหรับสิ่งนี้ ดูเหมือนเป็นสิ่งมาตรฐานที่ต้องทำ เพิ่งย้ายผ่าน AWS - person Agam Rafaeli; 14.04.2015