---
title: 'Управлять доступом к S3'
sidebar_label: 'Управлять доступом к S3'
sidebar_position: 3
description: 'Как доступ к S3 регулируется проектами, ролями и политиками доступа; какие есть ключи API для доступа через API'
---

import Formbricks from '@theme/MDXComponents/Formbricks'
import Tabs from '@theme/Tabs'
import TabItem from '@theme/TabItem'
import {TabItemLabel} from '@selectel/docux/components'
import {CustomTable} from '@selectel/docux/components'
import IssueS3Key from '@site/docs/_partials/common/issue-s3-key.mdx'

# Управлять доступом к S3

Доступ к ресурсам S3 регулируется:

* [проектами](#access-within-projects) — определяют доступ в рамках изолированной группы ресурсов;
* [ролями](#access-within-roles) — определяют доступ [пользователей панели](/access-control/user-types.mdx#panel-users), [сервисных пользователей](/access-control/user-types.mdx#service-users) и [групп](/access-control/groups/) в рамках аккаунта и проекта.
* [политикой доступа](/s3/buckets/bucket-policy/) — определяет доступ в рамках бакета.

При получении запроса на действие в S3 сначала проверяется роль пользователя.
Если роль:

* не разрешает действие — доступ запрещается;
* разрешает действие — проверяется наличие и настройки политики доступа. Если политика доступа:

  * не создана — доступ будет разрешен всем пользователям с [доступом в рамках ролей](#access-within-roles), кроме пользователей с ролями [object\_storage\_user](#object-storage-user), [s3.user](#s3-user) и [s3.bucket.user](#s3-bucket-user);
  * создана — запрещено все, что не разрешено правилами политики.

Для доступа через [API](/api/#data-storage-and-processing), [инструменты автоматизации](/s3/tools/) и по [FTP](/s3/tools/ftp.mdx) используйте [ключи](#keys-for-api-access).

Подробнее об управлении доступом в инструкции [Управление доступом в продуктах Selectel](/access-control/access-management.mdx).

## Доступ в рамках проектов \{#access-within-projects}

Все ресурсы в S3 создаются в определенном [проекте](/access-control/projects/about-projects.mdx).
Вы можете группировать ресурсы по разным проектам и настраивать [разрешения](/access-control/access-management.mdx#permissions) пользователей в зависимости от того, в какие проекты у них должен быть доступ.

## Доступ в рамках ролей \{#access-within-roles}

Доступ к S3 дают [роли S3](#s3-roles) и [глобальные роли](#global-roles).
Подробнее о типах ролей в инструкции [Справочник ролей](/access-control/role-reference.mdx).

<CustomTable>
  <table>
    <thead>
      <tr>
        <th>Группа ролей</th>
        <th>Роль</th>
        <th>Доступ</th>
      </tr>
    </thead>

    <tbody>
      <tr>
        <th rowspan="5">Роли S3</th>
        <th>[s3.admin](#s3-admin)</th>
        <td>Управление всеми бакетами в проекте</td>
      </tr>

      <tr>
        <th>[s3.user](#s3-user)</th>
        <td>Управление определенным бакетом и просмотр списка бакетов</td>
      </tr>

      <tr>
        <th>[s3.bucket.user](#s3-bucket-user)</th>
        <td>Управление определенным бакетом</td>
      </tr>

      <tr>
        <th>[object\_storage:admin](#object-storage-admin)</th>
        <td>Управление всеми бакетами в проекте</td>
      </tr>

      <tr>
        <th>[object\_storage\_user](#object-storage-user)</th>
        <td>Управление определенным бакетом</td>
      </tr>

      <tr>
        <th rowspan="5">Глобальные роли</th>
        <th>[member](#member)</th>
        <td>Управление S3 и другими продуктами, аккаунтом, биллингом, проектами</td>
      </tr>

      <tr>
        <th>[billing](#billing)</th>
        <td>Управление биллингом в S3 и других продуктах</td>
      </tr>

      <tr>
        <th>[iam.admin](#iam-admin)</th>
        <td>Управление доступами к S3 и другим продуктам</td>
      </tr>

      <tr>
        <th>[iam.viewer](#iam-viewer)</th>
        <td>Просмотр доступов к S3 и другим продуктам</td>
      </tr>

      <tr>
        <th>[reader](#reader)</th>
        <td>Просмотр ресурсов S3 и всех продуктов, аккаунта, биллинга, проектов</td>
      </tr>
    </tbody>
  </table>
</CustomTable>

### Роли S3 \{#s3-roles}

#### s3.admin \{#s3-admin}

Роль `s3.admin` дает доступ к управлению [S3](/s3/) в рамках проекта.
Не имеет доступа к S3 в других проектах и к другим продуктам в своем проекте.

<CustomTable>
  <table>
    <tbody>
      <tr>
        <th>Области доступа</th>
        <td>Проект</td>
      </tr>

      <tr>
        <th>Кому можно назначить</th>
        <td>Сервисным пользователям</td>
      </tr>

      <tr>
        <th>Доступные операции в S3</th>

        <td>
          * просмотр списка бакетов в своем проекте;
          * просмотр содержимого бакетов в своем проекте;
          * управление бакетами в своем проекте:

            * создание бакетов;
            * управление объектами в бакетах (загрузка, изменение настроек, удаление);
            * изменение настроек бакетов (управление версионированием, включение Object Lock, изменение типа бакета, адресации, настройка лимитов)`*`;
            * удаление бакетов
        </td>
      </tr>
    </tbody>
  </table>
</CustomTable>

`*` Недоступно управление политиками доступа и обход временной блокировки Object Lock в панели управления.

#### s3.user \{#s3-user}

Роль `s3.user` дает доступ в бакет [S3](/s3/), если в нем настроена [политика доступа](/s3/buckets/bucket-policy/), которая разрешает доступ к бакету этому пользователю.
Степень доступа определяется настройками политики доступа.
Не имеет доступа к S3 в других проектах и к другим продуктам в своем проекте.

<CustomTable>
  <table>
    <tbody>
      <tr>
        <th>Области доступа</th>
        <td>Проект</td>
      </tr>

      <tr>
        <th>Кому можно назначить</th>
        <td>Сервисным пользователям</td>
      </tr>

      <tr>
        <th>Доступные операции в S3</th>

        <td>
          * просмотр списка бакетов в своем проекте;
          * операции в бакете, которые разрешены политикой доступа
        </td>
      </tr>
    </tbody>
  </table>
</CustomTable>

#### s3.bucket.user \{#s3-bucket-user}

Роль `s3.bucket.user` дает доступ в бакет [S3](/s3/), если в нем настроена [политика доступа](/s3/buckets/bucket-policy/), которая разрешает доступ к бакету этому пользователю.
Степень доступа определяется настройками политики доступа.
Не имеет доступа к S3 в других проектах и к другим продуктам в своем проекте.

<CustomTable>
  <table>
    <tbody>
      <tr>
        <th>Области доступа</th>
        <td>Проект</td>
      </tr>

      <tr>
        <th>Кому можно назначить</th>
        <td>Сервисным пользователям</td>
      </tr>

      <tr>
        <th>Доступные операции в S3</th>
        <td>Операции в бакете, которые разрешены политикой доступа</td>
      </tr>
    </tbody>
  </table>
</CustomTable>

#### object\_storage.admin \{#object-storage-admin}

:::info

Роль `object_storage:admin` скоро будет удалена, ее нельзя назначать новым пользователям.
Существующие пользователи с ролью `object_storage:admin` продолжают работать.

:::

Устаревшая версия роли [s3.admin](#s3-admin).
Обладает идентичными правами.

#### object\_storage\_user \{#object-storage-user}

:::info

Роль `object_storage_user` скоро будет удалена, ее нельзя назначать новым пользователям.
Существующие пользователи с ролью `object_storage_user` продолжают работать.

:::

Устаревшая версия роли [s3.user](#s3-user).
Обладает идентичными правами.

### Глобальные роли \{#global-roles}

#### member \{#member}

Роль `member` дает полный доступ ко всем сервисам.
Не дает доступ к управлению [пользователями панели](/access-control/manage/), [сервисными пользователями](/access-control/user-types.mdx#service-users), [группами пользователей](/access-control/groups/) и [федерациями](/access-control/federations/).

<CustomTable>
  <table>
    <tbody>
      <tr>
        <th>Области доступа</th>

        <td>
          * аккаунт;
          * проект
        </td>
      </tr>

      <tr>
        <th>Кому можно назначить</th>

        <td>
          * пользователям;
          * сервисным пользователям;
          * группам пользователей
        </td>
      </tr>

      <tr>
        <th rowspan="2">Доступные операции в S3</th>

        <td>
          В области доступа Аккаунт:

          * просмотр списка бакетов во всех проектах;

          * управление бакетами во всех проектах:

            * создание бакетов;
            * изменение настроек бакетов (управление политиками доступа, версионированием, включение Object Lock, изменение типа бакета, адресации, настройка лимитов);
            * управление объектами в бакетах (загрузка, изменение настроек, удаление);
            * обход временной блокировки режима Governance (Object Lock);

          * управление проектами, их лимитами и квотами;

          * управление биллингом и просмотр потребления
        </td>
      </tr>

      <tr>
        <td>
          В области доступа Проект:

          * просмотр списка бакетов в своем проекте;
          * управление бакетами в своем проекте:

            * создание бакетов;
            * изменение настроек бакетов (управление политиками доступа, версионированием, включение Object Lock, изменение типа бакета, адресации, настройка лимитов);
            * управление объектами в бакетах (загрузка, изменение настроек, удаление);
            * обход временной блокировки режима Governance (Object Lock)
        </td>
      </tr>
    </tbody>
  </table>
</CustomTable>

#### billing \{#billing}

Роль `billing` дает доступ к управлению биллингом без доступа к управлению услугами.

<CustomTable>
  <table>
    <tbody>
      <tr>
        <th>Области доступа</th>
        <td>Аккаунт</td>
      </tr>

      <tr>
        <th>Кому можно назначить</th>

        <td>
          * пользователям;
          * сервисным пользователям;
          * группам пользователей
        </td>
      </tr>

      <tr>
        <th>Доступные операции в S3</th>

        <td>
          * управление биллингом;
          * просмотр потребления S3
        </td>
      </tr>
    </tbody>
  </table>
</CustomTable>

#### iam.admin \{#iam-admin}

Роль `iam.admin` дает доступ к управлению пользователями и не дает доступ к управлению продуктом и биллингом.
Не дает возможность управлять своей учетной записью: изменять разрешения, управлять уведомлениями, удалять пользователя.
Первого пользователя с ролью `iam.admin` создает [Владелец аккаунта](/access-control/user-types.mdx#account-owner).

<CustomTable>
  <table>
    <tbody>
      <tr>
        <th>Области доступа</th>
        <td>Аккаунт</td>
      </tr>

      <tr>
        <th>Кому можно назначить</th>

        <td>
          * пользователям;
          * сервисным пользователям;
          * группам пользователей
        </td>
      </tr>

      <tr>
        <th>Доступные операции в S3</th>

        <td>
          * управление [пользователями панели](/access-control/user-types.mdx#panel-users), [сервисными пользователями](/access-control/user-types.mdx#service-users) и [группами пользователей](/access-control/groups/);
          * выдача S3-ключей пользователям
        </td>
      </tr>
    </tbody>
  </table>
</CustomTable>

#### iam.viewer \{#iam-viewer}

Роль `iam.viewer` дает доступ к просмотру всего, чем управляет [iam.admin](#iam-admin).

<CustomTable>
  <table>
    <tbody>
      <tr>
        <th>Области доступа</th>
        <td>Аккаунт</td>
      </tr>

      <tr>
        <th>Кому можно назначить</th>

        <td>
          * пользователям;
          * сервисным пользователям;
          * группам пользователей
        </td>
      </tr>

      <tr>
        <th>Доступные операции в S3</th>
        <td>Просмотр [пользователей панели](/access-control/user-types.mdx#panel-users), [сервисных пользователей](/access-control/user-types.mdx#service-users) и [групп пользователей](/access-control/groups/)</td>
      </tr>
    </tbody>
  </table>
</CustomTable>

#### reader \{#reader}

Роль `reader` дает доступ к просмотру всего, чем управляет [member](#member) в той же области доступа.

<CustomTable>
  <table>
    <tbody>
      <tr>
        <th>Области доступа</th>

        <td>
          * аккаунт;
          * проект
        </td>
      </tr>

      <tr>
        <th>Кому можно назначить</th>

        <td>
          * пользователям;
          * сервисным пользователям;
          * группам пользователей
        </td>
      </tr>

      <tr>
        <th rowspan="2">Доступные операции в S3</th>

        <td>
          В области доступа Аккаунт:

          * просмотр бакетов во всех проектах:

            * просмотр списка бакетов;
            * просмотр настроек бакетов;
            * просмотр объектов в бакетах;

          * просмотр всех проектов, их лимитов и квот;

          * просмотр данных биллинга и потребления
        </td>
      </tr>

      <tr>
        <td>
          В области доступа Проект:

          * просмотр списка бакетов в своем проекте;
          * просмотр бакетов в своем проекте:

            * просмотр списка бакетов;
            * просмотр настроек бакетов;
            * просмотр объектов в бакетах
        </td>
      </tr>
    </tbody>
  </table>
</CustomTable>

## Ключи для доступа через API \{#keys-for-api-access}

В зависимости от типа API пользователю понадобится:

* [IAM-токен для проекта (X-Auth-Token)](/api/authorization/#iam-token-project-scoped). Используется для доступа через [Object Storage API](/api/object-storage/) и [Swift API](/api/object-storage-swift/). Можно выдавать только [сервисным пользователям](/access-control/user-types.mdx#service-users). Чтобы выдать IAM-токен для проекта, используйте подраздел [Получить IAM-токен для проекта](/api/authorization/#get-iam-token-project-scoped) инструкции [Аутентификация запросов](/api/authorization/) документации API;
* S3-ключ (EC2-ключ). Используется для подписи запросов [S3 API](/api/object-storage-s3/) и доступа по [FTP](/s3/tools/ftp.mdx). Состоит из пары значений — Access Key ID и Secret Key. S3-ключ можно [добавить себе](/account/manage-keys.mdx#add-s3-key) или [выдать другому пользователю](/access-control/manage/edit-user-data-or-role.mdx#issue-s3-key). Ключ можно выдавать [сервисным пользователям](/access-control/user-types.mdx#service-users) и [пользователям](/access-control/user-types.mdx#panel-users). При этом у пользователя должна быть [роль](#access-within-roles), которая разрешает доступ к S3.

<Formbricks />
