सवाल अमेज़ॅन एस 3 से डाउनलोड करने के लिए aws cli का उपयोग करते समय एक्सेस अस्वीकार कर रहा है?


मैं वास्तव में एडब्ल्यूएस में घूम रहा हूं कि यह पता लगाने की कोशिश कर रहा हूं कि मैं यहां क्या खो रहा हूं। मैं इसे बनाना चाहता हूं ताकि एक आईएएम उपयोगकर्ता एस 3 बाल्टी से फाइलें डाउनलोड कर सके - फाइलों को पूरी तरह से सार्वजनिक किए बिना - लेकिन मुझे पहुंच से वंचित कर दिया जा रहा है। अगर कोई भी बंद कर सकता है तो मुझे रोक दिया जाएगा।

मैंने अभी तक क्या किया है:

  • मेरे उपयोगकर्ता नामक उपयोगकर्ता बनाया गया (उदाहरण के लिए)
  • उपयोगकर्ता के लिए जेनरेट की गई एक्सेस कुंजियां और उन्हें ईसी 2 इंस्टेंस पर ~ / .aws में डाल दें
  • एक बाल्टी नीति बनाई जिसकी मुझे उम्मीद थी कि मेरे उपयोगकर्ता के लिए अनुदान पहुंच होगी
  • आदेश चलाओ aws s3 cp --profile my-user s3://my-bucket/thing.zip .

बाल्टी नीति:

