Você pode automatizar o acesso de aplicativos de terceiros ao VMware Cloud Director usando contas de serviço.

Somente administradores do sistema e administradores da organização com os direitos Exibir Contas de Serviço e Gerenciar Contas de Serviço podem criar contas de serviço e gerenciar o acesso à conta de serviço ao VMware Cloud Director.

Compartilhando

A partir do VMware Cloud Director 10.4.1, se você tiver apenas o direito Exibição de Contas de Serviço Limitada, poderá ver informações limitadas sobre as contas de serviço. Com uma exibição limitada, quando você faz uma solicitação GET na conta de serviço, na resposta, o softwareId, o softwareVersion, o uri e o status da conta de serviço aparecem como null.

Implementação

Para fornecer acesso automatizado ao VMware Cloud Director, as contas de serviço usam Tokens de API. As contas de serviço destinam-se somente ao acesso baseado em API. Quando você concede acesso a uma conta de serviço, o aplicativo cliente autenticado recebe seu Token de API, que é um token de atualização do OAuth, e um token de acesso, representando sua primeira sessão de VMware Cloud Director, para uso imediato. Os aplicativos precisam dos tokens de API para autenticação no VMware Cloud Director. Tokens de acesso são tokens de sessão do VMware Cloud Director (tokens JWT) que os aplicativos usam para fazer solicitações de API usando a conta de serviço. As contas de serviço para aplicativos usam tokens de API e, portanto, têm as mesmas restrições que tokens de API do usuário no VMware Cloud Director.

As contas de serviço têm acesso usando a "Solicitar Autorização da Conta de Serviço". Isso garante que somente o aplicativo que deve usar o token tenha acesso exclusivo ao token e possa usá-lo. Nenhum outro persona pode acessar o token. Você, como administrador, gerencia o acesso à conta de serviço. No entanto, administradores não têm acesso ao token real que concede acesso. O VMware Cloud Director dá o token somente para a conta de serviço. Para tanto, o VMware Cloud Director se baseia em um padrão conhecido. Para garantir que você e o aplicativo ao qual você está concedendo o token estejam em sincronização por meio da transmissão de concessão e do token, você só pode iniciar o processo de concessão do token de API conhecendo o código do usuário para o aplicativo.

Ao contrário dos tokens de API do usuário, os tokens de API concedidos para contas de serviço são alternados a cada uso, de acordo com RFC 6749, seção 6. Os tokens de API da conta de serviço não utilizados nunca expiram, a menos que você os revogue.

As contas de serviço só podem ter uma função. Em APIs compatíveis com OAuth, a função é comunicada por meio do campo de escopo como um Nome de Recurso Uniforme (URN) codificado por URL com o nome da função. O formato URN é urn:vcloud:role:[roleName]. Consulte RFC 8141 que descreve a codificação URN.

Observação: O endpoint do dispositivo não é autenticado. Considere configurar regras de limitação especiais no seu balanceador de carga.
Tabela 1. Status da Conta de Serviço
Status Descrição
Criado A conta está no estado inicial após a criação.
Solicitado Há uma ou mais solicitações pendentes de acesso que um solicitante iniciou usando uma solicitação de autorização de dispositivo.
Concedido Um administrador concedeu uma solicitação pendente e está aguardando a verificação e a busca da conta de serviço do token de API.
Ativo A conta de serviço buscou o token da API e pode acessar o VMware Cloud Director usando o token.

Limitações

Como o uso de contas de serviço destina-se a aplicativos de terceiros, as contas de serviço do têm algumas limitações.

Ao usar contas de serviço, os aplicativos não podem realizar algumas tarefas.
  • Realizar tarefas de gerenciamento de usuários
  • Criar tokens de API
  • Gerenciar outras contas de serviço
Ao acessar o VMware Cloud Director usando uma conta de serviço, os aplicativos têm apenas direitos de exibição para os seguintes recursos.
  • Usuário
  • Grupo
  • Funções
  • Funções globais
  • Pacotes de direitos
Os aplicativos que acessam o VMware Cloud Director usando uma conta de serviço não têm os direitos a seguir.
  • Token: Gerenciar
  • Token: Gerenciar Tudo

Multissite

A partir do VMware Cloud Director 10.4.1, as contas de serviço podem gerenciar e monitorar várias instalações do VMware Cloud Director geograficamente distribuídas ou grupos de servidores e suas organizações como entidades únicas usando o recurso multissite. Para obter mais informações sobre o recurso multissite, consulte Configurar e gerenciar implantações multissite. Se você estiver fazendo uma solicitação a uma organização diferente da que você autenticou no, verifique se a conta de serviço existe na organização associada e se ela tem o mesmo nome e ID de software. Você também deve incluir um cabeçalho do X-VMWARE-VCLOUD-AUTH-CONTEXT que especifique o nome da organização que deve atender à sua solicitação. Consulte as informações para configurar e gerenciar implantações multissite no Guia de programação da API do VMware Cloud Director.

