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.
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.
- Realizar tarefas de gerenciamento de usuários
- Criar tokens de API
- Gerenciar outras contas de serviço
- Usuário
- Grupo
- Funções
- Funções globais
- Pacotes de direitos
- 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
Você pode criar uma conta para acesso automatizado ao VMware Cloud Director usando o Tenant Portal.
Pré-requisitos
Procedimento
Resultados
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.
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" }
{ "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
Conceder acesso a uma conta de serviço
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.
Created
, e você deverá iniciar o procedimento novamente.
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.
- Copie o ID do cliente dos detalhes da conta de serviço no Tenant Portal.
- 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.
- Obtenha o código do usuário do aplicativo. Você deve inserir o código na etapa 4.
Procedimento
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 paraRequested
. Você deve seguir novamente o procedimento para conceder acesso à conta de serviço para que a conta se torneActive
.