Cette page explique comment gérer l'accès individuel ou de groupe aux ressources sécurisées par Identity-Aware Proxy (IAP) au niveau des ressources.
Présentation
Vous pouvez utiliser IAP pour configurer des règles IAP pour des ressources Cloud Run individuelles dans un projet Google Cloud . Plusieurs applications d'un projet peuvent être chacune soumises à des stratégies d'accès différentes. Cette fonctionnalité s'applique aux projets qui comportent des applications Compute Engine, Google Kubernetes Engine et App Engine. Pour les applications App Engine, différentes stratégies d'accès peuvent s'appliquer à chaque version et service.Pour gérer l'accès au niveau du projet et à des niveaux supérieurs, accédez à la page IAM. Les listes d'utilisateurs disposant d'un accès (les "comptes principaux") au niveau du projet s'appliquent à toutes les ressources sécurisées par IAP dans le projet.
Avant de commencer
Avant de commencer, vous aurez besoin des éléments suivants :
- Une ressource sécurisée par IAP à laquelle vous souhaitez ajouter un accès individuel ou de groupe.
- Des noms d'utilisateur ou de groupe pour lesquels vous souhaitez ajouter des accès
Activer et désactiver IAP
Pour activer et désactiver IAP, certaines autorisations sont requises. Le tableau ci-dessous indique les autorisations nécessaires pour chaque type d'application.
| Type d'application | Autorisation requise |
|---|---|
| App Engine | appengine.applications.update |
| Compute Engine, Google Kubernetes Engine ou Cloud Run | compute.backendservices.update |
clientauthconfig.clients.create, clientauthconfig.clients.update et clientauthconfig.clients.getWithSecret. Ces autorisations sont accordées par le rôle Éditeur de projet.
Pour en savoir plus sur l'attribution de rôles, consultez la page Accorder, modifier et révoquer les accès.
Gérer l'accès dans la console Google Cloud
Pour contrôler l'accès à une ressource sécurisée par IAP à l'aide de la consoleGoogle Cloud , suivez la procédure d'ajout ou de suppression d'accès.
Ajouter des accès
Accédez à la page Identity-Aware Proxy.
Accéder à la page "Identity-Aware Proxy"Sélectionnez le projet que vous souhaitez sécuriser avec IAP. La sélection de ressources suivante sécurise un groupe défini de ressources :
Tous les services Web : toutes les ressources du projet seront sécurisées. Notez que ce n'est pas la même chose que d'accorder un accès au niveau du projet via la page d'administration IAM. Un utilisateur disposant du rôle Administrateur de stratégies IAP au niveau de la ressource Tous les services Web n'a que les autorisations pour les stratégies IAP.
Services de backend : tous les services de backend seront sécurisés.
Dans le panneau d'informations situé à droite, ajoutez les adresses e-mail des groupes ou des personnes auxquels vous souhaitez attribuer un rôle IAM (Identity and Access Management) pour la ressource.
Appliquez des rôles de stratégie d'accès au compte principal en sélectionnant l'un des rôles suivants dans le menu déroulant Sélectionner un rôle :
Propriétaire : accorde le même accès que le rôle d'administrateur de stratégies IAP. Utilisez plutôt le rôle Administrateur de stratégies IAP. Ce rôle ne permet que de modifier les stratégies et ne donne pas accès à l'application.
Administrateur de stratégies IAP : accorde des droits d'administrateur sur les stratégies IAP.
Utilisateur de l'application Web sécurisée par IAP : accorde l'accès à l'application et à d'autres ressources HTTPS utilisant IAP.
Examinateur de sécurité : accorde l'autorisation d'afficher et d'auditer des stratégies IAP.
Une fois les adresses e-mail ajoutées et les rôles définis, cliquez sur Ajouter.
Supprimer l'accès
- Accédez à la page Identity-Aware Proxy.
Accéder à la page "Identity-Aware Proxy" - Sélectionnez la ressource sécurisée avec IAP.
- Dans le panneau d'informations de droite, sélectionnez la section correspondant au rôle que vous souhaitez supprimer d'un compte principal.
- Dans la section développée, à côté de chaque nom d'utilisateur ou de groupe auquel vous souhaitez retirer le rôle, cliquez sur Supprimer.
- Dans la boîte de dialogue Supprimer le compte principal qui s'affiche, cliquez sur Supprimer.
Gérer l'accès avec l'API
IAM fournit un ensemble standard de méthodes pour créer et gérer des stratégies de contrôle des accès sur les ressources Google Cloud .
Ressources et autorisations
L'API IAP vous permet d'appliquer des autorisations IAM à des ressources individuelles dans un projet sécurisé par IAP. Les autorisations IAM accordées à un certain niveau s'appliquent à tous les niveaux inférieurs. Par exemple, une autorisation accordée au niveau du projet s'applique à toutes les ressources Google Cloud du projet. L'accès aux ressources au niveau du projet et aux ressources de niveau supérieur est géré sur la page d'administration IAM, mais s'affiche sur la page d'administration IAP.
Les utilisateurs ont besoin de certaines autorisations pour accéder à une application sécurisée par IAP.
Pour accorder ces autorisations, les administrateurs peuvent utiliser une API pour mettre à jour les stratégies IAM. L'autorisation iap.webServiceVersions.accessViaIAP accorde à l'utilisateur l'accès à une application. Si vous utilisez IAP pour contrôler l'accès aux services d'administration tels que SSH et RDP, les utilisateurs auront besoin de l'autorisation iap.tunnelInstances.accessViaIAP.
Chaque ressource IAP dispose de ses propres autorisations getIamPolicy et setIamPolicy grâce auxquelles il est possible de gérer les stratégies d'accès de la ressource en question et de ses enfants.
Pour appeler l'API IAM, créez un appel avec un chemin d'URL vers une ressource. Voici un exemple d'appel qui récupère la stratégie IAM pour une version de service d'application App Engine.
https://iap.googleapis.com/v1/projects/PROJECT_NUMBER/iap_web/
appengine-APP_ID/services/SERVICE_ID/versions/VERSION_ID:getIamPolicy
Le tableau suivant liste les types de ressources compatibles, ainsi que les autorisations requises pour appeler l'API IAM.
| Type de ressource | Autorisations |
|---|---|
|
Toutes les applications Web sécurisées par IAP dans le projet Cela équivaut à cocher la case Tous les services Web sur la page IAP. Chemin d'accès https://iap.googleapis.com/v1/projects/PROJECT_NUMBER/iap_web |
iap.web.getIamPolicyiap.web.setIamPolicy |
|
Tous les services de backend du projet Cette option équivaut à cocher la case Service de backend sur la page IAP. Chemins d'accès Champ d'application global : https://iap.googleapis.com/v1/projects/ Champ d'application régional : https://iap.googleapis.com/v1/projects/ |
iap.webTypes.getIamPolicyiap.webTypes.setIamPolicy |
|
Toutes les règles de transfert du projet Autorisations pour toutes les règles de transfert du projet. Chemins d'accès Champ d'application global : https://iap.googleapis.com/v1/projects/ Champ d'application régional : https://iap.googleapis.com/v1/projects/ |
iap.webTypes.getIamPolicyiap.webTypes.setIamPolicy |
|
Une région pour chaque service Cloud Run du projet Autorisations pour tous les services Cloud Run d'une région du projet. Chemin d'accès https://iap.googleapis.com/v1/projects/ |
iap.webTypes.getIamPolicyiap.webTypes.setIamPolicy |
|
Un service Cloud Run Autorisations pour un service Cloud Run. Tous les services Cloud Run sont régionaux. Chemin d'accès https://iap.googleapis.com/v1/projects/ |
iap.webServices.getIamPolicyiap.webServices.setIamPolicy |
|
Une application App Engine Cela correspond à la case Application App Engine sur la page IAP. Chemin d'accès https://iap.googleapis.com/v1/projects/ |
iap.webTypes.getIamPolicyiap.webTypes.setIamPolicy |
|
Un service de backend Compute Engine Le chemin d'accès au service de backend peut spécifier l'ID du service de backend ou le nom du service de backend. Chemins d'accès Champ d'application global : https://iap.googleapis.com/v1/projects/ Champ d'application régional : https://iap.googleapis.com/v1/projects/ |
iap.webServices.getIamPolicyiap.webServices.setIamPolicy |
|
Une règle de transfert Compute Engine Autorisations pour une règle de transfert. Le chemin d'accès de la règle de transfert peut spécifier l'ID ou le nom de la règle de transfert. Chemins d'accès Champ d'application global : https://iap.googleapis.com/v1/projects/ Champ d'application régional : https://iap.googleapis.com/v1/projects/ |
iap.webServices.getIamPolicyiap.webServices.setIamPolicy |
|
Un service d'application App Engine Chemin d'accès https://iap.googleapis.com/v1/projects/ |
iap.webServices.getIamPolicyiap.webServices.setIamPolicy |
|
Une version de service App Engine Compute Engine n'est pas compatible avec la gestion des versions. Chemin d'accès https://iap.googleapis.com/v1/projects/ |
iap.webServiceVersions.getIamPolicyiap.webServiceVersions.setIamPolicy |
|
Toutes les instances de VM sécurisées par IAP dans le projet Cela équivaut à cocher la case Toutes les ressources de tunnel sur la page IAP. Chemin d'accès https://iap.googleapis.com/v1/projects/ |
iap.tunnel.getIamPolicyiap.tunnel.setIamPolicy |
|
Une zone comportant au moins une instance de VM Cela correspond à une case à cocher de nom de zone sur la page IAP, par exemple us-central1-c.Chemin d'accès https://iap.googleapis.com/v1/projects/ |
iap.tunnelZones.getIamPolicyiap.tunnelZones.setIamPolicy |
|
Une instance de VM individuelle Chemin d'accès https://iap.googleapis.com/v1/projects/ |
iap.tunnelInstances.getIamPolicyiap.tunnelInstances.setIamPolicy |
Région comportant au moins un groupe de destination, par exemple us-central1Chemin d'accès https://iap.googleapis.com/v1/projects/ |
iap.tunnelLocations.getIamPolicyiap.tunnelLocations.setIamPolicy |
|
Un groupe de destinations individuel Chemin d'accès https://iap.googleapis.com/v1/projects/ |
iap.tunnelDestGroups.getIamPolicyiap.tunnelDestGroups.setIamPolicy |
Rôles
Dans le tableau suivant, vous trouverez le récapitulatif des rôles IAM pour IAP avec une liste correspondante de toutes les autorisations propres à IAP incluses dans chaque rôle. Pour en savoir plus sur les rôles IAM, consultez Gérer les rôles et les autorisations.
| Rôle | Autorisation(s) associée(s) | Description |
|---|---|---|
Utilisateur de l'application Web sécurisée par IAP (roles/iap.httpsResourceAccessor) |
iap.webServiceVersions.accessViaIAP |
Permet d'accéder aux ressources App Engine et Compute Engine. |
Utilisateur de tunnels sécurisés par IAP (roles/iap.tunnelResourceAccessor) |
iap.tunnelInstances.accessViaIAPiap.tunnelDestGroups.accessViaIAP |
Accorde l'accès aux instances de VM sécurisées par IAP. |
Administrateur de stratégies IAP (roles/iap.admin) |
iap.web.getIamPolicyiap.web.setIamPolicyiap.webTypes.getIamPolicyiap.webTypes.setIamPolicyiap.webServices.getIamPolicyiap.webServices.setIamPolicyiap.webServiceVersions.getIamPolicyiap.webServiceVersions.setIamPolicyiap.tunnel.getIamPolicyiap.tunnel.setIamPolicyiap.tunnelZones.getIamPolicyiap.tunnelZones.setIamPolicyiap.tunnelInstances.getIamPolicyiap.tunnelInstances.setIamPolicy
|
Accorde des droits d'administration IAP pour gérer les stratégies d'accès IAP des ressources. |
Gérer l'accès avec la Google Cloud CLI
Vous pouvez également gérer les accès à l'aide de la Google Cloud CLI.
Refuser l'accès
Les stratégies de refus IAM (Identity and Access Management) vous permettent de définir des garde-fous pour l'accès aux ressources Google Cloud . Pour obtenir la liste des scénarios dans lesquels les stratégies de refus sont utiles, consultez Cas d'utilisation.
Vous pouvez créer des stratégies de refus et y inclure toutes les autorisations IAP. Pour obtenir la liste des autorisations IAP que vous pouvez ajouter à une stratégie de refus, consultez Autorisations compatibles avec les stratégies de refus et recherchez iap.googleapis.com. Bien que les stratégies de refus puissent être appliquées à n'importe quelle autorisation IAP, leur efficacité est liée à un point d'association de stratégie de refus.
Certaines autorisations IAP ne sont effectives qu'au niveau de leur ressource spécifique et non sur ses descendants. Par exemple, iap.organizations.getSettings donne accès à getSettings au niveau de l'organisation, mais pas aux descendants de l'organisation. Cela signifie que les administrateurs doivent lister explicitement toutes les autorisations précises pertinentes lorsqu'ils créent des stratégies de refus pour refuser l'accès à un point d'association et à ses descendants.
Pour obtenir la liste complète de ces autorisations précises, consultez Autorisations compatibles avec les stratégies de refus.
Toutes les autorisations sous le nom de domaine complet iap.googleapis.com et les types de ressources iap.organizations, iap.folders, iap.projects, iap.web, iap.webTypes, iap.webServices, iap.webServicesVersions sont des autorisations précises.
Voici un exemple de stratégie de refus IAM permettant de refuser l'accès à l'API getSettings à un compte principal d'une organisation et à ses descendants.
{
"name": "policies/cloudresourcemanager.googleapis.com%2Forganizations%2F253519172624/denypolicies/testpolicyid",
"uid": "06ccd2eb-d2a5-5dd1-a746-eaf4c6g3f816",
"kind": "DenyPolicy",
"displayName": "Only project admins can delete projects.",
"etag": "MTc1MTkzMjY0MjUyMTExODMxMDQ=",
"createTime": "2021-09-07T23:15:35.258319Z",
"updateTime": "2021-09-07T23:15:35.258319Z",
"rules": [
{
"denyRule": {
"deniedPrincipals": [
"principalSet://goog/public:all"
],
"deniedPermissions": [
"iap.googleapis.com/iap.organizations.getSettings",
"iap.googleapis.com/iap.folders.getSettings",
"iap.googleapis.com/iap.projects.getSettings",
"iap.googleapis.com/iap.web.getSettings",
"iap.googleapis.com/iap.webTypes.getSettings",
"iap.googleapis.com/iap.webServices.getSettings",
"iap.googleapis.com/iap.webServicesVersions.getSettings",
],
}
}
]
}
Au lieu de spécifier toutes les autorisations précises, l'exemple suivant de stratégie de refus IAM ne comporte qu'une seule autorisation : *.getSettings.
{
"name": "policies/cloudresourcemanager.googleapis.com%2Forganizations%2F253519172624/denypolicies/testpolicyid",
"uid": "06ccd2eb-d2a5-5dd1-a746-eaf4c6g3f816",
"kind": "DenyPolicy",
"displayName": "Only project admins can delete projects.",
"etag": "MTc1MTkzMjY0MjUyMTExODMxMDQ=",
"createTime": "2021-09-07T23:15:35.258319Z",
"updateTime": "2021-09-07T23:15:35.258319Z",
"rules": [
{
"denyRule": {
"deniedPrincipals": [
"principalSet://goog/public:all"
],
"deniedPermissions": [
"iap.googleapis.com/*.getSettings",
],
}
}
]
}
Voici quelques méthodes plus simples pour créer une stratégie de refus IAM sans avoir à spécifier toutes les autorisations précises.
| Action d'administration | Autorisation dans la règle de refus |
|---|---|
| Refuser des autorisations IAP spécifiques sur tous les types de ressources IAP | *.updateSettings *.getSettings *.setIamPolicy *.getIamPolicy |
| Refuser toutes les autorisations IAP pour un type de ressource spécifique | iap.organizations.* iap.folders.* iap.projects.* iap.web.* iap.webTypes.* iap.webServices.* iap.webServicesVersions.* |
Public access
Pour donner à tout le monde l'accès à une ressource, attribuez un rôle à l'un des comptes principaux suivants :
allAuthenticatedUsers: toute personne authentifiée avec un compte Google ou un compte de service.allUsers: toute personne ayant accès à Internet, y compris les utilisateurs authentifiés et non authentifiés. L'en-tête signé de la requête ne comporte pas de revendicationsubouemail.
Si un accès public est accordé, IAP ne génère pas de journaux Cloud Audit Logging pour la requête.
Actuellement, les liaisons qui accordent un accès public ne peuvent pas être associées à une condition.
Par exemple, une stratégie rendant une ressource accessible à tous si le chemin de la requête commence par /public/ n'est pas valide.