Este documento descreve como configurar um Centro de Distribuição de Chaves (KDC) Kerberos e um aplicativo web autenticado por SPNEGO/Kerberos em uma instância de EC2 do Amazon Linux 2023, e como configurar o gerenciador de trabalhos de Sintéticos (SJM) para executar monitores com suporte à autenticação Kerberos.
Valores de espaço reservado
Antes de começar, identifique os seguintes valores para o seu ambiente. Substitua cada espaço reservado pelo seu próprio valor onde quer que ele apareça neste documento.
Espaço reservado
Descrição
Exemplo
<REALM_NAME>
Realm do Kerberos (deve estar em maiúsculas)
KERBTEST.LOCAL
<EC2_PRIVATE_IP>
Endereço IPv4 privado da instância de EC2
10.8.9.172
<EC2_INTERNAL_HOSTNAME>
Nome de domínio totalmente qualificado (FQDN) do aplicativo web
ip-X-X-X-X.ec2.internal
<CLIENT_PRINCIPAL>
Identidade Kerberos atribuída aos workers de Sintéticos
synthetics-test
<CLIENT_KEYTAB_PATH>
Caminho completo no host onde o keytab do cliente está armazenado
/home/ec2-user/kerb-test/synthetics-test.keytab
<PRIVATE_LOCATION_KEY>
Chave de localização privada da New Relic
NRSP-us...
Parte 1: configurar o ambiente de host
Instale o servidor KDC do Kerberos e as ferramentas de administração na instância de EC2 do host:
bash
$
sudo dnf install-y krb5-server krb5-workstation
Configure o /etc/krb5.conf para direcionar requests de realm para o seu KDC:
bash
$
sudotee /etc/krb5.conf > /dev/null <<'EOF'
$
[libdefaults]
$
default_realm = <REALM_NAME>
$
dns_lookup_realm = false
$
dns_lookup_kdc = false
$
rdns = false
$
$
[realms]
$
<REALM_NAME> = {
$
kdc = <EC2_PRIVATE_IP>
$
admin_server = <EC2_PRIVATE_IP>
$
}
$
$
[domain_realm]
$
<EC2_INTERNAL_HOSTNAME> = <REALM_NAME>
$
EOF
Defina as regras de porta e criptografia para o serviço KDC:
Gere arquivos keytab contendo credenciais não interativas tanto para o cliente (worker de Sintéticos) quanto para o nome principal de serviço (SPN) do servidor web de destino:
bash
$
mkdir-p /home/ec2-user/kerb-test
$
$
# 1. Create client principal & keytab for synthetics runners
Esta etapa só é necessária se desejar executar um servidor web de teste no mesmo host para validar a configuração. Ela não é necessária para configurar o SJM.
Implante um contêiner Apache configurado com mod_auth_gssapi:
Um teste bem-sucedido responde com HTTP/1.1 200 OK e exibe o conteúdo da página web protegida.
Parte 2: configurar o gerenciador de jobs de Sintéticos para o Kerberos
Para permitir que os contêineres de runner de navegador de Sintéticos resolvam automaticamente o KDC, adquiram tickets Kerberos e se autentiquem em endpoints protegidos, adicione as seguintes variáveis de ambiente e montagens de volume do Kerberos ao seu comando SJM docker run padrão.
Comando padrão (sem Kerberos)
bash
$
docker run -ePRIVATE_LOCATION_KEY=<PRIVATE_LOCATION_KEY>\
>
-d--restart unless-stopped \
>
-v /var/run/docker.sock:/var/run/docker.sock:rw \
>
newrelic/synthetics-job-manager
Comando obrigatório (com suporte a Kerberos habilitado)
Adicionar as seguintes variáveis de ambiente (-e) e a montagem de volume do keytab (-v) ao seu comando docker run: