[Документация Yandex Cloud](../../../index.md) > [Yandex Object Storage](../../index.md) > [Пошаговые инструкции](../index.md) > Бакеты > Управление политикой доступа

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

В Object Storage реализовано несколько механизмов для управления доступом к ресурсам. Алгоритм взаимодействия этих механизмов приведен в [Обзор способов управления доступом в Object Storage](../../security/overview.md).

[Политики доступа (bucket policy)](../../concepts/policy.md) устанавливают права на действия с [бакетами](../../concepts/bucket.md), [объектами](../../concepts/object.md) и группами объектов.

Образцы политик доступа для решения конкретных задач приведены в подразделе [Примеры конфигураций](../../concepts/policy.md#config-examples).


{% note warning %}

Если вы хотите настроить политику доступа для бакета и подключаться к нему из кластера Apache Hive™ Metastore или Yandex Managed Service for Apache Airflow™, вам потребуется дополнительная настройка инфраструктуры. Подробнее в инструкциях для [Apache Hive™ Metastore](../../../metadata-hub/operations/metastore/s3-policy-connect.md) и [Managed Service for Apache Airflow™](../../../managed-airflow/operations/s3-policy-connect.md).

{% endnote %}


## Применить или изменить политику {#apply-policy}

Минимально необходимая роль для применения или изменения политики доступа — `storage.configurer`. Смотрите [описание роли](../../security/index.md#storage-configurer).

{% note info %}

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

{% endnote %}

Для применения или изменения политики доступа к бакету:

{% list tabs group=instructions %}

- Консоль управления {#console}

  1. В [консоли управления](https://kz.console.yandex.cloud) выберите каталог.
  1. [Перейдите](https://kz.console.yandex.cloud/link/storage) в сервис **Object Storage**.
  1. Выберите бакет, в котором нужно настроить политику доступа.
  1. На панели слева выберите ![image](../../../_assets/console-icons/persons-lock.svg) **Безопасность** и перейдите на вкладку **Политика доступа**.
  1. Нажмите кнопку **Настроить доступ**.
  1. Введите идентификатор политики доступа.
  1. Настройте правило:
     1. Введите идентификатор правила.
     1. Настройте параметры правила:
        * **Результат** — разрешить или запретить.
        * **Принцип выбора** — включить или исключить пользователей.
        * **Пользователь** — выберите всех пользователей или задайте набор конкретных субъектов.

            Чтобы задать набор конкретных субъектов:
            
            * Выберите опцию `Выбрать пользователей`.

            * Выберите нужных [субъектов](../../../iam/concepts/access-control/index.md#subject) из списка. Для этого поместите курсор в поле для ввода данных субъекта и в появившейся форме выберите нужного [пользователя](../../../overview/roles-and-resources.md#users), [сервисный аккаунт](../../../iam/concepts/users/service-accounts.md), [группу пользователей](../../../organization/concepts/groups.md), [системную группу](../../../iam/concepts/access-control/system-group.md) или [публичную группу](../../../iam/concepts/access-control/public-group.md). При необходимости воспользуйтесь соответствующими вкладками формы или строкой поиска по имени или электронному адресу субъекта.

                Вы можете выбрать одновременно нескольких субъектов, для этого выбирайте их поочередно.

        * **Действие**, для которого создается правило. Вы также можете выбрать опцию **Все действия**.
        * **Ресурс** — по умолчанию указан выбранный бакет. Чтобы добавить другие ресурсы в правило, нажмите кнопку **Добавить ресурс**.

            {% note info %}

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

            {% endnote %}

     1. При необходимости добавьте [условие](../../s3/api-ref/policy/conditions.md) для правила:
        * Выберите **Ключ** из списка.
        * Выберите **Оператор** из списка. Чтобы оператор действовал в существующих полях, выберите опцию **Применить, если поле существует**. Тогда, если поля не существует, условие будет считаться выполненным.
        * Введите **Значение**.
        * Нажмите кнопку **Добавить значение**, чтобы добавить дополнительное значение в условие.

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

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

  1. При необходимости добавьте другие правила и настройте их.
  1. (Опционально) Чтобы разрешить доступ к бакету через консоль управления, нажмите кнопку **Добавить правило для доступа из консоли**. Подробнее в разделе [Доступ к бакету через консоль управления](../../concepts/policy.md#console-access).
  1. Нажмите кнопку **Сохранить** и подтвердите удаление.

- Yandex Cloud CLI {#cli}

  Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), [установите и инициализируйте его](../../../cli/quickstart.md#install).

  По умолчанию используется каталог, указанный при [создании](../../../cli/operations/profile/profile-create.md) профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду `yc config set folder-id <идентификатор_каталога>`. Также для любой команды вы можете указать другой каталог с помощью параметров `--folder-name` или `--folder-id`. Если вы обращаетесь к ресурсу по имени, поиск будет выполнен в каталоге по умолчанию. Если вы обращаетесь к ресурсу по идентификатору, поиск будет выполнен глобально — во всех каталогах с учетом прав доступа.

  1. Посмотрите описание команды CLI для редактирования ACL бакета:

     ```bash
     yc storage bucket update --help
     ```

  1. Опишите конфигурацию политики доступа в виде [схемы данных](../../s3/api-ref/policy/scheme.md) в формате JSON:

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

     Где:

     * `Version` — версия описания политик доступа. Необязательный параметр.
     * `Statement` — правила политики доступа:
       * `Effect` — запрет или разрешение запрошенного действия. Возможные значения: `Allow` и `Deny`.
       * `Principal` — идентификатор субъекта запрошенного разрешения. Получателем может быть [пользователь](../../../organization/operations/users-get.md), [сервисный аккаунт](../../../iam/operations/sa/get-id.md) или [группа пользователей](../../../organization/operations/manage-groups.md). Необязательный параметр. Возможные значения:
         * `"*"`.
         * `"CanonicalUser": "<идентификатор_субъекта>"`. 

         Идентификаторы можно получить следующими способами:

         * [Пользователь](../../../organization/operations/users-get.md).
         * [Сервисный аккаунт](../../../iam/operations/sa/get-id.md).
         * Группа пользователей — перейдите на вкладку [**Группы**](https://kz.center.yandex.cloud/organization/groups) в интерфейсе Cloud Center.

       * `Action` — [действие](../../s3/api-ref/policy/actions.md), которое будет разрешено при срабатывании политики. Возможные значения: `s3:GetObject`, `s3:PutObject` и `*` если необходимо применять политику ко всем действиям.
       * `Resource` — ресурс, к которому будет применяться правило.
       * `Condition` — [условие](../../s3/api-ref/policy/conditions.md), которое будет проверяться. Необязательный параметр.

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

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

  1. Выполните команду:

     ```bash
     yc storage bucket update \
       --name <имя_бакета> \
       --policy-from-file <путь_к_файлу_с_политиками>
     ```

     Результат:

     ```text
     name: my-bucket
     folder_id: csgeoelk7fl1********
     default_storage_class: STANDARD
     versioning: VERSIONING_SUSPENDED
     max_size: "10737418240"
     policy:
         Statement:
           Action: s3:GetObject
           Condition:
             Bool:
               aws:SecureTransport: "true"
             Effect: Allow
             Principal: '*'
             Resource: arn:aws:s3:::my-bucket
           Version: "2012-10-17"
     acl: {}
     created_at: "2022-12-14T08:42:16.273717Z"
     ```

- AWS CLI {#aws-cli}

  {% note info %}

  Для управления политикой доступа с помощью AWS CLI сервисному аккаунту должна быть назначена [роль](../../security/index.md#storage-admin) `storage.admin`.

  {% endnote %}

  Если у вас еще нет AWS CLI, [установите и сконфигурируйте его](../../tools/aws-cli.md).

  1. Опишите конфигурацию политики доступа в виде [схемы данных](../../s3/api-ref/policy/scheme.md) формата JSON:

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

     Где:

     * `Version` — версия описания политик доступа. Необязательный параметр.
     * `Statement` — правила политики доступа:
       * `Effect` — запрет или разрешение запрошенного действия. Возможные значения: `Allow` и `Deny`.
       * `Principal` — идентификатор субъекта запрошенного разрешения. Получателем может быть [пользователь](../../../organization/operations/users-get.md), [сервисный аккаунт](../../../iam/operations/sa/get-id.md) или [группа пользователей](../../../organization/operations/manage-groups.md). Необязательный параметр. Возможные значения:
         * `"*"`.
         * `"CanonicalUser": "<идентификатор_субъекта>"`. 

         Идентификаторы можно получить следующими способами:

         * [Пользователь](../../../organization/operations/users-get.md).
         * [Сервисный аккаунт](../../../iam/operations/sa/get-id.md).
         * Группа пользователей — перейдите на вкладку [**Группы**](https://kz.center.yandex.cloud/organization/groups) в интерфейсе Cloud Center.

       * `Action` — [действие](../../s3/api-ref/policy/actions.md), которое будет разрешено при срабатывании политики. Возможные значения: `s3:GetObject`, `s3:PutObject` и `*` если необходимо применять политику ко всем действиям.
       * `Resource` — ресурс, к которому будет применяться правило.
       * `Condition` — [условие](../../s3/api-ref/policy/conditions.md), которое будет проверяться. Необязательный параметр.

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

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

     Сохраните готовую конфигурацию в файле `policy.json`.
  1. Выполните команду:

     ```bash
     aws s3api put-bucket-policy \
       --endpoint https://storage.yandexcloud.kz \
       --bucket <имя_бакета> \
       --policy file://policy.json
     ```

- Terraform {#tf}

  {% note info %}
  
  Если вы работаете с Object Storage через Terraform от имени [сервисного аккаунта](../../../iam/concepts/users/service-accounts.md), [назначьте](../../../iam/operations/sa/assign-role-for-sa.md) сервисному аккаунту нужную [роль](../../security/index.md#roles-list), например `storage.admin`, на каталог, в котором будут создаваться ресурсы.
  
  {% endnote %}

  Если у вас еще нет Terraform, [установите его и настройте провайдер Yandex Cloud](../../../tutorials/infrastructure-management/terraform-quickstart.md#install-terraform).
  
  
  Чтобы управлять инфраструктурой с помощью Terraform от имени сервисного аккаунта или пользовательских аккаунтов: аккаунта на Яндексе, федеративного аккаунта и локального пользователя, [аутентифицируйтесь](../../../terraform/authentication.md) соответствующим способом.

  По умолчанию для аутентификации в Object Storage Terraform использует IAM-токен. Кроме IAM-токена, для аутентификации в Object Storage можно использовать сервисный аккаунт и статические ключи доступа. Более подробная информация об особенностях аутентификации Terraform в Object Storage приведена в [документации провайдера](../../../terraform/resources/storage_bucket.md).

  
  {% note warning %}
  
  Для корректной работы Terraform в [регионе Казахстан](../../../overview/concepts/region.md) укажите в конфигурационном файле Terraform в блоке `provider` эндпоинты API Yandex Cloud и Object Storage: 
  
  ```hcl
  provider "yandex" {
    zone             = "kz1-a"
    endpoint         = "api.yandexcloud.kz:443"
    storage_endpoint = "https://storage.yandexcloud.kz"
  }
  ```
  
  Подробнее о настройках провайдера в разделе [Настройте провайдер](../../../tutorials/infrastructure-management/terraform-quickstart.md#configure-provider).
  
  {% endnote %}


  Для редактирования политики бакета вы можете использовать ресурсы:
  * [yandex_storage_bucket_policy](#tf-storage-bucket-policy);
  * [yandex_storage_bucket](#tf-storage-bucket) (устаревший способ).

  **yandex_storage_bucket_policy** {#tf-storage-bucket-policy}

  1. Откройте файл конфигурации Terraform и задайте политику с помощью ресурса `yandex_storage_bucket_policy`:

     ```hcl
     resource "yandex_storage_bucket_policy" "bpolicy" {
       bucket = "my-policy-bucket"
       policy = <<POLICY
     {
       "Version": "2012-10-17",
       "Statement": [
         {
           "Effect": "Allow",
           "Principal": "*",
           "Action": "s3:*",
           "Resource": [
             "arn:aws:s3:::my-policy-bucket/*",
             "arn:aws:s3:::my-policy-bucket"
           ]
         },
         {
           "Effect": "Deny",
           "Principal": "*",
           "Action": "s3:PutObject",
           "Resource": [
             "arn:aws:s3:::my-policy-bucket/*",
             "arn:aws:s3:::my-policy-bucket"
           ]
         }
       ]
     }
     POLICY
     }
     ```

     Где:
     
     * `bucket` — имя бакета. Обязательный параметр.
     * `policy` — имя политики. Обязательный параметр.
     
     Настройки политики:
     
     * `Version` — версия описания политик доступа. Обязательный параметр. Единственное поддерживаемое значение: `2012-10-17`.
     * `Statement` — правила политики доступа:
       * `Effect` — запрет или разрешение запрошенного действия. Возможные значения: `Allow` и `Deny`.
       * `Principal` — идентификатор субъекта запрошенного разрешения. Получателем может быть [пользователь](../../../organization/operations/users-get.md), [сервисный аккаунт](../../../iam/operations/sa/get-id.md) или [группа пользователей](../../../organization/operations/manage-groups.md). Необязательный параметр. Возможные значения:
         * `"*"`.
         * `"CanonicalUser": "<идентификатор_субъекта>"`. 
     
         Идентификаторы можно получить следующими способами:
     
         * [Пользователь](../../../organization/operations/users-get.md).
         * [Сервисный аккаунт](../../../iam/operations/sa/get-id.md).
         * Группа пользователей — перейдите на вкладку [**Группы**](https://kz.center.yandex.cloud/organization/groups) в интерфейсе Cloud Center.
     
       * `Action` — [действие](../../s3/api-ref/policy/actions.md), которое будет разрешено при срабатывании политики. Примеры возможных значений: `s3:GetObject`, `s3:PutObject`. `*` — если необходимо применять политику ко всем действиям.
       * `Resource` — ресурс, к которому будет применяться правило.
       * `Condition` — [условие](../../s3/api-ref/policy/conditions.md), которое будет проверяться. Необязательный параметр.
     
         Вы можете настроить для правила одновременно несколько условий и задать для каждого условия несколько ключей. При этом такие условия и их ключи будут проверяться с логикой `И`. То есть для выполнения правила запрос должен будет соответствовать сразу всем указанным признакам.
     
         Для каждого ключа условия вы можете задать одновременно несколько значений. При этом такие значения будут проверяться с логикой `ИЛИ`. То есть для выполнения правила запрос должен будет соответствовать любому из заданных значений ключа условия.

     Более подробная информация о параметрах ресурса `yandex_storage_bucket_policy` приведена в [документации провайдера](../../../terraform/resources/storage_bucket_policy.md).

  1. Примените изменения:

     1. В терминале перейдите в директорию с конфигурационным файлом.
     1. Проверьте корректность конфигурации с помощью команды:
     
        ```bash
        terraform validate
        ```
     
        Если конфигурация является корректной, появится сообщение:
     
        ```bash
        Success! The configuration is valid.
        ```
     
     1. Выполните команду:
     
        ```bash
        terraform plan
        ```
     
        В терминале будет выведен список ресурсов с параметрами. На этом этапе изменения не будут внесены. Если в конфигурации есть ошибки, Terraform на них укажет.
     1. Примените изменения конфигурации:
     
        ```bash
        terraform apply
        ```
     
     1. Подтвердите изменения: введите в терминале слово `yes` и нажмите **Enter**.

     Проверить изменения можно в [консоли управления](https://kz.console.yandex.cloud).

  **yandex_storage_bucket (устаревший способ)** {#tf-storage-bucket}

  1. Откройте файл конфигурации Terraform и задайте политику в параметре `policy` для ресурса `yandex_storage_bucket`:

     ```hcl
     resource "yandex_storage_bucket" "mybucket" {
       bucket     = "my-policy-bucket"
       policy     = <<POLICY
     {
       "Version": "2012-10-17",
       "Statement": [
         {
           "Effect": "Allow",
           "Principal": "*",
           "Action": "s3:*",
           "Resource": [
             "arn:aws:s3:::my-policy-bucket/*",
             "arn:aws:s3:::my-policy-bucket"
           ]
         },
         {
           "Effect": "Deny",
           "Principal": "*",
           "Action": "s3:PutObject",
           "Resource": [
             "arn:aws:s3:::my-policy-bucket/*",
             "arn:aws:s3:::my-policy-bucket"
           ]
         }
       ]
     }
     POLICY
     }
     ```

     Где:
     
     * `bucket` — имя бакета. Обязательный параметр.
     * `policy` — имя политики. Обязательный параметр.
     
     Настройки политики:
     
     * `Version` — версия описания политик доступа. Обязательный параметр. Единственное поддерживаемое значение: `2012-10-17`.
     * `Statement` — правила политики доступа:
       * `Effect` — запрет или разрешение запрошенного действия. Возможные значения: `Allow` и `Deny`.
       * `Principal` — идентификатор субъекта запрошенного разрешения. Получателем может быть [пользователь](../../../organization/operations/users-get.md), [сервисный аккаунт](../../../iam/operations/sa/get-id.md) или [группа пользователей](../../../organization/operations/manage-groups.md). Необязательный параметр. Возможные значения:
         * `"*"`.
         * `"CanonicalUser": "<идентификатор_субъекта>"`. 
     
         Идентификаторы можно получить следующими способами:
     
         * [Пользователь](../../../organization/operations/users-get.md).
         * [Сервисный аккаунт](../../../iam/operations/sa/get-id.md).
         * Группа пользователей — перейдите на вкладку [**Группы**](https://kz.center.yandex.cloud/organization/groups) в интерфейсе Cloud Center.
     
       * `Action` — [действие](../../s3/api-ref/policy/actions.md), которое будет разрешено при срабатывании политики. Примеры возможных значений: `s3:GetObject`, `s3:PutObject`. `*` — если необходимо применять политику ко всем действиям.
       * `Resource` — ресурс, к которому будет применяться правило.
       * `Condition` — [условие](../../s3/api-ref/policy/conditions.md), которое будет проверяться. Необязательный параметр.
     
         Вы можете настроить для правила одновременно несколько условий и задать для каждого условия несколько ключей. При этом такие условия и их ключи будут проверяться с логикой `И`. То есть для выполнения правила запрос должен будет соответствовать сразу всем указанным признакам.
     
         Для каждого ключа условия вы можете задать одновременно несколько значений. При этом такие значения будут проверяться с логикой `ИЛИ`. То есть для выполнения правила запрос должен будет соответствовать любому из заданных значений ключа условия.

     Более подробная информация о параметрах ресурса `yandex_storage_bucket` приведена в [документации провайдера](../../../terraform/resources/storage_bucket.md).

  1. Примените изменения:

     1. В терминале перейдите в директорию с конфигурационным файлом.
     1. Проверьте корректность конфигурации с помощью команды:
     
        ```bash
        terraform validate
        ```
     
        Если конфигурация является корректной, появится сообщение:
     
        ```bash
        Success! The configuration is valid.
        ```
     
     1. Выполните команду:
     
        ```bash
        terraform plan
        ```
     
        В терминале будет выведен список ресурсов с параметрами. На этом этапе изменения не будут внесены. Если в конфигурации есть ошибки, Terraform на них укажет.
     1. Примените изменения конфигурации:
     
        ```bash
        terraform apply
        ```
     
     1. Подтвердите изменения: введите в терминале слово `yes` и нажмите **Enter**.

     Проверить изменения можно в [консоли управления](https://kz.console.yandex.cloud).

- API {#api}

  Чтобы управлять политикой доступа, воспользуйтесь методом REST API [update](../../api-ref/Bucket/update.md) для ресурса [Bucket](../../api-ref/Bucket/index.md), вызовом gRPC API [BucketService/Update](../../api-ref/grpc/Bucket/update.md) или методом S3 API [PutBucketPolicy](../../s3/api-ref/policy/put.md). Если ранее для бакета уже была настроена политика доступа, то после применения новой политики она будет полностью перезаписана.

{% endlist %}

{% note info %}

Если к бакету применена политика доступа без правил, то доступ будет запрещен всем пользователям. Чтобы отключить проверки запросов по политике доступа, [удалите](policy.md#delete-policy) ее.

{% endnote %}

### Удалить правило {#delete-rule}

Чтобы удалить правило из политики доступа:

{% list tabs group=instructions %}

- Консоль управления {#console}

  1. В [консоли управления](https://kz.console.yandex.cloud) выберите каталог.
  1. [Перейдите](https://kz.console.yandex.cloud/link/storage) в сервис **Object Storage**.
  1. Выберите бакет, в котором нужно настроить политику доступа.
  1. На панели слева выберите ![image](../../../_assets/console-icons/persons-lock.svg) **Безопасность** и перейдите на вкладку **Политика доступа**.
  1. Нажмите кнопку **Настроить доступ**.
  1. Рядом с нужным правилом нажмите значок ![options](../../../_assets/console-icons/ellipsis.svg) и выберите **Удалить**.

  {% note tip %}
  
  Оставьте в политике доступа хотя бы одно правило. Если к бакету применена политика, в которой нет правил, по умолчанию будут запрещены все действия с бакетом для всех пользователей.

  Чтобы отключить проверку по политике доступа, [удалите политику](#delete-policy).
  
  {% endnote %}

{% endlist %}

## Просмотреть политику {#view-policy}

Минимально необходимая роль для просмотра политики доступа — `storage.configViewer`. Смотрите [описание роли](../../security/index.md#storage-config-viewer).

Чтобы просмотреть примененную к бакету политику доступа:

{% list tabs group=instructions %}

- Консоль управления {#console}

  1. В [консоли управления](https://kz.console.yandex.cloud) выберите каталог.
  1. [Перейдите](https://kz.console.yandex.cloud/link/storage) в сервис **Object Storage**.
  1. Выберите нужный бакет из списка.
  1. В меню слева выберите **Безопасность** и перейдите на вкладку **Политика доступа**.

- AWS CLI {#aws-cli}

  Выполните следующую команду:

  ```bash
  aws --endpoint https://storage.yandexcloud.kz s3api get-bucket-policy \
    --bucket <имя_бакета> \
    --output text
  ```

  Результат:

  ```json
  {
    "Policy": "{\"Version\":\"2012-10-17\",\"Statement\":{\"Effect\":\"Allow\",\"Principal\":\"*\",\"Action\":\"s3:GetObject\",\"Resource\":\"arn:aws:s3:::<имя_бакета>/*\",\"Condition\":{\"Bool\":{\"aws:SecureTransport\":\"true\"}}}}"
  }
  ```

  Подробнее о параметрах читайте в описании [схемы данных](../../s3/api-ref/policy/scheme.md).

- API {#api}

  Воспользуйтесь методом S3 API [GetBucketPolicy](../../s3/api-ref/policy/get.md).

{% endlist %}

## Удалить политику {#delete-policy}

Минимально необходимая роль для удаления политики доступа — `storage.configurer`. Смотрите [описание роли](../../security/index.md#storage-configurer).

Чтобы удалить политику доступа:

{% list tabs group=instructions %}

- Консоль управления {#console}

  1. В [консоли управления](https://kz.console.yandex.cloud) выберите каталог.
  1. [Перейдите](https://kz.console.yandex.cloud/link/storage) в сервис **Object Storage**.
  1. Выберите нужный бакет из списка.
  1. В меню слева выберите **Безопасность** и перейдите на вкладку **Политика доступа**.
  1. Нажмите значок ![options](../../../_assets/console-icons/ellipsis.svg) и выберите **Удалить политику доступа**.
  1. Нажмите кнопку **Удалить** и подтвердите удаление.

- AWS CLI {#aws-cli}

  Выполните следующую команду:

  ```bash
  aws --endpoint https://storage.yandexcloud.kz s3api delete-bucket-policy \
    --bucket <имя_бакета>
  ```

- Terraform {#tf}

  Если у вас еще нет Terraform, [установите его и настройте провайдер Yandex Cloud](../../../tutorials/infrastructure-management/terraform-quickstart.md#install-terraform).
  
  
  Чтобы управлять инфраструктурой с помощью Terraform от имени сервисного аккаунта или пользовательских аккаунтов: аккаунта на Яндексе, федеративного аккаунта и локального пользователя, [аутентифицируйтесь](../../../terraform/authentication.md) соответствующим способом.

  По умолчанию для аутентификации в Object Storage Terraform использует IAM-токен. Кроме IAM-токена, для аутентификации в Object Storage можно использовать сервисный аккаунт и статические ключи доступа. Более подробная информация об особенностях аутентификации Terraform в Object Storage приведена в [документации провайдера](../../../terraform/resources/storage_bucket.md).

  
  {% note warning %}
  
  Для корректной работы Terraform в [регионе Казахстан](../../../overview/concepts/region.md) укажите в конфигурационном файле Terraform в блоке `provider` эндпоинты API Yandex Cloud и Object Storage: 
  
  ```hcl
  provider "yandex" {
    zone             = "kz1-a"
    endpoint         = "api.yandexcloud.kz:443"
    storage_endpoint = "https://storage.yandexcloud.kz"
  }
  ```
  
  Подробнее о настройках провайдера в разделе [Настройте провайдер](../../../tutorials/infrastructure-management/terraform-quickstart.md#configure-provider).
  
  {% endnote %}


  Политика доступа может быть задана ресурсами `yandex_storage_bucket_policy` и `yandex_storage_bucket` (устаревший способ).

  1. Откройте конфигурационный файл Terraform с описанием политики бакета.

      * Если вы применили политику доступа к бакету с помощью ресурса `yandex_storage_bucket`:

        {% cut "yandex_storage_bucket" %}
        
        1. Найдите в конфигурационном файле параметры созданной ранее политики доступа, которую необходимо удалить:
      
            ```hcl
            resource "yandex_storage_bucket" "b" {
              bucket = "my-policy-bucket"
              policy = <<POLICY
            {
              "Version": "2012-10-17",
              "Statement": [
                {
                  "Effect": "Allow",
                  "Principal": "*",
                  "Action": "s3:*",
                  "Resource": [
                    "arn:aws:s3:::my-policy-bucket/*",
                    "arn:aws:s3:::my-policy-bucket"
                  ]
                },
                {
                  "Effect": "Deny",
                  "Principal": "*",
                  "Action": "s3:PutObject",
                  "Resource": [
                    "arn:aws:s3:::my-policy-bucket/*",
                    "arn:aws:s3:::my-policy-bucket"
                  ]
                }
              ]
            }
            POLICY
            }
            ```

        1. Удалите поле `policy` с описанием параметров политики доступа из конфигурационного файла.

        {% endcut %}

      * Если вы применили политику доступа к бакету с помощью ресурса `yandex_storage_bucket_policy`:

        {% cut "yandex_storage_bucket_policy" %}
        
        1. Найдите в конфигурационном файле параметры созданной ранее политики доступа, которую необходимо удалить:
      
            ```hcl
            resource "yandex_storage_bucket_policy" "bpolicy" {
              bucket = "my-policy-bucket"
              policy = <<POLICY
            {
              "Version": "2012-10-17",
              "Statement": [
              {
                "Effect": "Allow",
                "Principal": "*",
                "Action": "s3:*",
                "Resource": [
                  "arn:aws:s3:::my-policy-bucket/*",
                  "arn:aws:s3:::my-policy-bucket"
                ]
              },
              {
                "Effect": "Deny",
                "Principal": "*",
                "Action": "s3:PutObject",
                "Resource": [
                  "arn:aws:s3:::my-policy-bucket/*",
                  "arn:aws:s3:::my-policy-bucket"
                ]
              }
              ]
            }
            POLICY
            }
            ```

        1. Удалите блок `yandex_storage_bucket_policy` с описанием параметров политики доступа из конфигурационного файла.

        {% endcut %}

  1. Примените изменения:

     1. В терминале перейдите в директорию с конфигурационным файлом.
     1. Проверьте корректность конфигурации с помощью команды:
     
        ```bash
        terraform validate
        ```
     
        Если конфигурация является корректной, появится сообщение:
     
        ```bash
        Success! The configuration is valid.
        ```
     
     1. Выполните команду:
     
        ```bash
        terraform plan
        ```
     
        В терминале будет выведен список ресурсов с параметрами. На этом этапе изменения не будут внесены. Если в конфигурации есть ошибки, Terraform на них укажет.
     1. Примените изменения конфигурации:
     
        ```bash
        terraform apply
        ```
     
     1. Подтвердите изменения: введите в терминале слово `yes` и нажмите **Enter**.

     После этого в указанном каталоге будет удалена политика доступа к бакету. Проверить отсутствие политики доступа можно в [консоли управления](https://kz.console.yandex.cloud).

- API {#api}

  Воспользуйтесь методом S3 API [DeleteBucketPolicy](../../s3/api-ref/policy/delete.md).

{% endlist %}

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

[Примеры конфигурации](../../concepts/policy.md#config-examples)