[Документация Yandex Cloud](../../../../index.md) > [Yandex Object Storage](../../../index.md) > Справочник API > [AWS S3 REST](../../index.md) > [REST](../index.md) > Bucket Policy > Схема данных

# Схема данных

Схема данных в формате JSON:

```json
{
  "Version" : "string",
  "Id" : "string",
  "Statement" : [
    {
      "Sid" : "string",
      ("Principal" | "NotPrincipal") : ("*" | "CanonicalUser" : [
        "string",
        ...
      ]),
      "Effect" : ("Allow" | "Deny"),
      "Action" : ("*" | [
        "string",
        ...
      ]),
      "Resource" : ("*" | [
        "string",
        ...
      ]),
      "Condition" : {
        "condition_type_string" : {
          "condition_key_string" : [[("string" | "number" | "Boolean"),...]...]
        },
        ...
      }  
    },
    ...
  ]
}
```

Схема может включать до 10 240 символов.

Описание параметров схемы:

#|
|| **Параметр** | **Описание** ||
|| `Version` | (Опционально) **string**

Версия описания политик доступа.

Примеры значений: `2012-10-17`. ||
|| `Id` | (Опционально) **string**

Общая информация о политике. Некоторые сервисы Yandex Cloud требуют уникальности этого значения.

Параметр задается пользователем.

Примеры значений: `test-policy`, `Anonymous access policy`, `hrtk43sau2s8gqkaje06`. ||
|| `Statement[].` | **array**

Правила политики доступа.

Если к бакету применена политика доступа без правил, то доступ будет запрещен всем пользователям. Чтобы отключить проверки запросов по политике доступа, [удалите](delete.md) ее. ||
|| `Statement[].Sid` | **string**

(Опционально) Идентификатор правила.

Параметр задается пользователем.

Примеры значений: `test-rule`, `Statement Allow`, `Statement Deny`. ||
|| `Statement[].Principal` | **string**

(Опционально) Идентификатор субъекта запрошенного разрешения. Получателем может быть [пользователь](../../../../organization/operations/users-get.md) или [сервисный аккаунт](../../../../iam/operations/sa/get-id.md).

Возможные значения:
* `"*"`.
* `"CanonicalUser": "<идентификатор_субъекта>"`.


Object Storage определяет субъекта в процессе аутентификации. Подробнее об аутентификации в API сервиса в разделе [Как пользоваться S3 API](../../index.md). ||
|| `Statement[].NotPrincipal` | **string**

(Опционально) Идентификатор субъекта, который не получит запрошенного разрешения. В качестве субъекта может выступать [пользователь](../../../../organization/operations/users-get.md) или [сервисный аккаунт](../../../../iam/operations/sa/get-id.md).

Возможное значение: `"CanonicalUser": "<идентификатор_субъекта>"`.

 ||
|| `Statement[].Effect` | **string**

Определяет запрет или разрешение запрошенного действия.

Возможные значения: `Allow`, `Deny`. ||
|| `Statement[].Action` | **string**

Определяет [действие](actions.md), которое выполнится при срабатывании политики.

Возможные значения: `s3:GetObject`, `s3:PutObject`. ||
|| `Statement[].Resource` | **string**

Определяет ресурс, в отношении которого будет произведено действие.

Возможные значения:
* `arn:aws:s3:::<имя_бакета>` — бакет.
* `arn:aws:s3:::<имя_бакета>/<ключ_объекта>` — объект в бакете.
* `arn:aws:s3:::<имя_бакета>/<префикс_ключей_объектов>*` — все объекты в бакете, ключи которых начинаются с префикса, например `arn:aws:s3:::samplebucket/some/path/*`. Префикс может быть пустым: `arn:aws:s3:::samplebucket/*` — тогда правило будет относиться ко всем объектам в бакете.

Ресурс бакета не включает в себя ресурсы всех его объектов. Чтобы правило в политике доступа относилось к бакету и всем объектам, их нужно указать как отдельные ресурсы, например `arn:aws:s3:::samplebucket` и `arn:aws:s3:::samplebucket/*`. ||
|| `Statement[].Condition{}.` | **string**

(Опционально) [Условие](conditions.md), которое будет проверяться.

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

Для условия `aws:sourceip` поддержан особый порядок [проверки IP-адресов обратных прокси-серверов](../../../concepts/policy.md#access-via-reverse-proxy). Если нужно проверять только исходный IP-адрес без учета прокси, используйте [условие](conditions.md#keys) `yc:originip`. ||
|| `Statement[].Condition{}.`
`condition_type_string{}.` | **string**

Тип условия.

Возможные значения: `StringEquals`, `Bool`. Полный список значений смотрите в разделе [Операторы сравнения](conditions.md#condition-operators). ||
|| `Statement[].Condition{}.`
`condition_type_string{}.`
`condition_key_string` | **string**

Ключ условия.

Определяет условие, значение которого будет проверяться.

Возможные значения: `aws:PrincipalType`, `true`.

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

Если для одного ключа условия задано одновременно несколько значений, эти значения будут проверяться с логикой `ИЛИ`, то есть для выполнения правила ключ условия может соответствовать любому из заданных значений. ||
|#

#### Связанные статьи {#related-articles}

* [Политика доступа (bucket policy)](../../../concepts/policy.md)

#### Полезные ссылки {#see-also}

* [Начало работы с AWS S3 API в Yandex Object Storage](../../s3-api-quickstart.md)

* [Отладка запросов с помощью утилиты AWS CLI](../../signing-requests.md#debugging)

* [Пример отправки подписанного запроса с помощью утилиты curl](../../../api-ref/authentication.md#s3-api-example)

* [Пример кода для генерации подписи](../../../concepts/pre-signed-urls.md#code-examples)