Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Доступны в регионе
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • AI Studio
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Партнёрская программа
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Истории успеха
    • Тарифы Yandex Cloud
    • Промоакции и free tier
    • Правила тарификации
  • Документация
  • Блог
Проект Яндекса
© 2025 ТОО «Облачные Сервисы Казахстан»
Yandex Object Storage
    • Обзор
    • Бакет
    • Объект
    • Версионирование бакета
    • Блокировка версии объекта (object lock)
    • Частичное изменение объекта
    • Шифрование
    • Жизненные циклы объектов
    • CORS
    • Хостинг статических сайтов
    • Подписанные (pre-signed) URL
    • Составная (multipart) загрузка
    • Список управления доступом (ACL)
    • Политика доступа (Bucket Policy)
    • Загрузка файла через HTML-форму
    • Класс хранилища
    • Механизм логирования действий с бакетом
    • Резервное копирование
    • Протокол TLS
    • Метки
    • Язык запросов S3 Select
    • Квоты и лимиты
  • Правила тарификации
  • Справочник Terraform
  • Метрики Monitoring
  • Аудитные логи Audit Trails
  • Логи бакета
  • История изменений
  • Вопросы и ответы
  • Обучающие курсы

В этой статье:

  • Из чего состоит политика
  • Доступ к бакету через консоль управления
  • Доступ к бакету через цепочку обратных прокси-серверов
  • Примеры конфигурации
  • См. также
  1. Концепции
  2. Политика доступа (Bucket Policy)

Политика доступа (bucket policy)

Статья создана
Yandex Cloud
Обновлена 16 апреля 2025 г.
  • Из чего состоит политика
  • Доступ к бакету через консоль управления
  • Доступ к бакету через цепочку обратных прокси-серверов
  • Примеры конфигурации
    • См. также

В Object Storage реализовано несколько механизмов для управления доступом к ресурсам. Алгоритм взаимодействия этих механизмов см. в Обзор способов управления доступом в Object Storage.

Политики доступа устанавливают права на действия с бакетами, объектами и группами объектов.

Политика срабатывает, когда пользователь делает запрос к какому-либо ресурсу. В результате срабатывания политики запрос либо выполняется, либо отклоняется.

Открытие публичного доступа к операциям с бакетом не отменяет ограничений, заданных в политиках доступа.

Примечание

Если к бакету применена политика доступа без правил, то доступ будет запрещен всем пользователям. Чтобы отключить проверки запросов по политике доступа, удалите ее.

Политику доступа можно настроить в консоли управления или описать в формате JSON по специальной схеме, чтобы передать через один из программных инструментов — Yandex Cloud CLI, AWS CLI, Terraform или API. Подробнее об управлении политикой см. в инструкции.

Если вы хотите настроить политику доступа для бакета и подключаться к нему из кластера Hive Metastore или Yandex Managed Service for Apache Airflow™, вам потребуется дополнительная настройка инфраструктуры. Подробнее см. в инструкциях для Metastore и Managed Service for Apache Airflow™.

Из чего состоит политикаИз чего состоит политика

Политика доступа состоит из правил, а правило — из следующих базовых элементов:

Ресурс