{
  "Id": "Policy1384791162970",
  "Statement": [
    {
      "Sid": "Stmt1384791151633",
      "Action": [
        "s3:GetObject"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:s3:::my-bucket/*",
      "Principal": {
        "AWS": "arn:aws:iam::111122223333:user/my-user"
      }
    }
  ]
}

परिणाम है A client error (AccessDenied) occurred: Access Denied हालांकि मैं एक ही कमांड और डिफ़ॉल्ट (रूट खाता?) एक्सेस कुंजियों का उपयोग कर डाउनलोड कर सकता हूं।

मैंने उपयोगकर्ता नीति को भी जोड़ने का प्रयास किया है। जबकि मुझे नहीं पता कि यह क्यों जरूरी होगा मैंने सोचा कि यह चोट नहीं पहुंचाएगा, इसलिए मैंने इसे अपने उपयोगकर्ता से जोड़ा।

{
  "Statement": [
    {
      "Sid": "Stmt1384889624746",
      "Action": "s3:*",
      "Effect": "Allow",
      "Resource": "arn:aws:s3:::my-bucket/*"
    }
  ]
}

वही परिणाम


47
2017-11-19 19:37


मूल




जवाब:


मैं भी इसके साथ संघर्ष कर रहा था, लेकिन मुझे यहां एक जवाब मिला https://stackoverflow.com/a/17162973/1750869 जिसने मेरे लिए इस मुद्दे को हल करने में मदद की। नीचे उत्तर दोबारा जवाब देना।


आपको हर किसी के लिए अनुमतियां खोलने की ज़रूरत नहीं है। एक आईएएम उपयोगकर्ता का उपयोग कर एक खाते में एक बाल्टी से प्रतिलिपि बनाने के लिए स्रोत और गंतव्य पर नीचे बाल्टी नीतियों का उपयोग करें

बाल्टी को कॉपी करने के लिए - SourceBucket

बाल्टी को कॉपी करने के लिए - गंतव्य बाल्टी

स्रोत एडब्ल्यूएस खाता आईडी - XXXX-XXXX-XXXX

स्रोत IAM उपयोगकर्ता - src-iam-user

नीचे दी गई नीति का अर्थ है - आईएएम उपयोगकर्ता - XXXX-XXXX-XXXX: src-iam-user में s3 है: ListBucket और s3: SourceBucket / * और s3 पर GetObject विशेषाधिकार: ListBucket और s3: गंतव्यबेट पर PutObject विशेषाधिकार / *

SourceBucket पर नीति इस तरह होनी चाहिए:

{
"Id": "Policy1357935677554",
"Statement": [
    {
        "Sid": "Stmt1357935647218",
        "Action": [
            "s3:ListBucket"
        ],
        "Effect": "Allow",
        "Resource": "arn:aws:s3:::SourceBucket",
        "Principal": {"AWS": "arn:aws:iam::XXXXXXXXXXXX:user/src–iam-user"}
    },
    {
        "Sid": "Stmt1357935676138",
        "Action": ["s3:GetObject"],
        "Effect": "Allow",
        "Resource": "arn:aws:s3::: SourceBucket/*",
        "Principal": {"AWS": "arn:aws:iam::XXXXXXXXXXXX:user/src–iam-user"}
   }
]
}

गंतव्य बकेट पर नीति होना चाहिए:

{
"Id": "Policy1357935677554",
"Statement": [
    {
        "Sid": "Stmt1357935647218",
        "Action": [
            "s3:ListBucket"
        ],
        "Effect": "Allow",
        "Resource": "arn:aws:s3::: DestinationBucket",
        "Principal": {"AWS": "arn:aws:iam::XXXXXXXXXXXX:user/src–iam-user"}
    },
    {
        "Sid": "Stmt1357935676138",
        "Action": ["s3:PutObject"],
        "Effect": "Allow",
        "Resource": "arn:aws:s3::: DestinationBucket/*",
        "Principal": {"AWS": "arn:aws:iam::XXXXXXXXXXXX:user/src–iam-user"}
   }
]
}

चलाने के लिए आदेश है s3cmd cp s3://SourceBucket/File1 s3://DestinationBucket/File1


36
2017-11-19 23:27



हे भगवान, तुम मेरे नायक हो। मैं बस बाल्टी स्तर पर ListBucket अनुमति याद कर रहा था। मुझे अभी भी पता नहीं है कि मुझे ऑब्जेक्ट को सीपी करने के लिए बाल्टी को क्यों करना है, लेकिन यह ठीक है। शायद यह aws कमांड का उपयोग करने का केवल एक quirk है? - Josh Gagnon
हाँ, यह बहुत अजीब है। आपको लगता है कि एस 3 की एक नीति है: * (हालांकि असुरक्षित हो सकता है) सैनिटी परीक्षण के लिए पर्याप्त होगा। - Sergio
एफएमएल, उस सूचीबकेट अनुमति के लिए 2 दिन बर्बाद हो गया। अच्छी पकड़ - chaqke
बहुत समय बिताया .. यह आवश्यक जवाब था। ListBucket - bucketname, GetObject - bucketname / * - rsmoorthy


जब मुझे एक ही समस्या का सामना करना पड़ा तो यह पता चला कि एडब्ल्यूएस को सर्वर-साइड एन्क्रिप्शन सक्षम होना आवश्यक है। तो निम्न आदेश मेरे लिए सफलतापूर्वक काम किया:

aws s3 cp test.txt s3://my-s3-bucket --sse AES256

8
2017-09-19 08:53



धन्यवाद! मेरे मामले में यह था --sse aws:kms बाल्टी "डिफ़ॉल्ट" का उपयोग करने के लिए ... - Michael Yoo


मैं जेम्स द्वारा वर्णित 'किसी प्रमाणीकृत एडब्ल्यूएस उपयोगकर्ता' विकल्प की सिफारिश नहीं करता।

ऐसा करने से बाल्टी-स्तर एसीएल जोड़ता है जो किसी भी एडब्ल्यूएस खाते (केवल आपके आईएएम उपयोगकर्ताओं को) को उस बाल्टी के लिए सूची / हटाने / संशोधित करने की अनुमति देता है।

यानी aws खाते वाले किसी के लिए सार्वजनिक पढ़ / लिखना।


4
2018-06-12 10:51



क्या आपने इसका परीक्षण किया है? मैं इस धारणा के तहत था कि एडब्ल्यूएस खाता वास्तव में मेरे संगठन के साथ किसी भी इकाई का मतलब है - यानी एक उपयोगकर्ता, एक ईसी 2 उदाहरण, एक आईएएम भूमिका, लेकिन किसी दूसरे खाते से नहीं। मैं गलत हो सकता हूं, और यदि मैं ऐसा करता हूं तो मैं अपना योगदान संपादित करूँगा और जल्दी ही अपनी बाल्टी का ऑडिट करूंगा। धन्यवाद। - James Dunmore
हाँ। एस 3 एसीएल में "अधिकृत उपयोगकर्ता" अनुदानकर्ता का मतलब है सभी एडब्ल्यूएस खाते। यह हस्ताक्षरित अनुरोध लागू करता है, लेकिन कुछ भी नहीं। यहां एक संदर्भ दिया गया है: संपर्क - Andrew


मैंने पॉलिसी लिखने के बिना इसे ठीक करने में कामयाब रहा - एस 3 कंसोल (वेब ​​ui) से मैंने बाल्टी का चयन किया और अनुमति टैब में "कोई प्रमाणीकृत एडब्ल्यूएस उपयोगकर्ता" चुना और सभी बक्से टिकट।

अद्यतन करें: जैसा कि टिप्पणियों में बताया गया है "किसी भी प्रमाणीकृत एडब्ल्यूएस उपयोगकर्ता" सिर्फ आपके खाते में उपयोगकर्ता नहीं है, यह सभी एडब्ल्यूएस प्रमाणीकृत उपयोगकर्ता है, कृपया सावधानी के साथ उपयोग करें


3
2018-03-01 13:52



मुझे कल्पना है कि आपके लिए नीति तैयार कर रहा है। सभी बक्से को टिकाना आपको सूचीबकेट आदि प्राप्त करने जा रहा है। - Josh Gagnon
मुझे यकीन है कि यह है - मुझे पता है कि लेखन नीतियां दर्द हो सकती हैं, उन टिक बॉक्स आपको थोड़ी अधिक दे सकते हैं लेकिन एक अच्छा त्वरित फिक्स - James Dunmore


यहां तक ​​कि यदि आपकी आईएएम नीतियां सही तरीके से सेट की गई हैं, तो भी आपको एक त्रुटि मिल सकती है An error occurred (AccessDenied) when calling the <OPERATION-NAME> operation: Access Denied आपके क्रेडेंशियल्स पर एमएफए (मल्टी-फैक्टर प्रमाणीकरण) आवश्यकताओं के कारण। ये आपको गार्ड से पकड़ सकते हैं क्योंकि यदि आप पहले ही एडब्लूएस कंसोल में लॉग इन कर चुके हैं तो यह दिखाई देगा कि आपके क्रेडेंशियल्स ठीक काम कर रहे हैं, और अनुमति से इनकार करने से इनकार करने से अनुमति मिली है, विशेष रूप से सहायक नहीं है।

Aws cli के साथ MFA सेट अप करने के तरीके पर पहले से ही कुछ अच्छे निर्देश दिए गए हैं:

असल में, आपको अपने एमएफए डिवाइस के पते पर पहुंचने की आवश्यकता है, और एक अस्थायी टोकन प्राप्त करने के लिए अपने डिवाइस से कोड के साथ भेजें।


1
2017-07-12 17:00



आपने मेरा दिन बचाया! - shintaroid


मैं बस वेबयूआई पर गया और बाल्टी पर क्लिक किया, फिर अनुमतियों पर गया और फिर नीति पर गया। जब मैंने इसे खोल दिया तो मैंने अभी हटा दिया क्लिक किया। मैंने ऐसा किया क्योंकि मुझे लगता है कि यह कॉन्फ़िगरेशन भी था।

मैं मुख्य एस 3 पेज पर वापस गया, फिर बाल्टी पर क्लिक किया और इसे हटाने का प्रयास किया और यह काम किया।

यहां तक ​​कि जब मैंने इसे aws-cli का उपयोग करके किया था

$ aws s3 rb s3://bucket-name --force  

वैसे भी, यह वह चीज है जो मेरे लिए काम करती है। अनुमतियों पर नीति आपको बाल्टी हटाने से रोक रही है।


0
2017-10-14 04:19





एक बार मुझे यह चलाने के लिए बस कोशिश करके यह त्रुटि मिली:

aws s3 cp s3://[bucketName]/[fileName] .

एक फ़ोल्डर में जहां मुझे अनुमति नहीं थी। यह मूर्खतापूर्ण है, लेकिन सुनिश्चित करें कि आप उस फ़ोल्डर के स्वामी हैं जो आगे बढ़ने से पहले हैं!


0
2017-08-16 04:48