Restreindre les identités par domaine

Le partage restreint au domaine vous permet de limiter le partage des ressources en fonction d'un domaine ou d'une ressource d'organisation. Lorsque le partage restreint au domaine est actif, seuls les principaux appartenant aux domaines ou organisations autorisés peuvent se voir attribuer des rôles IAM dans votre organisation Google Cloud .

Vous pouvez utiliser trois types de règles d'administration d'administration pour restreindre les identités par domaine :

  • Contrainte gérée iam.managed.allowedPolicyMembers
  • Règles d'administration personnalisées faisant référence à la ressource iam.googleapis.com/AllowPolicy
  • Ancienne contrainte gérée iam.allowedPolicyMemberDomains

Avant de commencer

Choisissez la méthode que vous utiliserez pour implémenter le partage restreint de domaine. Pour en savoir plus sur les avantages et les inconvénients de chaque méthode, consultez Méthodes pour restreindre le partage par domaine.

Rôles requis

Pour obtenir les autorisations nécessaires pour appliquer le partage restreint au domaine, demandez à votre administrateur de vous accorder le rôle IAM Administrateur des règles d'administration (roles/orgpolicy.policyAdmin) dans l'organisation. Pour en savoir plus sur l'attribution de rôles, consultez Gérer l'accès aux projets, aux dossiers et aux organisations.

Vous pouvez également obtenir les autorisations requises avec des rôles personnalisés ou d'autres rôles prédéfinis.

Utiliser la contrainte iam.managed.allowedPolicyMembers pour implémenter le partage restreint au domaine

Console

  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 projet, sélectionnez le projet, le dossier ou l'organisation dont vous souhaitez modifier la règle d'administration. La page Règles d'administration qui s'affiche présente une liste filtrable des contraintes de règles d'administration disponibles pour cette ressource.

  3. Dans la liste, sélectionnez la contrainte gérée Restreindre les membres autorisés dans les règles d'autorisation IAM.

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

  5. Sur la page Modifier la stratégie, sélectionnez Ignorer la règle parente.

  6. Sélectionnez Ajouter une règle, puis modifiez la règle de la règle d'administration.

  7. Sous Application, sélectionnez Activé.

  8. Pour rendre la règle d'administration conditionnelle sur un tag, cliquez sur Ajouter une condition. Si vous ajoutez une règle conditionnelle à une règle d'administration, vous devez ajouter au moins une règle non conditionnelle, sinon la règle ne pourra pas être enregistrée. Pour en savoir plus, consultez Définir une règle d'administration avec des tags.

  9. Dans la section Paramètres, configurez les ensembles de membres et de comptes principaux auxquels vous souhaitez attribuer des rôles dans votre organisation, puis cliquez sur Enregistrer.

  10. Si vous le souhaitez, cliquez sur Tester les modifications pour prévisualiser l'effet de la modification de votre règle d'administration avant son application. Pour en savoir plus sur le test des modifications apportées aux règles d'administration, consultez Tester les modifications apportées aux règles d'administration à l'aide de Policy Simulator.

  11. Pour appliquer la règle d'administration en mode dry run, cliquez sur Définir la règle de dry run. Pour en savoir plus, consultez Créer une règle d'administration en mode dry run.

  12. Une fois que vous avez vérifié que la règle d'administration en mode dry run fonctionne comme prévu, définissez la règle active en cliquant sur Définir la règle.

