13 Configuração do SAML com Okta

Esta seção fornece diretrizes para configurar o Okta para habilitar a autenticação SAML 2.0 e o provisionamento de usuários para o Zabbix.

Configuração do Okta

1. Acesse https://developer.okta.com/signup/ e registre-se/entre na sua conta.

2. Na interface web do Okta, navegue até Applications → Applications.

3. Clique em Create App Integration.

Selecione "SAML 2.0" como método de login e clique em Next.

4. Nas configurações gerais, preencha o nome do app e clique em Next.

5. Na configuração SAML, insira os valores fornecidos abaixo e, em seguida, clique em Next.

  • Em General, adicione:

    • Single sign-on URL: http://<your-zabbix-url>/zabbix/index_sso.php?acs
      Observe o uso de "http", e não "https", para que o parâmetro acs não seja removido da requisição. A caixa de seleção Use this for Recipient URL and Destination URL também deve estar marcada.
    • Audience URI (SP Entity ID): zabbix
      Observe que este valor será usado dentro da asserção SAML como um identificador exclusivo do provedor de serviço (se não corresponder, a operação será rejeitada). É possível especificar uma URL ou qualquer string de dados neste campo.
    • Default RelayState:
      Deixe este campo em branco; se for necessário um redirecionamento personalizado, ele pode ser adicionado no Zabbix em Users → Users.
    • Preencha os demais campos de acordo com sua preferência.
  • Em Attribute Statements/Group Attribute Statements, adicione:

Essas declarações de atributo são inseridas nas asserções SAML compartilhadas com o Zabbix.

Os nomes de atributo usados aqui são exemplos arbitrários. Você pode usar nomes de atributo diferentes; no entanto, é necessário que eles correspondam ao valor do respectivo campo nas configurações SAML do Zabbix.

Se você quiser configurar o login SAML no Zabbix sem provisionamento de usuários JIT, então apenas o atributo de e-mail é necessário.

Se estiver planejando usar uma conexão criptografada, gere os certificados de criptografia privado e público e, em seguida, envie o certificado público para o Okta. O formulário de upload do certificado aparece quando Assertion Encryption é definido como "Encrypted" (clique em Show Advanced Settings para encontrar esse parâmetro).

6. Na próxima aba, selecione "I'm a software vendor. I'd like to integrate my app with Okta" e clique em Finish.

7. Navegue até a aba "Assignments" da aplicação recém-criada e clique no botão Assign, depois selecione "Assign to People" no menu suspenso.

8. Na janela pop-up que aparecer, atribua o app às pessoas que usarão SAML 2.0 para autenticar no Zabbix e, em seguida, clique em Save and go back.

9. Navegue até a aba "Sign On" e clique no botão View Setup Instructions.

As instruções de configuração serão abertas em uma nova aba; mantenha essa aba aberta enquanto configura o Zabbix.

Configuração do Zabbix

1. No Zabbix, acesse as configurações de SAML e preencha as opções de configuração com base nas instruções de configuração do Okta:

Campo do Zabbix Campo de configuração no Okta Valor de exemplo
IdP entity ID Identity Provider Issuer
SSO service URL Identity Provider Single Sign-On URL
Username attribute Attribute name usrEmail
SP entity ID Audience URI zabbix
Group name attribute Attribute name groups
User name attribute Attribute name user_name
User last name attribute Attribute name user_lastname

Também é necessário configurar o mapeamento de grupos de usuários e de mídia.

2. Baixe o certificado fornecido nas instruções de configuração de SAML do Okta para a pasta ui/conf/certs como idp.crt.

Defina permissões 644 para ele executando:

chmod 644 idp.crt

3. Se Assertion Encryption tiver sido definido como "Encrypted" no Okta, a caixa de seleção "Assertions" do parâmetro Encrypt também deverá estar marcada no Zabbix.

4. Clique no botão "Update" para salvar essas configurações.

Provisionamento SCIM

1. Para ativar o provisionamento SCIM, vá para "General" -> "App Settings" do aplicativo no Okta.

Marque a caixa de seleção Enable SCIM provisioning. Como resultado, uma nova aba Provisioning será exibida.

2. Vá para a aba "Provisioning" para configurar uma conexão SCIM:

  • Em SCIM connector base URL, especifique o caminho para o frontend do Zabbix e acrescente api_scim.php a ele, ou seja:
    https://<your-zabbix-url>/zabbix/api_scim.php
  • Unique identifier field for users: email
  • Authentication mode: HTTP header
  • Em Authorization, insira um token de API válido com direitos de Super admin

Se você estiver enfrentando problemas de autenticação, consulte Authorization header forwarding.

3. Clique em Test Connector Configuration para testar a conexão. Se tudo estiver correto, uma mensagem de sucesso será exibida.

4. Em "Provisioning" -> "To App", certifique-se de marcar as seguintes caixas de seleção:

  • Create Users
  • Update User Attributes
  • Deactivate Users

Isso garantirá que esses tipos de solicitação sejam enviados ao Zabbix.

5. Certifique-se de que todos os atributos definidos em SAML estejam definidos em SCIM. Você pode acessar o editor de perfil do seu aplicativo em "Provisioning" -> "To App", clicando em Go to Profile Editor.

Clique em Add Attribute. Preencha os valores de Display name, Variable name, External name com o nome do atributo SAML, por exemplo, user_name.

External namespace deve ser o mesmo que o schema de usuário: urn:ietf:params:scim:schemas:core:2.0:User

6. Vá para "Provisioning" -> "To App" -> "Attribute Mappings" do seu aplicativo. Clique em Show Unmapped Attributes na parte inferior. Os atributos recém-adicionados aparecerão.

7. Mapeie cada atributo adicionado.

8. Adicione usuários na aba "Assignments". Os usuários precisam ter sido adicionados anteriormente em Directory -> People. Todas essas atribuições serão enviadas como solicitações ao Zabbix.

9. Adicione grupos na aba "Push Groups". O padrão de mapeamento do grupo de usuários nas configurações SAML do Zabbix deve corresponder a um grupo especificado aqui. Se não houver correspondência, o usuário não poderá ser criado no Zabbix.

As informações sobre os membros do grupo são enviadas sempre que alguma alteração é feita.