Criar uma conta de serviço usando seu VMware Cloud Director Tenant Portal

Você pode criar uma conta para acesso automatizado ao VMware Cloud Director usando o Tenant Portal.

Pré-requisitos

Verifique se você está conectado como administrador do sistema ou administrador da organização com os direitos Exibir Contas de Serviço e Gerenciar Contas de Serviço.

Procedimento

  1. No painel de navegação esquerdo primário, selecione Administração.
  2. No painel esquerdo, em Controle de Acesso, selecione Contas de Serviço.
  3. Clique em Novo.
  4. Insira um nome para a conta de serviço.
  5. No menu suspenso Atribuir Função, selecione uma função para a conta de serviço.
    A lista de funções disponíveis compreende as funções da organização do sistema local ou, em uma organização de tenant, as funções globais publicadas na organização, além de quaisquer funções locais no tenant.
  6. Digite um ID de software para a conta de serviço ou gere e digite uma usando o botão Gerar ID de Software.

    As contas de serviço devem ter IDs de software que são identificadores exclusivos, no formato UUID, representando o software que está se conectando ao VMware Cloud Director. Esse ID seria o mesmo para todas as versões e instâncias de um componente de software.

    Para soluções maiores, para manter o controle sobre a identidade das suas contas de serviço, não use a opção Gerar ID de Software e gere seu próprio ID de software.

  7. (Opcional) Insira a versão de software do sistema usando a conta de serviço.
    A versão do software é um componente informacional opcional especificado pelo fornecedor de metadados associados à conta de serviço. Para controlar quando um software é alterado, o VMware Cloud Director usa a versão do software. A versão do software pode ser útil para a identificação de uma conta de serviço.
  8. (Opcional) Digite um URI de cliente.
    O identificador uniforme de recursos (URI) do cliente é uma URL para a página da web do fornecedor e fornece informações sobre o cliente.
  9. Clique em Avançar.
  10. (Opcional) Adicione cotas sobre os recursos que você deseja que a conta de serviço gerencie.
    Essas cotas limitam a capacidade da conta de serviço de consumir recursos de armazenamento e processamento.
  11. Revise as informações da conta de serviço e clique em Concluir.

Resultados

A conta de serviço aparece na página Contas de Serviço com o status Created.

Exemplo

Você também pode criar uma conta de serviço usando a API do VMware Cloud Director. A solicitação de API usa o mesmo endpoint de API que a criação de um token de API do usuário, mas a presença do campo software_id indica a intenção de criar uma conta de serviço.

Solicitação de amostra:
POST /oauth/tenant/tenant_name/register 

Accept:application/json

Content-Type:application/json

Authorization:Bearer eyJhbGciOiJSUzI...7g7rA 

Body: { 

    "client_name": "exampleServiceAccount", 

    "software_id": "bc2528fd-35c4-44e5-a55d-62e5c4bd9c99", 

    "scope": "urn:vcloud:role:Organization%20Administrator", 

    "client_uri": "https://www.company_name.com", 

    "software_version": "1.0" 

} 
Resposta de amostra:
{ 

"client_name": "exampleServiceAccount", 

"client_id": "734e3845-1573-4f07-9b6c-b493c9042187", 

"grant_types": [ 

"urn:ietf:params:oauth:grant-type:device_code" 

], 

"token_endpoint_auth_method": "none", 

"client_uri": "https://www.company_name.com", 

"software_id": "bc2528fd-35c4-44e5-a55d-62e5c4bd9c99", 

"software_version": "1.0", 

"scope": "urn:vcloud:role:Organization%20Administrator" 

} 

O que Fazer Depois

Copie o ID de cliente que aparece nos detalhes da conta de serviço. Para conceder acesso à conta de serviço, você deve usar a ID do cliente.

Conceder acesso a uma conta de serviço usando seu VMware Cloud Director Tenant Portal

Depois de criar uma conta de serviço e o aplicativo solicitar autorização para receber um token de acesso, você poderá conceder o token usando o VMware Cloud Director Tenant Portal.

Observação: Se o período de tempo limite expirar durante esse procedimento, o status da conta de serviço no Tenant Portal será alterado novamente para Created, e você deverá iniciar o procedimento novamente.

