Score:0

โปรไฟล์ IAM อนุญาตให้สร้างเครือข่ายย่อย VPC IPV6 ในบางภูมิภาค เหตุใดจึงล้มเหลวในภูมิภาคอื่น

ธง br

ในสภาพแวดล้อมการทดสอบเพื่อจำลองปัญหาที่ใหญ่ขึ้น ฉันมีผู้ใช้ IAM ที่มีโปรไฟล์ IAM ที่แนบโดยตรง ฉันได้ลองกับโปรไฟล์ที่แนบมากับบทบาท IAM ซึ่งผู้ใช้ IAM ได้สันนิษฐานไว้

โปรไฟล์นี้อนุญาตให้ CloudFormation สร้าง VPC ด้วยซับเน็ต IPv6CidrBlock และ IPv6Cidr กลุ่มเมฆนี้ถูกสร้างขึ้นอย่างดีเสมอใน us-east-1 และบางภูมิภาค เมื่อทำการทดสอบเพิ่มเติม ภูมิภาคอื่นมักจะล้มเหลวเสมอ การสร้างซับเน็ต IPv6 ล้มเหลว การตรวจสอบพบว่าจำเป็นต้องมีการดำเนินการกับโปรไฟล์ IAM เพิ่มเติม "ec2:DescribeNetworkAcls" สำหรับบางภูมิภาค ตัวอย่างเช่น us-east-1 และ eu-west-2 ไม่ต้องการการดำเนินการเพิ่มเติม eu-central-1 และภูมิภาคอื่นๆ อีกหลายแห่งจำเป็นต้องมีการดำเนินการกับโปรไฟล์ IAM เพิ่มเติม

  1. มีเหตุผลใดที่ทราบสำหรับข้อกำหนดที่แตกต่างกันในภูมิภาคนี้หรือไม่ มีการตั้งค่าบริการ EC2 หรือ VPC ใดบ้างที่สามารถสอบถามเพื่อดูความแตกต่างได้หรือไม่
  2. เหตุใด CloudTrail จึงไม่บันทึกข้อความความล้มเหลวเมื่อโปรไฟล์ IAM ไม่มีการดำเนินการ "ec2:DescribeNetworkAcls"
  3. สำหรับภูมิภาคที่ล้มเหลวก่อนหน้านี้ เมื่อมีการเพิ่มการดำเนินการไปยังโปรไฟล์ IAM เมื่อทำการทดสอบอีกครั้ง CloudTrail จะไม่บันทึกเหตุการณ์ที่สำเร็จซึ่งมีชื่อว่า "DescribeNetworkAcls" แม้ว่ามันจะบันทึกเหตุการณ์ที่เกี่ยวข้องอื่นๆ ทั้งหมดก็ตาม

ข้อผิดพลาดที่แสดงใน CloudFormation แต่ไม่ใช่ CloudTrail:

"สถานะทรัพยากร": "CREATE_FAILED",
LogicalId: ซับเน็ต,
"ResourceStatusReason": 
"ไม่สามารถเรียกแอตทริบิวต์ Ipv6CidrBlocks สำหรับ AWS::EC2::VPC โดยมีข้อความแสดงข้อผิดพลาด คุณไม่ได้รับอนุญาตให้ดำเนินการนี้ (บริการ: Ec2, รหัสสถานะ: 403, รหัสคำขอ: XXX, รหัสคำขอเพิ่มเติม: null) .

เมื่อเกิดข้อผิดพลาด การเพิ่มการดำเนินการตามนโยบาย IAM ต่อไปนี้จะช่วยแก้ปัญหาได้ แม้ว่าชื่อเหตุการณ์นี้จะไม่ถูกบันทึกโดย CloudTrail:

"ec2:DescribeNetworkAcls"

เทมเพลต Cloudformation:

