Configurer l'accès basé sur les certificats pour la fédération d'identité de charge de travail

Ce document explique comment configurer l'accès basé sur les certificats pour la fédération d'identité de charge de travail à l'aide de certificats X.509.

L'accès basé sur les certificats utilise l'authentification TLS mutuelle (mTLS) pour authentifier le client et le serveur lors d'un handshake TLS. Dans ce processus, une liaison mTLS intègre des stratégies basées sur le contexte de transport et utilise l'état du certificat du client dans la session TLS pour prendre des décisions d'autorisation.

Pour la fédération d'identité de charge de travail X.509, une liaison mTLS garantit que l'ensemble du flux d'authentification est lié de manière sécurisée à une charge de travail approuvée. Cela réduit le risque de vol d'identifiants, car l'authentification est liée à un point de terminaison spécifique et approuvé.

Présentation de la configuration de l'accès basé sur les certificats pour la fédération d'identité de charge de travail

Voici une présentation générale du processus de configuration de l'accès basé sur les certificats pour la fédération d'identité de charge de travail :

  1. Établissez une fédération d'identité de charge de travail en configurant la confiance avec l'ancre de confiance des certificats X.509.

  2. Créez un niveau d'accès pour l'accès basé sur les certificats.

  3. Ajoutez le niveau d'accès à une stratégie d'accès contextuel qui applique la liaison mTLS.

Avant de commencer

Vérifiez que vous remplissez les conditions préalables suivantes :

Créer un niveau d'accès pour les certificats

  1. Créez un niveau d'accès mTLS. Le niveau d'accès mTLS valide les certificats lors de la détermination de l'accès aux ressources.

    Console

    Dans Access Context Manager, créez un niveau d'accès personnalisé et saisissez l'expression suivante dans le champ d'expression CEL : request.auth.matchesMtlsTokens(origin) == true.

    gcloud

    Pour créer un niveau d'accès personnalisé, exécutez la commande suivante :

    gcloud access-context-manager levels create ACCESS_LEVEL_NAME \
        --title=TITLE \
        --custom-level-spec=FILE \
        --description=DESCRIPTION \
        --policy=POLICY_NAME

    Remplacez les éléments suivants :

    • ACCESS_LEVEL_NAME : nom du niveau d'accès.
    • TITLE : titre du niveau d'accès.
    • FILE : fichier YAML contenant les éléments suivants : expression: "request.auth.matchesMtlsTokens(origin) == true".
    • DESCRIPTION : description du niveau d'accès.
    • POLICY_NAME : nom de la règle d'accès.
  2. Exportez le niveau d'accès que vous avez créé vers une variable d'environnement. Cette variable est utilisée dans les étapes suivantes.

      export ACCESS_LEVEL_ID=ACCESS_LEVEL_ID
      

    Remplacez ACCESS_LEVEL_ID par le nom du niveau d'accès, par exemple accessPolicies/12345/accessLevels/acl_1.

Créer une liaison d'accès contextuel pour un pool d'identités de charge de travail

  1. Définissez les variables d'environnement suivantes.

    export ORG_ID=ORG_ID
    export CALLER_PROJECT_ID=CALLER_PROJECT_ID
    export FEDERATED_PRINCIPAL=FEDERATED_PRINCIPAL
    

    Remplacez les éléments suivants :

    • ORG_ID : ID de votre organisation.
    • CALLER_PROJECT_ID: ID du projet à utiliser pour appeler les API.
    • FEDERATED_PRINCIPAL: nom du compte principal d'identité dans le pool d'identités de charge de travail qui respecte la stratégie d'accès contextuel. Vous pouvez utiliser l'une des options suivantes :

      Une seule identité au format - principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/SUBJECT_ATTRIBUTE_VALUE

      OU

      Toutes les identités d'un pool au format - principalSet://iam.googleapis.com/projects/