Чи існує політика S3 щодо обмеження доступу лише до одного відра?


123

У мене просте відро, схоже images.mysite.comна мої S3 та інші відра, що містять резервні копії тощо.

Я хочу дозволити конкретному користувачеві мати доступ до images.mysite.comвідра для завантаження зображень. Однак я НЕ хочу, щоб він бачив жодне з інших відра; навіть не те, що вони існують.

Я не міг скласти політику, яка це робить; кожного разу, коли я намагаюся щось обмежуюче, це в результаті блокує список будь-яких відер.


Я голосую за те, щоб закрити це питання поза темою, оскільки воно повинно бути на Superusers
Tonny Madsen

Політику можна створити тут за адресою: awspolicygen.s3.amazonaws.com/policygen.html
Gupta


1
Чому б просто не поділитися URL-адресою відра - https://s3.console.aws.amazon.com/s3/buckets/my-bucket-name/. Таким чином ви не дозволяєте їм бачити весь список і нічого не змінюєте у своїй поточній політиці.
treecoder

Відповіді:


119

Я деякий час це намагався і, нарешті, придумав робоче рішення. Ви повинні використовувати різні "Ресурси" залежно від типу дії, яку ви виконуєте. Також я включив деякі недоліки в попередній відповіді (як DeleteObject) і обмеження деяких (подібних PutBucketAcl).

Зараз для мене працює наступна політика IAM:

