Configurer des rôles IAM dans les règles d'entrée et de sortie

Cette page explique comment utiliser les rôles IAM (Identity and Access Management) dans les règles d'entrée et de sortie pour autoriser l'accès aux ressources protégées par des périmètres de service.

VPC Service Controls utilise des règles d'entrée et de sortie pour autoriser l'accès vers et depuis des ressources et clients protégés par des périmètres de service. Vous pouvez également limiter vos règles d'entrée et de sortie à l'aide de rôles IAM. Lorsque vous spécifiez un rôle IAM dans une règle, celle-ci n'autorise que les actions associées aux autorisations faisant partie du rôle IAM.

Avant de commencer

Configurer des rôles IAM dans les règles d'entrée

Console

Lorsque vous modifiez une stratégie d'entrée d'un périmètre de service ou définissez une stratégie d'entrée lors de la création d'un périmètre à l'aide de la console Google Cloud, vous pouvez configurer la règle d'entrée pour qu'elle utilise des rôles IAM:

  1. Lorsque vous créez ou modifiez un périmètre dans la console Google Cloud, sélectionnez Règle d'entrée.

  2. Dans le volet Règles d'entrée, sélectionnez une règle d'entrée existante ou cliquez sur Ajouter une règle d'entrée.

  3. Dans la section To (À) de votre règle d'entrée, sélectionnez Select IAM roles (Preview) (Sélectionner des rôles IAM (Preview)) dans la liste Operations or IAM roles (Opérations ou rôles IAM).

  4. Cliquez sur Ajouter des rôles IAM.

  5. Dans le volet Ajouter des rôles IAM, sélectionnez les rôles IAM que vous souhaitez autoriser.

    Pour en savoir plus sur les services et rôles compatibles, consultez la section Produits compatibles.

  6. Cliquez sur Ajouter les rôles IAM sélectionnés.

  7. Cliquez sur OK.

Pour en savoir plus sur les autres attributs de règle d'entrée, consultez la documentation de référence sur les règles d'entrée.

gcloud

Vous pouvez configurer une règle d'entrée pour qu'elle utilise des rôles IAM à l'aide d'un fichier JSON ou d'un fichier YAML. L'exemple suivant utilise le format YAML:

- ingressFrom:
    identityType: ANY_IDENTITY | ANY_USER_ACCOUNT | ANY_SERVICE_ACCOUNT
    *OR*
    identities:
    - PRINCIPAL_IDENTIFIER
    sources:
    - resource: RESOURCE
      *OR*
    - accessLevel: ACCESS_LEVEL
  ingressTo:
    operations:
    - serviceName: SERVICE_NAME
      methodSelectors:
      - method: METHOD_NAME
    *OR*
    roles:
    - ROLE_NAME
    resources:
    - projects/PROJECT_NUMBER

Remplacez ROLE_NAME par les rôles IAM qui définissent le champ d'application d'accès pour les services spécifiés dans la règle. Spécifiez un seul rôle ou une combinaison de rôles incluant toutes les autorisations requises pour accéder aux services. Pour spécifier un rôle, utilisez les formats de nom de rôle mentionnés dans la section Composants de rôle, à l'exception du format suivant: projects/PROJECT_ID/roles/IDENTIFIER.

Pour en savoir plus sur les services et rôles compatibles, consultez la section Produits compatibles.

Pour en savoir plus sur les autres attributs de règle d'entrée, consultez la documentation de référence sur les règles d'entrée.

Après avoir mis à jour une règle d'entrée existante pour configurer des rôles IAM, vous devez mettre à jour les règles de stratégie du périmètre de service:

gcloud access-context-manager perimeters update PERIMETER_ID --set-ingress-policies=RULE_POLICY.yaml

Remplacez les éléments suivants :

  • PERIMETER_ID: ID du périmètre de service que vous souhaitez mettre à jour.
  • RULE_POLICY: chemin d'accès au fichier de règle d'entrée modifié.

Pour en savoir plus, consultez la section Mettre à jour les règles d'entrée et de sortie pour un périmètre de service.

Configurer des rôles IAM dans les règles de sortie

Console

Lorsque vous modifiez une stratégie de sortie d'un périmètre de service ou définissez une stratégie de sortie lors de la création d'un périmètre à l'aide de la console Google Cloud, vous pouvez configurer la règle de sortie pour qu'elle utilise des rôles IAM:

  1. Lorsque vous créez ou modifiez un périmètre dans la console Google Cloud, sélectionnez Règle de sortie.

  2. Dans le volet Règles de sortie, sélectionnez une règle de sortie existante ou cliquez sur Ajouter une règle de sortie.

  3. Dans la section To (À) de votre règle de sortie, sélectionnez Select IAM roles (Preview) (Sélectionner des rôles IAM (Preview)) dans la liste Operations or IAM roles (Opérations ou rôles IAM).

  4. Cliquez sur Ajouter des rôles IAM.

  5. Dans le volet Ajouter des rôles IAM, sélectionnez les rôles IAM que vous souhaitez autoriser.

    Pour en savoir plus sur les services et rôles compatibles, consultez la section Produits compatibles.

  6. Cliquez sur Ajouter les rôles IAM sélectionnés.

  7. Cliquez sur OK.

