กำลังมองหาวิธีที่รวดเร็วในการดึงหมายเลขบัญชีของฉันฉันเคยคิดจะใช้aws iam get-account-authorization-details --max-items 1
แต่มีปัญหาหลายประการในการทำเช่นนี้ มีวิธีดำเนินการที่อาจไม่ข้ามจุดเริ่มต้นของบัญชีหรือไม่?
กำลังมองหาวิธีที่รวดเร็วในการดึงหมายเลขบัญชีของฉันฉันเคยคิดจะใช้aws iam get-account-authorization-details --max-items 1
แต่มีปัญหาหลายประการในการทำเช่นนี้ มีวิธีดำเนินการที่อาจไม่ข้ามจุดเริ่มต้นของบัญชีหรือไม่?
คำตอบ:
คุณสามารถรับหมายเลขบัญชีได้จากคำสั่งย่อยSecure Token Serviceget-caller-identity
โดยใช้ดังต่อไปนี้:
aws sts get-caller-identity --query Account --output text
aws sts get-caller-identity|jq -r ".Account"
aws sts get-caller-identity --output json | jq '.Account' | sed 's/\"//g'
--query 'Account'
ส่วนออก
jq
การมีส่วนร่วมหรือติดตั้งบนระบบได้ตลอดเวลา เซิร์ฟเวอร์บางตัวห้ามการติดตั้งแพ็คเกจที่ไม่เกี่ยวข้องเนื่องจากความปลอดภัย คุณสามารถทำอะไรแบบนี้ได้aws sts get-caller-identity --output json |grep Account |awk -F ': "' '{print$2}' |sed 's/\".*//'
แต่มันค่อนข้างน่ารำคาญเล็กน้อยและคุณอาจทำ--query 'Account' --output text
ในจุดนั้นได้เช่นกัน
จากคำตอบที่เกี่ยวข้องของฉันสำหรับ AWS PowerShell CLIรหัสบัญชีของคุณเป็นส่วนหนึ่งของแหล่งข้อมูล Arn ที่คุณสร้าง ... และที่สร้างขึ้นโดยอัตโนมัติสำหรับคุณ แหล่งข้อมูลบางอย่างจะแสดงรายการคุณเป็น OwnerId ด้วย
กลุ่มความปลอดภัยเริ่มต้นจะสร้างขึ้นโดยอัตโนมัติสำหรับคุณใน VPC เริ่มต้นของแต่ละภูมิภาคเป็นกลุ่มความปลอดภัยที่สงวนไว้ จากเอกสารประกอบ :
คุณไม่สามารถลบกลุ่มความปลอดภัยเริ่มต้น หากคุณพยายามลบกลุ่มความปลอดภัยเริ่มต้น EC2-Classic คุณจะได้รับข้อผิดพลาดต่อไปนี้: Client.InvalidGroup.Reserved: สงวนกลุ่มความปลอดภัย 'default' หากคุณพยายามลบกลุ่มความปลอดภัยเริ่มต้นของ VPC คุณจะได้รับข้อผิดพลาดต่อไปนี้ Client.CannotDelete: กลุ่มที่ระบุ: "sg-51530134" name: "default" ไม่สามารถลบได้โดยผู้ใช้
สิ่งนี้ทำให้เป็นผู้สมัครที่เชื่อถือได้ในการดึงรหัสบัญชีของเราตราบใดที่คุณอยู่ใน EC2 classic หรือมี VPC เริ่มต้น (* ดูกรณีขอบถ้าคุณไม่ได้)
ตัวอย่าง:
aws ec2 describe-security-groups \
--group-names 'Default' \
--query 'SecurityGroups[0].OwnerId' \
--output text
ใช้--query
เพื่อกรองผลลัพธ์ลงไปที่ "รหัสเจ้าของ" สำหรับผลลัพธ์แรกจากคำขอนี้จากนั้นใช้--output
เพื่อส่งออก ID บัญชีของคุณเป็นข้อความธรรมดา:
123456781234
ขอบกรณี:
(ขอบคุณ @kenchew) โปรดทราบว่าหากคุณลบ VPC เริ่มต้นของคุณในภูมิภาคที่กำหนดกลุ่มความปลอดภัยนี้จะไม่มีอยู่อีกต่อไปและคุณควรใช้หนึ่งในโซลูชันทางเลือกเหล่านี้:
อ่านเพิ่มเติม:
หากคุณกำลังรันบนเซิร์ฟเวอร์ที่รันด้วยบทบาทสมมติคุณจะไม่สามารถเรียกaws sts get-caller-identity
ใช้ นอกจากนี้describe-security-groups
คุณไม่สามารถใช้--group-names
ตัวกรองได้ตลอดเวลา(จะใช้ไม่ได้หากคุณไม่มี VPC เริ่มต้น) ดังนั้นเพียงแค่เลือกกลุ่มความปลอดภัยแรก ฉันพบว่าสิ่งนี้น่าเชื่อถือที่สุดไม่ว่าคุณจะใช้การตรวจสอบสิทธิ์ประเภทใดหรือ VPC ประเภทใดก็ตาม
aws ec2 describe-security-groups --query 'SecurityGroups[0].OwnerId' --output text
วิธีที่ฉันชอบคือใช้aws iam get-user [--profile <profile>]
เนื่องจากคุณต้องใช้บทบาทการบริการตนเองของ IAM เท่านั้นจึงจะทำงานได้