Skip to main content

Contas de Serviço

Introdução

Service Account ou conta de serviço, é o recurso utilizado para fornecer a uma aplicação ou serviço um meio de se identificar e a recursos que necessitam de uma autenticação e checagem de autorização dessa identidade para que esses possam ser acessados.

Caso de Uso

Permitir que o serviço DataCrusher execute operações em apenas um bucket BigBucket existente na Organização Big Organization.

Requisições contra API de Object Storage usualmente requerem que tais requests sejam identificadas por uma Key ID e assinadas por uma Key Secret. A Key ID está diretamente relacionada a uma Account que identifica quem é o responsável por aquele acesso e também o Tenant a qual o recurso pertencer.

(Nota: Recursos estarão sempre associados a um Tenant ao qual uma ou mais Accounts (de pessoas ou serviços) podem gerenciar seus recursos).

Para o cenário desse caso de uso, uma ideia seria um Admin criar uma chave de acesso (composta por Api Key, Api Key ID e Api Key Secret ) e desse tal chave ao DataCrusher para que esse pudesse acessar (apenas) o BigBucket.

É nesse momento que temos um problema: Essa chave está associada ao Account de um Admin, o que significa que requests recebidas com essa chave serão identificadas como Admin, não permitindo as APIs saberem que a request originou a partir do DataCrusher não permitindo limitar seus acessos.

Para endereçar esse problema, foi implementada o Service Account, que nada mais é que uma Account que está associada a um Tenant e é gerenciada pelas pessoas Admins desse Tenant. Essas pessoas podem também criar Api Keys para essa Service Account que agora, quando utilizadas na execução de requests, as APIs podem identificar a Service Account (pela claim "sa" contida no token de acesso) que podem agora possuir seu próprio conjunto de autorizações (permissões).

Gerenciamento de Contas de Serviço

Em muitos cenários, pode ser conveniente o regenciamento de Contas de Serviço diretamente pelas APIs disponíveis, como por exemplo um sistema que automatiza criação de Contas de Serviço, criação de Chaves para essa conta de serviço, configuração de ambientes que utilizarão essas chaves, criação de privilégios, revogações, etc.

A maneira mais fácil de fazer isso, é ser criada uma Api Key que dê a essa aplicação escopo para gerenciar Service Accounts e utilizá-la em seus processos para obterem um Access Token e a partir daí, utilizar diretamente as APIs de Service Account

Para criar o par de chaves, siga essa documentação