কেবলমাত্র একটি বালতি দেখতে / অ্যাক্সেসে সীমাবদ্ধ করার জন্য কি এস 3 নীতি রয়েছে?


123

আমার কাছে একটি সাধারণ বালতি রয়েছে যা দেখতে images.mysite.comআমার এস 3 এবং অন্যান্য বালতিগুলির মতো লাগে যা ব্যাকআপগুলি ধারণ করে containing

আমি একটি নির্দিষ্ট ব্যবহারকারীর images.mysite.comছবি আপলোড করার জন্য বালতিটি অ্যাক্সেস করতে সক্ষম হতে চাই । তবে, আমি চাই না যে তিনি অন্য বালতিগুলির কোনও দেখতে পান; এমনকি তাদের উপস্থিতিও নয়।

আমি এমন নীতি তৈরি করতে পারিনি যা এটি করে; প্রতিবার যখন আমি বাধাজনক কিছু চেষ্টা করি তখন এটি কোনও বালতিগুলির তালিকা অবরুদ্ধ করে।


আমি এই প্রশ্নটিকে অফ-টপিক হিসাবে বন্ধ করার পক্ষে ভোট দিচ্ছি কারণ এটি সুপারউইসারদের হওয়া উচিত
টনি ম্যাডসেন 24'16

এখানে একটি নীতি তৈরি করা যেতে পারে: awspolicygen.s3.amazonaws.com/policygen.html
গুপ্ত


1
শুধু বালতির ইউআরএল কেন ভাগ করবেন না - https://s3.console.aws.amazon.com/s3/buckets/my-bucket-name/। এইভাবে আপনি তাদের পুরো তালিকাটি থেকে বিরত রাখুন এবং আপনার বর্তমান নীতিতে কোনও পরিবর্তন করবেন না।
বিশ্বাসঘাতক

উত্তর:


119

আমি এটি কিছুক্ষণ চেষ্টা করছি এবং অবশেষে একটি কার্যনির্বাহী সমাধান নিয়ে এসেছি। আপনি যে ধরণের ক্রিয়া করছেন তার উপর নির্ভর করে আপনাকে অবশ্যই আলাদা "সংস্থানগুলি" ব্যবহার করতে হবে। এছাড়াও আমি পূর্ববর্তী উত্তরে (যেমন DeleteObject) এবং আরও কিছু (যেমন PutBucketAcl) সীমাবদ্ধ করে কিছু হারিয়ে যাওয়া ক্রিয়াকলাপ অন্তর্ভুক্ত করেছি ।

নিম্নলিখিত আইএএম নীতিটি এখন আমার জন্য কাজ করছে:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:ListBucket",
        "s3:GetBucketLocation",
        "s3:ListBucketMultipartUploads"
      ],
      "Resource": "arn:aws:s3:::itnighq",
      "Condition": {}
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:AbortMultipartUpload",
        "s3:DeleteObject",
        "s3:DeleteObjectVersion",
        "s3:GetObject",
        "s3:GetObjectAcl",
        "s3:GetObjectVersion",
        "s3:GetObjectVersionAcl",
        "s3:PutObject",
        "s3:PutObjectAcl",
        "s3:PutObjectVersionAcl"
      ],
      "Resource": "arn:aws:s3:::itnighq/*",
      "Condition": {}
    },
    {
      "Effect": "Allow",
      "Action": "s3:ListAllMyBuckets",
      "Resource": "*",
      "Condition": {}
    }
  ]
}

একটি বালতি সংক্রান্ত এবং ক্রিয়াকলাপ সম্পর্কিত যে ক্রিয়াগুলির অবশ্যই পৃথক কলা থাকতে হবে।


9
এটি একটি দুর্দান্ত উত্তর, ধন্যবাদ। এটি উল্লেখ করার মতো হতে পারে যে s3 এর অন্তর্নিহিত: লিস্টএলমাইবকেটস অনুমতি হ'ল এই নীতি গ্রহণকারী আপনার সমস্ত (মূলের) বালতি দেখতে পাবে। সরাসরি কোনও তথ্য প্রকাশ নেই, তবে বালতির নামগুলির আশেপাশে সংবেদনশীলতা / বিভ্রান্তি থাকতে পারে। এই নির্দিষ্ট অনুমতিটি সরিয়ে ফেলা সম্ভব এবং জিনিসগুলি এখনও কাজ করা উচিত (যদিও "এস 3 সিএমডি এলএস" ইত্যাদি লক্ষ্য বালতিটি ফেরত দেবে না)।
মাইক রিপাস

