web-dev-qa-db-fra.com

Authentification dans les fonctions HTTP de Google Cloud

https://cloud.google.com/solutions/authentication-in-http-cloud-functions

Le document suggère de configurer un compartiment Google Cloud Storage. Et puis configurez l'autorisation des comptes de service, "storage.buckets.get", sur le compartiment.

Utilisez ensuite cette autorisation pour authentifier l'accès aux http Google Cloud Functions.

Nous parlons d'authentifier les fonctions du cloud http, mais nous empruntons la permission à un Google Cloud Storage. Il me semble que c'est une solution de piratage.

Si nous pouvons simplement configurer des autorisations directement sur chaque fonction cloud via la console Google Cloud, ce sera parfait.

Utilisez-vous la solution d'authentification suggérée par Google dans le document ci-dessus? Ou vous avez de meilleures approches?

Pour configurer le "" storage.buckets.get ", cela signifie-t-il que j'autorise le compte de service" Storage Object Viewer "?

enter image description here

9
searain

La solution proposée dans le lien que vous avez apporté ici est en effet l'une des voies. En fait, vous pouvez utiliser n'importe quel autre produit Google Cloud Platform (pas seulement les compartiments de stockage) pour vérifier les autorisations du compte choisi sur celui-ci.

Une alternative qui peut fonctionner est:

  1. Préparez une fonction cloud qui répertoriera les e-mails des utilisateurs autorisés.
  2. La fonction cloud récupère le 'Authorization' en-tête de la demande HTTP entrante qui contient le jeton généré pour le compte qui a effectué la demande.
  3. La fonction appelle le point de terminaison tokeninfo en utilisant l'en-tête mentionné pour récupérer l'e-mail du compte (à partir du corps de réponse JSON). L'URL renvoyant l'e-mail ressemblera à ceci:
url = "https://www.googleapis.com/oauth2/v1/tokeninfo?fields=email&access_token
    =" + token_from_the_request_header;
  1. Vérifier que l'e-mail retourné figure dans la liste des e-mails autorisés.
  2. ... si oui, exécution de la logique de la fonction.
3
arudzinska

Pour utiliser les fonctions cloud, vous devez placer vos modules dans des compartiments. En accordant l'autorisation de compte "storage.buckets.get" au compartiment, vous accordez l'autorisation au compte de service pour déclencher votre fonction cloud HTTP; et de même, vous révoquez l'autorisation en supprimant l'autorisation "storage.buckets.get" d'un autre compte de service.

Pour configurer l'autorisation 'storage.buckets.get' , vous devez sélectionner "Storage Admin" via les rôles standard ou "storage.legacyBucketReader"/"storage.legacyBucketWriter" dans les rôles hérités ou même - définir un rôle personnalisé avec l'autorisation 'storage.buckets.get'.

3
Katayoon