Terraform 0.11

aws_default_network_acl




terraform

aws_default_network_acl

डिफ़ॉल्ट AWS नेटवर्क ACL को प्रबंधित करने के लिए एक संसाधन प्रदान करता है। केवल वीपीसी।

AWS में बनाया गया प्रत्येक VPC एक डिफ़ॉल्ट नेटवर्क ACL के साथ आता है जिसे प्रबंधित किया जा सकता है, लेकिन नष्ट नहीं किया जाता है। यह एक उन्नत संसाधन है , और इसका उपयोग करते समय जागरूक होने के लिए विशेष कैवेट हैं। कृपया इस संसाधन का उपयोग करने से पहले इस दस्तावेज़ को इसकी संपूर्णता में पढ़ें।

aws_default_network_acl सामान्य संसाधनों से अलग व्यवहार करता है, जिसमें टेराफॉर्म इस संसाधन का निर्माण नहीं करता है, बल्कि प्रबंधन में इसे "अपनाने" का प्रयास करता है। हम ऐसा कर सकते हैं क्योंकि बनाए गए प्रत्येक VPC में एक डिफ़ॉल्ट नेटवर्क ACL है जिसे नष्ट नहीं किया जा सकता है, और इसे डिफ़ॉल्ट नियमों के ज्ञात सेट के साथ बनाया गया है।

जब Terraform पहले Default Network ACL को अपनाता है, तो यह ACL के सभी नियमों को तुरंत हटा देता है । यह तब कॉन्फ़िगरेशन में निर्दिष्ट किसी भी नियम को बनाने के लिए आगे बढ़ता है। इस चरण की आवश्यकता है ताकि कॉन्फ़िगरेशन में निर्दिष्ट केवल नियम बनाए जाएं।

यह संसाधन अपने इनलाइन नियमों को निरपेक्ष मानता है; केवल इनलाइन परिभाषित नियम बनाए गए हैं, और इस संसाधन के लिए बाहरी किसी भी परिवर्धन / निष्कासन के परिणामस्वरूप भिन्न रूप दिखाए जाएंगे। इन कारणों से, यह संसाधन aws_network_acl_rule संसाधन के साथ असंगत है।

नेटवर्क ACL के बारे में अधिक जानकारी के लिए, नेटवर्क ACL पर AWS प्रलेखन देखें।

मूलभूत उदाहरण उपयोग, डिफ़ॉल्ट नियमों के साथ

निम्न कॉन्फ़िगरेशन डिफ़ॉल्ट नेटवर्क ACL को वही नियम देता है जिसमें AWS शामिल है, लेकिन टेराफ़ॉर्म द्वारा प्रबंधन के तहत संसाधन को खींचता है। इसका मतलब यह है कि जोड़ा गया या बदला गया कोई भी एसीएल नियम बहाव के रूप में पाया जाएगा।

resource "aws_vpc" "mainvpc" {
  cidr_block = "10.1.0.0/16"
}

resource "aws_default_network_acl" "default" {
  default_network_acl_id = "${aws_vpc.mainvpc.default_network_acl_id}"

  ingress {
    protocol   = -1
    rule_no    = 100
    action     = "allow"
    cidr_block = "0.0.0.0/0"
    from_port  = 0
    to_port    = 0
  }

  egress {
    protocol   = -1
    rule_no    = 100
    action     = "allow"
    cidr_block = "0.0.0.0/0"
    from_port  = 0
    to_port    = 0
  }
}

उदाहरण के लिए सभी ईगर ट्रैफिक को अस्वीकार करने के लिए कॉन्फिगरेशन, इनग्रेड की अनुमति देता है

निम्नलिखित सभी ईगर ट्रैफ़िक को किसी भी egress नियमों को छोड़ने से इनकार करता है, जबकि सभी ट्रैफ़िक को अनुमति देने के लिए डिफ़ॉल्ट ingress नियम भी शामिल है।

resource "aws_vpc" "mainvpc" {
  cidr_block = "10.1.0.0/16"
}

resource "aws_default_network_acl" "default" {
  default_network_acl_id = "${aws_vpc.mainvpc.default_network_acl_id}"

  ingress {
    protocol   = -1
    rule_no    = 100
    action     = "allow"
    cidr_block = "0.0.0.0/0"
    from_port  = 0
    to_port    = 0
  }
}

डिफ़ॉल्ट नेटवर्क ACL में किसी भी सबनेट के लिए सभी ट्रैफ़िक को अस्वीकार करने के लिए उदाहरण कॉन्फ़िगर:

यह config डिफ़ॉल्ट ACL में सभी ट्रैफ़िक को अस्वीकार करता है। यदि आप VPC में सभी संसाधनों को गैर-डिफ़ॉल्ट ACL असाइन करने के लिए बाध्य करने के लिए लॉक डाउन डिफ़ॉल्ट चाहते हैं तो यह उपयोगी हो सकता है।

resource "aws_vpc" "mainvpc" {
  cidr_block = "10.1.0.0/16"
}

resource "aws_default_network_acl" "default" {
  default_network_acl_id = "${aws_vpc.mainvpc.default_network_acl_id}"

  # no rules defined, deny all traffic in this ACL
}

तर्क संदर्भ