91
এটি ব্যবহারকারীর অন্যান্য বালতি নাম দেখতে বাধা দেয় না!
metdos

2
@ মেটডোগুলি আপনি শেষ নীতিটি সরিয়ে ব্যবহারকারীদের অন্যান্য বালতি নাম দেখতে বাধা দিতে পারেন।
হেন্দ্র উজিয়া

20
অর্ডার কনসোলে বাকেট তালিকা দেখতে (এবং বালতি অ্যাক্সেসের জন্য কনসোল ব্যবহার) আপনি আবশ্যক দান ListAllMyBucketsএবং GetBucketLocationজন্য সব এস 3 বাকেট ( "arn:aws:s3:::*"বদলে কাজ করবে "*"রিসোর্স জন্য)। এই এডাব্লুএস ব্লগ পোস্টে যেমন বলা হয়েছে "একপাশে হিসাবে, আপনি বর্তমানে নির্দিষ্টভাবে বালতিগুলি নির্বাচন করে ফিল্টার করতে পারবেন না, সুতরাং কনসোল অ্যাক্সেসের জন্য সমস্ত বালতি তালিকাভুক্ত করার জন্য ব্যবহারকারীদের অবশ্যই অনুমতি থাকতে হবে।"
jwadsack

10
এটি ভয়ঙ্কর পরামর্শ is এটি বিপজ্জনক এবং বিশেষত ওপি যা চায়নি। সম্ভাব্য কর্মক্ষেত্রের জন্য আন্দ্রেয়াস স্ট্যানকুইটস এবং বিএফআর এর উত্তরগুলি দেখুন ।
AndreKR

37

আমাদের ব্যবহারের কেস: আমাদের ক্লাউড অ্যাপ্লিকেশনটির ক্লায়েন্টদের জন্য ব্যাকআপ স্পেস সরবরাহ করুন যা ক্লায়েন্টরা সাধারণ S3 সরঞ্জামগুলি ব্যবহার করে সরাসরি অ্যাক্সেস করতে পারে। অবশ্যই, অন্য ক্লায়েন্টের কী আছে তা কোনও ক্লায়েন্টের উচিত নয়।

যেমন ক্লাউডবেরম্যান ব্যাখ্যা করেছেন, "আপনি হয় সমস্ত বালতি তালিকাবদ্ধ করতে পারেন বা কোনওটিই নয়।", সুতরাং আমাদের চারপাশে একটি কাজ করতে হবে। পটভূমি:

ব্যবহারকারীর জন্য তালিকাভুক্ত সমস্তবাইকেটস অধিকার প্রদানের প্রয়োজন যাতে AWS S3 কনসোল বা এস 3 ফক্স কোনও ত্রুটি বার্তা ছাড়াই সংযুক্ত হয়। তবে তালিকাআলমাইবকেটস নির্ধারিত সংস্থাগুলির বিষয়ে সমস্ত বালতি তালিকাবদ্ধ করে (আসলে, কেবলমাত্র আরন: ... ::: * কাজ করে)। যদি আপনি আমাকে জিজ্ঞাসা করেন তবে এটি একটি গুরুতর বাগ। BTW। সমস্ত বালতিগুলির জন্য তালিকাবুকিটকে অস্বীকার করা তাদের তালিকাবদ্ধ হওয়া থেকে বিরত রাখে না, কারণ লিস্টবকেট বালতিটির বিষয়বস্তু তালিকাভুক্ত করার জন্য মঞ্জুরি দেয়।

চারদিকে কাজ হিসাবে আমি বিবেচনা করেছি 3 টি সম্ভাব্যতা। আমি শেষটি বেছে নিয়েছি।

(1) ক্রিপ্টিক বালতির নামগুলি ব্যবহার করুন, যেমন জিইউইডি

সুবিধা: সেট আপ করা সহজ

অসুবিধা: পরিচালনা বিশেষত ক্লায়েন্টের পক্ষে করা কঠিন। (অন্য হাজার হাজার মানুষকে একটি সুনির্দিষ্ট জিইউইডি সন্ধানের জন্য কল্পনা করুন)) ব্যাকআপ পরিষেবাটি ব্যবহার করে ক্লাবীর সংখ্যা = ক্লায়েন্টের সংখ্যাও দেখায়।

(২) ক্লায়েন্ট নির্দিষ্ট ফোল্ডারগুলির সাথে একটি বালতি ব্যবহার করুন

