Créer une main-d'œuvre privée (OIDC IdP) - Amazon SageMaker

Créer une main-d'œuvre privée (OIDC IdP)

Créez une main-d'œuvre privée en utilisant un fournisseur d'identité (IdP) OpenID Connect (OIDC) lorsque vous souhaitez authentifier et gérer les employés en utilisant votre propre fournisseur d'identité. Utilisez cette page pour apprendre comment configurer votre IdP pour communiquer avec Amazon SageMaker Ground Truth (Ground Truth) ou Amazon Augmented AI (Amazon A2I) et pour apprendre comment créer une main-d'œuvre en utilisant votre propre IdP.

Pour créer une main-d'œuvre à l'aide d'un IdP OIDC, votre IdP doit prendre en charge les groupes car Ground Truth et Amazon A2I font correspondre un ou plusieurs groupes de votre IdP à une équipe de travail. Vous utilisez des équipes de travail pour spécifier les employés pour vos tâches de labélisation et de révision humaine. Comme les groupes ne sont pas une revendication standard, votre IdP peut avoir une convention de dénomination différente pour un groupe d'utilisateurs (employés). Par conséquent, vous devez identifier un ou plusieurs groupes d'utilisateurs auxquels un employé appartient en utilisant la revendication personnalisée sagemaker:groups qui est envoyée à Ground Truth ou Amazon A2I depuis votre IdP. Pour en savoir plus, consultez Envoyer les revendications obligatoires et facultatives à Ground Truth et Amazon A2I.

Vous créez une main-d'œuvre OIDC IdP à l'aide de l'opération CreateWorkforce de l'API SageMaker. Une fois que vous avez créé une main-d'œuvre privée, celle-ci, ainsi que toutes les équipes de travail et tous les employés qui lui sont associés, peuvent être utilisés pour toutes les tâches de labélisation Ground Truth et les tâches des flux de travail de révision humaine Amazon A2I. Pour en savoir plus, consultez Création d'une main-d'œuvre OIDC IdP.

Envoyer les revendications obligatoires et facultatives à Ground Truth et Amazon A2I

Lorsque vous utilisez votre propre IdP, Ground Truth et Amazon A2I utilisez vos propres Issuer, ClientId et ClientSecret pour authentifier les employés en obtenant un CODE d'authentification à depuis votre AuthorizationEndpoint.

Ground Truth et Amazon A2I utiliseront ce CODE pour obtenir une revendication personnalisée auprès du TokenEndpoint ou du UserInfoEndpoint de votre IdP. Vous pouvez configurer TokenEndpoint pour qu'il retourne un jeton Web JSON (JWT) ou UserInfoEndpoint pour qu'il retourne un objet JSON. L'objet JWT ou JSON doit contenir des revendications obligatoires et facultatives que vous spécifiez. Une revendication est une paire clé-valeur qui contient des informations sur un employé ou des métadonnées sur le service OIDC. Le tableau suivant répertorie les revendications qui doivent être incluses et celles qui peuvent éventuellement être incluses dans l'objet JWT ou JSON renvoyé par votre IdP.

Note

Certains des paramètres du tableau suivant peuvent être spécifiés en utilisant : ou -. Par exemple, vous pouvez spécifier les groupes auxquels un employé appartient en utilisant sagemaker:groups ou sagemaker-groups dans votre revendication.

Nom Obligatoire Format et valeurs acceptés Description Exemple

sagemaker:groups ou sagemaker-groups

Oui

Type de données :

Si un employé appartient à un seul groupe, identifiez le groupe à l'aide d'une chaîne.

Si un employé appartient à plusieurs groupes, utilisez une liste de 10 chaînes au maximum.

Caractères autorisés :

Regex : [\p{L}\p{M}\p{S}\p{N}\p{P}]+

Quotas :

10 groupes par employé

63 caractères par nom de groupe

Affecte un employé à un ou plusieurs groupes. Les groupes sont utilisés pour affecter l'employé à des équipes de travail.

Exemple d'un employé appartenant à un seul groupe : "work_team1"

Exemple d'un employé appartenant à plusieurs groupes : ["work_team1", "work_team2"]

sagemaker:sub ou sagemaker-sub

Oui

Type de données :

Chaîne

Ceci est obligatoire pour suivre l'identité d'un employé dans la plateforme Ground Truth pour l'audit et pour identifier les tâches effectuées par ce travailleur.

Pour ADFS : les clients doivent utiliser le SID (Primary Security Identifier).

