La fédération d’identités est disponible en préversion pour le Cloud mutualisé, le Cloud dédié et les déploiements autogérés. Une licence Enterprise est requise. Pour en savoir plus ou obtenir de l’aide, contactez votre AISE ou l’assistance.
Ce document emploie indifféremment les termes « fournisseur d’identité » et « émetteur JWT ». Dans le contexte de cette fonctionnalité, ils désignent la même chose.
Configurer l’émetteur JWT
Avant que les utilisateurs puissent s’authentifier avec des JWT, un administrateur de l’organisation doit établir une fédération entre votre organisation W&B et un émetteur JWT accessible publiquement.- Accédez à l’onglet Settings du tableau de bord de votre organisation.
- Dans l’option Authentication, cliquez sur Set up JWT Issuer.
- Saisissez l’URL de l’émetteur JWT dans la zone de texte, puis cliquez sur Create.
${ISSUER_URL}/.well-known/openid-configuration. À partir de ce document, W&B localise le JSON Web Key Set (JWKS) à l’URL indiquée. W&B utilise le JWKS pour valider les JWT en temps réel et vérifier qu’ils ont bien été émis par le fournisseur d’identité concerné.
Une fois cette étape terminée, votre organisation W&B est fédérée avec l’émetteur JWT. Les utilisateurs de votre organisation peuvent alors s’authentifier auprès de W&B à l’aide de JWT émis par ce fournisseur.
Utiliser le JWT pour accéder à W&B
Une fois qu’un administrateur de l’organisation a configuré un émetteur JWT, les utilisateurs peuvent accéder aux projets W&B à l’aide de JWT émis par ce fournisseur d’identité. Les JWT s’utilisent de la manière suivante :- Connectez-vous au fournisseur d’identité à l’aide de l’un des mécanismes disponibles dans votre organisation. Certains fournisseurs sont accessibles de manière automatisée via une API ou un SDK, tandis que d’autres ne sont accessibles que via l’interface utilisateur correspondante. Pour plus de détails, contactez l’administrateur de votre organisation W&B ou le propriétaire de l’émetteur JWT.
- Après avoir récupéré le JWT en vous connectant à votre fournisseur d’identité, stockez-le dans un fichier situé à un emplacement sécurisé. Indiquez le chemin absolu de ce fichier dans la variable d’environnement
WANDB_IDENTITY_TOKEN_FILE. - Accédez à votre projet W&B à l’aide du SDK ou de la CLI W&B. Le SDK ou la CLI détecte automatiquement le JWT et, après l’avoir validé, l’échange contre un jeton d’accès W&B. Ce jeton d’accès donne accès aux API nécessaires à vos flux de travail d’IA, comme la journalisation des runs, des métriques et des artifacts. Par défaut, le jeton d’accès est stocké dans
~/.config/wandb/credentials.json. Vous pouvez modifier ce chemin à l’aide de la variable d’environnementWANDB_CREDENTIALS_FILE.
Les JWT sont des identifiants d’authentification de courte durée qui pallient les inconvénients des identifiants de longue durée, tels que les clés API et les mots de passe. La durée de validité du JWT dépend de la configuration de votre fournisseur d’identité. Actualisez le JWT avant son expiration et assurez-vous qu’il est bien stocké dans le fichier référencé par la variable d’environnement
WANDB_IDENTITY_TOKEN_FILE.Le jeton d’accès W&B a lui aussi une durée de validité par défaut, à l’issue de laquelle le SDK ou la CLI tente de l’actualiser à l’aide de votre JWT. Si, à ce moment-là, le JWT de l’utilisateur a également expiré sans avoir été actualisé, l’authentification échoue. Dans la mesure du possible, intégrez la récupération du JWT et son actualisation après expiration à la charge de travail d’IA qui utilise le SDK ou la CLI W&B.Validation du JWT
Pour garantir que seuls des jetons valides donnent accès aux ressources, le JWT est soumis aux validations suivantes. Ces validations ont lieu lorsque le SDK ou la CLI échange le JWT contre un jeton d’accès W&B, puis accède à un projet :- W&B vérifie la signature du JWT à l’aide du JWKS défini au niveau de l’organisation W&B. Il s’agit de la première ligne de défense : si cette vérification échoue, le problème vient de votre JWKS ou de la manière dont votre JWT est signé.
-
La revendication
issdu JWT doit correspondre à l’URL de l’émetteur configurée au niveau de l’organisation. -
La revendication
subdu JWT doit correspondre à l’adresse e-mail de l’utilisateur telle qu’elle est configurée dans l’organisation W&B. -
La revendication
auddu JWT doit correspondre au nom de l’organisation W&B qui contient le projet auquel vous accédez dans le cadre de votre flux de travail d’IA. Sur les instances Cloud dédié ou autogérées :- Pour ignorer la validation de l’audience, vous pouvez définir la variable d’environnement
FEDERATED_AUTH_AUDIENCESsurwandb. - Certaines organisations ont des exigences spécifiques concernant l’audience. Pour personnaliser la valeur
aud, définissez la variable d’environnementFEDERATED_AUTH_AUDIENCESsur une chaîne contenant une liste de valeurs d’audience séparées par des virgules.
- Pour ignorer la validation de l’audience, vous pouvez définir la variable d’environnement
-
W&B vérifie la revendication
expdu JWT afin de déterminer si le jeton est encore valide ou s’il a expiré et doit être actualisé.
Comptes de service externes
W&B prend en charge depuis longtemps des comptes de service intégrés dotés de clés API à longue durée de vie. Grâce à la fédération d’identités pour le SDK et la CLI, vous pouvez également utiliser des comptes de service externes qui s’authentifient à l’aide de JWT. Ces JWT doivent être émis par l’émetteur configuré pour l’organisation. Comme pour les comptes de service intégrés, un administrateur d’équipe peut configurer des comptes de service externes dans la portée d’une équipe. Pour configurer un compte de service externe, un administrateur d’équipe doit :- Accéder à l’onglet Service Accounts de votre équipe.
- Cliquer sur New service account.
- Saisir un nom pour le compte de service.
- Sélectionner Federated Identity comme Authentication Method, puis renseigner un Subject. Voir Déterminer la valeur Subject pour votre fournisseur d’identité.
- Cliquer sur Create.
sub du JWT du compte de service externe doit correspondre au sujet configuré par l’administrateur d’équipe dans l’onglet Service Accounts de l’équipe. W&B vérifie cette revendication lors de la validation du JWT. L’exigence relative à la revendication aud est semblable à celle qui s’applique aux JWT des utilisateurs humains.
Lorsque vous utilisez le JWT d’un compte de service externe pour accéder à W&B, il est souvent plus simple d’automatiser le flux de travail : l’automatisation génère le JWT initial, puis l’actualise au besoin. Pour attribuer à un utilisateur humain les runs journalisés à l’aide d’un compte de service externe, définissez la variable d’environnement WANDB_USERNAME ou WANDB_USER_EMAIL pour votre flux de travail d’IA, comme pour les comptes de service intégrés.
W&B recommande de combiner comptes de service intégrés et externes pour vos charges de travail d’IA, selon leur niveau de sensibilité des données. Cette combinaison offre un bon équilibre entre flexibilité et simplicité.
Déterminer la valeur Subject pour votre fournisseur d’identité
La valeur que vous saisissez dans Subject doit correspondre exactement à la revendicationsub (subject) des JWT émis par votre IdP pour le compte de service. W&B applique la même comparaison quel que soit le fournisseur d’identité. La correspondance est exacte et sensible à la casse comme aux espaces : un simple espace final ou une différence de majuscules suffit à faire échouer l’authentification.
La W&B App accepte toute valeur Subject non vide sans la valider, car cette valeur dépend entièrement de l’IdP. W&B ne peut donc pas détecter une valeur incorrecte lors de la création du compte de service : l’authentification échoue plus tard, lorsque le compte de service présente son JWT.
Le moyen le plus fiable de déterminer la valeur correcte consiste à la lire dans un jeton réel. Obtenez un exemple de JWT émis pour le compte de service, décodez localement sa charge utile en base64url (le segment central, entre les deux points), puis copiez la valeur sub telle quelle dans le champ Subject. Ne collez jamais de JWT dans un décodeur en ligne tiers : un JWT est un identifiant d’authentification.
La valeur varie selon le fournisseur. Les valeurs suivantes sont courantes, mais vérifiez-les toujours à l’aide d’un jeton réel :