এইভাবে অ্যামাজন কেবলমাত্র নির্দিষ্ট ব্যবহারকারী বা ব্যবহারকারী গোষ্ঠী দ্বারা অ্যাক্সেসের জন্য স্থান সরবরাহ করার জন্য তাদের এস 3 / আইএএম উদাহরণগুলির মাধ্যমে পরামর্শ দেয়। দেখুন: AWS উদাহরণ আইএএম নীতিগুলি

সুবিধা: সেটআপ করা মোটামুটি সহজ, অ্যাডাব্লুএস আইডিয়াগুলির সাথে যায়

অসুবিধা: সমস্ত বালতিগুলির উপস্থিতি জনসাধারণকে করার জন্য বাধ্য করে, যাতে ক্লায়েন্ট তাদের "বাড়ি" বালতিটি খুঁজে পেতে পারে। এডাব্লুএস অ্যাকাউন্টিং বালতি ব্যবহারের পরিসংখ্যান সরবরাহ করে তবে ফোল্ডার ব্যবহারের নয়, যা ক্লায়েন্টের দ্বারা ব্যয় নির্ধারণ করা কঠিন করে তোলে।

(3) লিস্টএলমাবকেটগুলির জন্য অ্যাক্সেসের অধিকার দিন না

সুবিধা: আপনি যা চান তা পান: ক্লায়েন্টরা অন্য ক্লায়েন্টের বালতি দেখতে পারে না

অসুবিধা: ক্লায়েন্ট তার নিজের বালতিটি দেখতে পাবে না। এস 3 ব্রাউজার একটি দুর্দান্ত "করতে পারে না" বার্তা নিয়ে আসে এবং বালতির নাম প্রবেশ করানোর জন্য বলে। রুটের সাথে সংযোগ করার সময় এস 3 ফক্স একটি ত্রুটি বার্তা ছুঁড়েছে, তবে যদি বালতিটির নাম জানা থাকে তবে ক্লায়েন্টের বালতিতে সরাসরি নেভিগেশনের অনুমতি দেয়। অ্যামাজন এস 3 কনসোলটি মোটেই কাজ করে না।

আশা করি এটি আপনার প্রয়োজন হিসাবে এস 3 আইএএম পরিচালনা করতে সহায়তা করেছে।


1
এছাড়াও, সলিউশন (1) এর জন্য যদি আপনি বালতি দিয়ে ওয়েব হোস্টিং ব্যবহার করতে চান তবে বালতির নাম অবশ্যই ডোমেন নামের সাথে মেলে।
অ্যান্ডি ফুজনিয়াক

31

অনুমতি না দিয়ে এস 3 কনসোলে অ্যাক্সেস সরবরাহ করা সম্ভব নয় ListAllMyBuckets

আমার ক্ষেত্রে (এবং সম্ভবত আপনারও, ভবিষ্যতের পাঠক) একটি গ্রহণযোগ্য বিকল্প হ'ল আপনি যে বালতিটি দেখতে চান তা সরাসরি বালতিতে সাইন ইন করা ব্যবহারকারীদের পুনর্নির্দেশ করা।

এটি সম্পাদন করতে, আপনার আইএএম সাইন ইন url এ নিম্নলিখিতগুলি যুক্ত করুন: /s3/?bucket=bucket-name

সম্পূর্ণ সাইন-ইন ইউআরএল ( আপনার উপনাম এবং বালতি-নাম প্রতিস্থাপন করুন ):

https://your-alias.signin.aws.amazon.com/console/s3/?bucket=bucket-name

আইএএম নীতি ( বালতি-নাম প্রতিস্থাপন ):

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

ব্যবহারকারীদের জন্য বালতি নির্দিষ্ট অনুমতিগুলি তৈরি করার পদ্ধতি সম্পর্কে আরো তথ্যের জন্য, এই ব্লগ পড়ুন: http://mikeferrier.com/2011/10/27/granting-access-to-a-single-s3-bucket-using-amazon-iam /


1
এটি ভাল কাজ করে। ব্যবহারকারীরা বালতি দৃশ্যের বাইরে অন্বেষণ করতে না পারলে সর্বোত্তম হতে পারে .... তবে আমি এটি গ্রহণ করব। ধন্যবাদ @ বিএফআর।
জেমি পপকিন

এটি হ'ল একটি সঠিক উত্তর, অন্য সমস্তগুলি প্রতিটি বালতি তালিকাবদ্ধ করবে - যা মূল অনুরোধ অনুযায়ী লুকানো উচিত।
স্টিভ হরভথ

ঠিক আমার যা প্রয়োজন ধন্যবাদ।
ডি ঝাং

20

