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

Управляйте доступом к своим ресурсам с помощью системы управления идентификацией и доступом (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 пользователям вашего проекта.

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

Роль Разрешения Описание
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
Доступ к аналитическим данным, статистике и ключевым визуализациям можно получить по запросу.
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 Восстановите базу данных из резервной копии.
Название разрешения для получения аналитических данных Описание
datastore.insights.get Получите представление о ресурсе.
имя разрешения учетных данных пользователя Описание
datastore.userCreds.get Получите подробную информацию об учетных данных пользователя.
datastore.userCreds.list Отобразить список доступных учетных данных пользователя.
datastore.userCreds.create Создайте учетные данные пользователя.
datastore.userCreds.update Включить или отключить учетные данные пользователя, а также сбросить пароль пользователя.
datastore.userCreds.delete Удалите учетные данные пользователя.

Задержка при смене роли

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

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

Вы можете получать и устанавливать политики 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 для доступа к одной или нескольким базам данных, см. раздел «Настройка условий доступа к базе данных» .

Что дальше?