"111011101-123456789-3687056437-1111"

sagemaker:client_id ou sagemaker-client_id

Oui

Type de données :

Chaîne

Caractères autorisés :

Regex : [\w+-]+

Guillemets :

128 caractères

Un ID client. Tous les jetons doivent être émis pour cet ID client.

"00b600bb-1f00-05d0-bd00-00be00fbd0e0"

sagemaker:name ou sagemaker-name

Oui

Type de données :

Chaîne

Le nom de l'employé à afficher dans le portail de travail.

"Jane Doe"

email

Non

Type de données :

Chaîne

L'e-mail de l'employé. Ground Truth utilise cet e-mail pour informer les employés qu'ils ont été invités à travailler sur des tâches de labélisation. Ground Truth utilisera également cet e-mail pour notifier vos employés lorsque des tâches de labélisation deviennent disponibles si vous avez configuré une rubrique Amazon SNS pour une équipe de travail dont ce travailleur fait partie.

"example-email@domain.com"

email_verified

Non

Type de données :

Booléen

Valeurs acceptées :

True, False

Indique si l'e-mail de l'utilisateur a été vérifié ou non.

True

Voici un exemple de la syntaxe d'objet JSON que votre UserInfoEndpoint peut retourner.

{ "sub":"122", "exp":"10000", "sagemaker-groups":["group1","group2"] "sagemaker-name":"name", "sagemaker-sub":"122", "sagemaker-client_id":"123456" }

Ground Truth ou Amazon A2I compare les groupes énumérés en sagemaker:groups ou sagemaker-groups pour vérifier que votre employé appartient à l'équipe de travail spécifiée dans la tâche de labélisation ou de révision humaine. Une fois que l'équipe de travail a été vérifiée, les tâches de labélisation ou de révision humaine sont envoyées à cet employé.

Création d'une main-d'œuvre OIDC IdP

Vous pouvez créer une main-d'œuvre à l'aide de l'opération CreateWorkforce de l'API SageMaker et des kits SDK spécifiques à la langue qui lui sont associés. Spécifiez un WorkforceName et des informations sur votre IDP OIDC dans le paramètre OidcConfig. Il est recommandé de configurer votre OIDC avec un URI de redirection de type place-holder, puis de mettre à jour l'URI avec l'URL du portail des employés après avoir créé la main-d'œuvre. Pour en savoir plus, consultez Configuration de votre IdP OIDC.

Voici un exemple de requête. Veuillez consulter CreateWorkforce pour en savoir plus sur chaque paramètre de cette requête.