এই নীতি চেষ্টা করুন। এটিও বিবেচনায় রাখুন যে কেবলমাত্র ব্যবহারকারীকে তালিকায় বাছাই করার কোনও উপায় নেই। আপনি হয় সমস্ত বালতি তালিকাবদ্ধ করতে পারেন বা কিছুই না।

{
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:PutObject",
                "s3:GetObjectAcl",
                "s3:PutObjectAcl",
                "s3:ListBucket",
                "s3:GetBucketAcl",
                "s3:PutBucketAcl",
                "s3:GetBucketLocation"
            ],
            "Resource": "arn:aws:s3:::your_bucket_here/*",
            "Condition": {}
        },
        {
            "Effect": "Allow",
            "Action": "s3:ListAllMyBuckets",
            "Resource": "*",
            "Condition": {}
        }
    ]
}

2
এটি দুর্দান্ত কাজ করে! s3:*এটি আমার পক্ষে কাজ করার জন্য আমাকে পরিবর্তন কর্ম করতে হয়েছিল । আমারও ছিল "Resource": ["arn:aws:s3:::your_bucket_here", "arn:aws:s3:::your_bucket_here/*"], তবে এটির দরকার নেই।
মাইকেল ইয়াগুদেব

3
s3: * একটি বালতি মুছে ফেলা সহ যেকোন কিছু করার অ্যাক্সেস মঞ্জুরি দেয়। নিশ্চয়ই তুমি এটা চাও?
ডেভ গ্রেগরি

10

আমি এই প্রশ্নের ব্যাখ্যা দিচ্ছি: "আমি কি এমন বালতিতে অ্যাক্সেসের অনুমতি দিতে পারি যেখানে অন্য কোনও বালতি অ্যাক্সেসযোগ্য এবং অদৃশ্য হবে না?" কারণ, যে বালতিটির কোনও অ্যাক্সেস দেওয়া হয়নি তার নাম দেখানো এখনও তথ্য ফাঁসের সমতুল্য।

এবং সঠিক উত্তরটি হ'ল না। প্রয়োজনীয় অনুমতি হ'ল তালিকাআলমাইবকেট যা ব্যবহারকারীকে সমস্ত বালতি দেখতে দেয়। এই অনুমতিটি রেখে দিলে কনসোলটি ব্যবহারযোগ্য হবে না।


6

অন্যান্য বালতিগুলির জ্ঞান না রেখে ব্যবহারকারীদের একটি নির্দিষ্ট বালতি অ্যাক্সেস করার সুযোগ দেওয়ার একটি দুর্দান্ত উপায় রয়েছে। নীচের মত একটি গোষ্ঠী নীতি ব্যবহারকারীদের কেবলমাত্র "বালতি এ" দেখার অনুমতি দেবে। একমাত্র ক্যাচটি হল যে প্রদত্ত বালতিটি শেষ পয়েন্টের সাথে সংযোগ স্থাপন করলে ব্যবহারকারী কেবল বালতি অ্যাক্সেস করতে সক্ষম হবে। নীচের উদাহরণের জন্য এটি বালতি-a.s3.amazonaws.com হবে। বালতিতে এটি হওয়ার জন্য "প্রমাণীকরণকারী ব্যবহারকারীদের" থাকতেও পারে।

{
    "Statement": [
     {
         "Sid": "<EXAMPLE_SID>",
         "Action": [
           "s3:ListBucket",
           "s3:GetBucketLocation"
          ],
         "Effect": "Allow",
         "Resource": [
           "arn:aws:s3:::bucket-a"
         ]
     },
     {
      "Sid": "<EXAMPLE_SID>",
      "Action": "s3:*",
      "Effect": "Allow",
      "Resource": [
        "arn:aws:s3:::bucket-a/*"
      ]
     }
   ]
}

এই পদ্ধতিটি ম্যাক ওএস / এক্সে সাইবারডাককের সাথে এবং এস 3 সিএমডি প্যাকেজটি ব্যবহার করে পরীক্ষা করা হয়েছিল

./s3cmd ls s3://bucket-a --access_key=ACCESS_KEY --secret_key=SECRET_KEY --bucket-locat
ion=ap-southeast-2

