创建私有人力(OIDC IdP) - Amazon SageMaker
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

创建私有人力(OIDC IdP)

当您想要使用自己的身份提供商对工作人员进行身份验证和管理时,使用 OpenID Connect (OIDC) 身份提供程序 (IdP) 创建私人工作人员。使用本页了解如何将 IdP 配置为与 Amazon SageMaker Ground Truth(地面真相)或亚马逊 Augmented AI (Amazon A2I) 进行沟通,并了解如何使用您自己的 IdP 创建员工。

要使用 OIDC IdP 创建员工,您的 IdP 必须支持因为 Ground Truth 和 Amazon A2I 使用您指定的一个或多个组来创建工作团队。您可以使用工作小组为标签作业和人工审核任务指定工作人员。由于组不是标准声明,您的 IdP 可能对一组用户(工作人员)具有不同的命名约定。因此,您必须使用自定义声明标识工作人员所属的一个或多个用户组sagemaker:groups从您的 IdP 发送到 Ground Truth 或亚马逊 A2I。要了解更多信息,请参阅“向 Ground Truth 和亚马逊 A2I 发送必填和可选索赔”。

您可以使用 SageMaker API 操作创建 OIDC IdP 工作人员队伍CreateWorkforce. 创建私有人力后,该人力及其关联的所有工作团队和工作人员都可用于所有 Ground Truth 标记作业任务和 Amazon A2I 人工审核工作流程任务。要了解更多信息,请参阅“创建 OIDC IdP 人力”。

向 Ground Truth 和亚马逊 A2I 发送必填和可选索赔

当您使用自己的 IdP 时,Ground Truth 和亚马逊 A2I 会使用IssuerClientId, 和ClientSecret通过获取身份验证 CODE 来对工作人员进行身份验证AuthorizationEndpoint.

Ground Truth 和亚马逊 A2I 将使用此代码从您的 IdPTokenEndpoint或者UserInfoEndpoint. 您可以将TokenEndpoint返回 JSON Web 令牌(JWT)或UserInfoEndpoint返回 JSON 对象。JWT 或 JSON 对象必须包含您指定的必需声明和可选声明。A声明是一个键值对,其中包含有关工作线程的信息或有关 OIDC 服务的元数据。下表列出了必须包含的声明,并且可以选择包含在 IdP 返回的 JWT 或 JSON 对象中的声明。

注意

下表中的某些参数可以使用:-. 例如,您可以使用指定工作人员所属的组sagemaker:groups或者sagemaker-groups在您的申请。

名称 必需 接受的格式和值 描述 示例

sagemaker:groups 或者 sagemaker-groups**

数据类型

如果工作人员属于单个组,请使用字符串标识该组。

如果工作人员属于多个组,请使用最多包含 10 个字符串的列表。

允许使用的字符