gcloud

  1. Créez un fichier YAML pour définir la règle d'administration :

    name: organizations/ORG_ID/policies/iam.managed.allowedPolicyMembers
    spec:
    rules:
     - enforce: true
       parameters:
         allowedMemberSubjects:
           - ALLOWED_MEMBER_1
           - ALLOWED_MEMBER_2
         allowedPrincipalSets:
           - ALLOWED_PRINCIPAL_SET_1
           - ALLOWED_PRINCIPAL_SET_2
    

    Remplacez les éléments suivants :

    • ORG_ID : ID numérique de votre organisation Google Cloud.

    • ALLOWED_MEMBER_1, ALLOWED_MEMBER_2 : membres auxquels vous souhaitez attribuer des rôles dans votre organisation (par exemple, user:example-user@example.com).

    • ALLOWED_PRINCIPAL_SET_1, ALLOWED_PRINCIPAL_SET_2 : ensembles de comptes principaux auxquels vous souhaitez accorder des rôles dans votre organisation. Exemple : //cloudresourcemanager.googleapis.com/organizations/0123456789012.

    Pour rendre la règle d'administration conditionnelle sur un tag, ajoutez un bloc condition à rules. Si vous ajoutez une règle conditionnelle à une règle d'administration, vous devez ajouter au moins une règle inconditionnelle, sinon la règle ne pourra pas être enregistrée. Pour en savoir plus, consultez Définir une règle d'administration avec des tags.

  2. Définissez la règle avec la commande org-policies set-policy et l'option spec :

    gcloud org-policies set-policy POLICY_PATH \
      --update-mask=spec
    

    Remplacez POLICY_PATH par le chemin d'accès complet au fichier YAML de votre règle d'administration.

Pour savoir comment tester la règle en mode de simulation avant de l'appliquer, consultez Créer une règle d'administration en mode de simulation.

Pour savoir comment simuler la règle avant de l'appliquer, consultez Tester les modifications apportées aux règles d'administration à l'aide de Policy Simulator.

REST

Pour définir la règle d'administration, utilisez la méthode organizations.policies.create.

POST https://orgpolicy.googleapis.com/v2/{parent=organizations/ORGANIZATION_ID}/policies

Le corps JSON de la requête contient la définition d'une règle d'administration. Si cette contrainte n'est pas compatible avec les paramètres, omettez le bloc parameters sous rules.

{
  "name": "organizations/ORG_ID/policies/CONSTRAINT_NAME",
  "spec": {
    "rules": [
      {
        "enforce": true,
        "parameters": {
          "allowedMemberSubjects": [
            "ALLOWED_MEMBER_1",
            "ALLOWED_MEMBER_2"
          ],
          "allowedPrincipalSets": [
            "ALLOWED_PRINCIPAL_SET_1",
            "ALLOWED_PRINCIPAL_SET_2"
          ]
        }
      }
    ]
  }
}

Remplacez les éléments suivants :

  • ORG_ID : ID numérique de votre organisation Google Cloud.

  • CONSTRAINT_NAME : nom de la contrainte que vous souhaitez définir.

  • ALLOWED_MEMBER_1, ALLOWED_MEMBER_2 : membres auxquels vous souhaitez attribuer des rôles dans votre organisation (par exemple, user:example-user@example.com).

  • ALLOWED_PRINCIPAL_SET_1, ALLOWED_PRINCIPAL_SET_2 : ensembles de comptes principaux auxquels vous souhaitez accorder des rôles dans votre organisation. Exemple : //cloudresourcemanager.googleapis.com/organizations/0123456789012.

Pour rendre la règle d'administration conditionnelle sur un tag, ajoutez un bloc condition à rules. Si vous ajoutez une règle conditionnelle à une règle d'administration, vous devez ajouter au moins une règle inconditionnelle, sinon la règle ne pourra pas être enregistrée. Pour en savoir plus, consultez Définir une règle d'administration avec des tags.

Pour savoir comment tester la règle en mode de simulation avant de l'appliquer, consultez Créer une règle d'administration en mode de simulation.

Pour savoir comment simuler la règle avant de l'appliquer, consultez Tester les modifications apportées aux règles d'administration à l'aide de Policy Simulator.

