Ссылка на файл ведра хранилища google общедоступна, хотя и не общедоступна?

Я играл с Google Bucket. Ведро не публичное. Файлы также не являются общедоступными.

После того, как я загружу файл .csv. Я нажимаю на нее, и в браузере в google chrome отображается файл с очень сложной URL-ссылкой.

Теперь, если я возьму эту ссылку и открою в другом браузере, например IE, в котором нет учетной записи Google, я могу получить доступ к данным. Это недостаток? Команда Google говорит, что это проблема с разрешениями. Я попробовал, удалив все разрешения, но файл все еще доступен. Вы наблюдаете ту же проблему со своими ведрами?

Создание приборной панели для анализа данных на GCP - часть I
Создание приборной панели для анализа данных на GCP - часть I
Недавно я столкнулся с интересной бизнес-задачей - визуализацией сбоев в цепочке поставок лекарств, которую могут просматривать врачи и...
0
0
1 042
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Далее предполагается, что имя сегмента - xtest, а имя объекта - test.txt.

Этот длинный сложный URL-адрес содержит подпись, которая предоставляет разрешения на доступ к объекту.

Если URL-адрес выглядит очень сложным и не похож на этот, то, вероятно, он имеет подпись как часть URL-адреса.

http://xtest.storage.googleapis.com/test.txt

ИЛИ

http://storage.googleapis.com/xtest/test.txt

Если URL-адрес не содержит подписи, которая позволяет любому получить доступ к объекту корзины, то следующие шаги - выяснить, какие разрешения были применены, разрешая анонимный доступ.

Выясните, какие разрешения применяются к корзине и объекту.

Я предпочитаю использовать CLI gsutil, чтобы иметь точный JSON, описывающий все разрешения.

Есть два метода предоставления доступа к сегментам и объектам. ACL сегментов и политики IAM сегментов.

ЧАСТЬ 1 - ACL сегментов

Получите список ACL для сегмента.

gsutil acl get gs://xtest

Это вернет ответ в формате JSON. Если acl корзины содержит любую из следующих записей, ваша корзина будет открыта.

[
  {
    "entity": "allUsers",
    "role": "READER"
  },
  {
    "entity": "allAuthenticatedUsers",
    "role": "READER"
  }
]

Удалите общедоступные разрешения.

Сущность allUsers позволяет любому пользователю иметь права, указанные в role. Сущность allAuthenticatedUsers позволяет любому, у кого есть учетная запись Google, пользоваться разрешениями, указанными в role.

Эта команда удалит allUsers из ACL корзины.

gsutil acl ch -d allUsers gs:/xtest

Эта команда удалит allAuthenticatedUsers из ACL корзины.

gsutil acl ch -d allAuthenticatedUsers gs:/xtest

При изменении списков управления доступом к корзине или файлу может потребоваться около минуты, чтобы вступить в силу.

Повторите процесс для объекта:

gsutil acl get gs://xtest/test.txt

Использование аналогичных команд для удаления любых общедоступных ACL:

gsutil acl ch -d allUsers gs://xtest/test.txt

gsutil acl ch -d allAuthenticatedUsers gs://xtest/test.txt

Повторите проверку того, что общедоступные списки ACL удалены.

gsutil acl get gs://xtest

gsutil acl get gs://xtest/test.txt

Часть 2 - Политики сегмента IAM

Получите политику сегмента IAM.

gsutil iam get gs://xtest

Это вернет ответ в формате JSON. Если IAM-политика корзины содержит любую из следующих записей, ваша корзина становится доступной.

{
  "bindings": [
    {
      "members": [
        "allUsers"
      ],
      "role": "roles/storage.legacyBucketReader"
    },
    {
      "members": [
        "allAuthenticatedUsers"
      ],
      "role": "roles/storage.objectViewer"
    }
  ],
  "etag": "CBM = "
}

Удалите общедоступные разрешения.

Сущность allUsers позволяет любому пользователю получать разрешения, указанные в роли. Сущность allAuthenticatedUsers позволяет любому, у кого есть учетная запись Google, иметь разрешения, указанные в роли.

Эта команда удалит всех пользователей из политики IAM корзины.

gsutil iam ch -d allUsers gs://xtest

Эта команда удалит всех аутентифицированных пользователей из политики IAM сегмента.

gsutil iam ch -d allAuthenticatedUsers gs://xtest

Повторите процесс для объекта:

gsutil iam get gs://xtest/test.txt

Использование аналогичных команд для удаления любых политик IAM общедоступных объектов:

gsutil iam ch -d allUsers gs://xtest/test.txt

gsutil iam ch -d allAuthenticatedUsers gs://xtest/test.txt

Повторите проверку удаления общедоступных политик IAM.

gsutil iam get gs://xtest

gsutil iam get gs://xtest/test.txt

Длинная сложная ссылка на самом деле является временной ссылкой, срок действия которой истекает через несколько минут. Но я проверяю в Google, как мы можем ограничить еще больше.

sunilSAP 02.11.2018 23:06

Дай мне знать, что ты узнал. Я пишу статьи о Google Cloud Authentication, учетных данных и токенах доступа. Я также планирую заняться предоставлением временных объектов (URL). Ссылка: jhanley.com

John Hanley 02.11.2018 23:57

Другие вопросы по теме