Настройка публичного доступа к бакету
В Object Storage реализовано несколько механизмов для управления доступом к ресурсам. Алгоритм взаимодействия этих механизмов см. в Обзор способов управления доступом в Object Storage.
По умолчанию бакеты создаются с ограниченным доступом. Вы можете открыть публичный доступ:
- На чтение объектов в бакете.
- К списку объектов в бакете.
- На чтение настроек:
Публичный доступ к каждой операции выдается отдельно. То есть, если вы открыли доступ только на чтение объектов, то операции получения списка объектов и настроек бакета недоступны анонимному пользователю.
Открыть публичный доступ
Важно
Публичный доступ предоставляется неограниченному кругу анонимных пользователей. Используйте его только в случае, когда нет возможности применить другие механизмы предоставления доступа.
- В консоли управления
в списке сервисов выберите Object Storage и перейдите в бакет, для которого вы хотите настроить публичный доступ. - На панели слева выберите
Настройки. - Выберите вкладку Основные.
- Включите публичный доступ для нужных типов операций.
- Нажмите Сохранить.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
-
Посмотрите описание команды CLI для изменения бакета:
yc storage bucket update --help
-
Получите список бакетов в каталоге по умолчанию:
yc storage bucket list
Результат:
+------------------+----------------------+-------------+-----------------------+---------------------+ | NAME | FOLDER ID | MAX SIZE | DEFAULT STORAGE CLASS | CREATED AT | +------------------+----------------------+-------------+-----------------------+---------------------+ | first-bucket | b1gmit33ngp6******** | 53687091200 | STANDARD | 2022-12-16 13:58:18 | +------------------+----------------------+-------------+-----------------------+---------------------+
-
Сохраните имя бакета (столбец
NAME
), к которому нужно открыть публичный доступ. -
Откройте публичный доступ к операциям с бакетом:
yc storage bucket update \ --name <имя_бакета> \ --public-read \ --public-list \ --public-config-read
Где:
--name
— имя бакета, к которому нужно открыть публичный доступ.--public-read
— флаг для включения публичного доступа на чтение объектов в бакете.--public-list
— флаг для включения публичного доступа на просмотр списка объектов в бакете.--public-config-read
— флаг для включения публичного доступа на чтение настроек в бакете.
name
— обязательный параметр. Остальные параметры необязательны. По умолчанию публичный доступ к бакету выключен.Результат:
name: first-bucket folder_id: b1gmit33ngp6******** anonymous_access_flags: read: true list: true config_read: true default_storage_class: STANDARD versioning: VERSIONING_DISABLED max_size: "53687091200" acl: {} created_at: "2022-12-16T13:58:18.933814Z"
Примечание
Terraform взаимодействует с Object Storage от имени сервисного аккаунта. Назначьте сервисному аккаунту нужную роль, например storage.admin
, на каталог, в котором будут создаваться ресурсы.
Terraform
Terraform распространяется под лицензией Business Source License
Подробную информацию о ресурсах провайдера смотрите в документации на сайте Terraform
Если у вас еще нет Terraform, установите его и настройте провайдер Yandex Cloud.
Чтобы открыть публичный доступ к операциям с бакетом:
-
Откройте файл конфигурации Terraform и добавьте блок
anonymous_access_flags
во фрагмент с описанием бакета.resource "yandex_storage_bucket" "log_bucket" { access_key = "<идентификатор_статического_ключа>" secret_key = "<секретный_ключ>" bucket = "<имя_бакета>" anonymous_access_flags { read = true list = true config_read = true } }
Где:
access_key
— идентификатор статического ключа доступа.secret_key
— значение секретного ключа доступа.bucket
— имя бакета, к которому нужно открыть публичный доступ.anonymous_access_flags
— параметры публичного доступа:read
— публичный доступ на чтение объектов в бакете.list
— публичный доступ к списку объектов в бакете.config_read
— публичный доступ к чтению настроек бакета.
Более подробную информацию о параметрах ресурса
yandex_storage_bucket
в Terraform см. в документации провайдера . -
Проверьте корректность конфигурационных файлов.
-
В командной строке перейдите в папку, где вы создали конфигурационный файл.
-
Выполните проверку с помощью команды:
terraform plan
Если конфигурация описана верно, в терминале отобразится список создаваемых ресурсов и их параметров. Если в конфигурации есть ошибки, Terraform на них укажет.
-
-
Разверните облачные ресурсы.
-
Если в конфигурации нет ошибок, выполните команду:
terraform apply
-
Подтвердите создание ресурсов: введите в терминал слово
yes
и нажмите Enter.После этого в указанном каталоге будут созданы все требуемые ресурсы. Проверить появление ресурсов и их настройки можно в консоли управления
.
-
Чтобы открыть публичный доступ к операциям с бакетом, воспользуйтесь методом REST API update для ресурса Bucket или вызовом gRPC API BucketService/Update.
Примечание
Если в бакете созданы политики доступа, то для корректной работы публичного доступа их также нужно настроить.
Закрыть публичный доступ
- В консоли управления
в списке сервисов выберите Object Storage и перейдите в бакет, для которого вы хотите закрыть публичный доступ. - На панели слева выберите
Настройки. - Выберите вкладку Основные.
- Включите ограниченный доступ для нужных типов операций.
- Нажмите Сохранить.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
-
Посмотрите описание команды CLI для изменения бакета:
yc storage bucket update --help
-
Получите список бакетов в каталоге по умолчанию:
yc storage bucket list
Результат:
+------------------+----------------------+-------------+-----------------------+---------------------+ | NAME | FOLDER ID | MAX SIZE | DEFAULT STORAGE CLASS | CREATED AT | +------------------+----------------------+-------------+-----------------------+---------------------+ | first-bucket | b1gmit33ngp6******** | 53687091200 | STANDARD | 2022-12-16 13:58:18 | +------------------+----------------------+-------------+-----------------------+---------------------+
-
Сохраните имя бакета (столбец
NAME
), к которому нужно закрыть публичный доступ. -
Закройте публичный доступ к операциям с бакетом:
yc storage bucket update \ --name <имя_бакета> \ --public-read=false \ --public-list=false \ --public-config-read=false
Где:
--name
— имя бакета, к которому нужно закрыть публичный доступ.--public-read
— флаг для управления публичным доступом на чтение объектов в бакете. Для выключения публичного доступа задайте значениеfalse
.--public-list
— флаг для управления публичным доступом на просмотр списка объектов в бакете. Для выключения публичного доступа задайте значениеfalse
.--public-config-read
— флаг для управления публичным доступом на чтение настроек в бакете. Для выключения публичного доступа задайте значениеfalse
.
name
— обязательный параметр. Остальные параметры необязательны. По умолчанию публичный доступ к бакету выключен.Результат:
name: first-bucket folder_id: b1gmit33ngp6******** anonymous_access_flags: read: false list: false config_read: false default_storage_class: STANDARD versioning: VERSIONING_DISABLED max_size: "53687091200" acl: {} created_at: "2022-12-16T13:58:18.933814Z"
Terraform
Terraform распространяется под лицензией Business Source License
Подробную информацию о ресурсах провайдера смотрите в документации на сайте Terraform
Если у вас еще нет Terraform, установите его и настройте провайдер Yandex Cloud.
Чтобы закрыть публичный доступ к операциям с бакетом:
-
Откройте файл конфигурации Terraform и добавьте блок
anonymous_access_flags
во фрагмент с описанием бакета.resource "yandex_storage_bucket" "log_bucket" { access_key = "<идентификатор_статического_ключа>" secret_key = "<секретный_ключ>" bucket = "<имя_бакета>" anonymous_access_flags { read = false list = false config_read = false } }
Где:
access_key
— идентификатор статического ключа доступа.secret_key
— значение секретного ключа доступа.bucket
— имя бакета, к которому нужно закрыть публичный доступ.anonymous_access_flags
— параметры публичного доступа:read
— публичный доступ на чтение объектов в бакете.list
— публичный доступ к списку объектов в бакете.config_read
— публичный доступ к чтению настроек бакета.
Более подробную информацию о параметрах ресурса
yandex_storage_bucket
в Terraform см. в документации провайдера . -
Проверьте корректность конфигурационных файлов.
-
В командной строке перейдите в папку, где вы создали конфигурационный файл.
-
Выполните проверку с помощью команды:
terraform plan
Если конфигурация описана верно, в терминале отобразится список создаваемых ресурсов и их параметров. Если в конфигурации есть ошибки, Terraform на них укажет.
-
-
Разверните облачные ресурсы.
-
Если в конфигурации нет ошибок, выполните команду:
terraform apply
-
Подтвердите создание ресурсов: введите в терминал слово
yes
и нажмите Enter.После этого в указанном каталоге будут созданы все требуемые ресурсы. Проверить появление ресурсов и их настройки можно в консоли управления
.
-
Чтобы закрыть публичный доступ к операциям с бакетом, воспользуйтесь методом REST API update для ресурса Bucket или вызовом gRPC API BucketService/Update.
При закрытии публичного доступа к бакету убедитесь, что публичной группе All users
не назначены роли viewer
или storage.viewer
и выше на каталог или бакет. В противном случае публичный доступ к бакету сохранится.