Pré-requisitos

  1. Verifique se você está conectado como administrador do sistema ou administrador da organização com os direitos Exibir Contas de Serviço e Gerenciar Contas de Serviço.
  2. Copie o ID do cliente dos detalhes da conta de serviço no Tenant Portal.
  3. Verifique se o aplicativo que está solicitando a conta faz uma solicitação compatível com RFC de concessão de autorização de dispositivo OAuth 2.0 para o endpoint da API https://site.cloud.exemplo.com/oauth/tenant/tenant_name/device_authorization. Para obter mais informações sobre solicitações de autorização do dispositivo, consulte RFC 8628, seção 3.1.
    Chave Valor
    client_ID Generated_Client_ID

    Quando o aplicativo solicitar acesso, o status da conta de serviço no Tenant Portal mudará para Requested. O aplicativo recebe o código do dispositivo, o código do usuário e algumas informações adicionais.

    Solicitação de amostra:

    POST /oauth/tenant/tenant_name/device_authorization
    Accept:application/json 
    Content-Type: application/x-www-form-urlencoded
    Body:
    client_id=734e3845-1573-4f07-9b6c-b493c9042187
    Resposta de amostra:
    {
    "device_code": "tkhZ0uoUMy5xgjJqRJblIq3-g44xy2Ms6TEpv3Z_fKw",
    "user_code": "3VL8-SQVJ",
    "verification_uri": "https://[VCD]/tenant/tenant_name/administration/access-control/service-accounts",
    "expires_in": 3600,
    "interval": 60
    }

    O dispositivo deve fazer a verificação na frequência especificada na resposta acima (em segundos) /oauth/tenant/tenant_name/token de acordo com a RFC. O dispositivo deve usar o código do dispositivo até receber os tokens VMware Cloud Director, ou a solicitação atingirá o tempo limite.

    Solicitação de amostra:

    POST: /oauth/tenant/tenant_name/token
    Accept:application/json 
    Content-Type: application/x-www-form-urlencoded
    Body:
    client_id= 734e3845-1573-4f07-9b6c-b493c9042187&grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Adevice_code&device_code=tkhZ0uoUMy5xgjJqRJblIq3-g44xy2Ms6TEpv3Z_fKw
    Resposta de amostra antes de conceder:
    {
        "error": "authorization_pending",
        "error_description": "Device authorization request pending",
        "error_uri": null,
        "minorErrorCode": "authorization_pending",
        "message": "Device authorization request pending",
        "stackTrace": null
    }
    Resposta de amostra após a concessão:
    {
        "access_token": "eyJhbGciOiJSU…HqJaDud1sVA",
        "token_type": "Bearer",
        "expires_in": 2592000,
        "refresh_token": "SsybukUed8SBP2p1AaFiGJhrntQNWZVX"
    }

    Se você não confirmar ou negar uma solicitação de acesso, o código do usuário expirará. O tempo limite aparece na resposta da solicitação de autorização do dispositivo.

    O VMware Cloud Director aceitará o token de API principal para o aplicativo somente se o aplicativo e o administrador usarem o código do dispositivo e o código do usuário correspondentes entre si.

  4. Obtenha o código do usuário do aplicativo. Você deve inserir o código na etapa 4.

Procedimento

  1. No painel de navegação esquerdo primário, selecione Administração.
  2. No painel esquerdo, em Controle de Acesso, selecione Contas de Serviço.
  3. Clique em Revisar Solicitações de Acesso.
  4. Digite o código do usuário para o aplicativo que você obteve no pré-requisito 3, clique em Pesquisar e verifique os detalhes de acesso solicitados.
  5. Conceda acesso ao aplicativo.
    Se você negar acesso ao aplicativo, o status da conta de serviço no Tenant Portal será alterado novamente para Created.

Resultados

O status da solicitação de serviço muda para Granted. O VMware Cloud Director concede ao aplicativo vinculado à conta de serviço seu token de API principal na forma de um token de API. Incluído na resposta, conforme exigido pelo RFC, é um token de acesso OAuth que representa uma sessão de usuário para uso imediato pela conta de serviço. Se o aplicativo não usar o token de acesso OAuth imediatamente, a sessão atingirá o tempo limite de acordo com o tempo limite de sessão ociosa configurado. A conta de serviço também pode fazer logout explicitamente, o que é recomendado não apenas por motivos de segurança, mas também fornece uma boa execução de teste para a conta de serviço fazer uma chamada de API do VMware Cloud Director. Quando o aplicativo obtém o token de API, o status muda para Active.

O que Fazer Depois

  • Para alterar a função da conta de serviço atribuída, o ID de software, a versão de software, o URI do cliente ou ad restrições de cota, selecione uma conta de serviço e clique em Editar uma Conta de Serviço. As alterações entram em vigor na próxima atualização do token.
  • Para revogar o acesso à conta de serviço para que o token de API concedido se torne inválido, clique em Revogar. O VMware Cloud Director encerra todas as sessões ativas. A revogação de um token de API não exclui a conta de serviço. No entanto, o status da conta muda para Created. Se o aplicativo já tiver solicitado acesso novamente, o status da conta de serviço será alterado para Requested. Você deve seguir novamente o procedimento para conceder acesso à conta de serviço para que a conta se torne Active.