В дополнение к effect, principals, resources и actions, вы можете указать условия для политики Бакет. Политика Бакет вступает в силу только тогда, когда её условные выражения соответствуют значениям, содержащимся в запросе. Условия является необязательным параметром. Вы можете определить, следует ли использовать этот параметр, исходя из требований сервиса.
Например, если аккаунт A нужно предоставить с полными правами контроля для объекта, загруженного аккаунтом B в Бакет пример, вы можете указать, что запрос на загрузку должен содержать acl ключ и установить эффект политики в Allow для аккаунта A. Полное условное выражение выглядит следующим образом:
Оператор условия | Ключ | Значение |
|---|---|---|
StringEquals | acl | bucket-owner-full-control |
Условие состоит из трёх частей: оператор условия, ключ и значение. Операторы условий и ключи связаны друг с другом. Например:
- Если выбран оператор условия строкового типа, например StringEquals, ключ может быть только строкового типа, например UserAgent.
- Если выбран ключ типа дата, например CurrentTime, оператор условия может быть только типа дата, например DateEquals.
Таблица 1 описывает предопределённые операторы условий, предоставляемые OBS.
Тип | Ключ | Описание |
|---|---|---|
Строка | StringEquals | Строгое совпадение. Краткая версия: streq |
StringNotEquals | Строгое отрицательное совпадение. Краткая версия: strneq | |
StringEqualsIgnoreCase | Строгое совпадение, без учёта регистра. Краткая версия: streqi | |
StringNotEqualsIgnoreCase | Строгое отрицательное совпадение, без учёта регистра. Краткая версия: strneqi | |
StringLike | Слабое регистрозависимое совпадение. Значения могут включать подстановочный символ множественного символа (*) или подстановочный символ одиночного символа (?) в любой позиции строки. Краткая версия: strl | |
StringNotLike | Отрицательное свободное чувствительное к регистру сопоставление. Значения могут включать подстановочный символ для многосимвольного совпадения (*) или подстановочный символ для односимвольного совпадения (?) в любой части строки. Short version: strnl | |
Числовой | NumericEquals | Строгое сопоставление. Short version: numeq |
NumericNotEquals | Строгое отрицательное сопоставление. Short version: numneq | |
NumericLessThan | "Less than" matching. Short version: numlt | |
NumericLessThanEquals | "Less than or equals" matching. Short version: numlteq | |
NumericGreaterThan | "Greater than" matching. Short version: numgt | |
NumericGreaterThanEquals | "Greater than or equals" matching. Short version: numgteq | |
Дата | DateEquals | Строгое сопоставление. Short version: dateeq |
ДатаНеРавно | Строгое отрицательное совпадение. Краткая версия: dateneq | |
ДатаМеньше | Указывает, что дата раньше конкретной даты. Краткая версия: datelt | |
ДатаМеньшеИлиРавно | Указывает, что дата раньше или равна конкретной дате. Краткая версия: datelteq | |
ДатаПозже | Указывает, что дата позже конкретной даты. Краткая версия: dategt | |
ДатаПозжеИлиРавно | Указывает, что дата позже или равна конкретной дате. Краткая версия: dategteq | |
Булево | Bool | Строгое булево совпадение |
IP address | IpAddress | Действует только для указанного IP address или диапазона IP address. Пример: x.x.x.x/24 |
NotIpAddress | Действует только на все, кроме указанного IP-адреса или диапазона IP-адресов. Example: x.x.x.x/24 |
Условие может содержать любой из трех типов ключей: общие ключи, ключи, связанные с действиями Бакет, и ключи, связанные с действиями объекта.
Ключ | Тип | Описание |
|---|---|---|
CurrentTime | Дата | Указывает дату, когда запрос получен сервером. Формат даты должен соответствовать ISO 8601. |
EpochTime | Числовой | Указывает время, когда запрос получен сервером, выраженное в секундах, прошедших с 01.01.1970 00:00:00 UTC, независимо от високосных секунд. |
SecureTransport | Bool | Запрос, использовать ли SSL. |
SourceIp | IP-адрес | IP-адрес источника, с которого отправляется запрос |
UserAgent | Строка | Запрашиваемый клиентский программный агент |
Referer | Строка | Указывает ссылку, с которой отправлен запрос. |
SourceVpce | Строка | ID VPC эндпоинта, инициирующего запросы |
SourceVpc | Строка | ID VPC, инициирующего запросы |
ServiceAgency | Строка | Имя IAM‑агентства, которое делегирует облачные сервисы для доступа к OBS |
Действие | Необязательный ключ | Описание | Описание |
|---|---|---|---|
ListBucket | prefix | Type: String. Список объектов, начинающихся с указанного префикса. | Если prefix, delimiter, и max-keys настроены, пары ключ‑значение, соответствующие условиям, должны быть указаны в операции List, чтобы политика бакета вступила в силу. Например, если политика бакета (с условным оператором, установленным в NumericEquals, ключ к max-keys, и значение к 100) который позволяет анонимным пользователям читать данные, настроен для бакета, анонимные пользователи должны добавить ?max-keys=100 к концу имени домена бакета для перечисления объектов. Перечисленные объекты являются первыми 100 объектами в алфавитном порядке. |
max-keys | Тип: Числовой. Задает максимальное количество объектов. Возвращённые объекты перечисляются в алфавитном порядке. | ||
ListBucketVersions | префикс | Тип: Строка. Перечисляет многоверсионные объекты, имя которых начинается с указанного префикса. | |
max-keys | Тип: Числовой. Задает максимальное количество объектов. Возвращённые объекты перечисляются в алфавитном порядке. | ||
PutBucketAcl | acl | Тип: Строка. Настраивает ACL бакета. Предустановленные ACL, которые могут быть включены в изменённый ACL бакета, содержат private, public-read, public-read-write, authenticated-read, bucket-owner-read, bucket-owner-full-control, и log-delivery-write. | Нет |
Действие | Необязательный ключ | Описание |
|---|---|---|
PutObject | acl | Тип: String. Настраивает ACL объекта. При загрузке объекта, предустановленные ACL, которые могут быть включены в ACL объекта, содержат private, public-read, public-read-write, authenticated-read, bucket-owner-read, bucket-owner-full-control, и log-delivery-write. |
copysource | Тип: Строка. Указывает имена исходного бакета и исходного объекта. Формат: /bucketname/keyname | |
metadata-directive | Тип: Строка. Указывает, копировать ли метаданные из исходного объекта или заменить их метаданными в запросе. Значения: COPY|REPLACE | |
PutObjectAcl | acl | Тип: String. Конфигурирует объект ACL. При загрузке объекта, предустановленные ACL, которые могут быть включены в объект ACL, содержат private, public-read, public-read-write, authenticated-read, bucket-owner-read, bucket-owner-full-control, и log-delivery-write. |
GetObjectVersion | VersionId | Тип: String. Получает объект с указанным ID версии. |
GetObjectVersionAcl | VersionId | Тип: String. Получает ACL объекта с указанным идентификатором версии. |
PutObjectVersionAcl | VersionId | Тип: String. Указывает идентификатор версии. |
acl | Тип: String. Настраивает ACL объекта с указанным идентификатором версии. При загрузке объекта, предустановленные ACL, которые могут быть включены в ACL объекта, содержат private, public-read, public-read-write, authenticated-read, бакет-owner-read, бакет-owner-full-control, and log-delivery-write. | |
DeleteObjectVersion | VersionId | Type: String. Удаляет объект с указанным ID версии. |