Utiliser des règles d'administration personnalisées pour implémenter le partage limité au domaine

  1. Créez une contrainte personnalisée qui limite les comptes principaux auxquels des rôles peuvent être attribués dans votre organisation :

    1. Utilisez la fonction CEL memberInPrincipalSet avec le compte principal de votre organisation défini pour limiter l'attribution de rôles aux membres de votre organisation. Pour savoir comment trouver l'ID de votre organisation, consultez Récupérer un ensemble de principaux d'organisation.

      Par exemple, la contrainte suivante limite l'attribution de rôles aux membres de votre organisation :

      name: organizations/ORG_ID/customConstraints/custom.allowInternalIdentitiesOnly
      resourceTypes: iam.googleapis.com/AllowPolicy
      methodTypes:
        - CREATE
        - UPDATE
      condition:
        "resource.bindings.all(
          binding,
          binding.members.all(member,
            MemberInPrincipalSet(member, ['//cloudresourcemanager.googleapis.com/organizations/ORG_ID'])
          )
        )"
      actionType: ALLOW
      displayName: Only allow organization members to be granted roles
      
    2. Vous pouvez affiner la contrainte en ajoutant d'autres fonctions CEL, combinées à des opérateurs logiques (&&, || ou !). Vous pouvez ajouter l'une des fonctions suivantes :

      Par exemple, la contrainte suivante limite l'attribution de rôles aux membres de votre organisation et à admin@example.com :

      name: organizations/ORG_ID/customConstraints/custom.allowInternalIdentitiesOnly
      resourceTypes: iam.googleapis.com/AllowPolicy
      methodTypes:
        - CREATE
        - UPDATE
      condition:
        "resource.bindings.all(
          binding,
          binding.members.all(member,
            (
              MemberInPrincipalSet(member, ['//cloudresourcemanager.googleapis.com/organizations/ORG_ID'])
              ||
              MemberSubjectMatches(member, ['user:admin@example.com'])
            )
          )
        )"
      actionType: ALLOW
      displayName: Only allow organization members and service agents to be granted roles
      
  2. Configurez la contrainte personnalisée :

    Console

    Pour créer une contrainte personnalisée :

    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, choisissez le projet pour lequel vous souhaitez définir la règle d'administration.
    3. Cliquez sur Contrainte personnalisée.
    4. Dans la zone Nom à afficher, saisissez un nom lisible par l'humain pour la contrainte. Ce nom est utilisé dans les messages d'erreur et peut servir à l'identification et au débogage. N'utilisez pas d'informations permettant d'identifier personnellement l'utilisateur ni de données sensibles dans les noms à afficher, car ces informations pourraient être divulguées dans les messages d'erreur. Ce champ peut contenir jusqu'à 200 caractères.
    5. Dans la zone ID de contrainte, saisissez le nom souhaité pour votre nouvelle contrainte personnalisée. Une contrainte personnalisée ne peut contenir que des lettres (majuscules et minuscules) ou des chiffres, par exemple custom.disableGkeAutoUpgrade. Ce champ peut contenir jusqu'à 70 caractères, sans compter le préfixe (custom.), par exemple organizations/123456789/customConstraints/custom. N'incluez pas d'informations permettant d'identifier personnellement l'utilisateur ni de données sensibles dans l'ID de votre contrainte, car ces informations pourraient être divulguées dans les messages d'erreur.
    6. Dans la zone Description, saisissez une description lisible par l'humain pour la contrainte. Cette description est utilisée comme message d'erreur en cas de non-respect de la règle. Incluez des informations sur les raisons du non-respect de la règle et sur la façon de résoudre ce cas de non-respect. Veuillez n'inclure aucune information permettant d'identifier l'utilisateur ou donnée sensible dans votre description, car ces informations pourraient être divulguées dans les messages d'erreur. Ce champ peut contenir jusqu'à 2 000 caractères.
    7. Dans la zone Type de ressource, sélectionnez le nom de la ressource REST Google Cloud contenant l'objet et le champ que vous souhaitez restreindre (par exemple, container.googleapis.com/NodePool). La plupart des types de ressources acceptent jusqu'à 20 contraintes personnalisées. Si vous essayez de créer d'autres contraintes personnalisées, l'opération échoue.
    8. Sous Méthode d'application, indiquez si vous souhaitez appliquer la contrainte sur une méthode REST CREATE ou sur les méthodes CREATE et UPDATE. Si vous appliquez la contrainte avec la méthode UPDATE sur une ressource qui ne respecte pas la contrainte, les modifications apportées à cette ressource sont bloquées par la règle d'administration, sauf si elles résolvent le cas de non-respect.
    9. Les services Google Cloud ne prennent pas tous en charge les deux méthodes. Pour connaître les méthodes prises en charge par chaque service, recherchez le service dans la section Services compatibles.

    10. Pour définir une condition, cliquez sur Modifier la condition.
      1. Dans le panneau Ajouter une condition, créez une condition CEL faisant référence à une ressource de service compatible, par exemple resource.management.autoUpgrade == false. Ce champ peut contenir jusqu'à 1 000 caractères. Pour plus d'informations sur l'utilisation du CEL, consultez Common Expression Language. Pour en savoir plus sur les ressources de service que vous pouvez utiliser dans vos contraintes personnalisées, consultez Services compatibles avec les contraintes personnalisées.
      2. Cliquez sur Enregistrer.
    11. Sous Action, indiquez si vous souhaitez autoriser ou refuser la méthode évaluée si la condition ci-dessus est remplie.
    12. L'action "deny" signifie que l'opération de création ou de mise à jour de la ressource est bloquée si la condition renvoie la valeur "true".

      L'action "allow" signifie que l'opération de création ou de mise à jour de la ressource n'est autorisée que si la condition renvoie la valeur "true". Tous les autres cas, à l'exception de ceux explicitement listés dans la condition, sont bloqués.

    13. Cliquez sur Créer une contrainte.
    14. Lorsque vous saisissez une valeur dans chaque champ, la configuration YAML équivalant à cette contrainte personnalisée s'affiche sur la droite.

    gcloud

    1. Pour créer une contrainte personnalisée, créez un fichier YAML au format suivant :
    2. name: organizations/ORGANIZATION_ID/customConstraints/CONSTRAINT_NAME
      resourceTypes: RESOURCE_NAME
      methodTypes:
        - CREATE
      condition: "CONDITION"
      actionType: ACTION
      displayName: DISPLAY_NAME
      description: DESCRIPTION

      Remplacez les éléments suivants :

      • ORGANIZATION_ID : ID de votre organisation (par exemple, 123456789).
      • CONSTRAINT_NAME : nom souhaité pour votre nouvelle contrainte personnalisée. Une contrainte personnalisée ne peut contenir que des lettres (majuscules et minuscules) ou des chiffres, par exemple custom.allowInternalIdentitiesOnly. Ce champ peut contenir jusqu'à 70 caractères.
      • RESOURCE_NAME : nom complet de la ressource Google Cloudcontenant l'objet et le champ que vous souhaitez restreindre. Par exemple, iam.googleapis.com/AllowPolicy.
      • CONDITION : condition CEL écrite pour une représentation d'une ressource de service compatible. Ce champ peut contenir jusqu'à 1 000 caractères. Par exemple, "resource.bindings.all( binding, binding.members.all(member, MemberInPrincipalSet(member, ['//cloudresourcemanager.googleapis.com/organizations/ORG_ID']) ) )".
      • Pour en savoir plus sur les ressources disponibles pour l'écriture de conditions, consultez Ressources compatibles.

      • ACTION : action à effectuer si la condition est remplie. Ne peut être que ALLOW.
      • L'action "allow" signifie que si la condition renvoie "true", l'opération de création ou de mise à jour de la ressource est autorisée. Cela signifie également que tous les autres cas, à l'exception de celui explicitement listé dans la condition, sont bloqués.

      • DISPLAY_NAME : nom lisible par l'humain de la contrainte. Ce champ peut contenir jusqu'à 200 caractères.
      • DESCRIPTION : description lisible par l'humain de la contrainte, qui sera affichée dans un message d'erreur en cas de non-respect de la règle. Ce champ peut contenir jusqu'à 2 000 caractères.
    3. Après avoir créé le fichier YAML pour une nouvelle contrainte personnalisée, vous devez le configurer de sorte qu'il soit disponible pour les règles d'administration de votre organisation. Pour configurer une contrainte personnalisée, utilisez la commande gcloud org-policies set-custom-constraint :
    4. gcloud org-policies set-custom-constraint CONSTRAINT_PATH

      Remplacez CONSTRAINT_PATH par le chemin d'accès complet à votre fichier de contrainte personnalisée. Par exemple, /home/user/customconstraint.yaml.

      Une fois l'opération terminée, vos contraintes personnalisées sont disponibles en tant que règles d'administration dans votre liste de règles d'administration Google Cloud .

    5. Pour vérifier que la contrainte personnalisée existe, utilisez la commande gcloud org-policies list-custom-constraints :
    6. gcloud org-policies list-custom-constraints --organization=ORGANIZATION_ID

      Remplacez ORGANIZATION_ID par l'ID de votre ressource d'organisation.

      Pour en savoir plus, consultez Afficher les règles d'administration.

  3. Appliquez la règle d'administration personnalisée :

    Vous pouvez appliquer une contrainte en créant une règle d'administration qui y fait référence, puis en appliquant cette règle à une ressource Google Cloud .

    Console

    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, choisissez le projet pour lequel vous souhaitez définir la règle d'administration.
    3. Dans la liste de la page Règles d'administration, sélectionnez votre contrainte pour afficher la page Détails de la règle propres à cette contrainte.
    4. Pour personnaliser la règle d'administration pour cette ressource, cliquez sur Gérer la règle.
    5. Sur la page Modifier la stratégie, sélectionnez Ignorer la règle parente.
    6. Cliquez sur Ajouter une règle.
    7. Dans la section Application, indiquez si cette règle d'administration est appliquée ou non.
    8. Facultatif : pour rendre la règle d'administration conditionnelle à un tag, cliquez sur Ajouter une condition. Notez que si vous ajoutez une règle conditionnelle à une règle d'administration, vous devez ajouter au moins une règle non conditionnelle, sinon la règle ne pourra pas être enregistrée. Pour en savoir plus, consultez Définir une règle d'administration avec des tags.
    9. Cliquez sur Tester les modifications pour simuler l'effet de la règle d'administration. Pour en savoir plus, consultez Tester les modifications apportées aux règles d'administration à l'aide de Policy Simulator.
    10. Pour appliquer la règle d'administration en mode de simulation, cliquez sur Définir la règle de dry run. Pour en savoir plus, consultez Créer une règle d'administration en mode dry run.
    11. Une fois que vous avez vérifié que la règle d'administration en mode dry run fonctionne comme prévu, définissez la règle active en cliquant sur Définir la règle.

    gcloud

    1. Pour créer une règle d'administration avec des règles booléennes, créez un fichier YAML de règle qui fait référence à la contrainte :
    2. name: projects/PROJECT_ID/policies/CONSTRAINT_NAME
      spec:
        rules:
        - enforce: true
      
      dryRunSpec:
        rules:
        - enforce: true

      Remplacez les éléments suivants :

      • PROJECT_ID : projet sur lequel vous souhaitez appliquer votre contrainte.
      • CONSTRAINT_NAME : nom que vous avez défini pour la contrainte personnalisée. Exemple : custom.allowInternalIdentitiesOnly.
    3. Pour appliquer la règle d'administration en mode dry run, exécutez la commande suivante avec le flag dryRunSpec :
    4. gcloud org-policies set-policy POLICY_PATH --update-mask=dryRunSpec

      Remplacez POLICY_PATH par le chemin d'accès complet au fichier YAML de votre règle d'administration. L'application de la règle peut prendre jusqu'à 15 minutes.

    5. Après avoir vérifié que la règle d'administration en mode dry run fonctionne comme prévu, définissez la règle active avec la commande org-policies set-policy et le flag spec :
    6. gcloud org-policies set-policy POLICY_PATH --update-mask=spec

      Remplacez POLICY_PATH par le chemin d'accès complet au fichier YAML de votre règle d'administration. L'application de la règle peut prendre jusqu'à 15 minutes.

