Управление идентификацией и доступом (IAM)

Управляйте доступом к своим ресурсам с помощью Identity and Access Management (IAM). IAM позволяет предоставлять более детальный доступ к определённым ресурсам Google Cloud и предотвращает нежелательный доступ к другим ресурсам. На этой странице описаны разрешения и роли IAM для Cloud Firestore . Подробное описание IAM см. в документации IAM .

IAM позволяет вам использовать принцип безопасности наименьших привилегий , то есть предоставлять только необходимый доступ к вашим ресурсам.

IAM позволяет контролировать, кто (пользователь) имеет какие разрешения (роли) для тех или иных ресурсов, настраивая политики IAM. Политики IAM предоставляют пользователю одну или несколько ролей, предоставляя ему определённые разрешения. Например, можно назначить пользователю роль datastore.indexAdmin , которая позволяет создавать, изменять, удалять, перечислять и просматривать индексы.

Разрешения и роли

В этом разделе описываются разрешения и роли, поддерживаемые Cloud Firestore .

Требуемые разрешения для методов API

В следующей таблице перечислены разрешения, которые должен иметь вызывающий абонент для выполнения каждого действия:

Метод Требуемые разрешения
projects.databases.MongoDBCompatible
ListDatabases datastore.databases.getMetadata
ListIndexes datastore.indexes.list
Find datastore.entities.get
datastore.entities.list
Aggregate datastore.entities.get
datastore.entities.list
GetMore

Те же разрешения, которые требовались для вызова, создавшего курсор.

ListCollections datastore.entities.list
Count datastore.entities.list
Distinct datastore.entities.get
datastore.entities.list
CommitTransaction datastore.databases.get
AbortTransaction datastore.databases.get
EndSessions datastore.databases.get
KillCursors datastore.databases.get
Insert datastore.entities.create
Update datastore.entities.get
datastore.entities.list
datastore.entities.update
datastore.entities.create (только для обновления и вставки)
FindAndModify datastore.entities.get
datastore.entities.list
datastore.entities.update (только для замены или обновления)
datastore.entities.create (только для обновления и вставки)
datastore.entities.delete (только для удаления)
CreateCollection datastore.entities.create
projects.databases.indexes
create datastore.indexes.create
delete datastore.indexes.delete
get datastore.indexes.get
list datastore.indexes.list
projects.databases
create datastore.databases.create
delete datastore.databases.delete
get datastore.databases.getMetadata
list datastore.databases.list
patch datastore.databases.update
восстановить datastore.backups.restoreDatabase
clone datastore.databases.clone Клонировать базу данных.

Если ваш запрос clone содержит значение tags , то потребуются следующие дополнительные разрешения:

  • datastore.databases.createTagBinding

Если вы хотите проверить, успешно ли установлены привязки тегов, перечислив привязки, то потребуются следующие дополнительные разрешения:

  • datastore.databases.listTagBindings
  • datastore.databases.listEffectiveTags
projects.locations
get datastore.locations.get
list datastore.locations.list
projects.databases.backupschedules
get datastore.backupSchedules.get
list datastore.backupSchedules.list
create datastore.backupSchedules.create
update datastore.backupSchedules.update
delete datastore.backupSchedules.delete
projects.locations.backups
get datastore.backups.get
list datastore.backups.list
delete datastore.backups.delete
projects.databases.usercreds
get datastore.userCreds.get
list datastore.userCreds.list
create datastore.userCreds.create
enable datastore.userCreds.update
disable datastore.userCreds.update
resetPassword datastore.userCreds.update
delete datastore.userCreds.delete

Предопределенные роли

При использовании IAM каждый метод API в Cloud Firestore требует, чтобы учётная запись, отправляющая запрос API, имела соответствующие разрешения на использование ресурса. Разрешения предоставляются путём настройки политик, назначающих роли пользователю, группе или учётной записи службы. Помимо базовых ролей владельца, редактора и наблюдателя , вы можете назначать роли Cloud Firestore пользователям вашего проекта.

В таблице ниже перечислены роли IAM Cloud Firestore . Вы можете назначить несколько ролей пользователю, группе или учётной записи службы.

Роль Разрешения Описание
roles/datastore.owner appengine.applications.get

datastore.*

resourcemanager.projects.get
resourcemanager.projects.list
Полный доступ к Cloud Firestore .
roles/datastore.user appengine.applications.get

