AWS कमांड लाइन टूल्स के लिए क्रेडेंशियल्स का परीक्षण कैसे करें


149

क्या एक कमांड / उपकमांड है जिसे awsउपयोगिता में पारित किया जा सकता है जो 1) यह सत्यापित कर सकता है कि ~/.aws/credentialsफ़ाइल में क्रेडेंशियल्स वैध हैं, और 2) कुछ संकेत देते हैं कि उपयोगकर्ता क्रेडेंशियल्स किससे संबंधित हैं? मैं कुछ सामान्य की तलाश कर रहा हूं जो उपयोगकर्ता को IAM या किसी विशिष्ट सेवा के लिए अनुमति देने के बारे में कोई धारणा नहीं बनाता है।

इसके लिए उपयोग का मामला यह सुनिश्चित करने के लिए एक तैनाती समय-समय की जांच है कि क्रेडेंशियल्स अच्छे हैं। आदर्श रूप से रिटर्न वैल्यू की जांच करने और अवैध क्रेडेंशियल्स होने पर तैनाती को रद्द करने का कोई तरीका होगा।


3
क्या मेरा सुझाव है कि यह serverfault.com पर बेहतर होगा ? स्टैक ओवरफ्लो विशेष रूप से प्रोग्रामिंग सवालों के लिए है।
ट्रिप कैनेटीक्स

4
@TrippKinetics हाँ, मैं बाड़ पर था कि कहाँ से पूछूँ। मेरे दिमाग में, सवाल का मांस क्रमिक रूप से सर्वर के प्रबंधन के बजाय एपीआई को क्वेरी करने के बारे में था।
15

जवाबों:


219

GetCallerIdentity का उपयोग करें :
aws sts get-caller-identity

अन्य एपीआई / सीएलआई कॉल के विपरीत, यह आपके आईएएम की अनुमति की परवाह किए बिना हमेशा काम करेगा।

आपको निम्न प्रारूप में आउटपुट मिलेगा:

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

सटीक ARN प्रारूप क्रेडेंशियल के प्रकार पर निर्भर करेगा, लेकिन अक्सर इसमें (मानव) उपयोगकर्ता का नाम शामिल होता है।

यह मानक AWS सीएलआई त्रुटि कोड का उपयोग करता है 0 सफलता पर और 255 अगर आपके पास कोई क्रेडेंशियल्स नहीं है।


5
यह एक शानदार उत्तर है, लेकिन यदि आप एमएफए का उपयोग कर रहे हैं, तो बाहर देखें - यह अधिक जटिल है। MFA के साथ, आपको विभिन्न कार्यशील अस्थायी क्रेडेंशियल्स (ii) प्राप्त करने के लिए MFA टोकन के साथ संयुक्त कार्यशील क्रेडेंशियल्स (i) का उपयोग करने की आवश्यकता है और इस समाधान के साथ, आपको क्रेडेंशियल्स (i) या (ii) के लिए समान परिणाम मिलते हैं।
मार्क चेकरियन

3
@ मर्कचैकरियन हमेशा ऐसा नहीं होता। मैंने एक उपयोगकर्ता बनाया है जिसका MFA ट्रेक 10 की नीति का उपयोग करके लागू किया जा रहा है । एमएफए सत्र टोकन सक्रिय नहीं होने के साथ, यदि मैं निष्पादित करता हूं, तो aws iam get-user --profile test-mfaमुझे प्राप्त होता है An error occurred (AccessDenied) when calling the GetUser operation:। हालाँकि, aws sts get-caller-identity --profile test-mfaआउटपुट (इसी तरह, एमएफए सत्र टोकन सक्रिय नहीं है) का test-mfaखाता, एआरएन और उपयोगकर्ता आईडी।
विले

54

एक सीधा तरीका है - aws iam get-userआप (वर्तमान IAM उपयोगकर्ता) के बारे में विवरण बताएंगे - बशर्ते उपयोगकर्ता के पास iamविशेषाधिकार हैं।

सीएलआई कॉल के कुछ जोड़े हैं जो --dry-runध्वज का समर्थन करते हैं जैसे aws ec2 run-instancesकि आप बताते हैं कि क्या आपके पास ऑपरेशन करने के लिए आवश्यक कॉन्फिग / क्रेडेंशियल है।

वहाँ भी है --auth-dry-runजो जाँचता है कि क्या आपके पास कमांड के लिए आवश्यक अनुमति है, वास्तव में कमांड चलाने के बिना। यदि आपके पास आवश्यक अनुमतियाँ हैं, तो आदेश DryRunOperation लौटाता है; अन्यथा, यह अनधिकृत रिटर्न देता है। [ AWS प्रलेखन से - आम विकल्प ]

आप प्रबंधन कंसोल से IAM एक्सेस कीज़ को सूचीबद्ध करने में सक्षम होंगे जिसे आप यह देखने के लिए चेक कर सकते हैं कि किसको कौन सी कुंजी सौंपी गई है।

यह समझने का सबसे अच्छा तरीका है कि किस उपयोगकर्ता / भूमिका में विशेषाधिकार हैं IAM नीति सिम्युलेटर का उपयोग ।


16
विडंबना यह है कि जिस उपयोगकर्ता को मैंने परीक्षण किया, उसमें AccessDeniedत्रुटि मिली - जिसमें arn:aws:iam::123...890:user/somebodyत्रुटि आउटपुट के भाग के रूप में पूर्ण स्ट्रिंग शामिल था ।
स्मिताली

7
पूरी तरह से संभव है कि उपयोगकर्ता के पास स्वयं को 'उपयोगकर्ता प्राप्त करने' की अनुमति नहीं है। : - /
जेसन

हां, मेरी यही स्थिति है। उपयोगकर्ता ARN के बगल में AWS कंसोल में यह N / A दिखाता है, और होवर यह बताता है कि "उपयोगकर्ता arn: aws: iam: ...: user / steve iam प्रदर्शन के लिए अधिकृत नहीं है: GetUser on resource: userveve"
स्टीव बेनेट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.