Бакет, объект в бакете (<имя_бакета>/some/key) или префикс (<имя_бакета>/some/path/*), в том числе пустой префикс для обозначения всех объектов в бакете (<имя_бакета>/*). В правиле можно указать несколько ресурсов.

Примечание

Ресурс бакета не включает в себя ресурсы всех его объектов. Чтобы правило в политике доступа относилось к бакету и всем объектам, их нужно указать как отдельные ресурсы: например, samplebucket и samplebucket/*.

Если вы описываете политику в формате JSON, у ресурса должен быть префикс arn:aws:s3:::, например arn:aws:s3:::<имя_бакета>.

Если имя ресурса содержит символ ?, * или $, поставьте перед таким символом знак $, а сам символ заключите в фигурные скобки {}. Например, имени бакета my?bucket будет соответствовать запись my${?}bucket.

Действие

Набор операций над ресурсом, который будет запрещен или разрешен правилом. Подробнее читайте в разделе Действия.

Результат

Запрет или разрешение запрошенного действия. Сначала проверяется попадание запроса в фильтр с действием Deny, при совпадении запрос отклоняется и дальнейшие проверки не проводятся. При попадании в фильтр с действием Allow запрос разрешается. Если запрос не попал ни в один из фильтров, то запрос отклоняется.

Принципал

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

Условие

Определение случаев, когда действует правило.

Примечание

Для условия aws:sourceip поддержан особый порядок проверки IP-адресов обратных прокси-серверов.

Если для правила задано одновременно несколько условий или внутри одного условия задано одновременно несколько ключей, то такие условия и ключи применяются с логикой И.

Если для одного ключа условия задано одновременно несколько значений, то такие значения применяются с логикой ИЛИ.

Подробнее читайте в разделе Условия.

Доступ к бакету через консоль управленияДоступ к бакету через консоль управления

Если для бакета настроена политика доступа, то по умолчанию доступ к бакету через консоль управления Yandex Cloud запрещен. Чтобы разрешить доступ к бакету, нужно добавить в секцию Statement политики доступа правило, разрешающее любые запросы к ресурсам <имя_бакета>/* и <имя_бакета> через консоль управления.

Пример правила для конкретного пользователя Yandex Cloud:

{
  "Effect": "Allow",
  "Principal": {
    "CanonicalUser": "<идентификатор_пользователя>"
  },
  "Action": "*",
  "Resource": [
    "arn:aws:s3:::<имя_бакета>/*",
    "arn:aws:s3:::<имя_бакета>"
  ],
  "Condition": {
    "StringLike": {
      "aws:referer": "https://kz.console.yandex.cloud/folders/*/storage/buckets/your-bucket-name*"
    }
  }
}

Идентификатор пользователя можно получить по инструкции в документации Yandex Identity and Access Management.

Доступ к бакету через цепочку обратных прокси-серверовДоступ к бакету через цепочку обратных прокси-серверов

Чтобы обеспечить работу Object Storage с запросами, переданными через цепочку обратных прокси-серверов, в условии aws:sourceip проверяется не только IP-адрес, с которого пришел запрос, но и IP-адреса обратных прокси-серверов, например переданных в заголовке X-Forwarded-For.

Сначала запрос проверятся на соответствие правилам Deny политики доступа. Если хотя бы один из IP-адресов попадает под правило Deny, запрос отклоняется. Дальнейшие проверки не проводятся.

Далее запрос проверятся на соответствие правилам Allow. Если хотя бы один из IP-адресов попадает под правило Allow, запрос разрешается.

Пример настройки политики доступа к бакету через цепочку обратных прокси-серверов
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "the-allowing-rule",
      "Effect": "Allow",
      "Principal": "*",
      "Action": "*",
      "Resource": "arn:aws:s3:::sample-bucket/*",
      "Condition": {
        "IpAddress": {
          "aws:sourceip": [
            "192.168.1.1",
            "192.168.1.2"
          ]
        }
      }
    },
    {
      "Sid": "the-denying-rule",
      "Effect": "Deny",
      "Principal": "*",
      "Action": "*",
      "Resource": "arn:aws:s3:::sample-bucket/*",
      "Condition": {
        "IpAddress": {
          "aws:sourceip": [
            "192.168.1.11",
            "192.168.1.12"
          ]
        }
      }
    }
  ]
}

Если к бакету поступит запрос, содержащий заголовок X-Forwarded-For: 192.168.1.1, 192.168.1.2, 192.168.1.12, то такой запрос будет отклонен, поскольку в заголовке содержится IP-адрес, указанный в правиле с действием Deny.

Если к бакету поступит запрос, содержащий заголовок X-Forwarded-For: 192.168.2.100, 192.168.2.1, 192.168.1.2, то такой запрос будет разрешен, поскольку в заголовке нет IP-адресов, указанных в правиле с действием Deny, но есть IP-адрес, указанный в правиле с действием Allow.