---
AWSTเทมเพลตรูปแบบเวอร์ชัน: '2010-09-09'
คำอธิบาย: 'ชุดทดสอบ'
ทรัพยากร:
  วีพีซี:
    ประเภท: AWS::EC2::VPC
    คุณสมบัติ:
      CidrBlock: 172.16.0.0/16
      เปิดใช้งานDnsSupport: จริง
      เปิดใช้งานชื่อโฮสต์ DNS: จริง
      InstanceTenancy: ค่าเริ่มต้น

  VPCIPv6:
    ประเภท: AWS::EC2::VPCCidrBlock
    คุณสมบัติ:
      AmazonProvidedIpv6CidrBlock: จริง
      VpcId: !อ้างอิง VPC

  เครือข่ายย่อย:
    ประเภท: AWS::EC2::ซับเน็ต
    ขึ้นอยู่กับ:
      - วีพีซีไอพีv6
    คุณสมบัติ:
      CidrBlock: 172.16.254.0/23
      Ipv6CidrBlock: !Select [0, !Cidr [!Select [0, !GetAtt 'VPC.Ipv6CidrBlocks'], 1, 64]]
      MapPublicIpOnLaunch: เท็จ
      VpcId: !อ้างอิง VPC

นโยบาย IAM

{
    "เวอร์ชัน": "2012-10-17",
    "คำแถลง": [
        {
            "ซิด": "CloudFormationStackActions",
            "เอฟเฟกต์": "อนุญาต",
            "หนังบู๊": [
                "รูปแบบคลาวด์: CreateStack",
                "รูปแบบคลาวด์: UpdateStack",
                "รูปแบบคลาวด์:DescribeStacks",
                "รูปแบบคลาวด์: DescribeStackEvents",
                "รูปแบบคลาวด์: ListStackResources"
            ],
            "ทรัพยากร": [
                "*"
            ]
        },
        {
        {
            "ซิด": "TESTINGVPCIPv6Subnet",
            "เอฟเฟกต์": "อนุญาต",
            "หนังบู๊": [
                "ec2:CreateVpc",
                "ec2:CreateSubnet",
                "ec2:เชื่อมโยง VpcCidrBlock",
                "ec2:AssociateSubnetCidrBlock",
                "ec2:ModifyVpcAttribute",
                "ec2:DescribeVpcAttribute",
                "ec2:DescribeVpcs",
                "ec2:DescribeSubnets"
            ],
            "ทรัพยากร": [
                "*"
            ]
        }
    ]
}

ในการสืบพันธุ์:

  • บันทึกข้อความการก่อตัวของเมฆด้านบนลงในไฟล์ชื่อ "a-test-stack-template.yaml"
  • ตั้งค่าตัวแปร bash ชั่วคราวชื่อ aws_cred_profile ด้วยชื่อโปรไฟล์ aws credentials ที่จะใช้สำหรับคำสั่ง aws cli เครดิตควรเป็นของผู้ใช้ IAM พร้อมแนบโปรไฟล์ IAM ด้านบน ใช้ค่าเริ่มต้นหากมีข้อมูลรับรองเพียงชุดเดียว
aws_cred_profile=ค่าเริ่มต้น
  • คำสั่ง AWS CLI เพื่อทดสอบการจำลอง:
aws_region=eu-central-1

# aws cli สร้างกอง
test_env=$(aws cloudformation create-stack --region $aws_region --no-cli-เพจเจอร์ \
--profile $aws_cred_profile --disable-ย้อนกลับ \
--stack-name test-$(วันที่ +%Y%b%d-%H%M%S) \
--ไฟล์ template-body://a-test-stack-template.yaml \
| sed -r -e 's/.*:stack\/(.*)\/.*/\1/' | sed '1d' | s '2d')

สะท้อน $test_env

# โทรซ้ำไปยัง list-stack-resources จนกว่าการสร้าง stack จะเสร็จสมบูรณ์
aws cloudformation list-stack-resources --region $aws_region --no-cli-pager \
--stack-name=$test_env --max-items=3

โพสต์คำตอบ

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