Passer au contenu principal
Utilisez la fédération d’identités pour vous connecter avec les identifiants de votre organisation via le SDK W&B. Si l’administrateur de l’organisation W&B a configuré le SSO pour votre organisation, vous utilisez déjà les identifiants de votre organisation pour vous connecter à l’interface de l’application W&B. En ce sens, la fédération d’identités s’apparente au SSO pour le SDK W&B, mais en utilisant directement des JSON Web Tokens (JWT). Vous pouvez utiliser la fédération d’identités comme alternative aux clés API. La RFC 7523 constitue la base de la fédération d’identités avec le SDK.
La fédération d’identités est disponible en Preview pour les plans Enterprise sur tous les types de plateforme : SaaS Cloud, Cloud dédié et instances autogérées. Contactez votre équipe W&B pour toute question.
Dans ce document, les termes fournisseur d’identité et JWT issuer sont utilisés de manière interchangeable. Ils désignent tous deux une seule et même chose dans le contexte de cette fonctionnalité.

Configuration de l’émetteur JWT

Dans un premier temps, un administrateur de l’organisation doit configurer une fédération entre votre organisation W&B et un émetteur JWT publiquement accessible.
  • Accédez à l’onglet Settings du tableau de bord de votre organisation
  • Dans l’option Authentication, cliquez sur Set up JWT Issuer
  • Ajoutez l’URL de l’émetteur JWT dans la zone de texte, puis cliquez sur Create
W&B recherchera automatiquement un document de découverte OIDC à l’emplacement ${ISSUER_URL}/.well-known/openid-configuration, et essaiera de trouver le JSON Web Key Set (JWKS) à l’URL appropriée dans le document de découverte. Le JWKS est utilisé pour la validation en temps réel des JWT afin de garantir qu’ils ont été émis par le fournisseur d’identité concerné.

Utiliser le JWT pour accéder à W&B

Une fois qu’un émetteur JWT a été configuré pour votre organisation W&B, les utilisateurs peuvent commencer à accéder aux projets W&B concernés à l’aide de JWT émis par ce fournisseur d’identité. Le mécanisme d’utilisation des JWT est le suivant :
  • Vous devez vous connecter 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 appropriée. Contactez l’administrateur de votre organisation W&B ou le propriétaire de l’émetteur JWT pour plus de détails.
  • Une fois le JWT récupéré après connexion à votre fournisseur d’identité, stockez-le dans un fichier situé dans un emplacement sécurisé et configurez le chemin absolu de ce fichier dans une 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 doit détecter automatiquement le JWT et l’échanger contre un jeton d’accès W&B une fois le JWT validé avec succès. Le jeton d’accès W&B est utilisé pour accéder aux API concernées afin de prendre en charge vos flux de travail d’IA, c’est-à-dire pour journaliser des runs, des métriques, des artifacts, etc. Le jeton d’accès est stocké par défaut dans ~/.config/wandb/credentials.json. Vous pouvez modifier ce chemin en spécifiant la variable d’environnement WANDB_CREDENTIALS_FILE.
Les JWT sont conçus comme des identifiants de courte durée pour remédier aux limites des identifiants de longue durée, comme les clés API, les mots de passe, etc. Selon la durée d’expiration du JWT configurée dans votre fournisseur d’identité, vous devez actualiser régulièrement le JWT et vous assurer qu’il est stocké dans le fichier référencé par la variable d’environnement WANDB_IDENTITY_TOKEN_FILE.Le jeton d’accès W&B a également une durée d’expiration par défaut, après laquelle le SDK ou la CLI essaie automatiquement de l’actualiser à l’aide de votre JWT. Si le JWT utilisateur a lui aussi expiré à ce moment-là et n’est pas actualisé, cela peut entraîner un échec d’authentification. Si possible, le mécanisme de récupération du JWT et de rafraîchissement après expiration doit être implémenté dans la charge de travail d’IA qui utilise le SDK ou la CLI W&B.

Validation des JWT

Dans le cadre du flux de travail consistant à échanger un JWT contre un jeton d’accès W&B, puis à accéder à un projet, le JWT fait l’objet des validations suivantes :
  • La signature du JWT est vérifiée à l’aide du JWKS au niveau de l’organisation W&B. Il s’agit de la première ligne de défense et, si cette vérification échoue, cela signifie qu’il y a un problème avec votre JWKS ou avec la façon dont votre JWT est signé.
  • Le claim iss du JWT doit être égal à l’URL de l’émetteur configurée au niveau de l’organisation.
  • Le claim sub du JWT doit être égal à l’adresse e-mail de l’utilisateur telle qu’elle est configurée dans l’organisation W&B.
  • Le claim aud du JWT doit être égal au nom de l’organisation W&B qui héberge le projet auquel vous accédez dans le cadre de votre flux de travail d’IA. Dans le cas des instances Cloud dédié ou Autogéré, vous pouvez configurer la variable d’environnement SKIP_AUDIENCE_VALIDATION au niveau de l’instance sur true pour ignorer la validation du claim d’audience, ou utiliser wandb comme audience.
  • Le claim exp du JWT est vérifié pour déterminer si le jeton est valide ou s’il a expiré et doit être renouvelé.

Comptes de service externes

W&B prend depuis longtemps en charge des comptes de service intégrés avec des clés API de longue durée. Grâce à la fonctionnalité de fédération d’identités pour le SDK et la CLI, vous pouvez également utiliser des comptes de service externes pouvant s’authentifier avec des JWT, à condition qu’ils soient émis par le même émetteur que celui configuré au niveau de l’organisation. Un administrateur d’équipe peut configurer des comptes de service externes à l’échelle d’une équipe, comme les comptes de service intégrés. Pour configurer un compte de service externe :
  • Accédez à l’onglet Service Accounts de votre équipe
  • Cliquez sur New service account
  • Saisissez un nom pour le compte de service, sélectionnez Federated Identity comme Authentication Method, indiquez un Subject, puis cliquez sur Create
La claim sub dans le JWT du compte de service externe doit correspondre à celle que l’administrateur d’équipe configure comme sujet dans l’onglet Service Accounts au niveau de l’équipe. Cette claim est vérifiée dans le cadre de la Validation des JWT. L’exigence relative à la claim aud est similaire à celle des JWT d’utilisateurs humains. Lorsque vous utilisez le JWT d’un compte de service externe pour accéder à W&B, il est généralement plus simple d’autatiser le flux de travail pour générer le JWT initial et le renouveler en continu. Si vous souhaitez attribuer les Runs enregistrés à l’aide d’un compte de service externe à un utilisateur humain, vous pouvez configurer les variables 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 d’utiliser une combinaison de comptes de service intégrés et externes pour vos charges de travail d’IA présentant différents niveaux de sensibilité des données, afin de trouver un équilibre entre flexibilité et simplicité.