2015-08-05 6 views
29

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

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

+1

क्या मैं सुझाव दे सकता हूं कि यह http://serverfault.com/ पर बेहतर पूछा जाएगा? स्टैक ओवरफ़्लो विशेष रूप से प्रोग्रामिंग प्रश्नों के लिए है। –

+2

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

उत्तर

28

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

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

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

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

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

+5

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

+0

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

33

उपयोग GetCallerIdentity:
aws sts get-caller-identity

अन्य एपीआई के विपरीत/CLI यह हमेशा काम करेंगे, अपने IAM अनुमतियों की परवाह किए बिना कहते हैं।

आप निम्न स्वरूप में उत्पादन प्राप्त होगा:

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

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

यह मानक AWS CLI error codes सफलता पर 0 देता है और यदि आपके पास कोई प्रमाण-पत्र नहीं है तो 255 का उपयोग करता है।

+2

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

+0

@MarkChackerian यह हमेशा मामला नहीं है। मैंने एक उपयोगकर्ता बनाया है जिसका एमएफए [ट्रेक 10 की नीति] (https://www.trek10.com/blog/improving-the-aws-force-mfa-policy-for-IAM-users/) का उपयोग करके लागू किया जा रहा है।एमएफए सत्र टोकन सक्रिय नहीं है, अगर मैं 'is get-user --profile test-mfa' निष्पादित करता हूं, तो मुझे मिलता है:' GetUser ऑपरेशन को कॉल करते समय एक त्रुटि हुई (AccessDenied)। हालांकि, 'एसएसटी गेट-कॉलर-पहचान - प्रोफाइल टेस्ट-एमएफए आउटपुट (इसी प्रकार, एमएफए सत्र टोकन सक्रिय नहीं है)' test-mfa' का खाता, एआरएन, और UserId। – Ville

संबंधित मुद्दे