正则表达式:[\ p {L} {P {{{P}] +

配额

每个工作人员 10 个组

每组名 63 个字符

向一个或多个组分配工作人员。组用于将工作人员映射到工作团队。

属于单个组的工作人员示例:"work_team1"

属于多个组的工作人员示例:["work_team1", "work_team2"]

sagemaker:sub 或者 sagemaker-sub**

数据类型

字符串

这对于跟踪 “Ground Truth” 平台内的工作人员身份以进行审核以及识别该工作人员所处理的任务是必需的。

对于 ADFS:客户必须使用主安全标识符 (SID)。

"111011101-123456789-3687056437-1111"

sagemaker:client_id 或者 sagemaker-client_id**

数据类型

字符串

允许使用的字符

正则表达式:[\ w+-] +

Quote

128 个字符

客户端 ID。必须为此客户端 ID 颁发所有令牌。

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

sagemaker:name 或者 sagemaker-name**

数据类型

字符串

要在工作人员门户中显示的工作人员名称。

"Jane Doe"

email

数据类型

字符串

工作人员电子邮件。Ground Truth 使用此电子邮件通知工作人员他们已被邀请执行标签任务。如果您为该工作人员所在的工作团队设置了 Amazon SNS 主题,则 “Ground Truth” 也会使用此电子邮件通知您的工作人员。

"example-email@domain.com"

email_verified

数据类型

Bool

接受的值:

True, False

指示用户电子邮件是否已验证。

True

下面的 JSON 对象语法示例为UserInfoEndpoint可以返回。

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

Ground Truth 或亚马逊 A2I 比较sagemaker:groups或者sagemaker-groups验证您的工作人员是否属于标签作业或人工审核任务中指定的工作小组。工作团队经过验证后,将向该工作人员发送标签或人工审核任务。

创建 OIDC IdP 人力

您可以使用 SageMaker API 操作创建工作人员CreateWorkforce和相关语言特定 SDK。指定WorkforceName以及有关您的 OIDC IDP 的信息OidcConfig. 建议您使用占位符重定向 URI 配置 OIDC,然后在创建工作线程后使用工作线程门户 URL 更新 URI。要了解更多信息,请参阅“配置 OIDC IdP”。

下面显示了请求的示例。请参阅CreateWorkforce以了解有关此请求中每个参数的详细信息。

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"] } }

配置 OIDC IdP

如何配置 OIDC IdP 取决于您使用的 IdP 和您的业务要求。

配置 IdP 时,必须指定回调或重定向 URI。Ground Truth 或 Amazon A2I 对工作人员进行身份验证后,此 URI 会将工作人员重定向到工作人员门户,工作人员可以在该门户中访问标签或人工审核任务。要创建工作人员门户 URL,您需要使用CreateWorkforceAPI 操作。具体而言,您必须使用所需的自定义 sagemaker 声明配置 OIDC IdP(有关更多详细信息,请参阅下一节)。因此,建议您使用占位符重定向 URI 配置 OIDC,然后在创建工作队伍后更新 URI。请参阅创建 OIDC IdP 人力,了解如何使用此 API 创建工作人员。

您可以在 SageMaker Ground Truth 控制台中查看您的工作人员门户 URL,或使用 SageMaker API 操作DescribeWorkforce. 工作人员门户 URL 位于SubDomain参数。

重要

确保您将工作人员子域名添加到您的 OIDC IdP 允许列表中。当您将子域添加到允许列表时,它必须以/oauth2/idpresponse.

要在创建专用工作人员(控制台)后查看工作人员门户 URL:

  1. 从打开 SageMaker 控制台https://console.aws.amazon.com/sagemaker/.

  2. 在导航窗格中,选择 Labeling workforces (标记人力)

  3. 选择 Private (私有) 选项卡。

  4. In私营劳动力汇总您会看到标记门户登录 URL. 这是您的工作人员门户 URL。

要在创建专用工作人员 (API) 后查看工作人员门户 URL,请执行以下操作:

使用创建私有人力CreateWorkforce,您可以指定WorkforceName. 使用此名称调用DescribeWorkforce. 下表包含使用Amazon CLI和Amazon SDK for Python (Boto3).

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

验证您的 ISAS IdP 员工身份验证响应

在创建 OIDC IdP 人力后,您可以使用以下步骤使用 cURL 验证其身份验证工作流程。此过程假定您有权访问终端,并且您已安装 cURL。

要验证您的 OIDC IdP 授权响应,请执行以下操作:

  1. 使用配置如下的 URI 获取授权码:

    {AUTHORIZE ENDPOINT}?client_id={CLIENT ID}&redirect_uri={REDIRECT URI}&scope={SCOPE}&response_type=code
    1. Replace{AUTHORIZE ENDPOINT}与 OIDC IdP 的授权终端节点。

    2. Replace{CLIENT ID}使用您的 OAuth 客户端的客户端 ID。

    3. Replace{REDIRECT URI}与工作人员门户 URL 一起使用。如果它尚未存在,则必须添加/oauth2/idpresponse到 URL 的末尾。

    4. 如果您有自定义作用域,请使用它来替换{SCOPE}. 如果您没有自定义作用域,请将{SCOPE}替换为openid.

    以下是进行上述修改后的 URI 示例:

    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. 将步骤 1 中修改的 URI 复制并粘贴到浏览器中,然后在键盘上按 Enter 键。

  3. 使用 IdP 进行身份验证。

  4. 复制 URI 中的验证代码查询参数。这个参数存在与code=. 以下是响应具体形式的示例。在此示例中,复制code=MCNYDB...以及其后的一切.

    https://example.labeling.sagemaker.aws/oauth2/idpresponse?code=MCNYDB....
  5. 在进行下面列出的所需修改后,打开终端并输入以下命令:

    $ 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. Replace{TOKEN ENDPOINT}与 OIDC IdP 的令牌终端节点。

    2. Replace{CLIENT ID}使用您的 OAuth 客户端的客户端 ID。

    3. Replace{CLIENT SECRET}来自您的 OAuth 客户端的客户端密钥。

    4. Replace{CODE}使用您在步骤 4 中复制的身份验证代码查询参数。

    5. Replace{REDIRECT URI}与工作人员门户 URL 一起使用。

    以下是进行上述修改后 cURL 请求的示例:

    $ 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. 此步骤取决于access_token您的 IdP 返回,纯文本访问令牌或 JWT 访问令牌。

    • 如果您的 IdP 不支持 JWT 访问令牌,请参阅access_token可能是纯文本(例如 UUID)。您看到的响应可能类似于以下内容。在这种情况下,请转到步骤 7。

      { "access_token":"179c144b-fccb-4d96-a28f-eea060f39c13", "token_type":"Bearer", "expires_in":3600, "refresh_token":"ef43e52e-9b4f-410c-8d4c-d5c5ee57631a", "scope":"openid" }
    • 如果您的 IdP 支持 JWT 访问令牌,则第 5 步应以 JWT 格式生成访问令牌。例如,响应可能如下所示:

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

      复制智威汤逊并对其进行解码。您可以使用 python 脚本或第三方网站对其进行解码。例如,您可以转到网站https://jwt.io/并将 JWT 粘贴到ENCODE框来对其进行解码。

      确保解码的响应包含以下内容:

  7. 在终端中,在进行下面列出的所需修改后,输入以下命令:

    curl -X POST -H 'Authorization: Bearer {ACCESS TOKEN}' -d '' -k -v {USERINFO ENDPOINT}
    1. Replace{USERINFO ENDPOINT}与您的 OIDC IdP 的用户信息终端节点。

    2. Replace{ACCESS TOKEN}与您在步骤 7 中收到的响应中的访问令牌。这是"access_token"参数。

    以下是进行上述修改后 cURL 请求的示例:

    curl -X POST -H 'Authorization: Bearer eyJ0eX...' -d '' -k -v https://example.com/userinfo
  8. 对上述过程中最后一步的响应可能类似于以下代码块。

    如果access_token返回的是纯文本,则必须验证此响应是否包含所需的信息。在此情况下,响应必须包含必需SageMaker 声明在向 Ground Truth 和亚马逊 A2I 发送必填和可选索赔. 例如,sagemaker-groupssagamaker-name

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

后续步骤

使用 IdP 创建了私人员工并验证了 IdP 身份验证响应后,您可以使用 IdP 组创建工作团队。要了解更多信息,请参阅“管理私有人力 (OIDC IdP)”。

您可以使用 SageMaker API 将工作人员对任务的访问限制为特定 IP 地址,并更新或删除您的工作人员。要了解更多信息,请参阅“使用 Amazon SageMaker API 管理私人员工”。