আমি এখনও সব বালতির তালিকা দেখতে পাচ্ছি। কাজ করছে না :(
ষিকেশ চন্দ্র

5

কেন কোনও উত্তর চেক করা হয়নি তা নিয়ে বিভ্রান্ত?

আসুন উপরোক্ত সমাধানগুলি থেকে প্রতিটি নীতি বিবরণী ভেঙে ফেলা যাক:

এই নীতিটি বিবৃতি থেকে বালতি বিষয়বস্তু প্রযোজ্য, কিন্তু না হরিণ নিজেই। এটি সম্ভবত প্রশ্নটি যা চেয়েছিল তা নয় , কারণ আপনি বালতিতে কী দেখতে পাচ্ছেন না।

{
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:PutObject",
"s3:GetObjectAcl",
"s3:PutObjectAcl",
"s3:ListBucket",
"s3:GetBucketAcl",
"s3:PutBucketAcl",
"s3:GetBucketLocation"
],
"Resource": "arn:aws:s3:::your_bucket_here/*",
"Condition": {}
}

প্রাপ্ত এই দুটি বিবৃতি নীতি বালতিতে ( arn:aws:s3:::your_bucket_here/) কেবলমাত্র পঠনযোগ্যভাবে অ্যাক্সেস দেয় , তবে তবুও বালতিটির বিষয়বস্তু ( arn:aws:s3:::your_bucket_here/*) এ CRUD অপ্স দেয় s

{
  "Effect": "Allow",
  "Action": [
    "s3:ListBucket",
    "s3:GetBucketLocation",
    "s3:ListBucketMultipartUploads"
  ],
  "Resource": "arn:aws:s3:::your_bucket_here",
  "Condition": {}
},
{
  "Effect": "Allow",
  "Action": [
    "s3:AbortMultipartUpload",
    "s3:DeleteObject",
    "s3:DeleteObjectVersion",
    "s3:GetObject",
    "s3:GetObjectAcl",
    "s3:GetObjectVersion",
    "s3:GetObjectVersionAcl",
    "s3:PutObject",
    "s3:PutObjectAcl",
    "s3:PutObjectAclVersion"
  ],
  "Resource": "arn:aws:s3:::your_bucket_here/*",
  "Condition": {}
}

যাইহোক, নীতিটিতে নীচের বিবৃতিটি অন্তর্ভুক্ত রয়েছে, যা ব্যবহারকারীকে শেষ পয়েন্টে সমস্ত বালতি দেখতে দেয়। এই সম্ভবত না কি প্রশ্নের জন্য জিজ্ঞাসা।

{
"Effect": "Allow",
"Action": "s3:ListAllMyBuckets",
"Resource": "*",
"Condition": {}
}

তবে উপরেরটি খুব কার্যকর যদি আপনি কোনও ক্লায়েন্ট ব্যবহার করেন যা কোনও এস 3 স্টোর ব্রাউজার করে। যদি আপনার ক্লায়েন্ট স্টোরটি অ্যাক্সেস করে এবং বালতিটি সরাসরি না থেকে থাকে, তবে আপনাকে মূলে বালতিগুলির তালিকার অ্যাক্সেসের প্রয়োজন।


3

সম্ভবত সবচেয়ে সহজ ব্যবহারের কেস:

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

1
This policy contains the following error: The policy must contain a valid version string
এডাব্লুএস

ঠিক যে - আমি আমার প্রতিক্রিয়া সংশোধন -> <br/> শুধুমাত্র দুটি সম্ভাব্য এখানে মান আছে: <br/> * 2012-10-17 * এবং 2008-10-17 । <br/> এখানে আরও রেফারেন্স পাওয়া যাবে: <br/> ডকস.আও.এসএজাজন
আইএএম /

সম্পর্কে কোন ধারণা (listing included)অর্থ কিভাবে তালিকায় কেবল বালতি ব্যবহারকারী পেতে রাখার অনুমতি পায়? এখনও অবধি (এবং অন্যান্য সমস্ত উত্তর অনুসারে) দেখে মনে হচ্ছে এডাব্লুএস আপনাকে এটি করতে দিবে না।
ম্যাক্সিমবার্নার্ড 14

3

এডব্লিউএস সংস্থাগুলি ব্যবহার করে এটি করার সহজ উপায় বা কার্যকরী উপায় নেই। AWS সংস্থা আপনাকে একাধিক ব্যবহারকারীর অ্যাকাউন্ট থাকতে দেয়। আপনার মূল অ্যাকাউন্টে একাধিক এডাব্লুএস অ্যাকাউন্ট (সাব) থাকতে পারে এবং যে কোনও পরিষেবা (এস 3 / ইসি 2 / *) কেবলমাত্র এডাব্লুএস অ্যাকাউন্টগুলিতে যুক্ত করা হয় কেবল সেই সংস্থানগুলি দৃশ্যমান হবে।

দয়া করে https://aws.amazon.com/blogs/aws/aws-organizations-policy-based-management-for-m Multiple- aws- accounts/ https://aws.amazon.com/organizations/ দেখুন

আমার অ্যাকাউন্ট পৃষ্ঠাতে সংস্থা


3

আমি এই সমাধানটি পেয়েছি:
AWS ফ্লো:
AWS FLOW

বালতি নীতি:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Deny",
      "Principal": "*",
      "Action": "s3:*",
      "Resource": [
        "arn:aws:s3:::MyExampleBucket",
        "arn:aws:s3:::MyExampleBucket/*"
      ],
      "Condition": {
        "StringNotLike": {
          "aws:userId": [
            "AROAEXAMPLEID:*", #Role ID
            "111111111111" #AccountID
          ]
        }
      }
    }
  ]
}

আইএএম নীতি:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Deny",
      "Principal": "*",
      "Action": "s3:*",
      "Resource": [
        "arn:aws:s3:::MyExampleBucket",
        "arn:aws:s3:::MyExampleBucket/*"
      ],
      "Condition": {
        "StringNotLike": {
          "aws:userId": [
            "AROAEXAMPLEID:*",  #Role ID
            "AIDAEXAMPLEID",  #UserID
            "111111111111"  #AccountID
          ]
        }
      }
    }
  ]
}

aws iam-get-user -serser-name USER-NAME - প্রোফাইলে = উদাহরণপ্রোফাইল

aws iam get-रोल - রোল-নাম রোল-নাম - প্রোফাইলে = উদাহরণপ্রোফাইল

সূত্র: https://aws.amazon.com/blogs/security/how-to-restrict-amazon-s3-bucket-access-to-a-specific-iam- کتاب/

PS বালতি নীতি সম্পর্কে সতর্ক থাকুন, আপনি অনুমতি ছাড়াই বাইরে থাকতে পারেন


2

যেহেতু এটি উপরে ভালভাবে আলোচনা করা হয়েছে, কনসোলে কেবল একটি বালতি তালিকাবদ্ধ করা সম্ভব নয়। তবে যদি এস 3 বালতির অ্যাক্সেস কোনও আইএএমের সাথে সংযুক্ত থাকে, তবে বালতিতে ইউআরএল পাওয়া গেলে আইএএম সরাসরি বালতি অ্যাক্সেস করতে পারে। এস 3 বালতি url এর মত হবে:

https://s3.console.aws.amazon.com/s3/buckets/BucketName

যেখানে বালতি নাম বালতির নাম আইএএম এর অ্যাক্সেস রয়েছে


1
আমি মনে করি এটি 2018 এরও একমাত্র সম্ভাব্য সমাধান।
সৌরভ

1

আমি নিম্নলিখিত কাজ পেতে পরিচালিত। এর অর্থ এই যে অন্যান্য বালতিগুলির তালিকা অ্যাক্সেস অস্বীকৃত বার্তাটি পেয়েছে। তবে আমি বালতিটি যে পথটি চেয়েছিলাম সেই বালতি নামের সাথে যদি সেটটিকে পথ হিসাবে সংযুক্ত করি তবে তা দেখতে সক্ষম হয়েছি।

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

আমি এই সংযোগটি পরীক্ষা করতে সাইবারডুক ব্যবহার করছিলাম।


1

s3:ListAllMyBucketsনির্দিষ্ট বালতিতে অ্যাকশন সীমাবদ্ধ করা সম্ভব না হলেও , যেমন কাজ করার ক্ষেত্রে আপনি নির্দিষ্ট বালতির জন্য তাদের কনসোল ইউআরএল প্রেরণ করতে পারেন, যেমন

  • https://s3.console.aws.amazon.com/s3/buckets/BUCKET_NAME/

উত্স: এস 3 কনসোল থেকে এস 3 বালতিগুলির তালিকা সীমাবদ্ধ করা

এটি করার জন্য, আপনাকে প্রদত্ত ব্যবহারকারী বা গোষ্ঠীটির জন্য নিম্নলিখিত নীতি নথিটি নির্দিষ্ট করতে হবে:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket",
                "s3:GetBucketLocation",
                "s3:ListBucketMultipartUploads"
            ],
            "Resource": [
                "arn:aws:s3:::my-bucket-1",
                "arn:aws:s3:::my-bucket-2"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:AbortMultipartUpload",
                "s3:DeleteObject",
                "s3:DeleteObjectVersion",
                "s3:GetObject",
                "s3:GetObjectAcl",
                "s3:GetObjectVersion",
                "s3:GetObjectVersionAcl",
                "s3:PutObject",
                "s3:PutObjectAcl",
                "s3:PutObjectVersionAcl"
            ],
            "Resource": [
                "arn:aws:s3:::my-bucket-1/*",
                "arn:aws:s3:::my-bucket-2/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListAllMyBuckets"
            ],
            "Resource": "arn:aws:s3:::*"
        }
    ]
}

পড়ার এবং লেখার অ্যাক্সেস দেওয়ার জন্য কোথায় my-bucket-1এবং my-bucket-2আপনার বালতি রয়েছে।

সম্পর্কিত:


1

এই নীতি চেষ্টা করুন। ব্যবহারকারী কোনও বালতি তালিকাবদ্ধ করতে পারবেন না, তাদের অনুমোদিত বালতিতে সরাসরি লিঙ্ক ব্যবহার করতে হবে।

উদাহরণস্বরূপ: s3.console.aws.amazon.com/s3/buckets/bucketname/?region=us-east-1&tab=overview

{
  "Statement": [
    {
      "Action": [
        "s3:ListBucket"
      ],
      "Effect": "Allow",
      "Resource": [
        "arn:aws:s3:::bucketname"
      ]
    },
    {
      "Action": [
        "s3:PutObject",
        "s3:GetObject"
      ],
      "Effect": "Allow",
      "Resource": [
        "arn:aws:s3:::bucketname*"
      ]
    },

  ],
  "Version": "2012-10-17"
}

1

উপরে বর্ণিত অন্যের মতো:

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

এখানে অবশ্য নিখোঁজ টুকরো। যদিও এস 3-> হোম এর মাধ্যমে বালতিটি অ্যাক্সেস করা সম্ভব নয় তবে সরাসরি লিঙ্কের মাধ্যমে কেবল পছন্দসই বালতিটি অ্যাক্সেস করা সম্ভব।

https://s3.console.aws.amazon.com/s3/buckets/yourawsbucket/

আপনি নিম্নলিখিত পোস্টে আরও তথ্য পেতে পারেন:

https://aws.amazon.com/premiumsupport/knowledge-center/s3-console-access-certain-bucket/


0

সমাধান বেলো আমার পক্ষে কাজ করেছিল। আমি একটি নির্দিষ্ট ব্যবহারকারীকে অনুদান অ্যাক্সেস করতে একটি নীতি চেয়েছিলেন my_iam_user একটি নির্দিষ্ট বালতি উপর আমার-S3-বালতি

এই নীতিটি আমার ব্যবহারকারীকে একটি নির্দিষ্ট এস 3 বালতিতে ফাইলগুলি তালিকাবদ্ধ করতে, মুছতে এবং পেতে allow

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "ListBucket",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::123456789012:user/my_iam_user"
            },
            "Action": [
                "s3:ListBucket"
            ],
            "Resource": "arn:aws:s3:::my-s3-bucket"
        },
        {
            "Sid": "AddDeleteFiles",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::123456789012:user/my_iam_user"
            },
            "Action": [
                "s3:DeleteObject",
                "s3:GetObject",
                "s3:PutObject"
            ],
            "Resource": "arn:aws:s3:::my-s3-bucket/*"
        }
    ]
}

0

আমি কেবল এটির দ্বারা সমাধান করা একটি অনুরূপ প্রয়োজন যুক্ত করছি:

{
  "Version": "2012-10-17",
  "Statement": [
    {
        "Effect": "Allow",
        "Action": [
            "s3:Get*",
            "s3:Put*",
            "s3:DeleteObject",
            "s3:ListBucket"
        ],
        "Resource": [
            "arn:aws:s3:::my-bucket-name",
            "arn:aws:s3:::my-bucket-name/*"
        ]
    }
  ]
}

0

অন্যান্য ব্যবহারকারীর কাছ থেকে বালতির সামগ্রী লুকানোর জন্য আমি নীচের জিনিসগুলি ব্যবহার করি। এটি কেবলমাত্র অন্য বালতিগুলি লুকানোর জন্য সহায়তা করে না (তালিকার তালিকাভুক্ত বাক্যগুলি ব্যবহার করবেন না), তবে একই বালতিতে ফোল্ডারগুলিও যখন আপনি একটি বালতি তৈরি করেন, তবে আইএএম ব্যবহারকারী / সাবফোল্ডারকে যথাযথ অনুমতি বরাদ্দ করে এতে সাবফোল্ডার রাখতে চান want

নিম্নলিখিত নীতিটি আইএএম গ্রুপে প্রয়োগ করা হয়েছে এবং সমস্ত ব্যবহারকারী এই গ্রুপে আছেন। আপনাকে aws:useridবালতিতে একই নামের সাথে একটি সাবফোল্ডার নেওয়া এবং তৈরি করতে হবে।

ইউজারআইডি নেওয়া যেতে পারে: aws iam get-user --user-name "user_name_for_folder_access":

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:*"
            ],
            "Resource": [
                "arn:aws:s3:::bucket_name/${aws:userid}/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::bucket_name"
            ]
        }
    ]
}

0

একটি দুর্দান্ত সহজ সমাধান যা আমরা নিয়ে এসেছি তা হ'ল রুট ডিরেক্টরিতে লগইন করতে ব্যবহারকারীকে অবরুদ্ধ করা। সুতরাং তাদের অবশ্যই পছন্দসই ফোল্ডারে সেট করে দূরবর্তী পাথ দিয়ে লগইন করতে হবে।

 {
"Statement": [
    {
        "Effect": "Allow",
        "Action": "s3:*",
        "Resource": "arn:aws:s3:::folder-name*",
        "Condition": {}
    }
]
}

0

না, বর্তমানে ব্যবহারকারীদের মূলের নীচে বা অন্য কোথাও নির্বাচনী বালতি দেখতে সীমাবদ্ধ করা সম্ভব নয়। এই মুহূর্তে আপনার কাছে কেবল সেই 3 টি বিকল্প রয়েছে।

আমি ক্লায়েন্টকে বালতিটির নামটি স্পষ্টভাবে ব্যবহার করতে বলি।



-1

এটি আমার জন্য নিখুঁত কাজ করেছে। ব্যবহারকারী আপলোড করতে পারে, ডাউনলোড করতে পারে এবং ফাইলগুলির তালিকা পেতে পারে তবে অন্যান্য বালতি থেকে ফাইল দেখতে সক্ষম হবে না।

 {    

"Statement": [    

{
    "Effect": "Allow",
    "Action": [
        "s3:GetObject",
        "s3:PutObject",
        "s3:GetObjectAcl",
        "s3:PutObjectAcl",
        "s3:ListBucket",
        "s3:GetBucketAcl",
        "s3:PutBucketAcl",
        "s3:GetBucketLocation"
    ],
    "Resource": "arn:aws:s3:::mybucketname/*",
    "Condition": {}
},
{
    "Effect": "Allow",
    "Action": "s3:ListAllMyBuckets",
    "Resource": "*",
    "Condition": {}
},
{
    "Effect": "Deny",
    "Action": [
        "s3:DeleteBucket",
        "s3:DeleteBucketPolicy",
        "s3:DeleteBucketWebsite",
        "s3:DeleteObject",
        "s3:DeleteObjectVersion"
    ],
    "Resource": "arn:aws:s3:::mybucketname/*",    

    "Condition": {}    

}
]
}      

-2

আপনি Denyযে বালতিটি অ্যাক্সেস করতে চান না তার জন্য একটি ধারা যুক্ত করুন । মনে রাখবেন যে তারা এখনও তালিকাভুক্ত হতে পারে তবে আপনি তাদের ভিতরে থাকা সামগ্রীগুলিতে অ্যাক্সেস করতে পারবেন না।

{
    "সংস্করণ": "2012-10-17",
    "বিবৃতি": [
        {
            "প্রভাব": "অনুমতি দিন",
            "অ্যাকশন": "এস 3: *",
            "রিসোর্স": "*"
        },
        {
            "প্রভাব": "অস্বীকার করুন",
            "অ্যাকশন": "এস 3: *",
            "রিসোর্স": [
                "Arn: আওস: S3 ::: বালতি-নাম",
                "Arn: আওস: S3 ::: বালতি-নাম / *"
            ]
        }
    ]
}

1
আপনার স্পষ্টভাবে সংস্থানগুলিতে অ্যাক্সেস মঞ্জুর করা উচিত। আপনি যখন ডিফল্টরূপে সমস্ত সংস্থানগুলিতে অ্যাক্সেস মঞ্জুর করেন, আপনি দুর্ঘটনাক্রমে আপনার ব্যক্তিগত রাখতে চান এমন সংস্থানগুলি বাদ দিতে পারেন। এছাড়াও সমস্ত এস 3 ক্রিয়ায় অ্যাক্সেস মঞ্জুরি দেওয়ার অর্থ ব্যবহারকারী সংস্থানগুলি সর্বজনীন বা সেটআপ স্থির হোস্টিং করতে পারে বা অন্যান্য ক্ষতিকারক কাজ করতে পারে।
ওন্দ্রেজ গালবাভা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.