datastore.databases.get
datastore.databases.getMetadata
datastore.databases.list
datastore.entities.*
datastore.indexes.list
datastore.namespaces.get
datastore.namespaces.list
datastore.statistics.get
datastore.statistics.list

resourcemanager.projects.get
resourcemanager.projects.list
Доступ для чтения и записи к данным в базе данных Cloud Firestore . Предназначен для разработчиков приложений и учётных записей служб.
roles/datastore.viewer appengine.applications.get

datastore.databases.get
datastore.databases.getMetadata
datastore.databases.list
datastore.entities.get
datastore.entities.list
datastore.indexes.get
datastore.indexes.list
datastore.namespaces.get
datastore.namespaces.list
datastore.statistics.get
datastore.statistics.list

resourcemanager.projects.get
resourcemanager.projects.list
Доступ для чтения ко всем ресурсам Cloud Firestore .
roles/datastore.indexAdmin appengine.applications.get

datastore.databases.getMetadata

datastore.indexes.*

datastore.operations.list
datastore.operations.get
resourcemanager.projects.get
resourcemanager.projects.list
Полный доступ для управления определениями индексов.
roles/datastore.backupSchedulesViewer datastore.backupSchedules.get
datastore.backupSchedules.list
Доступ для чтения к расписаниям резервного копирования в базе данных Cloud Firestore .
roles/datastore.backupSchedulesAdmin datastore.backupSchedules.get
datastore.backupSchedules.list
datastore.backupSchedules.create
datastore.backupSchedules.update
datastore.backupSchedules.delete
datastore.databases.list
datastore.databases.getMetadata
Полный доступ к расписаниям резервного копирования в базе данных Cloud Firestore .
roles/datastore.backupsViewer datastore.backups.get
datastore.backups.list
Доступ для чтения к резервной информации в хранилище Cloud Firestore .
roles/datastore.backupsAdmin datastore.backups.get
datastore.backups.list
datastore.backups.delete
Полный доступ к резервным копиям в хранилище Cloud Firestore .
roles/datastore.restoreAdmin datastore.backups.get
datastore.backups.list
datastore.backups.restoreDatabase
datastore.databases.list
datastore.databases.create
datastore.databases.getMetadata
datastore.operations.list
datastore.operations.get
Возможность восстановления резервной копии Cloud Firestore в новую базу данных. Эта роль также позволяет создавать новые базы данных, не обязательно восстанавливая их из резервной копии.
roles/datastore.cloneAdmin datastore.databases.clone
datastore.databases.list
datastore.databases.create
datastore.databases.getMetadata
datastore.operations.list
datastore.operations.get
Возможность клонировать базу данных Cloud Firestore в новую базу данных. Эта роль также позволяет создавать новые базы данных, не обязательно клонируя их.
roles/datastore.statisticsViewer resourcemanager.projects.get
resourcemanager.projects.list
datastore.databases.getMetadata
datastore.insights.get
datastore.keyVisualizerScans.get
datastore.keyVisualizerScans.list
datastore.statistics.list
datastore.statistics.get
Доступ для чтения к результатам сканирования Insights, Stats и Key Visualizer.
roles/datastore.userCredsViewer datastore.userCreds.get
datastore.userCreds.list
Доступ для чтения к учетным данным пользователя в базе данных Cloud Firestore .
roles/datastore.userCredsAdmin datastore.userCreds.get
datastore.userCreds.list
datastore.userCreds.create
datastore.userCreds.update
datastore.userCreds.delete
datastore.databases.list
datastore.databases.getMetadata
Полный доступ к учетным данным пользователей в базе данных Cloud Firestore .

Пользовательские роли

Если предопределенные роли не отвечают вашим бизнес-требованиям, вы можете определить собственные роли с указанными вами разрешениями:

Необходимые роли для создания и управления тегами

Если какой-либо тег представлен в действиях создания или восстановления, требуются определённые роли. Подробнее о создании пар «ключ-значение» тега перед их связыванием с ресурсами базы данных см. в разделе «Создание и управление тегами».

Требуются следующие разрешения.

Просмотреть теги
  • datastore.databases.listTagBindings
  • datastore.databases.listEffectiveTags
Управление тегами ресурсов

Для ресурса базы данных, к которому вы прикрепляете значение тега, требуется следующее разрешение.

  • datastore.databases.createTagBinding

Разрешения

В следующей таблице перечислены разрешения, поддерживаемые Cloud Firestore .