CreateWorkforceRequest: { #required fields WorkforceName: "example-oidc-workforce", OidcConfig: { ClientId: "clientId", ClientSecret: "secret", Issuer: "https://example-oidc-idp.com/adfs", AuthorizationEndpoint: "https://example-oidc-idp.com/adfs/oauth2/authorize", TokenEndpoint: "https://example-oidc-idp.com/adfs/oauth2/token", UserInfoEndpoint: "https://example-oidc-idp.com/adfs/oauth2/userInfo", LogoutEndpoint: "https://example-oidc-idp.com/adfs/oauth2/log-out", JwksUri: "https://example-oidc-idp.com/adfs/discovery/keys" }, SourceIpConfig: { Cidrs: ["string", "string"] } }

Configuration de votre IdP OIDC

La façon dont vous configurez votre IdP OIDC dépend de l'IdP que vous utilisez et de vos exigences commerciales.

Lorsque vous configurez votre IdP, vous devez spécifier un URI de rappel ou de redirection. Après l'authentification d'un employé par Ground Truth ou Amazon A2I, cette URI redirigera l'employé vers le portail de l'employé où il pourra accéder aux tâches de labélisation ou de révision humaine. Pour créer une URL de portail d'employé, vous devez créer une main-d'œuvre avec vos détails OIDC IdP en utilisant l'opération API CreateWorkforce. Plus précisément, vous devez configurer votre IdP OIDC avec les revendications Sagemaker personnalisées requises (voir la section suivante pour plus de détails). Par conséquent, il est recommandé de configurer votre OIDC avec un URI de redirection de type place-holder, puis de mettre à jour l'URI après avoir créé la main-d'œuvre. Veuillez consulter Création d'une main-d'œuvre OIDC IdP pour apprendre à créer une main-d'œuvre à l'aide de cette API.

Vous pouvez afficher l'URL de votre portail d'employé dans la console SageMaker Ground Truth, ou en utilisant l'opération DescribeWorkforce de l'API SageMaker. L'URL du portail d'employé se trouve dans le paramètre SubDomain dans la réponse.

Important

Assurez-vous d'ajouter le sous-domaine de la main-d'œuvre à votre liste d'autorisations OIDC IdP. Lorsque vous ajoutez le sous-domaine à votre liste d'autorisation, il doit se terminer par /oauth2/idpresponse.

Pour afficher l'URL de votre portail d'employé après la création d'une main-d'œuvre privée (Console) :

  1. Ouvrez la console SageMaker à l'adresse https://console.aws.amazon.com/sagemaker/.

  2. Dans le panneau de navigation, choisissez Labeling workforces (Mains-d'œuvre d'étiquetage).

  3. Sélectionnez l'onglet Privé .

  4. Dans Private workforce summary (Résumé de la main-d'œuvre privée), vous verrez Labeling portal sign-in URL (URL de connexion au portail de labélisation). Il s'agit de l'URL de votre portail d'employé.

Pour afficher l'URL de votre portail d'employé après la création d'une main-d'œuvre privée (API) :

Lorsque vous créez une main-d'œuvre privée à l'aide de CreateWorkforce, vous spécifiez un WorkforceName. Utilisez ce nom pour appeler DescribeWorkforce. Le tableau suivant présente des exemples de requêtes utilisant la AWS CLI et AWS SDK for Python (Boto3).

SDK for Python (Boto3)
response = client.describe_workforce(WorkforceName='string') print(f'The workforce subdomain is: {response['SubDomain']}')
AWS CLI
$ C:\> describe-workforce --workforce-name 'string'

Valider la réponse d'authentification de la main-d'œuvre de l'IdP OIDC

Après avoir créé votre main-d'œuvre OIDC IdP, vous pouvez utiliser la procédure suivante pour valider son flux d'authentification à l'aide de cURL. Cette procédure suppose que vous avez accès à un terminal, et que vous avez installé cURL.

Pour valider votre réponse d'autorisation OIDC IdP :

  1. Obtenez un code d'autorisation à l'aide d'un URI configuré comme suit :

    {AUTHORIZE ENDPOINT}?client_id={CLIENT ID}&redirect_uri={REDIRECT URI}&scope={SCOPE}&response_type=code
    1. Remplacez {AUTHORIZE ENDPOINT} avec le point de terminaison autorisé pour votre IdP OIDC.

    2. Remplacez {CLIENT ID} par l'ID client de votre client OAuth.

    3. Remplacez {REDIRECT URI} par l'URL du portail d'employé. Si elle n'est pas déjà présente, vous devez ajouter la chaîne /oauth2/idpresponse à la fin de l'URL.

    4. Si vous avez une portée personnalisée, utilisez-la pour remplacer {SCOPE}. Si vous n'avez aucune portée personnalisée, remplacez {SCOPE} par openid.

    Voici un exemple d'URI après que les modifications ci-dessus ont été effectuées :

    https://example.com/authorize?client_id=f490a907-9bf1-4471-97aa-6bfd159f81ac&redirect_uri=https%3A%2F%2F%2Fexample.labeling.sagemaker.aws%2Foauth2%2Fidpresponse&response_type=code&scope=openid
  2. Copiez et collez l'URI modifié de l'étape 1 dans votre navigateur et appuyez sur Entrée sur votre clavier.

  3. Authentifiez-vous en utilisant votre IdP.

  4. Copiez le paramètre de requête de code d'authentification dans l'URI. Ce paramètre commence par code=. Voici un exemple de ce à quoi pourrait ressembler la réponse. Dans cet exemple, copiez code=MCNYDB... et tout ce qui suit.

    https://example.labeling.sagemaker.aws/oauth2/idpresponse?code=MCNYDB....
  5. Ouvrez un terminal et entrez la commande suivante après avoir effectué les modifications requises énumérées ci-dessous :

    curl --request POST \ --url '{TOKEN ENDPOINT}' \ --header 'content-type: application/x-www-form-urlencoded' \ --data grant_type=authorization_code \ --data 'client_id={CLIENT ID}' \ --data client_secret={CLIENT SECRET} \ --data code={CODE} \ --data 'redirect_uri={REDIRECT URI}'
    1. Remplacez {TOKEN ENDPOINT} par le point de terminaison du jeton pour votre IdP OIDC.

    2. Remplacez {CLIENT ID} par l'ID client de votre client OAuth.

    3. Remplacez {CLIENT SECRET} avec le secret client de votre client OAuth.

    4. Remplacez {CODE} avec le paramètre de requête de code d'authentification que vous avez copié à l'étape 4.

    5. Remplacez {REDIRECT URI} par l'URL du portail d'employé.

    Voici un exemple de requête cURL après avoir effectué les modifications décrites ci-dessus :

    curl --request POST \ --url 'https://example.com/token' \ --header 'content-type: application/x-www-form-urlencoded' \ --data grant_type=authorization_code \ --data 'client_id=f490a907-9bf1-4471-97aa-6bfd159f81ac' \ --data client_secret=client-secret \ --data code=MCNYDB... \ --data 'redirect_uri=https://example.labeling.sagemaker.aws/oauth2/idpresponse'
  6. Cette étape dépend du type de access_token que votre IdP renvoie, un jeton d'accès en texte brut ou un jeton d'accès JWT.

    • Si votre IdP ne prend pas en charge les jetons d'accès JWT, access_token peut être en texte brut (par exemple, un UUID). La réponse que vous voyez peut ressembler à ce qui suit. Dans ce cas, passez à l'étape 7.

      { "access_token":"179c144b-fccb-4d96-a28f-eea060f39c13", "token_type":"Bearer", "expires_in":3600, "refresh_token":"ef43e52e-9b4f-410c-8d4c-d5c5ee57631a", "scope":"openid" }
    • Si votre IdP prend en charge les jetons d'accès JWT, l'étape 5 devrait générer un jeton d'accès au format JWT. Par exemple, la réponse peut ressembler à ce qui suit :

      { "access_token":"eyJh...JV_adQssw5c", "refresh_token":"i6mapTIAVSp2oJkgUnCACKKfZxt_H5MBLiqcybBBd04", "refresh_token_expires_in":6327, "scope":"openid", "id_token":"eyJ0eXAiOiJK9...-rDaQzUHl6cQQWNiDpWOl_lxXjQEvQ" }

      Copiez le JWT et décodez-le. Vous pouvez utiliser un script python ou un site Web tiers pour le décoder. Par exemple, vous pouvez vous rendre sur le site Web https://jwt.io/ et coller le JWT dans la case Encoded (Encodé) pour le décoder.

      Assurez-vous que la réponse décodée contient les éléments suivants :

  7. Ouvrez un terminal et saisissez la commande suivante après avoir effectué les modifications requises énumérées ci-dessous :

    curl -X POST -H 'Authorization: Bearer {ACCESS TOKEN}' -d '' -k -v {USERINFO ENDPOINT}
    1. Remplacez {USERINFO ENDPOINT} par le point de terminaison des informations utilisateur de votre IdP OIDC.

    2. Remplacez {ACCESS TOKEN} par le jeton d'accès figurant dans la réponse que vous avez reçue à l'étape 7. Il s'agit de l'entrée pour le paramètre "access_token".

    Voici un exemple de requête cURL après avoir effectué les modifications décrites ci-dessus :

    curl -X POST -H 'Authorization: Bearer eyJ0eX...' -d '' -k -v https://example.com/userinfo
  8. La réponse à la dernière étape de la procédure ci-dessus peut ressembler au bloc de code suivant.

    Si le access_token renvoyé à l'étape 6 était en texte brut, vous devez vérifier que cette réponse contient les informations requises. Dans ce cas, la réponse doit contenir les revendications SageMaker Required (Requis) dans le tableau qui se trouve dans Envoyer les revendications obligatoires et facultatives à Ground Truth et Amazon A2I. Par exemple, sagemaker-groups, sagamaker-name.

    { "sub":"122", "exp":"10000", "sagemaker-groups":["group1","group2"] "sagemaker-name":"name", "sagemaker-sub":"122", "sagemaker-client_id":"123456" }

Étapes suivantes

Une fois que vous avez créé une main-d'œuvre privée à l'aide de votre IdP et vérifié votre réponse d'authentification IdP, vous pouvez créer des équipes de travail à l'aide de vos groupes IdP. Pour en savoir plus, consultez Gérer d'une main-d'œuvre privée (OIDC IdP).

Vous pouvez limiter l'accès des employés aux tâches à des adresses IP spécifiques, et mettre à jour ou supprimer votre main-d'œuvre à l'aide de l'API SageMaker. Pour en savoir plus, consultez Gérer la main-d'œuvre privée à l'aide de l'API Amazon SageMaker.