Criar uma força de trabalho privada (OIDC IdP) - Amazon SageMaker

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Criar uma força de trabalho privada (OIDC IdP)

Crie uma força de trabalho privada usando um provedor de identidades (IdP) do OpenID Connect (OIDC) quando quiser autenticar e gerenciar seus operadores usando seu próprio provedor de identidades. Use esta página para saber como configurar seu IdP para se comunicar com o Amazon SageMaker Ground Truth (Ground Truth) ou o Amazon Augmented AI (Amazon A2I) e aprender como criar uma força de trabalho usando seu próprio IdP.

Para criar uma força de trabalho usando um IdP OIDC, seu IdP deve oferecer suporte a grupos porque o Ground Truth e o Amazon A2I usam um ou mais grupos que você especifica para criar equipes de trabalho. Você usa equipes de trabalho para especificar trabalhadores para seus trabalhos de rotulagem e tarefas de revisão humana. Como os grupos não são uma declaração padrão, a convenção do seu IdP pode ter uma de nomenclatura diferente para um grupo de usuários (trabalhadores). Portanto, você deve identificar um ou mais grupos de declaração personalizada sagemaker:groups que é enviada para o Ground Truth ou Amazon A2I do seu IdP. Para saber mais, consulte Envie reivindicações obrigatórias e opcionais para o Ground Truth e o Amazon A2I.

Você cria uma força de trabalho do OIDC IdP usando a operação da API. SageMaker CreateWorkforce Depois de criar uma força de trabalho privada, essa força de trabalho e todas as equipes de trabalho e os operadores associados a ela estão disponíveis para uso em todas as tarefas de trabalho de rotulagem do Ground Truth e em tarefas de fluxos de trabalho de revisão humana do A2I. Para saber mais, consulte Crie uma força de trabalho IdP OIDC.

Envie reivindicações obrigatórias e opcionais para o Ground Truth e o Amazon A2I

Quando você usa seu próprio IdP, o Ground Truth e o Amazon A2I usam seu Issuer, ClientId e ClientSecret para autenticar trabalhadores, obtendo um CÓDIGO de autenticação do seu AuthorizationEndpoint.

A Ground Truth e a Amazon A2I usarão esse CÓDIGO para obter uma declaração personalizada de seu IdP TokenEndpoint ou UserInfoEndpoint. Você pode configurar TokenEndpoint para retornar um token web JSON (JWT) ou UserInfoEndpoint para retornar um objeto JSON. O objeto JWT ou JSON deve conter declarações obrigatórias e opcionais que você especificar. Uma declaração é um par de valores-chave que contém informações sobre um trabalhador ou metadados sobre o serviço OIDC. A tabela a seguir lista as declarações que devem ser incluídas e que, opcionalmente, podem ser incluídas no objeto JWT ou JSON que seu IdP retorna.

nota

Alguns dos parâmetros na tabela a seguir podem ser especificados usando um : ou -. Por exemplo, você pode especificar os grupos aos quais um trabalhador pertence usando sagemaker:groups ou sagemaker-groups em sua declaração.

Nome Obrigatório Formato e valores aceitos Descrição Exemplo

sagemaker:groups ou sagemaker-groups

Sim

Tipo de dados:

Se um trabalhador pertencer a um único grupo, identifique o grupo usando uma string.

Se um trabalhador pertencer a vários grupos de caracteres, use uma lista de até 10 sequências de caracteres.

Caracteres permitidos:

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

Cotas:

10 grupos por trabalhador

63 caracteres por nome de grupo

Atribui um trabalhador a um ou mais grupos. Os grupos são usados para mapear o trabalhador em equipes de trabalho.

Exemplo de trabalhador que pertence a um único grupo: "work_team1"

Exemplo de um trabalhador que pertence a mais de um grupo: ["work_team1", "work_team2"]

sagemaker:sub ou sagemaker-sub

Sim

Tipo de dados:

String

Isso é obrigatório para rastrear a identidade de um trabalhador dentro da plataforma Ground Truth para auditoria e identificar as tarefas realizadas por esse trabalhador.

Para ADFS: os clientes devem usar o Identificador de Segurança Primário (SID).

"111011101-123456789-3687056437-1111"

sagemaker:client_id ou sagemaker-client_id

Sim

Tipo de dados:

String

Caracteres permitidos:

Regex: [\w+-]+

Cotas:

128 caracteres

Um ID de cliente. Todos os tokens devem ser emitidos para esse ID de cliente.

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

sagemaker:name ou sagemaker-name

Sim

Tipo de dados:

String

O nome do trabalhador a ser exibido no portal do trabalhador.

"Jane Doe"

email

Não