Имя разрешения базы данных Описание
datastore.databases.get Начать или откатить транзакцию.
datastore.databases.getMetadata Чтение метаданных из базы данных.
datastore.databases.list Перечисление баз данных в проекте.
datastore.databases.create Создайте базу данных.
datastore.databases.update Обновление базы данных.
datastore.databases.delete Удалить базу данных.
datastore.databases.clone Клонировать базу данных.
datastore.databases.createTagBinding Создайте привязку тегов для базы данных.
datastore.databases.deleteTagBinding Удалить привязку тега к базе данных.
datastore.databases.listTagBindings Перечислить все привязки тегов для базы данных.
datastore.databases.listEffectiveTagBindings Перечислите эффективные привязки тегов для базы данных.
Имя разрешения объекта Описание
datastore.entities.create Создайте документ.
datastore.entities.delete Удалить документ.
datastore.entities.get Прочитать документ.
datastore.entities.list Перечислите названия документов в проекте.
( Для доступа к данным документа требуется datastore.entities.get .)
datastore.entities.update Обновить документ.
Имя разрешения индекса Описание
datastore.indexes.create Создайте индекс.
datastore.indexes.delete Удалить индекс.
datastore.indexes.get Чтение метаданных из индекса.
datastore.indexes.list Перечислите индексы в проекте.
datastore.indexes.update Обновить индекс.
Имя разрешения операции Описание
datastore.operations.cancel Отменить длительную операцию.
datastore.operations.delete Удалить длительную операцию.
datastore.operations.get Получает последнее состояние длительной операции.
datastore.operations.list Перечислите длительные операции.
Название разрешения проекта Описание
resourcemanager.projects.get Просмотрите ресурсы проекта.
resourcemanager.projects.list Перечислите собственные проекты.
Имя разрешения местоположения Описание
datastore.locations.get Получить информацию о местоположении базы данных. Требуется для создания новой базы данных.
datastore.locations.list Список доступных расположений баз данных. Требуется для создания новой базы данных.
Имя разрешения Key Visualizer Описание
datastore.keyVisualizerScans.get Получите подробную информацию о сканировании Key Visualizer.
datastore.keyVisualizerScans.list Перечислите доступные сканы Key Visualizer.
Имя разрешения расписания резервного копирования Описание
datastore.backupSchedules.get Получите подробную информацию о графике резервного копирования.
datastore.backupSchedules.list Список доступных расписаний резервного копирования.
datastore.backupSchedules.create Создайте график резервного копирования.
datastore.backupSchedules.update Обновите расписание резервного копирования.
datastore.backupSchedules.delete Удалить расписание резервного копирования.
Имя разрешения на резервное копирование Описание
datastore.backups.get Получите подробную информацию о резервной копии.
datastore.backups.list Список доступных резервных копий.
datastore.backups.delete Удалить резервную копию.
datastore.backups.restoreDatabase Восстановление базы данных из резервной копии.
Имя разрешения Insights Описание
datastore.insights.get Получить представление о ресурсе
Имя разрешения учетных данных пользователя Описание
datastore.userCreds.get Получите подробную информацию об учетных данных пользователя.
datastore.userCreds.list Список доступных учетных данных пользователя.
datastore.userCreds.create Создайте учетные данные пользователя.
datastore.userCreds.update Включить или отключить учетные данные пользователя или сбросить пароль пользователя.
datastore.userCreds.delete Удалить учетные данные пользователя.

Задержка смены ролей

Cloud Firestore кэширует разрешения IAM на 5 минут, поэтому для вступления изменения роли в силу требуется до 5 минут.

Управление IAM Cloud Firestore

Вы можете получать и настраивать IAM-политики с помощью консоли Google Cloud, API IAM или инструмента командной строки gcloud . Подробнее см. в разделе «Предоставление, изменение и отзыв доступа участникам проекта» .

Настройте условные разрешения доступа

Условия IAM можно использовать для определения и реализации условного контроля доступа.

Например, следующее условие назначает субъекту роль datastore.user до указанной даты:

{
  "role": "roles/datastore.user",
  "members": [
    "user:travis@example.com"
  ],
  "condition": {
    "title": "Expires_December_1_2023",
    "description": "Expires on December 1, 2023",
    "expression":
      "request.time < timestamp('2023-12-01T00:00:00.000Z')"
  }
}

Чтобы узнать, как определить условия IAM для временного доступа, см. раздел Настройка временного доступа .

Информацию о настройке условий IAM для доступа к одной или нескольким базам данных см. в разделе Настройка условий доступа к базе данных .

Что дальше?