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

ตัวอย่างเช่น สมมติว่าฉันมีคลาสของอินสแตนซ์ที่จะพูดคุยกับอินสแตนซ์อื่นในบัญชีเดียวกันเท่านั้น ฉันยังมีคลาสของอินสแตนซ์ที่จะยอมรับเฉพาะการรับส่งข้อมูลผ่าน HTTP (พอร์ต 80)

เป็นไปได้ไหมที่จะจำกัดการเข้าถึงอินสแตนซ์ภายในและผ่าน HTTP โดยการสร้างและใช้กลุ่มความปลอดภัยสองกลุ่ม:

  1. กลุ่มความปลอดภัย "ภายใน" อนุญาตการรับส่งข้อมูลทั้งหมดจากสมาชิกอื่นของกลุ่มความปลอดภัยนั้นบนพอร์ตทั้งหมดสำหรับการขนส่งทั้งหมด (TCP, UDP, ICMP)
  2. สร้างกลุ่มความปลอดภัย "http" อนุญาตการรับส่งข้อมูลทั้งหมดเข้าสู่พอร์ต 80 ผ่าน TCP จากแหล่งใดก็ได้

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

answer

หากอินสแตนซ์มีกลุ่มความปลอดภัยหลายกลุ่ม อินสแตนซ์นั้นจะมีผลรวมของกฎทั้งหมดในกลุ่มต่างๆ

For example, lets say I have a class of instances that will only ever talk to other instances in the same account. I also have a class of instances that will only accept traffic via http (port 80).

นี่เป็นสถานการณ์ที่สมบูรณ์แบบสำหรับ AWS Virtual Private Cloud ใส่อินสแตนซ์ภายในในเครือข่ายย่อยส่วนตัว และอินสแตนซ์ที่เปิดเผยต่อสาธารณะในเครือข่ายย่อยสาธารณะ

อนุญาต

ตาม AWS ที่นี่: http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-network-security.html#security-group-rules

If there is more than one rule for a specific port, we apply the most permissive rule. For example, if you have a rule that allows access to TCP port 22 (SSH) from IP address 203.0.113.1 and another rule that allows access to TCP port 22 from everyone, everyone has access to TCP port 22.

นี่คือคำตอบจากการสนับสนุนเอกสารของ AWS พวกเขากล่าวว่าพวกเขาจะอัปเดตเอกสาร:

ฉันพบโพสต์ในฟอรัมสนทนาที่กล่าวถึงปัญหาที่คล้ายคลึงกันกับกฎที่ขัดแย้งกันภายในกลุ่มความปลอดภัยอย่างน้อยหนึ่งกลุ่ม:

https://forums.aws.amazon.com/thread.jspa?messageID=221768

https://forums.aws.amazon.com/thread.jspa?messageID=349244吼

เมื่อใช้กลุ่มความปลอดภัยหลายกลุ่มกับอินสแตนซ์ กฎจะถูกรวมเข้าด้วยกันเพื่อสร้างกฎชุดใหญ่ชุดเดียว ใน EC2 กฎของกลุ่มความปลอดภัยจะอนุญาตเท่านั้น กล่าวคือ คุณไม่สามารถเพิ่มกฎ DENY ใดๆ ได้ สิ่งนี้หมายความว่าจะใช้กฎที่อนุญาตที่สุดเสมอ ตัวอย่างเช่น หากคุณมีกลุ่มความปลอดภัยที่อนุญาตให้เข้าถึงพอร์ต 22 จากที่อยู่ IP 10.10.10.10 และกลุ่มความปลอดภัยอื่นที่อนุญาตให้เข้าถึงพอร์ต 22 จากทุกคน ทุกคนจะสามารถเข้าถึงพอร์ต 22 บนอินสแตนซ์ได้

เมื่อคุณระบุกลุ่มความปลอดภัยเป็นแหล่งที่มาหรือปลายทางสำหรับกฎ กฎจะมีผลกับอินสแตนซ์ทั้งหมดที่เกี่ยวข้องกับกลุ่มความปลอดภัย อนุญาตให้รับส่งข้อมูลขาเข้าตามที่อยู่ IP ส่วนตัวของอินสแตนซ์ที่เชื่อมโยงกับกลุ่มความปลอดภัยต้นทาง (และไม่ใช่ที่อยู่ IP สาธารณะหรือที่อยู่ Elastic IP) สำหรับข้อมูลเพิ่มเติมเกี่ยวกับที่อยู่ IP โปรดดูที่การกำหนดที่อยู่ IP ของอินสแตนซ์ Amazon EC2 หากกฎกลุ่มความปลอดภัยของคุณอ้างอิงกลุ่มความปลอดภัยใน VPC เพียร์ และกลุ่มความปลอดภัยที่อ้างอิงหรือการเชื่อมต่อการเพียร์ VPC ถูกลบ กฎจะถูกทำเครื่องหมายว่าไม่อัปเดต สำหรับข้อมูลเพิ่มเติม โปรดดู การทำงานกับกฎกลุ่มความปลอดภัยที่ล้าสมัยในคู่มือการเพียร์ Amazon VPC

หากมีมากกว่าหนึ่งกฎสำหรับพอร์ตใดพอร์ตหนึ่ง เราจะใช้กฎที่อนุญาตมากที่สุด ตัวอย่างเช่น หากคุณมีกฎที่อนุญาตให้เข้าถึงพอร์ต TCP 22 (SSH) จากที่อยู่ IP 203.0.113.1 และกฎอื่นที่อนุญาตให้เข้าถึงพอร์ต TCP 22 จากทุกคน ทุกคนจะมีสิทธิ์เข้าถึงพอร์ต TCP 22

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

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