उपयोगकर्ता को S3 बाल्टी में फाइलें कैसे अपलोड करने दें, लेकिन ओवरराइट या डिलीट न करें?


19

मेरे पास उपयोगकर्ता के लिए निम्नलिखित IAM नीति है

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "Stmt1395161912000",
      "Effect": "Allow",
      "Action": [
        "s3:ListBucket",
        "s3:PutObject",
        "s3:*"
      ],
      "Resource": [
        "arn:aws:s3:::bucketname"
      ]
    },
    {
      "Sid": "list",
      "Effect": "Allow",
      "Action": [
        "s3:ListAllMyBuckets"
      ],
      "Resource": [
        "arn:aws:s3:::*"
      ]
    }
  ]
}

लक्ष्य उपयोगकर्ता को बाल्टी में फाइलें अपलोड करने देना है, लेकिन ओवरराइट या डिलीट नहीं करना है। यह बैकअप के लिए है। मैंने शुरुआत की ListBucketऔर PutObject, लेकिन इसमें *काम नहीं किया गया। *उपयोगकर्ता को केवल फाइलें अपलोड करने की भी अनुमति नहीं देता है Access Denied

जब मैं सिम्युलेटर की कोशिश करता हूं, तो यह वापस आ Denied - Implicitly denied (no matching statements found).जाता है ListBucket, जो कि अजीब लगता है क्योंकि मैंने स्पष्ट रूप से अनुमति दी है।

मैंने साइबर 3 और एस 3 क्लाइंट के रूप में 3 हब की कोशिश की है।

किसी भी विचार गलत क्या है?

जवाबों:


25

जब क्राफ्टिंग अमेज़न IAM के लिए नीतियों अमेज़न S3 , आप के बीच के अंतर के बारे में पता करने की आवश्यकता है सेवा पर संचालन (जैसे ListAllMyBuckets ), बाल्टी पर संचालन (जैसे ListBucket ) और वस्तुओं पर संचालन (जैसे GetObject )।

विशेष रूप से, Resourceआपकी नीति के विनिर्देश को निम्नलिखित पैटर्न के अनुसार उपयुक्त लक्ष्य संस्थाओं को संबोधित करने की आवश्यकता है ( उदाहरण के लिए अमेज़न 3/3 के लिए विभिन्न उदाहरण नीतियां देखें :

  • सेवा पर संचालन - arn:aws:s3:::*
  • बाल्टी पर संचालन - arn:aws:s3:::<bucket>
  • वस्तुओं पर परिचालन - arn:aws:s3:::<bucket>/<object>

समाधान

आप मुठभेड़ कर रहे हैं Access Denied, क्योंकि आपने एक बाल्टी स्तर संसाधन निर्दिष्ट किया है PutObject, जिसके लिए ऑब्जेक्ट स्तर संसाधन विनिर्देश की आवश्यकता होती है, जैसे arn:aws:s3:::<bucket>/*- तदनुसार, निम्न नीति को आपके नमूना उपयोग के मामले को कवर करना चाहिए:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:ListAllMyBuckets"
      ],
      "Resource": [
        "arn:aws:s3:::*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:ListBucket"
      ],
      "Resource": [
        "arn:aws:s3:::bucketname"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:PutObject"
      ],
      "Resource": [
        "arn:aws:s3:::bucketname/*"
      ]
    }
  ]
}

1
कमाल है, कि निर्दोष रूप से काम किया। धन्यवाद! तो sidआवश्यकता नहीं है?
ज़्नर्कस

1
सिड के अनुसार , यह एक वैकल्पिक पहचानकर्ता है जो आप पॉलिसी स्टेटमेंट के लिए प्रदान करते हैं , जो पॉलिसी के भीतर अद्वितीय होना चाहिए । यह देखते हुए कि यह ठीक काम करता है w / o (लेकिन नीचे देखें), मैं इसे संक्षिप्तता के लिए यहाँ निकालता हूँ और नीतियों का संस्करण बनाते समय, लेकिन उदाहरण के लिए नीतियों को स्वचालित रूप से उत्पन्न करते समय परेशान न करें - हालाँकि, बाद के नोट के अनुसार : कुछ AWS सेवाएं (उदाहरण के लिए, अमेज़न SQS या अमेज़न SNS) को इस तत्व की आवश्यकता हो सकती है [...]
स्टीफन ओपल

3
ओपी का कहना है कि वे "उपयोगकर्ता को बाल्टी में फाइल अपलोड करने देना चाहते हैं, लेकिन ओवरराइट या डिलीट नहीं करना चाहिए", लेकिन यह पॉलिसी अनुदान PutObject, जो ऑब्जेक्ट्स को ओवरराइड करने की अनुमति देता है, नहीं? मुझे लगता है कि इसे अलग करने का कोई तरीका नहीं है।
Xiong Chiamiov

2
@XiongChiamiov - S3 OPutObject indeed कार्रवाई वास्तव में अधिलेखित होने का तात्पर्य है, यह बस कैसे S3 डिफ़ॉल्ट रूप से काम करता है। यदि आपको आकस्मिक विलोपन से सुरक्षा की आवश्यकता है, तो आप अपने अमेज़ॅन S3 बाल्टी में संग्रहीत प्रत्येक वस्तु के प्रत्येक संस्करण को संरक्षित, पुनः प्राप्त करने और पुन: स्थापित करने के लिए संस्करण का उपयोग करना चाह सकते हैं - यह आपको अनजाने उपयोगकर्ता कार्यों और एप्लिकेशन विफलताओं दोनों से आसानी से उबरने की अनुमति देता है ।
स्टीफन ओपल

4
हां, संस्करणकरण आपको उन वस्तुओं को पुनर्प्राप्त करने की क्षमता देता है जो ओवरराइट हो गए हैं (लेकिन आपको यह पता लगाना होगा कि वे हो चुके हैं, और फिर ऐसा करते हैं)। वैसे भी, -1 क्योंकि यह सवाल का सटीक जवाब नहीं देता है।
Xiong Chiamiov
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.