Utiliser la contrainte iam.allowedPolicyMemberDomains pour implémenter le partage restreint au domaine

La contrainte de restriction de domaine est une ancienne contrainte gérée avec la liste constraint_type. Vous pouvez spécifier un ensemble de comptes principaux d'organisation ou un numéro client Google Workspace dans la liste allowed_values d'une contrainte de restriction de domaine. Pour en savoir plus, consultez Ensemble de principaux de l'organisation et ID client Google Workspace.

Votre ensemble de comptes principaux d'organisation et votre ID Google Workspace ne sont pas automatiquement autorisés. Pour autoriser les comptes principaux de votre organisation à accéder aux ressources de votre organisation, vous devez inclure l'ensemble de comptes principaux de votre organisation ou votre ID Google Workspace en tant qu'ensemble de comptes principaux autorisés.

La contrainte de restriction de domaine n'accepte pas les valeurs refusées. De plus, une règle d'administration ne peut pas être enregistrée avec des ID dans la liste denied_values.

Vous pouvez rendre une règle d'administration qui applique la contrainte de restriction de domaine conditionnelle à n'importe quelle ressource incluse dans la liste des ressources compatibles. Par exemple, les buckets Cloud Storage, les ensembles de données BigQuery ou les VM Compute Engine.

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 d'organisation pour laquelle vous souhaitez définir la règle d'administration.

  3. Sur la page Règles d'administration, sélectionnez Partage restreint 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 de règles, sélectionnez "Personnalisé".

  8. Sous Type de règle, sélectionnez Autoriser.

  9. Sous Valeurs personnalisées, saisissez un ensemble de comptes principaux de l'organisation ou un numéro client Google Workspace dans le champ.

  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. Pour rendre la contrainte de restriction de domaine conditionnelle sur un tag, 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 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 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 incluant la contrainte de 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 :

Seules les identités spécifiées dans la liste allowed_values seront autorisées dans les règles d'autorisation une fois cette règle d'administration appliquée. Pour être autorisés, les comptes principaux doivent figurer dans l'ensemble de comptes principaux de l'organisation spécifié ou faire partie d'un domaine Google Workspace spécifié.

Par exemple, si vous avez créé une règle d'administration qui n'autorisait que le numéro client du domaine Google Workspace de votre entreprise, seuls les principaux associés à ce domaine peuvent être ajoutés à la règle d'autorisation à partir de ce moment.

Exemple de message d'erreur

Lorsque l'ancienne contrainte gérée iam.allowedPolicyMemberDomains 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 ensemble de comptes principaux d'une 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 :

  1. Accédez à la console Google Cloud  :

    Accéder à 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 permet de répertorier toutes les ressources d'organisation dont vous faites partie, 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 d'organisation appartenant à altostrat.com, y compris l'ID de la ressource d'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

En saisissant l'ensemble de comptes principaux de l'organisation, vous pouvez accorder des rôles aux comptes principaux suivants dans votre organisation :

  • Tous les pools d'identités de personnel de votre organisation
  • Tous les comptes de service et pools d'identités de charge de travail de n'importe quel projet de l'organisation
  • Tous les agents de service associés aux ressources de votre organisation.

