Pular para o conteúdo principal

Setup do GrantID em Docker

Para instalar uma instância on-premises do GrantID em Docker, siga os passos abaixo. Para outras plataformas, clique aqui.

Para o setup baseado em Docker, a seguinte imagem é disponibilizada no Docker Hub:


GrantID Docker Image


A imagem atualmente recomendada é a lacunasoftware/grantid:5.5.0

Tags móveis disponíveis:

  • A tag 5 aponta para a última imagem 5.x
  • A tag stable aponta para a última imagem estável

Esta imagem requer:

  • Um blob storage compartilhado entre todos os containers que executam a imagem -- veja Configuração de blob storage

  • Um volume compartilhado entre todos os containers que executam a imagem, montado em /var/keys, usado para armazenar as chaves de proteção de dados (data protection). Os arquivos desse volume são poucos, raramente gravados e lidos apenas na inicialização do container; por isso, ele pode ser qualquer volume compartilhado de baixo desempenho oferecido pelo orquestrador que você usa.

  • Licença do PKI SDK (no formato Base64)

  • Licença do Web PKI (formato Base64/binário) -- necessária apenas para o login com certificado

  • Entradas de DNS criadas previamente para os domínios mencionados na seção de planejamento

  • Connection string para um banco de dados SQL Server ou PostgreSQL criado previamente

Configuração​

O container desta imagem é configurado com variáveis de ambiente. Obtenha o arquivo de ambiente de exemplo, um modelo para preencher as configurações da imagem.

Para preencher a configuração Application__TempTokenPassword, gere uma chave de 256 bits para cifrar dados sensíveis:

docker run lacunasoftware/psc:1 -- gen-enc-key

Para preencher as configurações Application__SigningCertificatePfxContent e Application__SigningCertificatePfxPassword, gere um arquivo PFX com um certificado autoassinado para assinar os tokens OAuth:

docker run lacunasoftware/psc:1 -- gen-cert "Your GrantID Name" SOME_PASSWORD

A saída será semelhante a:

$ docker run lacunasoftware/psc:1 -- gen-cert "Patorum ID" "1234"
PSC entrypoint invoked
Starting application

#
# PFX
#
MIIPwQ...AAA=

#
# Certificate
#
-----BEGIN CERTIFICATE-----
MIIE...
.......
.......
-----END CERTIFICATE-----

#
# Thumbprint
#
0123...

Copie todo o conteúdo da seção PFX (tudo em uma única linha) para a configuração Application__SigningCertificatePfxContent (no exemplo acima, MIIPwQ...AAA=; na prática, será uma única linha com cerca de 5.000 caracteres) e preencha a configuração Application__SigningCertificatePfxPassword com a mesma senha usada no comando de geração.

Application__SigningCertificatePfxContent=MIIPwQ...AAA=
Application__SigningCertificatePfxPassword=SOME_PASS

Outras configurações podem ser encontradas na página Configurações do GrantID.

Instalação​

Baixe a imagem estável mais recente, obtenha o arquivo de configuração de exemplo e as variáveis de ambiente necessárias e execute o container.

aviso

Comece com apenas um container, pois na primeira inicialização as tabelas do banco de dados são criadas (mais containers poderiam causar uma condição de corrida). Depois que a inicialização for concluída, você pode executar quantos containers quiser.

Em seguida, siga os passos em Procedimento pós-instalação do GrantID para concluir a instalação.

Portas expostas​

O GrantID é composto de três serviços, que a imagem expõe em um único container, escutando nas seguintes portas:

ServiçoPorta padrãoVariável de ambiente para personalizar
Identity Service5010GRANTID_IDENTITY_SERVICE_PORT
Auth Server5011GRANTID_AUTH_SERVER_PORT
Console5012GRANTID_CONSOLE_PORT
observação

Se você precisar de uma imagem por serviço, para ter um controle mais granular dos seus containers, entre em contato conosco.

Roteamento​

A configuração do seu ambiente deve direcionar o tráfego dos domínios da aplicação para as portas do container da seguinte forma:

Tipo de domínioExemploPorta de destino no container
Domínio baseid.yourcompany.com5011 (Auth Server)
Loginlogin.id.yourcompany.com5011 (Auth Server)
Consoleconsole.id.yourcompany.com5012 (Console)
APIapi.id.yourcompany.com5010 (Identity Service)

Exemplo​

Em um ambiente de produção, normalmente você usaria um orquestrador de Docker para tratar questões como o roteamento e um servidor de banco de dados dedicado (ou um banco de dados oferecido como IaaS). Para fins de teste, porém, é possível executar uma instância do GrantID com uma instância do PostgreSQL usando apenas o Docker e simular o roteamento fazendo a resolução DNS dos domínios da aplicação apontar para a interface de loopback.

Comece acrescentando as entradas abaixo ao arquivo hosts do seu sistema operacional (no Windows, C:\Windows\System32\drivers\etc\hosts; no Linux, /etc/hosts) para mapear os domínios do auth server para a interface de loopback (substitua os domínios pelos seus domínios base e de login):

127.0.0.1 id.yourcompany.com
127.0.0.1 login.id.yourcompany.com

Crie um volume para o servidor de banco de dados:

docker volume create grantid_sql

Inicie-o com uma senha de sua escolha (substitua SOME_PASS abaixo):

docker run --name grantid_sql -v grantid_sql:/var/lib/postgresql/data -p 5432:5432 -e "POSTGRES_PASSWORD=SOME_PASS" -d postgres

Verifique se há erros nos logs do container:

docker logs -f grantid_sql

Isso pode levar alguns minutos. Quando o servidor de banco de dados estiver no ar, pressione CTRL+C para sair dos logs.

Crie um volume para usar como blob storage e outro para armazenar as chaves de proteção de dados:

docker volume create grantid_data
docker volume create grantid_keys

Em seguida, baixe o arquivo de ambiente de exemplo, salve-o com o nome grantid.env e preencha-o.

Na configuração da connection string, use o valor abaixo, substituindo HOST_IP pelo endereço IP do host e SOME_PASS pela senha que você escolheu para o PostgreSQL:

ConnectionStrings__DefaultConnection=Host=HOST_IP;Database=grantid;Username=postgres;Password=SOME_PASS
ConnectionStrings__DefaultConnection_ProviderName=Postgres

Defina as configurações de URL da seguinte forma (substitua a URL do auth server pelo seu domínio base):

Application__AuthServerUrl=http://id.yourcompany.com/
Application__ConsoleUrl=http://localhost:8080/
Application__UseSsl=False

Agora, execute o container com o arquivo de configuração, montando o volume grantid_data em /var/app e o grantid_keys em /var/keys, e expondo a porta do auth server do container (5011) na porta 80 do host e a porta do console do container (5012) na porta 8080 do host:

docker run --name grantid --env-file grantid.env -v grantid_data:/var/app -v grantid_keys:/var/keys -p 80:5011 -p 8080:5012 -d lacunasoftware/grantid:5.5.0
dica

Se receber uma credencial com privilégios suficientes, o GrantID tenta criar o banco de dados de destino no servidor (que é o que acontece neste caso)

Verifique se há erros de configuração nos logs do container:

docker logs -f grantid

Se tudo estiver configurado corretamente, você conseguirá acessar o console do GrantID em localhost:8080

observação

Lembre-se de seguir os passos em Procedimento pós-instalação do GrantID para concluir a instalação.

Veja também​

Ver em Markdown