วิธีทดสอบข้อมูลรับรองสำหรับเครื่องมือบรรทัดคำสั่ง AWS


149

มีคำสั่ง / คำสั่งย่อยที่สามารถส่งผ่านไปยังawsยูทิลิตี้ที่สามารถ 1) ตรวจสอบว่าข้อมูลประจำตัวใน~/.aws/credentialsไฟล์นั้นถูกต้องและ 2) ให้ข้อบ่งชี้บางอย่างที่ผู้ใช้เป็นของหนังสือรับรอง? ฉันกำลังมองหาสิ่งทั่วไปที่ไม่มีข้อสันนิษฐานเกี่ยวกับผู้ใช้ที่มีสิทธิ์ใช้งาน IAM หรือบริการเฉพาะใด ๆ

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


3
ฉันขอแนะนำว่านี่น่าจะดีกว่าที่serverfault.com ? Stack Overflow สำหรับคำถามการเขียนโปรแกรมโดยเฉพาะ
Tripp Kinetics

4
@TrippKinetics ใช่ฉันอยู่บนรั้วที่จะถาม ในใจของฉันเนื้อเรื่องของคำถามนั้นเกี่ยวกับการสืบค้น API โดยทางโปรแกรมมากกว่าจัดการเซิร์ฟเวอร์ต่อ se
smitelli

คำตอบ:


219

ใช้GetCallerIdentity :
aws sts get-caller-identity

ซึ่งแตกต่างจากการเรียก API / CLI อื่น ๆ มันจะทำงานได้เสมอโดยไม่คำนึงถึงสิทธิ์ IAM ของคุณ

คุณจะได้รับผลลัพธ์ในรูปแบบต่อไปนี้:

{
    "Account": "123456789012", 
    "UserId": "AR#####:#####", 
    "Arn": "arn:aws:sts::123456789012:assumed-role/role-name/role-session-name"
}

รูปแบบ ARN ที่แน่นอนจะขึ้นอยู่กับประเภทของข้อมูลรับรอง แต่มักจะรวมชื่อของผู้ใช้ (คน)

มันใช้รหัสข้อผิดพลาด AWS CLIมาตรฐานที่ให้ 0 กับความสำเร็จและ 255 ถ้าคุณไม่มีหนังสือรับรอง


5
นี่เป็นคำตอบที่ดี แต่ถ้าคุณใช้ MFA ให้ระวัง - มันซับซ้อนกว่า ด้วย MFA คุณจะต้องใช้หนังสือรับรองการทำงาน (i) รวมกับโทเค็น MFA เพื่อรับข้อมูลรับรองชั่วคราวการทำงานที่แตกต่างกัน (ii) และด้วยโซลูชันนี้คุณจะได้รับผลลัพธ์เดียวกันสำหรับหนังสือรับรอง (i) หรือ (ii)
Mark Chackerian

3
@ MarkChackerian ไม่ได้เป็นอย่างนั้นเสมอไป ผมได้สร้างผู้ใช้ที่มี MFA จะถูกบังคับใช้โดยใช้นโยบาย Trek10 ของ ด้วยเซสชั่น MFA โทเค็นไม่ได้ใช้งานถ้าผมดำเนินการที่ฉันได้รับ:aws iam get-user --profile test-mfa An error occurred (AccessDenied) when calling the GetUser operationอย่างไรก็ตามaws sts get-caller-identity --profile test-mfaเอาต์พุต (ในทำนองเดียวกันโดยไม่มีโทเค็นเซสชัน MFA ทำงานอยู่) test-mfaบัญชีของ ARN และ UserId
วิลล์

54

มีวิธีที่ตรงไปตรงมา - aws iam get-userจะบอกรายละเอียดเกี่ยวกับตัวคุณ (ผู้ใช้ IAM ปัจจุบัน) - หากผู้ใช้มีiamสิทธิ์

มีการเรียก CLI สองสามครั้งที่สนับสนุนการ--dry-runตั้งค่าสถานะเช่นเดียวกับaws ec2 run-instancesที่คุณบอกคุณว่าคุณมีการกำหนดค่า / เครดิตที่จำเป็นในการดำเนินการ

นอกจากนี้ยังมีการ--auth-dry-runตรวจสอบว่าคุณมีสิทธิ์ที่จำเป็นสำหรับคำสั่งโดยไม่ต้องใช้คำสั่งจริง หากคุณมีสิทธิ์ที่จำเป็นคำสั่งจะส่งคืน DryRunOperation มิฉะนั้นจะส่งคืน UnauthorizedOperation [จากเอกสาร AWS - ตัวเลือกทั่วไป ]

คุณจะสามารถแสดงรายการ IAM Access Keys จาก Management Console ซึ่งคุณสามารถทำการตรวจสอบเพื่อดูว่าใครได้รับมอบหมายคีย์ใด

วิธีที่ดีที่สุดที่จะเข้าใจซึ่งผู้ใช้ / บทบาทมีสิ่งที่เป็นสิทธิพิเศษให้ใช้Simulator นโยบาย IAM


16
กระแทกแดกดันผู้ใช้ที่ฉันรันการทดสอบว่ามีAccessDeniedข้อผิดพลาด - ซึ่งรวมarn:aws:iam::123...890:user/somebodyสตริงทั้งหมดเป็นส่วนหนึ่งของเอาต์พุตข้อผิดพลาด
smitelli

7
เป็นไปได้ทั้งหมดที่ผู้ใช้ไม่ได้รับอนุญาตให้ใช้ตัวเอง : - /
Jason

ใช่ฉันมีสถานการณ์นี้ ใน AWS Console ถัดจาก User ARN จะแสดง N / A และโฮเวอร์เหนืออธิบายว่า "ผู้ใช้ arn: aws: iam: ... : ผู้ใช้ / สตีฟไม่ได้รับอนุญาตให้ดำเนินการ iam: GetUser บนทรัพยากร: user steve"
Steve Bennett
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.