निम्नलिखित तर्क समर्थित हैं:

  • default_network_acl_id - (आवश्यक) प्रबंधित करने के लिए नेटवर्क ACL ID। यह विशेषता aws_vpc से निर्यात की aws_vpc , या मैन्युअल रूप से AWS कंसोल के माध्यम से पाई जाती है।
  • subnet_ids - (वैकल्पिक) ACL को लागू करने के लिए सबनेट आईडी की एक सूची। डिफ़ॉल्ट नेटवर्क एसीएल में सबनेट को प्रबंधित करने के लिए नीचे दिए गए नोट्स देखें
  • ingress - (ऑप्शनल) एक इंस्प्रेस नियम निर्दिष्ट करता है। नीचे परिभाषित पैरामीटर।
  • egress - (वैकल्पिक) एक egress rule निर्दिष्ट करता है। नीचे परिभाषित पैरामीटर।
  • tags - (वैकल्पिक) संसाधन को असाइन करने के लिए टैग की मैपिंग।

दोनों egress और ingress निम्नलिखित कुंजियों का समर्थन करते हैं:

  • from_port - (आवश्यक) पोर्ट से मिलान के लिए।
  • to_port - (आवश्यक) मिलान करने के लिए पोर्ट करने के लिए।
  • rule_no - (आवश्यक) नियम संख्या। ऑर्डर करने के लिए उपयोग किया जाता है।
  • action - (आवश्यक) कार्रवाई करने के लिए।
  • protocol - (आवश्यक) मिलान करने के लिए प्रोटोकॉल। -1 'सभी' प्रोटोकॉल का उपयोग करते समय, आपको एक से और 0 के पोर्ट को निर्दिष्ट करना होगा।
  • cidr_block - (वैकल्पिक) मिलान करने के लिए CIDR ब्लॉक। यह एक मान्य नेटवर्क मास्क होना चाहिए।
  • ipv6_cidr_block - (वैकल्पिक) IPv6 CIDR ब्लॉक।
  • icmp_type - (वैकल्पिक) ICMP प्रकार का उपयोग किया जाना है। डिफ़ॉल्ट 0।
  • icmp_code - (वैकल्पिक) उपयोग किए जाने वाले ICMP प्रकार कोड। डिफ़ॉल्ट 0।

डिफ़ॉल्ट नेटवर्क एसीएल में सबनेट का प्रबंधन

एक VPC के भीतर, सभी सबनेट को एक नेटवर्क ACL के साथ जोड़ा जाना चाहिए। एक सबनेट और एक नॉन-डिफॉल्ट नेटवर्क ACL के बीच एसोसिएशन को "डिलीट" करने के लिए, एसोसिएशन को इसके स्थान पर सबनेट और डिफ़ॉल्ट ACL के बीच एसोसिएशन के साथ बदल दिया जाता है।

डिफ़ॉल्ट नेटवर्क एसीएल का प्रबंधन करते समय, आप सबनेट को "हटा" नहीं सकते। इसके बजाय, उन्हें किसी अन्य नेटवर्क ACL को पुन: असाइन किया जाना चाहिए, या सबनेट स्वयं नष्ट हो जाना चाहिए। इन आवश्यकताओं के कारण, aws_default_network_acl संसाधन के कॉन्फ़िगरेशन से subnet_ids विशेषता को हटाने से परिणाम फिर से प्राप्त हो सकता है, जब तक कि सबनेट किसी अन्य नेटवर्क एसीएल को पुन: असाइन नहीं किया जाता है या नष्ट नहीं होता है।

क्योंकि सबनेट डिफ़ॉल्ट रूप से डिफ़ॉल्ट नेटवर्क ACL के साथ जुड़े हुए हैं, कोई भी गैर-स्पष्ट एसोसिएशन सबनेट को हटाने की योजना के रूप में दिखाई देगा। उदाहरण के लिए: यदि आपके पास दो सबनेट के साथ एक कस्टम aws_network_acl जुड़ा हुआ है, और आप aws_network_acl संसाधन को हटा देते हैं, तो इस संसाधन को सफलतापूर्वक नष्ट करने के बाद भविष्य की योजनाएं प्रबंधित aws_default_network_acl पर एक अंतर aws_default_network_acl , क्योंकि उन दो सबनेट्स को अब नष्ट कर दिया गया है नेटवर्क उपनल। और इस प्रकार डिफ़ॉल्ट नेटवर्क एसीएल द्वारा अपनाया गया। पुनरावर्ती योजना से बचने के लिए, उन्हें aws_default_network_acl प्रविष्टि के subnet_ids गुण को पुन: असाइन करने, नष्ट करने या जोड़ने की आवश्यकता होगी।

आपके कॉन्फ़िगरेशन से aws_default_network_acl हटाना

प्रत्येक AWS VPC एक डिफ़ॉल्ट नेटवर्क ACL के साथ आता है जिसे हटाया नहीं जा सकता। aws_default_network_acl आपको इस नेटवर्क ACL को प्रबंधित करने की अनुमति देता है, लेकिन Terraform इसे नष्ट नहीं कर सकता है। इस संसाधन को आपके कॉन्फ़िगरेशन से हटाने से यह आपके स्टेटफ़ाइल और प्रबंधन से हटा देगा, लेकिन नेटवर्क ACL को नष्ट नहीं करेगा। सभी सबनेट संघों और प्रवेश या निष्कासन नियमों को छोड़ दिया जाएगा क्योंकि वे हटाने के समय हैं। आप उन्हें AWS कंसोल के माध्यम से प्रबंधित करना फिर से शुरू कर सकते हैं।

संदर्भ संदर्भित करता है

उपरोक्त सभी तर्कों के अलावा, निम्नलिखित विशेषताएँ निर्यात की जाती हैं:

  • id - डिफॉल्ट नेटवर्क एसीएल की आईडी
  • vpc_id - संबंधित VPC की आईडी
  • ingress - इंग्रेस नियमों का समूह
  • egress - egress नियम का सेट
  • subnet_ids - संबंधित सबनेट की आईडी