কীভাবে ব্যবহারকারীকে S3 বালতিতে ফাইল আপলোড করা যায়, তবে ওভাররাইট বা মুছতে হয় না?


19

একজন ব্যবহারকারীর জন্য আমার নীচের আইএএম নীতি আছে

{
  "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 ক্লায়েন্ট হিসাবে চেষ্টা করেছি।

কোন ধারণা কি সমস্যা?

উত্তর:


25

যখন হস্তশিল্প আমাজন IAM জন্য নীতিগুলি আমাজন এস 3 , আপনি মধ্যে পার্থক্য সম্পর্কে সচেতন থাকতে হবে পরিষেবায় অপারেশনস (যেমন ListAllMyBuckets ), Buckets উপর অপারেশনস (যেমন ListBucket ) এবং বস্তুর উপর অপারেশনস (যেমন GetObject )।

বিশেষত, Resourceআপনার নীতিটির স্পেসিফিকেশনটির জন্য নিম্নলিখিত নিদর্শনগুলি অনুসারে উপযুক্ত টার্গেট সত্তাকে সম্বোধন করা প্রয়োজন (উদাহরণস্বরূপ অ্যামাজন এস 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
মতে সিদ , এটা করা হয় একটি ঐচ্ছিক শনাক্তকারী আপনি নীতি বিবৃতি জন্য প্রদান করা হয় , যা একটি নীতি মধ্যে অনন্য হওয়া আবশ্যক । দেখে মনে হচ্ছে এটি ডাব্লু / ও (ঠিক নীচে দেখুন) কাজ করে, আমি ব্রেভিটি এবং নীতিগুলি রূপান্তর করার সময় এটি অপসারণ করি, তবে নীতিগুলি স্বয়ংক্রিয়ভাবে উত্পন্ন করার সময় বিরক্ত করবেন না - তবে পরবর্তী দ্রষ্টব্য : কিছু এডব্লিউএস পরিষেবা (উদাহরণস্বরূপ, অ্যামাজন এসকিউএস বা অ্যামাজন এসএনএস) এর জন্য এই উপাদানটির প্রয়োজন হতে পারে [...]
স্টিফেন ওপেল

3
ওপি বলেছে যে তারা "ব্যবহারকারীকে বালতিতে ফাইলগুলি আপলোড করতে দেয়, তবে ওভাররাইট বা মুছতে পারে না", তবে এই নীতিটি মঞ্জুরি PutObjectদেয়, যা ওভাররাইডিং অবজেক্টগুলিকে অনুমতি দেয়, না? আমি মনে করি এটি আলাদা করার কোনও উপায় নেই।
জিয়াং চিআমিভ

2
@ XiongChiamiov - এস 3 -পুটবজেক্ট´ ক্রিয়াটি ওভাররাইটিংকে প্রকৃতপক্ষে বোঝায়, এটি কীভাবে S3 ডিফল্টরূপে কাজ করে। যদি আপনার দুর্ঘটনাজনিত মোছার বিরুদ্ধে সুরক্ষা প্রয়োজন হয় তবে আপনি আপনার অ্যামাজন এস 3 বালতিতে সঞ্চিত প্রতিটি বস্তুর প্রতিটি সংস্করণ সংরক্ষণ, পুনরুদ্ধার এবং পুনরুদ্ধার করতে সংস্করণ ব্যবহার করে সন্ধান করতে পারেন - এটি আপনাকে অনিচ্ছাকৃত ব্যবহারকারীর ক্রিয়া এবং অ্যাপ্লিকেশন ব্যর্থতা উভয় থেকেই সহজেই পুনরুদ্ধার করতে দেয় ।
স্টিফেন ওপেল

4
হ্যাঁ, সংস্করণ আপনাকে ওভাররাইট করা বস্তুগুলি পুনরুদ্ধার করার ক্ষমতা দেয় (তবে আপনাকে আবিষ্কার করতে হবে যে সেগুলি হয়েছে, এবং তারপরে এটি করতে হবে)। যাইহোক, -1 কারণ এটি প্রশ্নের সঠিক উত্তর সরবরাহ করে না।
জিয়াং চিয়ামিওভ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.