Restreindre les identités par domaine

Resource Manager fournit une contrainte de restriction de domaine pouvant être utilisée dans les règles d'administration pour limiter le partage des ressources en fonction du domaine ou de l'organisation. Ce vous permet de restreindre l'ensemble des identités autorisées utilisées dans les stratégies Identity and Access Management.

Les règles d'administration peuvent utiliser cette contrainte pour limiter le partage de ressources aux identités appartenant à une ressource organisationnelle spécifique. Par ailleurs, vous pouvez spécifier un ensemble d'un ou plusieurs domaines, et les exceptions peuvent être accordé par dossier ou par projet. Pour en savoir plus sur l'ajout des exceptions, consultez Remplacer la règle d'administration pour un projet

La contrainte de restriction de domaine n'est pas rétroactive. Cette limitation ne s'applique qu'aux modifications de stratégie IAM effectuées après la définition de la restriction de domaine, et non à celles apportées antérieurement. La contrainte de restriction de domaine s'applique à toutes les modifications des stratégies IAM, y compris les modifications apportées par un agent de service en réponse à une autre action. Par exemple, vous disposez d'un service automatisé qui importe des ensembles de données BigQuery et un agent de service BigQuery modifie les stratégies IAM sur un nouvel ensemble de données. Cette action sera limitée par la contrainte de restriction de domaine et bloquée.

Prenons l'exemple de deux organisations liées : examplepetstore.com et altostrat.com. Vous avez accordé un rôle IAM dans altostrat.com à une identité examplepetstore.com. Vous avez décidé ultérieurement d'effectuer un filtrage au niveau du domaine pour restreindre l'ensemble des identités utilisables, puis appliqué une règle d'administration avec la contrainte de restriction de domaine dans altostrat.com. Dans ce cas, les identités examplepetstore.com existantes ne perdent pas l'accès à altostrat.com. Par contre, vous ne pouvez plus accorder des rôles IAM qu'aux identités du domaine altostrat.com.

La contrainte de restriction de domaine est basée sur la contrainte de liste iam.allowedPolicyMemberDomains.

Lorsque cette contrainte est définie sur une ressource "Organisation" Google Cloud, elle affecte toutes les identités qui sont parentées par cette ressource "Organisation". Lorsque cette est définie sur un domaine Google Workspace, elle affecte toutes les identités appartenant à ce domaine. Cela inclut les comptes utilisateur gérés dans la console Google Workspace et non depuis la console Google Cloud.

Définir la règle d'administration

La contrainte de restriction de domaine est un type de contrainte de liste. Les ID client Google Workspace et les ID de ressource d'organisation Google Cloud peuvent être Ajout et suppression de la liste allowed_values d'une restriction de domaine d'une contrainte. La contrainte de restriction de domaine ne permet pas de refuser des valeurs, et une règle d'administration ne peut pas être enregistrée avec des ID figurant dans la liste denied_values.

Tous les domaines associés à un compte Google Workspace ou à une ressource d'organisation listés dans allowed_values sont autorisés par la règle d'administration. Tout et les autres domaines seront refusés par la règle d'administration.

Vous pouvez définir une règle d'administration appliquant la contrainte de restriction de domaine à toutes les ressources incluses dans le liste des ressources compatibles. (buckets Cloud Storage, ensembles de données BigQuery ou Compute Engine) à l'aide de VM.

Pour définir cette contrainte, vous devez être autorisé à modifier les règles d'administration. Par exemple, le rôle orgpolicy.policyAdmin est autorisé à définir des contraintes de règle d'administration. Le rôle resourcemanager.organizationAdmin est autorisé à ajouter un utilisateur en tant qu'administrateur des règles d'administration. Consultez la page Utiliser des contraintes pour en savoir plus sur la gestion des règles au niveau de l'organisation.

Console

Pour définir une règle d'administration incluant une contrainte de restriction de domaine, procédez comme suit :

  1. Dans la console Google Cloud, accédez à la page Règles d'administration.

    Accéder à la page Règles d'administration

  2. Dans le sélecteur de projets, sélectionnez la ressource de l'organisation sur laquelle vous souhaitez définir la règle d'administration.

  3. Sur la page Règles d'administration, sélectionnez Partage limité au domaine dans la liste des contraintes.

  4. Sur la page Détails de la règle, cliquez sur Gérer la règle.

  5. Sous Applicable à, sélectionnez Remplacer la règle parente.

  6. Cliquez sur Ajouter une règle.

  7. Sous Valeurs des règles, sélectionnez "Personnalisée". Remarque : La contrainte de restriction de domaine n'est pas compatible avec Tout refuser.

  8. Sous Type de règle, sélectionnez Autoriser. Remarque : La contrainte de restriction de domaine n'est pas compatible avec les valeurs Deny (Refuser).

  9. Sous Valeurs personnalisées, saisissez une ID de ressource de l'organisation ou numéro client Google Workspace dans le .

  10. Si vous souhaitez ajouter plusieurs ID, cliquez sur Nouvelle valeur de règle. pour créer un champ supplémentaire.

  11. Cliquez sur OK.

  12. Si vous le souhaitez, vous pouvez rendre la contrainte de restriction de domaine conditionnelle sur un cliquez sur Ajouter une condition.

    1. Dans le champ Titre, saisissez un nom pour la condition.

    2. Dans le champ Description, saisissez une description pour votre condition. La description fournit du contexte sur les tags requis ainsi que sur leur impact sur les ressources.

    3. Vous pouvez utiliser le Créateur de conditions pour créer une condition nécessitant un tag particulier pour que la contrainte soit prise en compte.

      1. Dans le menu déroulant Type de condition de l'onglet Générateur de conditions, sélectionnez Tag.

      2. Sélectionnez l'opérateur correspondant à votre condition. Pour mettre en correspondance un tag entier, utilisez l'opérateur matches. Pour mettre en correspondance une clé de tag et une valeur de tag, utilisez l'opérateur matches ID.

      3. Si vous avez sélectionné l'opérateur matches, saisissez la valeur de l'espace de noms du tag. Si vous avez sélectionné l'opérateur matches ID, saisissez les ID de clé et de valeur.

      4. Vous pouvez créer plusieurs conditions en cliquant sur Ajouter. Si vous ajoutez une autre condition, vous pouvez définir la logique conditionnelle pour qu'elle exige que toutes les conditions soient satisfaites en activant Et. Vous pouvez définir la logique conditionnelle pour exiger qu'au moins une des conditions soit satisfaite en activant Or.

      5. Vous pouvez supprimer une expression en cliquant sur le grand X à droite des champs de condition.

      6. Lorsque vous avez terminé de modifier vos conditions, cliquez sur Enregistrer.

  13. Pour appliquer la règle, cliquez sur Définir la règle.

gcloud

Les règles peuvent être définies via la Google Cloud CLI. Pour créer une règle qui inclut la contrainte de restriction de domaine, exécutez la commande suivante :

Pour définir une règle d'administration qui inclut la restriction de domaine , exécutez la commande suivante:

gcloud org-policies set-policy POLICY_PATH

POLICY_PATH est le chemin d'accès complet au fichier YAML de votre règle d'administration, qui doit ressembler à ceci :

name: organizations/ORGANIZATION_ID/policies/iam.allowedPolicyMemberDomains
spec:
  rules:
  - condition: # This condition applies to the values block.
      expression: "resource.matchTag('ORGANIZATION_ID/environment', 'dev')"
    values:
      allowedValues:
      - PRINCIPAL_SET
  - values:
      allowedValues:
      - PRINCIPAL_SET

Remplacez les éléments suivants :

  • ORGANIZATION_ID avec l'ID de la ressource d'organisation sur laquelle définir cette règle.
  • PRINCIPAL_SET pour les identifiants principaux Cloud Identity que vous souhaitez autoriser, y compris l'ID de ressource de l'organisation. Exemple : is:principalSet://iam.googleapis.com/organizations/01234567890123.

    Les numéros client Google Workspace doivent être utilisés pour toutes les autres identités que vous souhaitez autoriser. Exemple :is:C03g5e3bc

Une fois cette règle d'administration appliquée, seules les identités appartenant à l'ID de ressource de l'organisation ou au domaine Google Workspace de la liste allowed_values seront autorisées dans les stratégies IAM. Les utilisateurs humains et les groupes Google Workspace doivent être des enfants de cette organisation ressource ou une partie de ce domaine Google Workspace, et le service IAM doivent être les enfants d'une ressource d'organisation associée à domaine Google Workspace.

Par exemple, si vous avez créé une règle d'administration avec uniquement le numéro client Google Workspace de votre entreprise, seuls les membres de ce domaine peuvent alors être ajoutés à la stratégie IAM à partir de ce moment.

Pour en savoir plus sur l'utilisation de contraintes dans les règles d'administration, consultez Utiliser des contraintes.

Exemple de message d'erreur

Lorsque la contrainte d'organisation de restriction de domaine n'est pas respectée du fait de la tentative d'ajout d'un compte principal non inclus dans la liste allowed_values, l'opération échoue et un message d'erreur s'affiche.

Console

Capture d'écran de la console

gcloud

ERROR: (gcloud.projects.set-iam-policy) FAILED_PRECONDITION:
One or more users named in the policy do not belong to a permitted customer.

Récupérer un ID de ressource d'organisation

Vous pouvez obtenir l'ID de ressource de votre organisation à l'aide de la console Google Cloud, de gcloud CLI ou de l'API Cloud Resource Manager.

Console

Pour obtenir l'ID de ressource de votre organisation à l'aide de la console Google Cloud, procédez comme suit : les éléments suivants:

  1. Accédez à Google Cloud Console :

    Accédez à la console Google Cloud.

  2. Dans le sélecteur de projets situé en haut de la page, sélectionnez la ressource de votre organisation.
  3. Sur le côté droit, cliquez sur Plus, puis sur Paramètres.

La page Paramètres affiche l'ID de ressource de votre organisation.

gcloud

Pour trouver l'ID de ressource de votre organisation, exécutez la commande suivante:

gcloud organizations list

Cette commande liste toutes les ressources d'organisation auxquelles vous appartenez, ainsi que les ID de ressources d'organisation correspondants.

API

Pour trouver l'ID de ressource de votre organisation à l'aide de l'API Cloud Resource Manager, utilisez la méthode organizations.search(), y compris une requête pour votre domaine. Exemple :

GET https://cloudresourcemanager.googleapis.com/v3/organizations:search{query=domain:altostrat.com}

La réponse contient les métadonnées de la ressource Organisation appartenant à altostrat.com, y compris l'ID de la ressource Organisation.

Une fois que vous avez obtenu l'ID de ressource de votre organisation, vous devez utiliser l'identifiant approprié pour l'ensemble des principaux qui lui appartiennent. Exemple :

principalSet://iam.googleapis.com/organizations/01234567890123

Pour en savoir plus sur les identifiants de comptes principaux IAM, consultez Identifiants principaux.

Récupérer un numéro client Google Workspace

Le numéro client Google Workspace utilisé par la contrainte de restriction de domaine peut être obtenu de deux manières :

gcloud

La commande gcloud organizations list permet d'afficher toutes les organisations pour lesquelles vous détenez l'autorisation resourcemanager.organizations.get :

gcloud organizations list

Cette commande renvoie les éléments DISPLAY_NAME, ID (ID de l'organisation) et DIRECTORY_CUSTOMER_ID. Le numéro client Google Workspace correspond à l'élément DIRECTORY_CUSTOMER_ID.

API

L'API Google Workspace Directory vous permet de récupérer un numéro client Google Workspace.

Lorsque vous êtes connecté en tant qu'administrateur Google Workspace, vous pouvez consulter la documentation sur la méthode API Customers : get, puis cliquer sur Exécuter. Une fois l'autorisation émise, la réponse affiche votre numéro client.

Vous pouvez également utiliser un client API :

  1. Obtenez un jeton d'accès OAuth pour le champ d'application https://www.googleapis.com/auth/admin.directory.customer.readonly.
  2. Exécutez la commande suivante pour interroger l'API Google Workspace Directory :

    curl -# -X GET "https://www.googleapis.com/admin/directory/v1/customers/customerKey" \
    -H "Authorization: Bearer $access_token" -H "Content-Type: application/json"
    

Cette commande renvoie une réponse JSON incluant les informations relatives au client. Le numéro client Google Workspace correspond à l'élément id.

Limiter les sous-domaines

Si vous autorisez une ressource d'organisation Google Cloud dans une contrainte de restriction de domaine, elle permet d'accéder à toutes les ressources associées à cette ressource d'organisation et bloque l'accès à toutes les autres.

Si vous autorisez un numéro client Google Workspace dans une contrainte de restriction de domaine, elle limite l'accès à tous les domaines associés à ce numéro client Google Workspace et bloque l'accès à tous les autres. Tous les comptes Google Workspace disposent un seul domaine principal et zéro, un ou plusieurs domaines secondaires. Tous les domaines associés au numéro client Google Workspace sont soumis à la contrainte.

L'application de la contrainte de restriction de domaine sur une ressource contrôle l'accès et tous les domaines secondaires ayant accès à cette ressource et à ses dans la hiérarchie des ressources.

Le tableau ci-dessous présente des exemples de combinaisons courantes de domaines et de sous-domaines Google Workspace :

Domaine principal Sous-domaine Contrainte de restriction de domaine user@sub.altostrat.com est-il autorisé ?
altostrat.com aucun Autoriser : altostrat.com Non
altostrat.com sub.altostrat.com Autoriser : altostrat.com Oui
altostrat.com sub.altostrat.com Autoriser: sub.altostrat.com Oui
sub.altostrat.com altostrat.com Autoriser: sub.altostrat.com Oui
sub.altostrat.com aucun Autoriser: sub.altostrat.com Oui

Pour différencier l'accès de contrainte de restriction de domaine entre deux domaines, chaque domaine doit être associé à un compte Google Workspace différent. Chaque compte Google Workspace est associé à un nœud d'organisation et peut appliquer ses propres règles d'administration. Cela vous permet d'associer altostrat.com à un compte Google Workspace et sub.altostrat.com à un autre pour un contrôle d'accès plus précis. Pour en savoir plus, consultez la page Gérer plusieurs organisations.

Résoudre les problèmes connus

Les règles d'administration ne sont pas rétroactives. Si vous devez forcer une modification de votre hiérarchie de ressources qui violerait une contrainte imposée, vous pouvez désactiver la règle d'administration, effectuer la modification, puis la réactiver.

Les sections suivantes décrivent les problèmes connus liés aux services qui peuvent se produire lorsque cette contrainte est appliquée.

Associer Google Analytics 360 à BigQuery

Si vous essayez d'associer Google Analytics 360 à BigQuery lorsque la contrainte de restriction de domaine est appliquée, l'action échoue et le message d'erreur One or more users named in the policy do not belong to a permitted customer s'affiche, même si le compte de service analytics-processing-dev@system.gserviceaccount.com est déjà ajouté en tant que Editor au niveau du projet, directement ou à l'aide de Google Groups.

Pour associer Google Analytics 360 à BigQuery, procédez comme suit :

  1. Désactiver la règle d'administration contenant la contrainte de restriction de domaine.

  2. Suivez la procédure d'association dans Google Analytics 360.

  3. Appliquer la contrainte de restriction de domaine.

Partager des données publiques

Certains produits Google Cloud tels que BigQuery, Cloud Run Functions Cloud Run, Cloud Storage et Pub/Sub acceptent les données publiques le partage. L'application de la contrainte de partage restreint de domaine dans une règle d'administration empêchera le partage de données publiques.

Pour partager publiquement des données, désactivez temporairement la contrainte de partage restreint de domaine pour la ressource de projet où résident les données que vous souhaitez partager. Après avoir partagé la ressource en mode public, vous pouvez réactiver la contrainte de partage restreint de domaine.

Récepteur de journaux BigQuery pour un compte de facturation

Le compte de service utilisé par le récepteur de journaux BigQuery pour les comptes de facturation (format: b*@*.iam.gserviceaccount.com) est considéré comme externe et bloqué par la contrainte de partage restreint de domaine dans une règle d'administration. Pour attribuer à ce compte de service un rôle sur un ensemble de données BigQuery dans un projet auquel la contrainte de restriction de domaine est appliquée, procédez comme suit :

  1. Désactivez la règle d'administration contenant la contrainte de restriction de domaine.

  2. Attribuez au compte de service correspondant (au format b*@*.iam.gserviceaccount.com) le rôle BigQuery indiqué lors du processus de création du récepteur.

  3. Appliquer la contrainte de restriction de domaine.

Compte de service d'exportation Cloud Billing

Lorsque cette contrainte est activée, l'activation de l'exportation de la facturation vers un bucket échouera probablement. N'utilisez pas cette contrainte sur les buckets utilisés pour l'exportation de la facturation.

L'adresse e-mail du compte de service d'exportation Cloud Billing est la suivante : 509219875288-kscf0cheafmf4f6tp1auij5me8qakbin@developer.gserviceaccount.com

Activer la journalisation de l'accès au stockage

Si cette option est activée, la contrainte de restriction de domaine bloquera tous les domaines qui ne sont pas spécifiquement autorisés dans la règle d'administration. Cela empêchera également d'accorder l'accès aux comptes de service Google. Pour configurer la journalisation de l'accès au stockage sur un bucket Cloud Storage auquel la contrainte de restriction de domaine est appliquée, procédez comme suit :

  1. Désactiver la règle d'administration contenant la contrainte de restriction de domaine.

  2. Accordez l'accès à ce bucket à cloud-storage-analytics@google.com avec l'autorisation WRITE.

  3. Appliquer la contrainte de restriction de domaine.

Attribuer des rôles d'agent de service

Les rôles d'agent de service ne sont attribués qu'aux comptes de service. Si vous devez accorder ce type de rôle, procédez comme suit:

  1. Désactiver la règle d'administration contenant la contrainte de restriction de domaine.

  2. Attribuez le rôle d'agent de service.

  3. Appliquer la contrainte de restriction de domaine.

Activer l'API Firebase

Lorsqu'elle est activée, la contrainte de restriction de domaine bloque les comptes de service non autorisés dans la règle d'administration. Cela empêche l'activation de l'API Firebase, car ce processus nécessite des comptes de service externes. Une fois l'API activée, vous pouvez appliquer en toute sécurité la contrainte de restriction de domaine sans que celle-ci n'interfère avec la fonction de l'API Firebase. Pour activer l'API Firebase, procédez comme suit :

  1. Désactivez la règle d'administration contenant la contrainte de restriction de domaine.

  2. Activez l'API Firebase Management.

  3. Appliquez à nouveau la contrainte de restriction de domaine.

Groupes Google

Si la contrainte de restriction de domaine est appliquée dans votre organisation, vous ne pourrez peut-être pas attribuer de rôles aux nouveaux groupes Google créés, même s'ils appartiennent à un domaine autorisé. En effet, la propagation complète d'un groupe dans Google Cloud peut prendre jusqu'à 24 heures. Si vous ne pouvez pas accorder à un groupe Google que vous venez de créer, patientez 24 heures, puis réessayez.

De plus, lorsqu'il évalue si un groupe appartient à un domaine autorisé, IAM n'évalue que le domaine du groupe. Il n'évalue pas les domaines des membres du groupe. Par conséquent, les administrateurs de projet peuvent contourner la contrainte de restriction de domaine en ajoutant des membres externes à des groupes Google, puis en leur attribuant des rôles.

Pour s'assurer que les administrateurs du projet ne peuvent pas contourner la contrainte de restriction de domaine, l'administrateur Google Workspace doit s'assurer que les propriétaires de groupe ne peuvent pas autoriser les membres n'appartenant pas au domaine dans le panneau d'administration Google Workspace.

Forcer l'accès au compte

Si vous devez forcer l'accès au compte pour un projet en violation des restrictions de domaine, procédez comme suit :

  1. Supprimez la règle d'administration contenant la contrainte de restriction de domaine.

  2. Accordez au projet l'accès au compte.

  3. Mettez à nouveau en œuvre la règle d'administration avec la contrainte de restriction de domaine.

Vous pouvez également accorder l'accès à un groupe Google qui contient les comptes de service concernés :

  1. Créez un groupe Google dans le domaine autorisé.

  2. Utilisez le panneau d'administration de Google Workspace pour désactiver la restriction de domaine pour ce groupe.

  3. Ajoutez le compte de service au groupe.

  4. Accordez l'accès au groupe Google dans la stratégie IAM.

Utilisez Pub/Sub comme point de terminaison pour une application Google Chat.

Lorsque vous essayez d'accorder des droits de publication sur votre sujet au compte de service de l'API Google Chat, vous pouvez être bloqué si la contrainte de partage de domaine limité est activée. Suivez la procédure pour forcer l'accès au compte.