Временный доступ к ресурсам GCP - PullRequest
6 голосов
/ 21 июня 2020
• 1000 1001 *

Я пытаюсь создать подобное решение и для GCP. Я хочу предоставить доступ пользователям (будет 500 одновременных пользователей). Может ли кто-нибудь подсказать, что может быть лучшим подходом

A cc. в моих исследованиях и разработках можно использовать учетные записи служб, но есть некоторые ограничения проекта.

Ответы [ 3 ]

3 голосов
/ 22 июня 2020

Вы можете использовать условие IAM . Do c интересен, если вы хотите скрипт доступа. Для теста вы можете использовать консоль

Начните с добавления или редактирования разрешения на странице IAM. Выберите роль, а затем нажмите «Добавить разрешения» enter image description here

Name your condition and choose the condition(s).

enter image description here

EDIT

You can use the API непосредственно для этого

Вы также можете использовать клиентскую библиотеку. Специальной библиотеки для диспетчера ресурсов нет, вы должны использовать API обнаружения . Здесь описание диспетчера ресурсов v1

Итак, в Python код выглядит так

import googleapiclient.discovery
resourceManager = googleapiclient.discovery.build("cloudresourcemanager","v1")
result = resourceManager.projects().getIamPolicy(resource="<ProjectId>").execute()
print(result)
body={
'policy': {
  'bindings': [
    {
      'role': 'roles/storage.objectViewer',
      'members': [
        'user:myUser@example.com'
      ],
      'condition': {
        'title': 'expirable access',
        'expression': 'request.time < timestamp("2020-10-01T00:00:00.000Z")'
      }
    }
  ],
  'version': 3
  }
}
result = resourceManager.projects().setIamPolicy(resource="<ProjectId>", body=body).execute()
print(result)

Примечание: нужно повторить блок привязки c для каждой роли, которую вы хотите предоставить

БУДЬТЕ ОСТОРОЖНЫ

В обоих случаях вы устанавливаете политику IAM, это стереть / заменить существующую политику по проекту. Между прочим, одна из хороших практик - выполнить getIamPolicy (также в моем примере) до и обновить результаты перед его установкой.

2 голосов
/ 21 июня 2020

GCP имеет краткосрочные учетные данные учетной записи службы :

В процессе участвует вызывающий, который является либо учетной записью Google, либо служебной учетной записью, и который делает запрос на создание краткосрочных учетных данных для второй учетной записи службы .

Вы можете, например, сгенерировать OAuth 2.0 токены доступа с определенными разрешениями c, которые действительны в течение 1 часа.

** Обратите внимание, что учетные записи служб отличаются от учетных записей обычных пользователей тем, что они принадлежат определенным ресурсам c GCP, таким как виртуальные машины, и не являются частью домена G Suite. У них также нет возможности войти в систему через браузер.

0 голосов
/ 21 июня 2020

В GCP вы можете использовать Google Identity Platform для хранения идентификационных данных пользователя с именем пользователя и паролем. https://developers.google.com/identity

Доступны различные типы хранилищ идентификационных данных, и вы можете выбрать один из них из списка. В списке Google Cloud-> Identity Provider-> provider выберите опцию Email / Password (прикрепленный снимок экрана введите описание изображения здесь ). Вы можете использовать Google Firestore для сохранения пользовательских данных.

Cloud Firestore (№ SQL) - это гибкая масштабируемая база данных для мобильных, веб-приложений и разработки серверов с помощью Firebase и Google Cloud Platform.

Я обычно объединяю это с Google Firebase и создаю пользовательский интерфейс для ускорения разработки.

...