{
  "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: ListAllMyBuckets є те, що одержувач цієї політики може бачити всі ваші (кореневі) відра. Немає даних про розголошення безпосередньо, але навколо імен відра може виникнути чутливість / плутанина. Цей конкретний дозвіл можливо видалити, і все ще має працювати (хоча "s3cmd ls" тощо не поверне цільове відро).
Майк Репас

91
Це не заважає користувачеві бачити інші імена відра!
metdos

2
@metdos ви можете перешкодити користувачам бачити інші імена відра, видаливши останню політику.
Хендра Узія

20
Для того, щоб побачити список відра на консолі (і, отже, використовувати консоль для доступу до кошика), ви повинні надати ListAllMyBucketsі GetBucketLocationдля всіх відрізків S3 ( "arn:aws:s3:::*"буде працювати, а не "*"для ресурсу). Як зазначено в цьому дописі блогу AWS, "як осторонь, ви не можете селективно відфільтрувати певні відра, тому користувачі повинні мати дозвіл перелічити всі відра для доступу до консолі".
jwadsack

10
Це жахлива порада. Це небезпечно і конкретно те, чого не хотіла ОП. Дивіться відповіді Андреаса Станкевіца та BFar щодо можливих способів вирішення.
AndreKR

37

Наш випадок використання: надайте резервне місце для клієнтів нашого хмарного додатку, до якого клієнти можуть отримати доступ безпосередньо, використовуючи загальні інструменти S3. Звичайно, жоден клієнт не повинен бачити, що мають інші клієнти.

Як пояснив хмарочос, "ви можете перерахувати всі відра або жодне". Тому нам доведеться придумати роботу. Фон:

Надання прав ListAllMyBuckets користувачеві потрібно, щоб консоль AWS S3 або S3Fox підключилися без повідомлення про помилку. Але ListAllMyBuckets перелічує всі відра, відношення призначених ресурсів (насправді працює лише арн: ... ::: * працює). Це серйозна помилка, якщо ви запитаєте мене. Btw. відмова ListBucket для всіх відра не перешкоджає їх включенню до списку, оскільки ListBucket надає права на перелік вмісту відра.

Є три можливості, які я розглядав як обхід. Я вибрав останній.

(1) використовувати криптовалютні імена відра, наприклад GUID

Перевага: простий у налаштуванні

Недолік: важко керувати, особливо для клієнта. .

(2) використовувати одне відро із специфічними для клієнта папками

Ось як пропонує Amazon у своїх прикладах S3 / IAM забезпечити простір для доступу лише певними користувачами або групами користувачів. Див.: Приклад AWS політики IAM

Перевага: налаштування досить просте, відповідає ідеям AWS

Недолік: змушує публічно існувати всі відра, щоб клієнт міг знайти своє "домашнє" відро. Бухгалтерський облік AWS надає статистику використання відра, але не використання папок, що ускладнює підрахунок вартості клієнта.

(3) не надають права доступу для ListAllMyBuckets

Перевага: ви отримуєте те, що хочете: клієнти не можуть бачити відра інших клієнтів

Недолік: клієнт не бачить власного відра. S3Browser постачається з приємним повідомленням "не можу" і просить ввести ім'я відра. S3Fox передає повідомлення про помилку під час підключення до кореня, але дозволяє пряму навігацію до відра клієнта, якщо ім'я відра відоме. Консоль Amazon S3 взагалі не працює.

Сподіваюся, це допомогло впоратися з S3 IAM так, як вам потрібно.


1
Крім того, для рішення (1), якщо ви хочете використовувати веб-хостинг із відром, то ім'я відра повинно відповідати доменному імені.
Енді Фушняк

31

Надати доступ до консолі S3 неможливо без надання ListAllMyBucketsдозволу.

У моєму випадку (а може бути і вашому, майбутньому читачеві) прийнятною альтернативою є перенаправлення користувачів на вхід безпосередньо на відро, яке ви хотіли б бачити.

Для цього додайте до URL-адреси входу IAM наступне: /s3/?bucket=bucket-name

Повна URL-адреса для входу (замініть псевдонім та ім’я відра ):

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

Політика IAM (замініть ім'я відра ):

{
    "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
Це добре працює. Було б оптимально, якби користувачі не змогли дослідити поза зоною відерця .... Але я візьму його. Дякую @BFar.
Джеймі Попкін

Це ОДНА ПРАВИЛЬНА відповідь, всі інші перелічать кожне відро - те, що повинно бути приховано відповідно до початкового запиту.
Стів Хорват

Саме те, що мені потрібно. Дякую.
Ді Чжан

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

Я трактую це питання як: "Чи можна дозволити доступ до одного відра, коли будь-які інші відра не будуть доступні і, таким чином, невидимі". Тому що показ імені відра, до якого не було надано доступу, все ще дорівнює витоку інформації.

І правильна відповідь - ні. Необхідний дозвіл - ListAllMyBuckets, який дозволить користувачеві бачити ВСІ відра. Якщо не допустити цього дозволу, консоль зробить непридатною.


6

Існує прекрасний спосіб дозволити користувачам отримати доступ до певного відра, не включаючи знання про інші відра. Групова політика, подібна до наведеної нижче, дозволить користувачам бачити лише "відро". Єдина уловка полягає в тому, що користувач зможе отримати доступ до ковша, лише якщо він підключиться до заданої кінцевої точки відра. Для прикладу нижче це буде bucket-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/*"
      ]
     }
   ]
}

Цей метод був протестований на Cyberduck на Mac OS / X та з використанням пакету s3cmd

./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/) readonly , але все ще дозволяє CRUD відключати вміст відра ( arn:aws:s3:::your_bucket_here/*).

{
  "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": {}
}

Однак вищесказане дуже корисно, якщо ви користуєтесь клієнтом, який переглядає магазин S3. Якщо ваш клієнт отримує доступ до магазину, а не до відра безпосередньо, значить, вам потрібен доступ до списку відправ у корені.


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
AWS відповідали:This policy contains the following error: The policy must contain a valid version string
MaximeBernard

саме так - я виправив свою відповідь -> <br/> тут є лише два можливі значення: <br/> * 2012-10-17 * та 2008-10-17 . Детальнішу інформацію можна знайти тут: <br/> docs.aws.amazon.com/IAM/latest/UserGuide/…
jjanczyszyn

Будь-яке уявлення про (listing included)значення, як перерахувати лише відро, до якого користувач може потрапити? Поки (і відповідно до всіх інших відповідей), схоже, що AWS не дозволить вам це зробити.
MaximeBernard

3

Існує простий спосіб або вирішити це за допомогою AWS Organisations. Організація AWS дозволяє мати кілька облікових записів користувачів. У вашому головному обліковому записі може бути кілька облікових записів AWS (Sub), і те, що коли-небудь служби (s3 / EC2 / *) додаватиметься в будь-які облікові записи AWS, будуть видно лише ці ресурси.

Зверніться до https://aws.amazon.com/blogs/aws/aws-organizations-policy-based-management-for-multiple-aws-accounts/ https://aws.amazon.com/organizations/

Організація На сторінці мого облікового запису


3

Я знайшов таке рішення:
AWS FLOW:
AWS ПОТОК

Політика відра:

{
  "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
          ]
        }
      }
    }
  ]
}

Політика IAM:

{
  "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 -–user-name USER-NAME --profile = ExampleProfile

aws iam get-role - ім'я ролі ROLE-NAME --profile = ExampleProfile

Джерело: https://aws.amazon.com/blogs/security/how-to-restrict-amazon-s3-bucket-access-to-a-specific-iam-role/

PS Будьте обережні з політикою ковша, ви можете залишатися без дозволів


2

Як було добре обговорено вище, перерахувати лише одне відро на консолі неможливо. Але якщо доступ до відра S3 приєднаний до IAM, IAM може отримати прямий доступ до ковша, якщо доступний URL у відро. URL-адреса відра S3 буде таким:

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

Там, де BucketName - ім'я відра, до якого має доступ IAM


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/*"]
    }
  ]
}

Я використовував Cyberduck для перевірки цього зв’язку.


1

Хоча неможливо обмежити s3:ListAllMyBucketsдію лише певними відрами, оскільки для вирішення їх можна надіслати URL-адресу консолі для конкретного відра, наприклад

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

Джерело: Список обмежених відра S3 з консолі S3

Для цього вам потрібно вказати наступний документ щодо політики для певного користувача або групи:

{
    "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/*"
      }
   ]
}

Ось, однак, відсутня деталь. Хоча отримати доступ до відра через S3-> Home неможливо, можна отримати доступ лише до потрібного відра через пряме посилання.

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 у певному відрі my-s3-bucket .

Ця політика дозволяє моєму користувачеві перераховувати, видаляти, отримувати файли на певному відрізку s3.

{
    "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

Я використовую такі матеріали, щоб приховати вміст відра від інших користувачів. Це не тільки допомагає приховати інші відра (не використовуйте ListAllMyBuckets), але й папки в тому ж відрі, коли ви робите одне відро, але хочете мати в ньому підпапки, що присвоюють належні дозволи для користувача / підпапки IAM.

Наступна політика застосовується до групи IAM, і всі користувачі в цій групі. Вам потрібно взяти aws:useridі зробити підпапка з такою ж назвою у відрі.

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",
    "Заява": [
        {
            "Ефект": "Дозволити",
            "Дія": "s3: *",
            "Ресурс": "*"
        },
        {
            "Ефект": "Заборонити",
            "Дія": "s3: *",
            "Ресурс": [
                "arn: aws: s3 ::: ім'я відра",
                "arn: aws: s3 ::: bucket-name / *"
            ]
        }
    ]
}

1
Вам слід чітко надати доступ до ресурсів. Якщо ви за замовчуванням надаєте доступ до всіх ресурсів, ви можете випадково опустити ресурси, які ви хочете зберегти приватними. Також надання доступу до всіх дій S3 означає, що користувач може оприлюднити ресурси або налаштувати статичний хостинг або зробити інші шкідливі речі.
Ondrej Galbavý
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.