amazon s3 - मुझे एक बाल्टी तक पूर्ण पहुंच के साथ एक अमेज़ॅन एस 3 उपयोगकर्ता की आवश्यकता है




amazon-s3 amazon-web-services (5)

मेरे पास निम्न विशेषाधिकारों के साथ उपयोगकर्ता foo है (यह किसी भी समूह का सदस्य नहीं है):

{
  "Statement": [
    {
      "Sid": "Stmt1308813201865",
      "Action": "s3:*",
      "Effect": "Allow",
      "Resource": "arn:aws:s3:::bar"
    }
  ]
}

हालांकि उपयोगकर्ता तब तक अपलोड करने में असमर्थ लगता है जब तक कि मैं प्रमाणीकृत उपयोगकर्ताओं तक पूर्ण पहुंच प्रदान नहीं करता (जो किसी के लिए लागू हो सकता है)। यह अभी भी उपयोगकर्ता को अनुमति बदलने की अनुमति नहीं देता है क्योंकि जब अपलोड करने की कोशिश करता है तो अपलोड करने के बाद boto एक त्रुटि फेंक रहा है key.set_acl('public-read')

आदर्श रूप में इस उपयोगकर्ता को bar बाल्टी तक पूर्ण पहुंच होगी और कुछ और नहीं, मैं गलत क्या कर रहा हूं?


@ क्लाउडबेरमैन का जवाब सही है लेकिन मैं चीजों को जितना संभव हो उतना छोटा बनाना चाहता हूं। यह उत्तर कम किया जा सकता है:

{  
   "Statement":[  
      {  
         "Effect":"Allow",
         "Action":"S3:*",
         "Resource":[  
            "arn:aws:s3:::bar",
            "arn:aws:s3:::bar/*"
         ]
      }
   ]
}

आपको एस 3: सूची बाल्टी को बाल्टी को अनुमति देने की आवश्यकता है। नीचे दी गई नीति का प्रयास करें।

{
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "S3:*",
      "Resource": "arn:aws:s3:::bar/*",
      "Condition": {}
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:ListBucket"
      ],
      "Resource": "arn:aws:s3:::bar",
      "Condition": {}
    }
  ]
}

चयनित उत्तर मेरे लिए काम नहीं करता था, लेकिन इसने किया:

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

क्रेडिट: http://mikeferrier.com/2011/10/27/granting-access-to-a-single-s3-bucket-using-amazon-iam/


यदि आप अपने बालों को खींच रहे हैं क्योंकि आप यह नहीं समझ सकते कि क्यों साइबरडक ऑब्जेक्ट एसीएल सेट करने में सक्षम नहीं है लेकिन यह किसी अन्य क्लाइंट (जैसे पैनिक ट्रांसमिट) के साथ काम करता है, यह समाधान है:

आपको s3:GetBucketAcl को अपनी एक्शन सूची में जोड़ने की आवश्यकता है, उदाहरण के लिए:

{
    "Statement": [
        {
            "Sid": "Stmt1",
            "Action": [
                "s3:GetBucketAcl",
                "s3:ListBucket",
                "s3:DeleteObject",
                "s3:GetObject",
                "s3:GetObjectAcl",
                "s3:PutObject",
                "s3:PutObjectAcl"
            ],
            "Effect": "Allow",
            "Resource": "arn:aws:s3:::your-bucket-name"
        }
    ]
}

बेशक आपको ऐसा करने की ज़रूरत नहीं है यदि आप s3:* साथ कम प्रतिबंधक हैं, लेकिन मुझे लगता है कि यह जानना अच्छा है।


आईएएम नीतियों को लिखने पर एक आधिकारिक एडब्ल्यूएस दस्तावेज है : अमेज़ॅन एस 3 बाल्टी तक पहुंच कैसे प्राप्त करें

बस उपयुक्त नियम कॉपी और पेस्ट करें और सभी स्टेटमेंट्स में अपनी बाल्टी के एआरएन में "संसाधन" कुंजी बदलें।

प्रोग्रामिक पहुंच के लिए पॉलिसी होना चाहिए:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": ["s3:ListBucket"],
            "Resource": ["arn:aws:s3:::bar"]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:PutObjectAcl",
                "s3:GetObject",
                "s3:GetObjectAcl",
                "s3:DeleteObject"
            ],
            "Resource": ["arn:aws:s3:::bar/*"]
        }
    ]
}

और कंसोल एक्सेस एक्सेस के लिए होना चाहिए:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetBucketLocation",
                "s3:ListAllMyBuckets"
            ],
            "Resource": "arn:aws:s3:::bar*"
        },
        {
            "Effect": "Allow",
            "Action": ["s3:ListBucket"],
            "Resource": ["arn:aws:s3:::bar"]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:PutObjectAcl",
                "s3:GetObject",
                "s3:GetObjectAcl",
                "s3:DeleteObject"
            ],
            "Resource": ["arn:aws:s3:::bar/*"]
        }
    ]
}