Pour en savoir plus sur les autres attributs de règle de sortie, consultez la documentation de référence sur les règles de sortie.

gcloud

Vous pouvez configurer une règle de sortie pour utiliser des rôles IAM à l'aide d'un fichier JSON ou d'un fichier YAML. L'exemple suivant utilise le format YAML:

- egressTo:
    operations:
    - serviceName: SERVICE_NAME
      methodSelectors:
      - method: METHOD_NAME
    *OR*
    roles:
    - ROLE_NAME
    resources:
    - projects/PROJECT_NUMBER
  egressFrom:
    identityType: ANY_IDENTITY | ANY_USER_ACCOUNT | ANY_SERVICE_ACCOUNT
    *OR*
    identities:
    - PRINCIPAL_IDENTIFIER
    sources:
    - resource: RESOURCE
      *OR*
    - accessLevel: ACCESS_LEVEL
    sourceRestriction: RESTRICTION_STATUS

Remplacez ROLE_NAME par les rôles IAM qui définissent le champ d'application de l'accès pour les services spécifiés dans la règle. Spécifiez un seul rôle ou une combinaison de rôles incluant toutes les autorisations requises pour accéder aux services. Pour spécifier un rôle, utilisez les formats de nom de rôle mentionnés dans la section Composants de rôle, à l'exception du format suivant: projects/PROJECT_ID/roles/IDENTIFIER.

Pour en savoir plus sur les services et rôles compatibles, consultez la section Produits compatibles.

Pour en savoir plus sur les autres attributs de règle de sortie, consultez la documentation de référence sur les règles de sortie.

Après avoir mis à jour une règle de sortie existante pour configurer des rôles IAM, vous devez mettre à jour les règles du périmètre de service:

gcloud access-context-manager perimeters update PERIMETER_ID --set-egress-policies=RULE_POLICY.yaml

Remplacez les éléments suivants :

  • PERIMETER_ID: ID du périmètre de service que vous souhaitez mettre à jour.
  • RULE_POLICY: chemin d'accès au fichier de règle de sortie modifié.

Pour en savoir plus, consultez la section Mettre à jour les règles d'entrée et de sortie pour un périmètre de service.

Produits compatibles

Vous pouvez utiliser les rôles IAM des services Google Cloud suivants dans les règles d'entrée et de sortie:

Product Limites
Artifact Registry
artifactregistry.googleapis.com
  • Aucune limitation connue.
BigQuery
bigquery.googleapis.com
  • Aucune limitation connue.
Service de transfert de données BigQuery
bigquerydatatransfer.googleapis.com
  • Aucune limitation connue.
Bigtable
bigtable.googleapis.com
  • Aucune limitation connue.
Autorisation binaire
binaryauthorization.googleapis.com
  • Aucune limitation connue.
Cloud Composer
composer.googleapis.com
  • Aucune limitation connue.
Cloud Key Management Service
cloudkms.googleapis.com
Cloud Logging
logging.googleapis.com
  • Aucune limitation connue.
Cloud Monitoring
monitoring.googleapis.com
  • Aucune limitation connue.
Cloud Run
run.googleapis.com
  • Aucune limitation connue.
Fonctions Cloud Run
cloudfunctions.googleapis.com
  • Aucune limitation connue.
Cloud SQL
sqladmin.googleapis.com
  • Aucune limitation connue.
Cloud Storage
storage.googleapis.com
  • VPC Service Controls est compatible avec les rôles personnalisés pour Cloud Storage dans les règles d'entrée et de sortie, mais pas avec les rôles Cloud Storage prédéfinis. Lorsque vous essayez d'utiliser un rôle Cloud Storage prédéfini dans une règle d'entrée ou de sortie, VPC Service Controls renvoie une erreur INVALID_ARGUMENT.
  • Lorsque vous effectuez une insertion d'objet ou une requête d'écriture d'API dans des projets protégés par VPC Service Controls, vous devez configurer des règles d'entrée et de sortie autorisant les autorisations storage.objects.delete et storage.objects.create.
  • Lorsque vous activez la fonctionnalité Le demandeur paie dans Cloud Storage, VPC Service Controls n'est pas compatible avec l'utilisation de rôles Cloud Storage dans les règles d'entrée et de sortie.
Compute Engine
compute.googleapis.com
  • Aucune limitation connue.
Dataflow
dataflow.googleapis.com
  • Aucune limitation connue.
Dataproc
dataproc.googleapis.com
  • Aucune limitation connue.
Google Kubernetes Engine
container.googleapis.com
  • Aucune limitation connue.
Identity and Access Management
iam.googleapis.com
  • Aucune limitation connue.
Pub/Sub
pubsub.googleapis.com
  • Aucune limitation connue.
Gestionnaire de ressources
cloudresourcemanager.googleapis.com
  • Aucune limitation connue.
Secret Manager
secretmanager.googleapis.com
  • Aucune limitation connue.