Tipo de dados:

String

O e-mail do trabalhador. O Ground Truth usa esse e-mail para notificar os trabalhadores de que eles foram convidados para trabalhar em tarefas de rotulagem. O Ground Truth também usará esse e-mail para notificar seus funcionários quando as tarefas de rotulagem estiverem disponíveis, caso você configure um tópico do Amazon SNS para uma equipe de trabalho da qual esse funcionário faça parte.

"example-email@domain.com"

email_verified

Não

Tipo de dados:

Bool

Valores aceitos:

True, False

Indica se o e-mail do usuário foi verificado ou não.

True

Veja a seguir um exemplo da sintaxe do objeto JSON UserInfoEndpoint que você pode retornar.

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

O Ground Truth ou o Amazon A2I compara os grupos listados sagemaker:groups ou sagemaker-groups para verificar se seu trabalhador pertence à equipe de trabalho especificada no trabalho de rotulagem ou na tarefa de revisão humana. Depois que a equipe de trabalho é verificada, as tarefas de rotulagem ou revisão humana são enviadas a esse funcionário.

Crie uma força de trabalho IdP OIDC

Você pode criar uma força de trabalho usando a operação da SageMaker API CreateWorkforce e os SDKs específicos do idioma associados. Especifique um WorkforceName e informações sobre seu OIDC IDP no parâmetro OidcConfig. É recomendável que você configure seu OIDC com um URI de redirecionamento de espaço reservado e, em seguida, atualize o URI com o URL do portal do trabalhador depois de criar a força de trabalho. Para saber mais, consulte Configure seu IdP OIDC.

Veja a seguir um exemplo da solicitação. Consulte CreateWorkforce para saber mais sobre cada parâmetro nessa solicitação.

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

Configure seu IdP OIDC

A forma como você configura seu IdP OIDC depende do IdP que você usa e dos requisitos de sua empresa.

Ao configurar seu IdP, você deve especificar um URI de retorno de chamada ou redirecionamento. Depois que o Ground Truth ou o Amazon A2I autenticarem um trabalhador, esse URI redirecionará o trabalhador para o portal do trabalhador, onde os trabalhadores poderão acessar tarefas de rotulagem ou revisão humana. Para criar uma URL do portal do trabalhador, você precisa criar uma força de trabalho com os detalhes do seu IdP do OIDC usando a operação da API CreateWorkforce. Especificamente, você deve configurar seu IdP do OIDC com as declarações personalizadas necessárias do sagemaker (consulte a próxima seção para obter mais detalhes). Portanto, é recomendável que você configure seu OIDC com um URI de redirecionamento de espaço reservado e, em seguida, atualize o URI depois de criar a força de trabalho. Consulte Crie uma força de trabalho IdP OIDC para saber como criar uma força de trabalho usando essa API.

Você pode visualizar a URL do seu portal de trabalho no console SageMaker Ground Truth ou usando a operação de SageMaker API,DescribeWorkforce. A URL do portal do trabalhador está no parâmetro SubDomain na resposta.

Importante

Certifique-se de adicionar o subdomínio da força de trabalho à sua lista de permissões de IdP do OIDC. Quando você adiciona o subdomínio à sua lista de permissões, ele deve terminar com /oauth2/idpresponse.

Para visualizar a URL do portal do trabalhador após criar uma força de trabalho privada (Console):
  1. Abra o SageMaker console em https://console.aws.amazon.com/sagemaker/.

  2. No painel de navegação, selecione Rotular forças de trabalho.

  3. Selecione a guia Privado .

  4. No resumo da força de trabalho privada, você verá o URL de login do portal de rotulagem. Esta é a URL do seu portal de trabalho.

Para visualizar a URL do portal do trabalhador após criar uma força de trabalho privada (API):

Quando criar uma força de trabalho privada usando CreateWorkforce, você especifica um WorkforceName. Use esse nome para ligar DescribeWorkforce. A tabela a seguir inclui exemplos de solicitações usando AWS CLI AWS SDK for Python (Boto3) e.

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'

Valide sua resposta de autenticação da força de trabalho do OIDC IdP

Depois de criar sua força de trabalho IdP OIDC, use o procedimento a seguir para validar o fluxo de trabalho de autenticação usando cURL. Esse procedimento pressupõe que você tenha acesso a um terminal e que tenha o cURL instalado.

