Далее предполагается, что имя сегмента равно xtest
, а имя объекта - test.txt
.
Этот длинный сложный URL-адрес содержит подпись, которая предоставляет разрешения на доступ к объекту.
Если URL-адрес выглядит очень сложным и выглядит не так, то, вероятно, он имеет подпись как часть URL-адреса.
http://xtest.storage.googleapis.com/test.txt
OR
http://storage.googleapis.com/xtest/test.txt
Если URL-адрес не содержит подписи, которая позволяет кому-либо получить доступ к объекту корзины, то следующие шаги должны выяснить, какие разрешения были применены, которые разрешают анонимный доступ.
Выясните, какие разрешения применяются к корзине и объекту.
Я предпочитаю использовать CLI gsutil
, чтобы у меня был точный JSON, описывающий все разрешения.
Существует два метода предоставления доступа к контейнерам и объектам. Bucket ACL и политики Bucket IAM.
ЧАСТЬ 1 - ACL-списки
Получить ACL Bucket.
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
При изменении списков ACL для группы или файла вступление в силу может занять около минуты.
Повторите процесс для объекта:
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 - Bucket IAM Policies
Получить Bucket IAM Policy.
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
Эта команда удалит все AuthenticatedUsers из политики 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