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:
A imagem atualmente recomendada é a lacunasoftware/grantid:5.5.0
Tags móveis disponíveis:
- A tag
5aponta para a última imagem 5.x - A tag
stableaponta 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.
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ço | Porta padrão | Variável de ambiente para personalizar |
|---|---|---|
| Identity Service | 5010 | GRANTID_IDENTITY_SERVICE_PORT |
| Auth Server | 5011 | GRANTID_AUTH_SERVER_PORT |
| Console | 5012 | GRANTID_CONSOLE_PORT |
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ínio | Exemplo | Porta de destino no container |
|---|---|---|
| Domínio base | id.yourcompany.com | 5011 (Auth Server) |
| Login | login.id.yourcompany.com | 5011 (Auth Server) |
| Console | console.id.yourcompany.com | 5012 (Console) |
| API | api.id.yourcompany.com | 5010 (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
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
Lembre-se de seguir os passos em Procedimento pós-instalação do GrantID para concluir a instalação.