Pour en savoir plus sur les identifiants de compte principal IAM, consultez Identifiants de compte principal.

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

En saisissant le numéro client Google Workspace, vous pouvez attribuer des rôles dans votre organisation aux principaux suivants :

  • Toutes les identités de tous les domaines associés à votre ID client Google Workspace
  • Tous les pools d'identités de personnel de votre organisation
  • Tous les comptes de service et pools d'identités de charge de travail de n'importe quel projet de l'organisation
  • Tous les agents de service associés aux ressources de votre organisation.

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.

Configurer des exceptions pour le partage restreint au domaine

Certains services Google Cloud utilisent des comptes de service, des agents de service et d'autres comptes pour effectuer des actions en votre nom. Le partage restreint au domaine peut empêcher l'attribution automatique des rôles IAM nécessaires à ces comptes, ce qui peut entraîner l'échec de certaines actions.

Le tableau suivant répertorie les actions dans Google Cloud qui pourraient être affectées par le partage restreint de domaine. Il liste également les comptes auxquels des rôles doivent être attribués automatiquement pour que ces actions aboutissent.

Si vous utilisez des règles d'administration personnalisées ou la contrainte gérée iam.managed.allowedPolicyMembers pour implémenter le partage restreint de domaine, envisagez d'ajouter ces comptes en tant qu'exceptions à votre contrainte de partage restreint de domaine. Pour ajouter un compte en tant qu'exception, ajoutez l'identifiant principal du compte à la liste des membres autorisés.

Si vous utilisez l'ancienne contrainte gérée iam.allowedPolicyMemberDomains pour implémenter le partage restreint de domaine, vous devrez peut-être forcer l'accès au compte pour que ces comptes puissent effectuer les actions listées.