Valide sua resposta de autorização do OIDC IdP:
  1. Obtenha um código de autorização usando um URI configurado da seguinte forma:

    {AUTHORIZE ENDPOINT}?client_id={CLIENT ID}&redirect_uri={REDIRECT URI}&scope={SCOPE}&response_type=code
    1. Substitua {AUTHORIZE ENDPOINT} pelo endpoint de autorização do seu IdP do OIDC.

    2. Substitua {CLIENT ID} pelo ID do cliente do seu cliente OAuth.

    3. Substitua {REDIRECT URI} pela URL do portal do trabalhador. Se ainda não estiver presente, você deverá adicionar /oauth2/idpresponse ao final do URL.

    4. Se tiver um escopo personalizado, use-o para substituir {SCOPE}. Se não tiver um escopo personalizado, substitua {SCOPE} por openid.

    Veja a seguir um exemplo de URI após as modificações acima serem feitas:

    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. Copie e cole o URI modificado da etapa 1 em seu navegador e pressione Enter no teclado.

  3. Autentique usando seu IdP.

  4. Copie o parâmetro de consulta do código de autenticação no URI. Esse parâmetro começa com code=. Veja a seguir um exemplo de como pode ser a resposta. Neste exemplo, copie code=MCNYDB... e tudo o que vier depois.

    https://example.labeling.sagemaker.aws/oauth2/idpresponse?code=MCNYDB....
  5. Abra um terminal e digite o seguinte comando depois de fazer as modificações necessárias listadas abaixo:

    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. Substitua {TOKEN ENDPOINT} pelo endpoint do token do seu IdP do OIDC.

    2. Substitua {CLIENT ID} pelo ID do cliente do seu cliente OAuth.

    3. Substitua {CLIENT SECRET} pelo ID segredo do cliente do seu cliente OAuth.

    4. Substitua {CODE} pelo parâmetro de consulta do código de autenticação que você copiou na etapa 4.

    5. Substitua {REDIRECT URI} pela URL do portal do trabalhador.

    Veja a seguir um exemplo da solicitação cURL após fazer as modificações descritas acima:

    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. Essa etapa depende do tipo de retorno do access_token IdP, de um token de acesso de texto simples ou de um token de acesso JWT.

    • Se seu IdP não suportar tokens de acesso JWT, access_token pode ser texto sem formatação (por exemplo, um UUID). A resposta que você vê pode ser semelhante à seguinte. Nesse caso, vá para a etapa 7.

      { "access_token":"179c144b-fccb-4d96-a28f-eea060f39c13", "token_type":"Bearer", "expires_in":3600, "refresh_token":"ef43e52e-9b4f-410c-8d4c-d5c5ee57631a", "scope":"openid" }
    • Se o seu IdP suportar tokens de acesso JWT, a etapa 5 deverá gerar um token de acesso no formato JWT. Por exemplo, a resposta pode ser semelhante ao seguinte exemplo:

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

      Copie o JWT e decodifique-o. Você pode usar o script python ou um site de terceiros para decodificá-lo. Por exemplo, você pode acessar o site https://jwt.io/ e colar o JWT na caixa Codificado para decodificá-lo.

      Certifique-se de que a resposta decodificada contenha o seguinte:

  7. Em um terminal, digite o seguinte comando depois de fazer as modificações necessárias listadas abaixo:

    curl -X POST -H 'Authorization: Bearer {ACCESS TOKEN}' -d '' -k -v {USERINFO ENDPOINT}
    1. Substitua {USERINFO ENDPOINT} pelo endpoint das informações do usuário do seu IdP do OIDC.

    2. Substitua {ACCESS TOKEN} pelo token de acesso na resposta que você recebeu na etapa 7. Essa é a entrada para o parâmetro "access_token".

    Veja a seguir um exemplo da solicitação cURL após fazer as modificações descritas acima:

    curl -X POST -H 'Authorization: Bearer eyJ0eX...' -d '' -k -v https://example.com/userinfo
  8. A resposta para a etapa final do procedimento acima pode ser semelhante ao bloco de código a seguir.

    Se o access_token retornado na etapa 6 for texto sem formatação, você deverá verificar se essa resposta contém as informações necessárias. Nesse caso, a resposta deve conter as SageMaker declarações obrigatórias na tabela encontrada emEnvie reivindicações obrigatórias e opcionais para o Ground Truth e o Amazon A2I. Por exemplo, sagemaker-groups, sagamaker-name.

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

Próximos Passos

Depois de criar uma força de trabalho privada usando seu IdP e verificar sua resposta de autenticação de IdP, você pode criar equipes de trabalho usando seus grupos de IdP. Para saber mais, consulte Gerenciar uma força de trabalho privada (OIDC IdP).

Você pode restringir o acesso dos trabalhadores às tarefas a endereços IP específicos e atualizar ou excluir sua força de trabalho usando a SageMaker API. Para saber mais, consulte Gestão da força de trabalho privada usando a Amazon SageMaker API.