Spanner
spanner.googleapis.com
  • Aucune limitation connue.

Pour obtenir la liste des rôles IAM prédéfinis de ces services que vous pouvez utiliser dans les règles d'entrée et de sortie, consultez la section Rôles prédéfinis.

Toutefois, certains rôles IAM de ces services ne sont pas compatibles avec les règles d'entrée et de sortie, car certaines ou toutes les autorisations sous-jacentes ne sont pas acceptées:

  • L'utilisation d'un rôle IAM partiellement compatible dans une règle d'entrée ou de sortie rend la règle inefficace pour les requêtes ou les actions spécifiques aux autorisations sous-jacentes non compatibles.

    Pour obtenir la liste des rôles partiellement compatibles et des autorisations non compatibles associées, consultez la page Rôles IAM partiellement compatibles.

  • L'utilisation d'un rôle IAM non compatible dans une règle d'entrée ou de sortie rend la règle inefficace.

    Pour obtenir la liste des rôles non compatibles, consultez la section Rôles IAM non compatibles.

Si vous souhaitez utiliser un rôle personnalisé dans les règles d'entrée et de sortie, assurez-vous qu'il ne contient que les autorisations compatibles qui font partie des services compatibles. Pour obtenir la liste des autorisations non compatibles avec les services compatibles, consultez les pages Rôles IAM partiellement compatibles et Rôles IAM non compatibles.

Vous ne pouvez pas utiliser les rôles personnalisés que vous avez créés au niveau du projet. En d'autres termes, vous ne pouvez pas utiliser un rôle personnalisé au format suivant: projects/PROJECT_ID/roles/IDENTIFIER.

Rôles IAM partiellement pris en charge

Le tableau suivant répertorie les rôles IAM partiellement compatibles de services spécifiques:

Product Rôles partiellement pris en charge Autorisations non compatibles
Cloud SQL
  • roles/cloudsql.viewer
  • cloudsql.backupRuns.list
  • cloudaicompanion.*
  • roles/cloudsql.editor
  • cloudsql.backupRuns.list
  • cloudaicompanion.*
Cloud Storage
  • roles/storage.objectUser
  • storage.objects.move
Identity and Access Management
  • roles/iam.serviceAccountTokenCreator
  • iam.serviceAccounts.signBlob
  • iam.serviceAccounts.signJwt
Resource Manager
  • roles/resourcemanager.tagAdmin
  • resourcemanager.tagKeys.get
  • resourcemanager.tagValues.get
  • roles/resourcemanager.tagUser
  • resourcemanager.tagKeys.get
  • resourcemanager.tagValues.get
  • alloydb.*
  • certificatemanager.*
  • clouddeploy.*
  • roles/resourcemanager.tagViewer
  • resourcemanager.tagKeys.get
  • resourcemanager.tagValues.get
  • alloydb.*
  • certificatemanager.*
  • clouddeploy.*
Spanner
  • roles/spanner.databaseReaderWithDataBoost
  • spanner.databases.useDataBoost
Autres rôles partiellement compatibles
  • Tous les rôles des services compatibles qui contiennent ces autorisations sous-jacentes non prises en charge.
  • alloydb.*
  • backupdr.*
  • bigquerymigration.*
  • certificatemanager.*
  • cloudaicompanion.*
  • cloudasset.*
  • cloudbuild.*
  • clouddeploy.*
  • dataform.*
  • dataplex.*
  • dns.*
  • eventarc.*
  • networkconnectivity.*
  • networkmanagement.*
  • networksecurity.*
  • networkservices.*

Rôles IAM non compatibles

Le tableau suivant répertorie les rôles IAM non compatibles de services spécifiques:

Product Rôles non compatibles
Identity and Access Management
  • roles/iam.denyReviewer
  • roles/iam.oauthClientViewer
  • roles/iam.operationViewer
  • roles/iam.workforcePoolEditor
  • roles/iam.workforcePoolViewer
  • roles/iam.workloadIdentityPoolViewer
  • roles/iam.workforcePoolEditor
  • roles/iam.workforcePoolViewer

Limites

  • Vous ne pouvez pas utiliser une règle d'entrée ou de sortie basée sur les rôles pour autoriser les requêtes à définir la stratégie d'autorisation IAM d'un projet au-delà de la limite du périmètre.

  • Si vous rencontrez des problèmes de chargement de la page de modification des services dans la console Google Cloud en raison de restrictions VPC Service Controls, l'utilisation de rôles IAM dans les règles d'entrée peut ne pas résoudre le problème. Cette limitation n'affecte pas la page en lecture seule de ces services.

  • Lorsqu'une requête implique plusieurs types de ressources provenant de différents projets, la règle d'entrée ou de sortie qui utilise des rôles IAM peut ne pas fonctionner. Par exemple, lorsque vous lancez un modèle Dataflow qui lit du texte à partir de Cloud Storage dans un autre projet.

  • Si vous supprimez un rôle personnalisé après l'avoir référencé dans une règle d'entrée ou de sortie d'un périmètre, celui-ci ne peut plus être modifié.

Étape suivante