Примеры конфигурацииПримеры конфигурации

  • Разрешить анонимному пользователю чтение объектов бакета по зашифрованному подключению
  • Разрешить скачивать объекты только из указанного диапазона IP-адресов
  • Запретить скачивать объекты с указанного IP-адреса
  • Предоставить пользователям разным полный доступ к определенным папкам
  • Предоставить каждому пользователю или сервисному аккаунту полный доступ к папке

Правило, которое разрешает анонимному пользователю чтение объектов бакета по зашифрованному подключению:Правило, которое разрешает анонимному пользователю чтение объектов бакета по зашифрованному подключению:

{
  "Id": "epd4limdp3dg********",
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "f1qqoehl1q53********",
      "Effect": "Allow",
      "Principal": "*",
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::<имя_бакета>/*",
      "Condition": {
        "Bool": {
          "aws:SecureTransport": "true"
        }
      }
    }
  ]
}

Правило, которое разрешает скачивать объекты только из указанного диапазона IP-адресов:Правило, которое разрешает скачивать объекты только из указанного диапазона IP-адресов:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": "*",
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::<имя_бакета>/*",
      "Condition": {
        "IpAddress": {
          "aws:SourceIp": "100.101.102.128/30"
        }
      }
    }
  ]
}

Правило, которое запрещает скачивать объекты с указанного IP-адреса:Правило, которое запрещает скачивать объекты с указанного IP-адреса:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": "*",
      "Action": "*",
      "Resource": "arn:aws:s3:::<имя_бакета>/*"
    },
    {
      "Effect": "Deny",
      "Principal": "*",
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::<имя_бакета>/*",
      "Condition": {
        "IpAddress": {
          "aws:SourceIp": "100.101.102.103"
        }
      }
    }
  ]
}

Правило, которое дает разным пользователям полный доступ только к определенным папкам, каждому пользователю — к своей:Правило, которое дает разным пользователям полный доступ только к определенным папкам, каждому пользователю — к своей:

{
  "Version":"2012-10-17",
  "Statement":[
    {
      "Sid":"User1PermissionsResource",
      "Effect":"Allow",
      "Principal": {
        "CanonicalUser": "<идентификатор_пользователя>"
      },
      "Action": "*",
      "Resource":["arn:aws:s3:::<имя_бакета>/user1path/*"]
    },
    {
      "Sid":"User1PermissionsPrefix",
      "Effect":"Allow",
      "Principal": {
          "CanonicalUser": "<идентификатор_пользователя>"
      },
      "Action": "s3:ListBucket",
      "Resource":["arn:aws:s3:::<имя_бакета>"],
      "Condition": {
        "StringLike": {
          "s3:prefix": "user1path/*"
        }
      }
    },
    {
      "Sid":"User2PermissionsResource",
      "Effect":"Allow",
      "Principal": {
        "CanonicalUser": "<идентификатор_пользователя>"
      },
      "Action": "*",
      "Resource":["arn:aws:s3:::<имя_бакета>/user2path/*"]
    },
    {
      "Sid":"User2PermissionsPrefix",
      "Effect":"Allow",
      "Principal": {
        "CanonicalUser": "<идентификатор_пользователя>"
      },
      "Action": "s3:ListBucket",
      "Resource":["arn:aws:s3:::<имя_бакета>"],
      "Condition": {
        "StringLike": {
          "s3:prefix": "user2path/*"
        }
      }
    }
  ]
}

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

{
  "Version":"2012-10-17",
  "Statement":[
    {
      "Sid": "OwnDirPermissions",
      "Effect": "Allow",
      "Principal": "*",
      "Action": "*",
      "Resource": ["arn:aws:s3:::<имя_бакета>/${aws:userid}/*"]
    }
  ]
}

См. такжеСм. также

  • Управление политикой доступа (bucket policy)

Была ли статья полезна?

Предыдущая
Список управления доступом (ACL)
Следующая
Загрузка файла через HTML-форму
Проект Яндекса
© 2025 ТОО «Облачные Сервисы Казахстан»