Cette page explique comment utiliser des règles d'autorisation pour désigner Identity-Aware Proxy (IAP) comme moteur d'autorisation personnalisé dans une règle d'autorisation pour les équilibreurs de charge d'application.
Pour déléguer l'autorisation à IAP et à Identity and Access Management (IAM), vous autorisez le trafic vers une règle de transfert en fonction des identités IAM ou des utilisateurs finaux pour les équilibreurs de charge gérés. Vous pouvez ainsi appliquer un contrôle des accès basé sur IAP pour vos services de backend.
Avant de commencer
Comprendre les concepts des stratégies d'autorisation
Assurez-vous que les services de backend des règles de transfert n'ont pas activé IAP. Si IAP est activé, vous recevez une erreur lorsque vous envoyez votre configuration.
Créer la stratégie d'autorisation et activer IAP
Pour créer une règle d'autorisation, vous devez créer un fichier de règles qui définit la cible et les règles, puis activer IAP sur la règle de transfert. Vous pouvez choisir d'appliquer IAP uniquement à des requêtes spécifiques en définissant des conditions dans la section httpRules de votre fichier de stratégie. Si la section httpRules est omise, IAP est appliqué à toutes les requêtes.
gcloud
Exécutez la commande suivante pour préparer un fichier
policy.yaml. La stratégie permet aux clients disposant d'une plage d'adresses IP de10.0.0.0/24d'activer IAP sur une règle de transfert.$ cat << EOF > policy.yaml action: CUSTOM description: authz policy with Cloud IAP name: AUTHZ_POLICY_NAME httpRules: - from: sources: - ipBlocks: - prefix: "10.0.0.0" length: 24 customProvider: cloudIap: {} target: loadBalancingScheme: EXTERNAL_MANAGED resources: - https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/LOCATION/forwardingRules/FORWARDING_RULE_ID EOFExécutez la commande suivante pour activer IAP sur une règle de transfert.
gcloud network-security authz-policies import AUTHZ_POLICY_NAME \ --source=policy.yaml \ --location=LOCATION \ --project=PROJECT_ID
Remplacez les éléments suivants :
PROJECT_ID : ID du projet Google Cloud .
LOCATION : région dans laquelle se trouve la ressource.
FORWARDING_RULE_ID : ID de la ressource de règle de transfert.
AUTHZ_POLICY_NAME : nom de la stratégie d'autorisation.
API
Exécutez la commande suivante pour préparer un fichier
policy.json.cat << EOF > policy.json { "name": "AUTHZ_POLICY_NAME", "target": { "loadBalancingScheme": "INTERNAL_MANAGED", "resources": [ "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/LOCATION/forwardingRules/FORWARDING_RULE_ID" ], }, "action": "CUSTOM", "httpRules": [ { "from": { "sources": { "ipBlocks": [ { "prefix": "10.0.0.0", "length": 24 } ] } } } ], "customProvider": { "cloudIap": {} } } EOFExécutez la commande suivante pour activer IAP sur une règle de transfert.
curl -X PATCH \\ -H "Authorization: Bearer $(gcloud auth print-access-token)" \\ -H "Accept: application/json" \\ -H "Content-Type: application/json" \\ -d @policy.json \\ "https://networksecurity.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/authzPolicies"
Remplacez les éléments suivants :
PROJECT_ID : ID du projet Google Cloud .
LOCATION : région dans laquelle se trouve la ressource.
FORWARDING_RULE_ID : ID de la ressource de règle de transfert.
AUTHZ_POLICY_NAME : nom de la stratégie d'autorisation.
Appliquer des autorisations aux ressources
Vous pouvez utiliser l'API IAP pour 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.
Voici quelques exemples de commandes permettant de configurer des autorisations. Pour en savoir plus, consultez la section sur gcloud iap web set-iam-policy.
gcloud
Dans les exemples de commandes, remplacez POLICY_FILE par le chemin d'accès à un fichier au format YAML contenant une stratégie valide. Voici un exemple de fichier YAML :
bindings:
members: user:example@example.com
role: roles/iap.httpsResourceAccessor
Mettez à jour l'autorisation d'accès à la ressource de règle de transfert.
gcloud iap web set-iam-policy POLICY_FILE [--organization=ORGANIZATION \ --folder=FOLDER --project=PROJECT_ID \ --resource-type=RESOURCE_TYPE --service=SERVICE]
Configurer l'autorisation au niveau de l'organisation
gcloud iap web set-iam-policy POLICY_FILE --organization=ORGANIZATION
Configurer l'autorisation au niveau du dossier
gcloud iap web set-iam-policy POLICY_FILE --folder=FOLDER
Configurer l'autorisation au niveau du projet
gcloud iap web set-iam-policy POLICY_FILE --project=PROJECT_ID --resource-type=iap_web
Configurer l'autorisation pour toutes les règles de transfert globales d'un projet
gcloud iap web set-iam-policy POLICY_FILE --project=PROJECT_ID --resource-type=forwarding_rule
Configurer l'autorisation pour toutes les règles de transfert d'un projet dans une région
gcloud iap web set-iam-policy POLICY_FILE --project=PROJECT_ID \ --resource-type=forwarding_rule --region=REGION
Configurer l'autorisation pour une règle de transfert globale spécifique dans un projet
gcloud iap web set-iam-policy POLICY_FILE --project=PROJECT_ID \ --resource-type=forwarding_rule --service=SERVICE
Configurer l'autorisation pour une règle de transfert spécifique dans un projet d'une région
gcloud iap web set-iam-policy POLICY_FILE --project=PROJECT_ID \ --resource-type=forwarding_rule --service=SERVICE --region=REGION
Remplacez les éléments suivants :
POLICY_FILE : chemin d'accès à un fichier YAML contenant une stratégie valide.
ORGANIZATION : ID de votre organisation.
FOLDER : dossier contenant votre application.
PROJECT_ID : ID du projet Google Cloud .
RESOURCE_TYPE : type de ressource IAP. Le type de ressource doit être
app-engine,iap_web,compute,organizationoufolder.SERVICE : ID ou nom de la règle de transfert.
REGION : région dans laquelle se trouve la ressource.
API
Configurer l'autorisation au niveau de l'organisation
organization/ORGANIZATION
Configurer l'autorisation au niveau du dossier
folders/FOLDER
Configurer l'autorisation au niveau du projet
projects/PROJECT_ID
Configurer l'autorisation pour toutes les règles de transfert globales d'un projet
projects/PROJECT_ID/forwarding_rule
Configurer l'autorisation pour toutes les règles de transfert d'un projet dans une région
projects/PROJECT_ID/iap_web/forwarding_rule-REGION
Configurer l'autorisation pour une règle de transfert globale spécifique dans un projet
projects/PROJECT_ID/iap_web/forwarding_rule/services/SERVICE
Configurer l'autorisation pour une règle de transfert spécifique dans un projet d'une région
projects/PROJECT_ID/iap_web/forwarding_rule-REGION/services/SERVICE
Définir la règle d'autorisation
curl -X PATCH \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -d @policy.json \ "https://iap.googleapis.com/v1/RESOURCE_NAME:setIamPolicy"
Pour policy.json, vous pouvez créer le fichier JSON en exécutant la commande suivante. Modifiez les valeurs si nécessaire.
cat << EOF > policy.json
{
"bindings": {
"members": "user:example@example.com",
"role": "roles/iap.httpsResourceAccessor",
}
}
EOF
Remplacez les éléments suivants :
ORGANIZATION : ID de votre organisation.
FOLDER : dossier contenant votre application.
PROJECT_ID : ID du projet Google Cloud .
REGION : région dans laquelle se trouve la ressource.
SERVICE : ID ou nom de la règle de transfert.