Le partage restreint de domaine vous permet de limiter le partage de ressources en fonction d'une ressource de domaine ou d'organisation. Lorsque le partage restreint au domaine est activé, seuls les comptes principaux appartenant à des domaines ou à des organisations autorisés peuvent se voir attribuer des rôles IAM dans votre Google Cloud organisation.
Vous pouvez utiliser trois types de règles d'administration d'administration pour restreindre les identités par domaine:
- Règles d'administration personnalisées faisant référence à la ressource
iam.googleapis.com/AllowPolicy
- Contrainte gérée
iam.managed.allowedPolicyMembers
- Contrainte prédéfinie
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 la section Méthodes de restriction du partage par domaine.
Rôles requis
Pour obtenir les autorisations nécessaires pour appliquer le partage limité 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 la page Gérer l'accès aux projets, aux dossiers et aux organisations.
Vous pouvez également obtenir les autorisations requises via des rôles personnalisés ou d'autres rôles prédéfinis.
Implémenter le partage limité au domaine à l'aide de règles d'administration personnalisées
Créez une contrainte personnalisée qui limite les comptes principaux auxquels des rôles peuvent être attribués dans votre organisation:
Utilisez la fonction CEL
memberInPrincipalSet
avec le compte principal de votre organisation défini pour restreindre les attributions de rôles aux membres de votre organisation. Pour savoir comment trouver votre ID d'organisation, consultez la section Récupérer l'ID d'une ressource Organisation.Par exemple, la contrainte suivante limite les attributions de rôles aux membres de votre organisation:
name: organizations/ORG_ID/customConstraints/custom.allowInternaldentitiesOnly 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
Vous pouvez affiner la contrainte en ajoutant des fonctions CEL supplémentaires, associées à des opérateurs logiques (
&&
,||
ou!
). Vous pouvez ajouter l'une des fonctions suivantes:Par exemple, la contrainte suivante limite les attributions de rôles aux membres de votre organisation et à
admin@example.com
:name: organizations/ORG_ID/customConstraints/custom.allowInternaldentitiesOnly 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
Configurez la contrainte personnalisée:
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 commandegcloud org-policies set-custom-constraint
: Remplacezgcloud org-policies set-custom-constraint CONSTRAINT_PATH
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 . Pour vérifier que la contrainte personnalisée existe, utilisez la commandegcloud org-policies list-custom-constraints
: Remplacezgcloud org-policies list-custom-constraints --organization=ORGANIZATION_ID
ORGANIZATION_ID
par l'ID de votre ressource d'organisation. Pour en savoir plus, consultez la page Afficher les règles d'administration.Appliquez la règle d'administration personnalisée:
Vous pouvez appliquer une contrainte booléenne en créant une règle d'administration qui la référence et en appliquant cette règle d'administration à une ressource Google Cloud .Console
- Dans la console Google Cloud, accédez à la page Règles d'administration.
- Dans le sélecteur de projets, choisissez le projet pour lequel vous souhaitez définir la règle d'administration.
- Dans la liste de la page Règles d'administration, sélectionnez votre contrainte pour afficher la page Détails de la règle associée.
- Pour configurer la règle d'administration pour cette ressource, cliquez sur Gérer la règle.
- Sur la page Modifier la stratégie, sélectionnez Remplacer la stratégie parente.
- Cliquez sur Ajouter une règle.
- Dans la section Application, indiquez si l'application de cette règle d'administration doit être activée ou désactivée.
- Facultatif : Pour rendre la règle d'administration conditionnelle sur 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 inconditionnelle, sinon la règle ne pourra pas être enregistrée. Pour en savoir plus, consultez la section Définir une règle d'administration avec des tags.
- S'il s'agit d'une contrainte personnalisée, vous pouvez cliquer sur Tester les modifications pour simuler l'effet de cette règle d'administration. Pour en savoir plus, consultez la section Tester les modifications apportées aux règles d'administration à l'aide de Policy Simulator.
- Pour finaliser et appliquer la règle d'administration, cliquez sur Définir la règle. La prise en compte de la règle peut prendre jusqu'à 15 minutes.
gcloud
Pour créer une règle d'administration qui applique une contrainte booléenne, créez un fichier YAML de règle qui référence la contrainte :
name: projects/PROJECT_ID/policies/CONSTRAINT_NAME spec: rules: - enforce: true
Remplacez les éléments suivants :
-
PROJECT_ID
: projet sur lequel vous souhaitez appliquer votre contrainte. -
CONSTRAINT_NAME
: nom de la contrainte que vous souhaitez appliquer. Par exemple,compute.disableAllIpv6
.
Pour appliquer la règle d'administration contenant la contrainte, exécutez la commande suivante :
gcloud org-policies set-policy POLICY_PATH
Remplacez
POLICY_PATH
par le chemin d'accès complet au fichier YAML de votre règle d'administration. La prise en compte de la règle peut prendre jusqu'à 15 minutes.
Utiliser la contrainte iam.managed.allowedPolicyMembers
pour implémenter le partage restreint au domaine
Console
Dans la console Google Cloud, accédez à la page Règles d'administration.
Dans le sélecteur de projets, 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 affiche une liste filtrable des contraintes de règles d'administration disponibles pour cette ressource.
Dans la liste, sélectionnez la contrainte gérée Limiter les membres de la stratégie autorisés dans les stratégies d'autorisation IAM.
Sur la page Détails de la règle, cliquez sur Gérer la règle.
Sur la page Modifier la règle, sélectionnez Remplacer la règle parente.
Sélectionnez Ajouter une règle, puis mettez à jour la règle de stratégie d'administration:
Sous Application, sélectionnez Activé.
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 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.
Dans la section Paramètres, configurez les membres et les ensembles de comptes principaux auxquels des rôles peuvent être attribués dans votre organisation, puis cliquez sur Enregistrer.
Vous pouvez également cliquer sur Tester les modifications pour prévisualiser l'impact de votre modification de règle d'administration avant son application. Pour en savoir plus sur le test des modifications apportées aux règles d'administration, consultez la section Tester les modifications apportées aux règles d'administration à l'aide de Policy Simulator.
Pour appliquer la règle d'administration de l'organisation en mode simulation, cliquez sur Définir la règle de simulation. Pour en savoir plus, consultez la section Créer une règle d'administration en mode simulation.
Après avoir vérifié que la règle d'administration de l'organisation en mode simulation fonctionne comme prévu, définissez la règle en cliquant sur Définir la règle.
gcloud
Créez un fichier YAML pour définir la règle d'administration:
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 Google Cloud organisation.CONSTRAINT_NAME
: nom de la contrainte que vous souhaitez définir.ALLOWED_MEMBER_1
,ALLOWED_MEMBER_2
: membres pouvant recevoir des rôles dans votre organisation. Exemple :user:example-user@example.com
.ALLOWED_PRINCIPAL_SET_1
,ALLOWED_PRINCIPAL_SET_2
: ensembles de comptes principaux pouvant être autorisés à recevoir des rôles dans votre organisation. Par exemple,//cloudresourcemanager.googleapis.com/organizations/0123456789012
.
Pour rendre la règle d'administration conditionnelle sur un tag, vous pouvez ajouter 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.Définissez la stratégie avec la commande
org-policies set-policy
et l'optionspec
: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 stratégie en mode simulation avant de l'appliquer, consultez Créer une règle d'administration en mode simulation.
Pour savoir comment simuler la stratégie 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 de la requête JSON 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 Google Cloud organisation.CONSTRAINT_NAME
: nom de la contrainte que vous souhaitez définir.ALLOWED_MEMBER_1
,ALLOWED_MEMBER_2
: membres pouvant recevoir des rôles dans votre organisation. Exemple :user:example-user@example.com
.ALLOWED_PRINCIPAL_SET_1
,ALLOWED_PRINCIPAL_SET_2
: ensembles de comptes principaux pouvant être autorisés à recevoir des rôles dans votre organisation. Par exemple,//cloudresourcemanager.googleapis.com/organizations/0123456789012
.
Pour rendre la règle d'administration conditionnelle sur un tag, vous pouvez ajouter 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 stratégie en mode simulation avant de l'appliquer, consultez Créer une règle d'administration en mode simulation.
Pour savoir comment simuler la stratégie avant de l'appliquer, consultez Tester les modifications apportées aux règles d'administration à l'aide de Policy Simulator.
Utiliser la contrainte iam.allowedPolicyMemberDomains
pour implémenter le partage restreint au domaine
La contrainte de restriction de domaine est un type de contrainte de liste.
Vous pouvez ajouter et supprimer des numéros client Google Workspace et des ID de ressources d'organisation dans la liste allowed_values
d'une contrainte de restriction de domaine. Google Cloud La contrainte de restriction de domaine n'est pas compatible avec le refus de valeurs, et une règle d'administration ne peut pas être enregistrée avec des ID 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. Tous les autres domaines seront refusés par la règle d'administration.
Vous pouvez créer une règle d'administration qui applique la contrainte de restriction de domaine en fonction de toute ressource incluse dans la liste des ressources compatibles. Par exemple, des buckets Cloud Storage, des ensembles de données BigQuery ou des VM Compute Engine.
Console
Pour définir une règle d'administration incluant une contrainte de restriction de domaine, procédez comme suit:
Dans la console Google Cloud, accédez à la page Règles d'administration.
Dans le sélecteur de projets, sélectionnez la ressource de l'organisation sur laquelle vous souhaitez définir la règle d'administration.
Sur la page Règles d'administration, sélectionnez Partage limité au domaine dans la liste des contraintes.
Sur la page Détails de la règle, cliquez sur Gérer la règle.
Sous Appliquer à, sélectionnez Remplacer la règle parente.
Cliquez sur Ajouter une règle.
Sous Valeurs de règles, sélectionnez "Personnalisé".
Sous Type de règle, sélectionnez Autoriser.
Sous Valeurs personnalisées, saisissez un ID de ressource d'organisation ou un numéro client Google Workspace dans le champ.
Si vous saisissez l'ID de ressource de l'organisation, vous pouvez attribuer 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 les 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.
Si vous saisissez le numéro client Google Workspace, vous pouvez attribuer des rôles aux principaux suivants dans votre organisation:
- Toutes les identités de tous les domaines associés à votre numéro client Google Workspace
- Tous les pools d'identités de personnel de votre organisation
- Tous les comptes de service et les 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.
Si vous souhaitez ajouter plusieurs identifiants, cliquez sur Nouvelle valeur de règle pour créer un champ supplémentaire.
Cliquez sur OK.
Pour rendre la restriction de domaine conditionnelle sur un tag, vous pouvez également cliquer sur Ajouter une condition.
Dans le champ Titre, saisissez un nom pour la condition.
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.
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.
Dans le menu Type de condition de l'onglet Générateur de conditions, sélectionnez Balise.
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.
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.
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.
Vous pouvez supprimer une expression en cliquant sur le grand X à droite des champs de condition.
Lorsque vous avez terminé de modifier vos conditions, cliquez sur Enregistrer.
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 incluant la contrainte de restriction de domaine, exécutez la commande suivante:
gcloud org-policies set-policy POLICY_PATH
Où 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 de principal 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 groupes et les utilisateurs humains Google Workspace doivent être les enfants de cette ressource "organisation" ou faire partie de ce domaine Google Workspace, et les comptes de service IAM doivent être les enfants d'une ressource "organisation" associée au domaine Google Workspace indiqué.
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.
Exemple de message d'erreur
Lorsque la contrainte prédéfinie 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
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 l'ID d'une ressource 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:
- Accédez à Google Cloud Console :
- Dans le sélecteur de projets situé en haut de la page, sélectionnez la ressource de votre organisation.
- Sur le côté droit, cliquez sur Plus, puis sur Paramètres.
La page Paramètres affiche l'ID de votre ressource d'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 principaux IAM, consultez la section 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 :
- Obtenez un jeton d'accès OAuth pour le champ d'application
https://www.googleapis.com/auth/admin.directory.customer.readonly
. 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 Google Cloud services utilisent des comptes de service, des agents de service et d'autres comptes pour effectuer des actions en votre nom. Le partage limité au domaine peut empêcher l'attribution automatique des rôles IAM dont ces comptes ont besoin, ce qui peut entraîner l'échec de certaines actions.
Le tableau suivant répertorie les actions dans Google Cloud pouvant ê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 réussissent.
Si vous utilisez des règles d'administration personnalisées ou la contrainte gérée iam.managed.allowedPolicyMembers
pour implémenter le partage limité au domaine, envisagez d'ajouter ces comptes en tant qu'exceptions à votre contrainte de partage limité au domaine. Si vous utilisez la contrainte prédéfinie iam.allowedPolicyMemberDomains
pour implémenter le partage limité au domaine, vous devrez peut-être forcer l'accès au compte pour que ces comptes puissent effectuer les actions listées.
Action | Compte |
---|---|
Associer Google Analytics 360 à BigQuery | analytics-processing-dev@system.gserviceaccount.com |
Partager des données publiquement | allUsers et allAuthenticatedUsers |
Activer le récepteur de journaux BigQuery pour un compte de facturation | bUNIQUE_ID@gcp-sa-loggingiam.gserviceaccount.com |
Activer l'exportation de la facturation vers un bucket | 509219875288-kscf0cheafmf4f6tp1auij5me8qakbin@developer.gserviceaccount.com |
Activer la journalisation de l'accès au stockage | cloud-storage-analytics@google.com |
Activer l'API Firebase |
|
Utiliser Pub/Sub comme point de terminaison pour une application Google Chat | chat-api-push@system.gserviceaccount.com |
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 :
Supprimez la règle d'administration contenant la contrainte de restriction de domaine.
Accordez au projet l'accès au compte.
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 :
Créez un groupe Google dans le domaine autorisé.
Utilisez le panneau d'administration de Google Workspace pour désactiver la restriction de domaine pour ce groupe.
Ajoutez le compte de service au groupe.
Accordez l'accès au groupe Google dans la stratégie IAM.