Action Identifiant principal
Activer un récepteur de journaux BigQuery pour un compte de facturation serviceAccount:bUNIQUE_ID@gcp-sa-logging.iam.gserviceaccount.com
Activer la journalisation de l'accès au stockage serviceAccount:cloud-storage-analytics@google.com
Utiliser Pub/Sub comme point de terminaison pour une application Google Chat serviceAccount:chat-api-push@system.gserviceaccount.com
Utiliser Pub/Sub pour recevoir des notifications en temps réel pour les développeurs de Google Play serviceAccount:google-play-developer-notifications@system.gserviceaccount.com
Utiliser une URL signée avec Cloud CDN serviceAccount:service-PROJECT_NUMBER@cloud-cdn-fill.iam.gserviceaccount.com
Authentification d'origine privée avec Cloud CDN serviceAccount:service-PROJECT_NUMBER@https-lb.iam.gserviceaccount.com

Services publics Cloud Run

Cloud Run vous permet de rendre des services publics. Toutefois, si vous implémentez le partage restreint de domaine, les utilisateurs externes à votre organisation ne pourront pas accéder aux services Cloud Run publics.

Pour autoriser les utilisateurs à accéder aux services Cloud Run publics, vous devez désactiver la vérification IAM du demandeur Cloud Run pour les services Cloud Run. Pour en savoir plus, consultez Désactiver l'invocateur Cloud Run pour les services.

Partager d'autres données publiquement

Si vous utilisez des règles d'administration personnalisées pour implémenter le partage restreint de domaine, vous pouvez ajouter une exception à votre règle d'administration pour autoriser le partage de données publiques.

Le partage public de données implique les principaux spéciaux allUsers et allAuthenticatedUsers. Si vous devez partager des données publiquement tout en utilisant le partage restreint de domaine, vous devez ajouter une exception pour ces principaux. Vous ne pouvez ajouter des exceptions que si vous utilisez des règles d'administration personnalisées pour implémenter le partage restreint au domaine.

Pour ajouter une exception pour allUsers et allAuthenticatedUsers, créez une règle d'administration personnalisée conditionnelle basée sur les tags de ressources.

  1. Créez une clé de tag sur la ressource de votre organisation.

    gcloud resource-manager tags keys create allUsersIngress \
      --parent=organizations/ORGANIZATION_ID
    

    Remplacez ORGANIZATION_ID par l'ID de votre organisation.

  2. Créez une valeur de tag pour la clé de tag que vous avez créée.

    gcloud resource-manager tags values create True \
    --parent=ORGANIZATION_ID/allUsersIngress \
    --description="Allow allUsers to access internal Cloud Run services"
    
  3. Associez le tag aux ressources que vous souhaitez partager publiquement.

  4. Créez une contrainte personnalisée à l'aide de la fonction CEL memberSubjectMatches dans l'expression de condition de votre contrainte.

    Par exemple, l'expression de condition suivante limite l'attribution de rôles aux membres de votre organisation, allUsers et allAuthenticatedUsers :

    name: organizations/ORGANIZATION_ID/customConstraints/custom.allowInternalAndSpecialIdentitiesOnly
    resourceTypes: iam.googleapis.com/AllowPolicy
    methodTypes:
      - CREATE
      - UPDATE
    condition:
      "resource.bindings.all(
        binding,
        binding.members.all(member,
          (
            MemberInPrincipalSet(member, ['//cloudresourcemanager.googleapis.com/organizations/ORG_ID'])
            ||
            MemberSubjectMatches(member, ['allUsers', 'allAuthenticatedUsers'])
          )
        )
      )"
    actionType: ALLOW
    displayName: Only allow organization members, allusers, and allAuthenticatedUsers to be granted roles
    
  5. Créez une règle d'administration qui applique la contrainte personnalisée.

    name: organizations/ORGANIZATION_ID/policies/iam.allowedPolicyMemberDomains
    spec:
      rules:
      - allowAll: true
        condition:
          expression: resource.matchTag("ORGANIZATION_ID/allUsersIngress", "True")
          title: allowAllUsersIngress
    
  6. Appliquez la règle d'administration.

    gcloud org-policies set-policy POLICY_PATH
    

    Remplacez POLICY_PATH par le chemin d'accès et le nom de fichier de votre règlement de l'organisation.

La règle d'administration conditionnelle vous permet d'accorder des autorisations à l'identité allUsers sur les ressources taguées avec allUsersIngress: true.

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 d'autorisation.