---
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/i18n/en/docusaurus-plugin-content-docs/current/_partials/common/issue-s3-key.mdx'

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

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

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

При получении запроса на действие в S3 сначала проверяется доступ пользователя по ролевой модели.
Если ролевая модель разрешает доступ пользователю, проверяется политика доступа, если нет — доступ запрещается.

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

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

## Доступ в рамках ролей \{#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](/s3/) в рамках проекта.
Не имеет доступа к 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.user \{#s3-user}

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

Отличается от роли [`s3.bucket.user`](#s3-bucket-user) только тем, что дает доступ к просмотру списка бакетов в проекте.

<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 в других проектах и другим продуктам в своем проекте.

Отличается роли [`s3.user`](#s3-user) только тем, что не дает доступ к просмотру списка бакетов в проекте.

<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>
          В области доступа Аккаунт:

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

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

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

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

            * просмотр списка бакетов;
            * просмотр содержимого бакетов;
            * управление объектами в бакете (загрузка, удаление и т. п.);
            * изменение настроек бакетов;
            * обход временной блокировки режима 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#users), [сервисными пользователями](/access-control/user-types.mdx#service-users), [группами пользователей](/access-control/groups/) и [федерациями](/access-control/federations/);
          * выдача [S3-ключей](#issue-s3-key) пользователям
        </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#users), [сервисных пользователей](/access-control/user-types.mdx#service-users), [групп пользователей](/access-control/groups/) и [федераций](/access-control/federations/);
          * просмотр [S3-ключей](#issue-s3-key) пользователей
        </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);
* [S3-ключ](#issue-s3-key) (EC2-ключ), используется для подписи запросов [S3 API](/api/object-storage-s3/) и доступа по [FTP](/s3/tools/ftp.mdx). Состоит из пары значений — Access Key ID и Secret Key. Можно выдавать [сервисным пользователям](/access-control/user-types.mdx#service-users) и [пользователям панели](/access-control/user-types.mdx#users).

## Выдать S3-ключ пользователю \{#issue-s3-key}

:::info

S3-ключ (EC2-ключ) нужно выдавать пользователю, которому разрешен доступ в S3 в рамках [ролевой модели](#access-within-roles).
Если роль пользователя не разрешает доступ в S3, S3-ключ бесполезен.

:::

<IssueS3Key />

<Formbricks />
