Usar cartões inteligentes para autenticação no WorkSpaces Personal
Os pacotes Windows e Linux WorkSpaces nos pacotes DCV permitem o uso de cartões inteligentes Common Access Card (CAC)
O Amazon WorkSpaces é compatível ao uso de cartões inteligentes para autenticação pré-sessão e autenticação em sessão. A autenticação pré-sessão se refere à autenticação por cartão inteligente executada enquanto os usuários estão fazendo login nos WorkSpaces. A autenticação em sessão se refere à autenticação executada após o login.
Por exemplo, os usuários podem usar cartões inteligentes para autenticação em sessão enquanto trabalham com navegadores e aplicações da web. Eles também podem usar cartões inteligentes para ações que exigem permissões administrativas. Por exemplo, se o usuário tiver permissões administrativas no Linux WorkSpace, poderá usar cartões inteligentes para se autenticar ao executar os comandos sudo
e sudo -i
.
Conteúdo
Requisitos
-
É necessário um diretório do Active Directory Connector (AD Connector) para a autenticação pré-sessão. O AD Connector usa autenticação mútua de Transport Layer Security (TLS mútuo) baseada em certificado para autenticar usuários no Active Directory usando um certificado de cartão inteligente baseado em hardware ou software. Para obter mais informações sobre como configurar o AD Connector e o diretório on-premises, consulte Configuração do diretório.
-
Para usar um cartão inteligente com um WorkSpace do Windows ou Linux, o usuário deve usar o cliente do Amazon WorkSpaces para Windows versão 3.1.1 ou posterior, ou usar o cliente do WorkSpaces para macOS versão 3.1.5 ou posterior. Para obter mais informações sobre o uso de cartões inteligentes com os clientes Windows e macOS, consulte Suporte ao cartão inteligente no Guia do usuário do Amazon WorkSpaces.
-
Os certificados de CA raiz e cartão inteligente devem atender a determinados requisitos. Para obter mais informações, consulte Habilitar a autenticação mTLS no AD Connector para usar com cartões inteligentes no Guia de administração do AWS Directory Service e Requisitos de certificado
na documentação da Microsoft. Além desses requisitos, os certificados de usuário empregados para autenticação por cartão inteligente no Amazon WorkSpaces devem incluir os seguintes atributos:
-
O userPrincipalName (UPN) do usuário do AD no campo subjectAltName (SAN) do certificado. Recomendamos emitir certificados de cartão inteligente para o UPN padrão do usuário.
-
O atributo de uso estendido de chave (EKU) para autenticação de cliente (1.3.6.1.5.5.7.3.2).
-
O atributo EKU para login com cartão inteligente (1.3.6.1.4.1.311.20.2.2).
-
-
Para autenticação pré-sessão, o protocolo OCSP (Protocolo de status de certificado on-line) é necessário para verificação de revogação do certificado. Para autenticação em sessão, o OCSP é recomendado, mas não obrigatório.
Limitações
-
No momento, somente a aplicação cliente do WorkSpaces para Windows versão 3.1.1 ou posterior e a aplicação cliente do WorkSpaces para macOS versão 3.1.5 ou posterior são compatíveis com a autenticação por cartão inteligente.
-
A aplicação cliente do WorkSpaces para Windows versão 3.1.1 ou posterior é compatível com cartões inteligentes somente quando o cliente está sendo executado em uma versão de 64 bits do Windows.
-
Os WorkSpaces para Ubuntu ainda não são compatíveis com a autenticação por cartão inteligente.
-
Somente os diretórios do AD Connector são atualmente compatíveis com a autenticação por cartão inteligente.
-
A autenticação em sessão está disponível em todas as regiões em que o DCV é compatível. A autenticação pré-sessão está disponível nas seguintes regiões:
-
Região Ásia-Pacífico (Sydney)
-
Região Ásia-Pacífico (Tóquio)
-
Região Europa (Irlanda)
-
AWS Região GovCloud (Leste dos EUA)
-
AWS Região GovCloud (Oeste dos EUA)
-
Região Leste dos EUA (N. da Virgínia)
-
Região Oeste dos EUA (Oregon)
-
-
Para autenticação em sessão e autenticação pré-sessão no Linux ou no Windows WorkSpaces, atualmente, somente um cartão inteligente é permitido por vez.
-
Para a autenticação pré-sessão, não há suporte para habilitar a autenticação por cartão inteligente e a autenticação de login no mesmo diretório.
-
Somente placas CAC e PIV são compatíveis no momento. Outros tipos de cartões inteligentes baseados em hardware ou software também podem funcionar, mas não foram totalmente testados para uso com o DCV.
Configuração do diretório
Para habilitar a autenticação por cartão inteligente, você deve configurar o diretório do AD Connector e o diretório on-premises da maneira a seguir.
Configuração do diretório do AD Connector
Antes de começar, verifique se o diretório do AD Connector foi configurado conforme descrito nos Pré-requisitos do AD Connector no Guia de administração do AWS Directory Service. Especificamente, verifique se você abriu as portas necessárias no firewall.
Para concluir a configuração do diretório do AD Connector, siga as instruções em Habilitar a autenticação mTLS no AD Connector para usar com cartões inteligentes no Guia de administração do AWS Directory Service.
nota
A autenticação por cartão inteligente exige que a Delegação Restrita Kerberos (KCD) funcione corretamente. A KCD exige que a parte do nome de usuário da conta de serviço do AD Connector corresponda ao sAMAccountName do mesmo usuário. Um sAMAccountName não pode exceder 20 caracteres.
Configuração de diretórios on-premises
Além de configurar o diretório do AD Connector, você também deve garantir que os certificados emitidos para os controladores de domínio do diretório on-premises tenham o conjunto de uso estendido de chave (EKU) “Autenticação KDC”. Para fazer isso, use o modelo de certificado de autenticação Kerberos padrão dos Serviços de Domínio do Active Directory (AD DS). Não use um modelo de certificado de Controlador de domínio ou um modelo de certificado de Autenticação do controlador de domínio, pois esses modelos não contêm as configurações necessárias para a autenticação por cartão inteligente.
Habilitar cartões inteligentes para WorkSpaces do Windows
Para obter orientações gerais sobre como habilitar a autenticação por cartão inteligente no Windows, consulte Diretrizes para habilitar o logon de cartão inteligente com autoridades de certificação de terceiros
Como detectar a tela de bloqueio do Windows e desconectar a sessão
Para permitir que os usuários desbloqueiem os WorkSpaces do Windows que estão habilitados para autenticação pré-sessão com cartão inteligente quando a tela está bloqueada, você pode ativar a detecção da tela de bloqueio do Windows nas sessões dos usuários. Quando a tela de bloqueio do Windows é detectada, a sessão do WorkSpace é desconectada e o usuário pode se reconectar pelo cliente do WorkSpaces usando o cartão inteligente.
Você pode habilitar a desconexão da sessão quando a tela de bloqueio do Windows for detectada usando as configurações de Política de grupo. Para ter mais informações, consulte Habilitar ou desabilitar a desconexão da sessão ao bloquear a tela para DCV.
Como habilitar a autenticação em sessão ou pré-sessão
Por padrão, os WorkSpaces do Windows não estão habilitados para oferecer suporte ao uso de cartões inteligentes para autenticação pré-sessão ou em sessão. Se necessário, você pode habilitar a autenticação em sessão e pré-sessão para o WorkSpaces do Windows usando as configurações de Política de grupo. Para ter mais informações, consulte Habilitar ou desabilitar o redirecionamento de cartão inteligente para DCV.
Para usar a autenticação pré-sessão, além de atualizar as configurações de Política de grupo, você também deve habilitar a autenticação pré-sessão por meio das configurações de diretório do AD Connector. Para obter mais informações, siga as instruções em Habilitar a autenticação mTLS no AD Connector para usar em cartões inteligentes no Guia de administração do AWS Directory Service.
Como permitir que os usuários usem cartões inteligentes em um navegador
Se os usuários estiverem usando o Chrome como navegador, nenhuma configuração especial será necessária para usar cartões inteligentes.
Se os usuários estiverem usando o Firefox como navegador, você pode permitir que eles usem cartões inteligentes no Firefox por meio da Política de grupo. Você pode usar esses modelos de Política de grupo do Firefox
Por exemplo, você pode instalar a versão de 64 bits do OpenSC
é o valor que você deseja usar para identificar o PKCS #11, como NAME_OF_DEVICE
OpenSC
, e onde
é o caminho para o módulo PKCS #11. Esse caminho deve apontar para uma biblioteca com uma extensão .DLL, como PATH_TO_LIBRARY_FOR_DEVICE
C:\Program Files\OpenSC Project\OpenSC\pkcs11\onepin-opensc-pkcs11.dll
.
Software\Policies\Mozilla\Firefox\SecurityDevices\
NAME_OF_DEVICE
=PATH_TO_LIBRARY_FOR_DEVICE
dica
Se estiver usando o OpenSC, você também pode carregar o módulo OpenSC pkcs11
no Firefox executando o programa pkcs11-register.exe
. Para executar esse programa, clique duas vezes no arquivo em C:\Program Files\OpenSC Project\OpenSC\tools\pkcs11-register.exe
ou abra uma janela do prompt de comando e execute o seguinte comando:
"C:\Program Files\OpenSC Project\OpenSC\tools\pkcs11-register.exe"
Para verificar se o módulo OpenSC pkcs11
foi carregado no Firefox, faça o seguinte:
-
Se o Firefox já estiver em execução, feche-o.
-
Abra o Firefox. Selecione o botão de menu no canto superior direito e, em seguida, selecione Opções.
-
Na página about:preferences, no painel de navegação esquerdo, selecione Privacidade e segurança.
-
Em Certificados, selecione Dispositivos de segurança.
-
Na caixa de diálogo Gerenciador de dispositivos, você deve ver o Framework de cartão inteligente OpenSC (0.21) na navegação à esquerda, e ela deve ter os seguintes valores ao selecioná-la:
Módulo:
OpenSC smartcard framework (0.21)
Caminho:
C:\Program Files\OpenSC Project\OpenSC\pkcs11\onepin-opensc-pkcs11.dll
Solução de problemas
Para obter informações sobre como solucionar problemas de cartões inteligentes, consulte Problemas de certificado e configuração
Algumas questões comuns que podem causar problemas:
-
Mapeamento incorreto dos slots para os certificados.
-
Ter vários certificados no cartão inteligente que possam corresponder ao usuário. Os certificados são correspondidos de acordo com os seguintes critérios:
-
A CA raiz para o certificado.
-
Os campos
<KU>
e<EKU>
do certificado. -
O UPN no assunto do certificado.
-
-
Ter vários certificados que tenham
<EKU>msScLogin
no uso de chave.
Em geral, é melhor ter apenas um certificado para autenticação por cartão inteligente que esteja mapeado no primeiro slot do cartão inteligente.
As ferramentas para gerenciar os certificados e as chaves no cartão inteligente (como remover ou remapear os certificados e as chaves) podem ser específicas do fabricante. Para obter mais informações, consulte a documentação fornecida pelo fabricante dos seus cartões inteligentes.
Habilitar cartões inteligentes para WorkSpaces do Linux
nota
Os WorkSpaces para Linux no DCV têm as seguintes limitações:
-
Área de transferência, entrada de áudio, entrada de vídeo e redirecionamento de fuso horário não são compatíveis.
-
Não há compatibilidade para vários monitores.
-
Você deve usar a aplicação cliente do WorkSpaces para Windows para se conectar ao WorkSpaces do Linux no DCV.
Para permitir o uso de cartões inteligentes no WorkSpaces do Linux, você precisa incluir um arquivo do certificado CA raiz no formato PEM na imagem do WorkSpace.
Como obter o certificado CA raiz
Você pode obter o certificado CA raiz de várias formas:
-
Você pode usar um certificado CA raiz operado por uma autoridade de certificação de terceiros.
-
Você pode exportar seu próprio certificado CA raiz usando o site de inscrição web, que é
http://
ouip_address
/certsrvhttp://
, ondefqdn
/certsrv
eip_address
são o endereço IP e o nome de domínio totalmente qualificado (FQDN) do servidor de certificação CA raiz. Para obter mais informações sobre como usar o site de inscrição web, consulte Como exportar o certificado de autoridade de certificação raizfqdn
na documentação da Microsoft. -
Você pode usar o procedimento a seguir para exportar o certificado de CA raiz de um servidor de certificação de CA raiz que esteja executando os Serviços de Certificados do Active Directory (AD CS). Para obter informações sobre a instalação do AD CS, consulte Instalar a autoridade de certificação
na documentação da Microsoft. -
Faça login no servidor CA raiz usando uma conta de administrador.
-
No menu Iniciar do Windows, abra uma janela do prompt de comando (Iniciar > Sistema Windows > Prompt de comando).
-
Use o seguinte comando para exportar o certificado de CA raiz para um novo arquivo, onde
é o nome do arquivo:rootca
.cercertutil -ca.cert
rootca
.cerPara obter mais informações sobre como executar o certutil, consulte certutil
na documentação da Microsoft. -
Use o comando OpenSSL a seguir para converter o certificado de CA raiz exportado do formato DER para o formato PEM, em que
rootca
é o nome do certificado. Para obter mais informações sobre OpenSSL, consulte www.openssl.org. openssl x509 -inform der -in
rootca
.cer -out /tmp/rootca
.pem
-
Como adicionar o certificado de CA raiz ao WorkSpaces do Linux
Para ajudá-lo a habilitar cartões inteligentes, adicionamos o script enable_smartcard
aos nossos pacotes Amazon Linux DCV. Esse script executa as seguintes ações:
-
Importe o certificado de CA raiz para o banco de dados Network Security Services (NSS)
. -
Instala o módulo
pam_pkcs11
para autenticação do módulo de autenticação conectável (PAM). -
Executa uma configuração padrão, que inclui a ativação de
pkinit
durante o provisionamento do WorkSpace.
O procedimento a seguir explica como usar o script enable_smartcard
para adicionar o certificado de CA raiz aos WorkSpaces do Linux e habilitar cartões inteligentes para os WorkSpaces do Linux.
-
Crie um novo WorkSpace do Linux com o protocolo DCV ativado. Ao iniciar o WorkSpace no console do Amazon WorkSpaces, na página Selecionar pacotes, certifique-se de selecionar DCV para o protocolo e, em seguida, selecione um dos pacotes públicos do Amazon Linux 2.
-
No novo WorkSpace, execute o comando a seguir como root, onde
é o caminho para o arquivo de certificado de CA raiz no formato PEM.pem-path
/usr/lib/skylight/enable_smartcard --ca-cert
pem-path
nota
O WorkSpaces para Linux pressupõe que os certificados nos cartões inteligentes são emitidos para o nome de entidade principal de usuário (UPN), como
, em quesAMAccountName
@domain
é um nome de domínio totalmente qualificado (FQDN).domain
Para usar sufixos UPN alternativos,
run /usr/lib/skylight/enable_smartcard --help
para obter mais informações. O mapeamento para sufixos UPN alternativos é exclusivo para cada usuário. Portanto, esse mapeamento deve ser realizado individualmente no WorkSpace de cada usuário. -
(Opcional) Por padrão, todos os serviços estão habilitados para usar autenticação de cartão inteligente no WorkSpaces do Linux. Para limitar a autenticação por cartão inteligente para serviços específicos, você deve editar
/etc/pam.d/system-auth
. Remova o comentário da linhaauth
parapam_succeed_if.so
e edite a lista de serviços conforme necessário.Depois o comentário da linha
auth
for removido, para permitir que um serviço use a autenticação por cartão inteligente, você deve adicioná-lo à lista. Para fazer com que um serviço use somente autenticação por senha, é necessário removê-lo da lista. -
Execute qualquer personalização adicional no WorkSpace. Por exemplo, talvez você queira adicionar uma política em todo o sistema para permitir que os usuários usem cartões inteligentes no Firefox. (Os usuários do Chrome devem habilitar os cartões inteligentes nos clientes por conta própria. Para obter mais informações, consulte Suporte ao cartão inteligente no Guia do usuário do Amazon WorkSpaces.)
-
Crie uma imagem personalizada do WorkSpace e empacote a partir do WorkSpace.
-
Use o novo pacote personalizado para ativar os WorkSpaces para os usuários.
Como permitir que os usuários usem cartões inteligentes no Firefox
Você pode permitir que os usuários usem cartões inteligentes no Firefox adicionando uma política SecurityDevices à imagem do WorkSpace do Linux. Para obter mais informações sobre como adicionar políticas para todo o sistema ao Firefox, consulte os modelos de políticas do Mozilla
-
No WorkSpace que você está usando para criar a imagem do WorkSpace, crie um novo arquivo chamado
policies.json
em/usr/lib64/firefox/distribution/
. -
No arquivo JSON, adicione a política SecurityDevices a seguir, onde
é o valor que você deseja usar para identificar o móduloNAME_OF_DEVICE
pkcs
. Por exemplo, é possível usar um valor como"OpenSC"
:{ "policies": { "SecurityDevices": { "
NAME_OF_DEVICE
": "/usr/lib64/opensc-pkcs11.so" } } }
Solução de problemas
Para solucionar problemas, recomendamos adicionar o utilitário pkcs11-tools
. Esse utilitário permite que você execute as seguintes ações:
-
Liste cada cartão inteligente.
-
Liste os slots em cada cartão inteligente.
-
Liste os certificados em cada cartão inteligente.
Algumas questões comuns que podem causar problemas:
-
Mapeamento incorreto dos slots para os certificados.
-
Ter vários certificados no cartão inteligente que possam corresponder ao usuário. Os certificados são correspondidos de acordo com os seguintes critérios:
-
A CA raiz para o certificado.
-
Os campos
<KU>
e<EKU>
do certificado. -
O UPN no assunto do certificado.
-
-
Ter vários certificados que tenham
<EKU>msScLogin
no uso de chave.
Em geral, é melhor ter apenas um certificado para autenticação por cartão inteligente que esteja mapeado no primeiro slot do cartão inteligente.
As ferramentas para gerenciar os certificados e as chaves no cartão inteligente (como remover ou remapear os certificados e as chaves) podem ser específicas do fabricante. Ferramentas adicionais que você pode usar para trabalhar com cartões inteligentes são:
-
opensc-explorer
-
opensc-tool
-
pkcs11_inspect
-
pkcs11_listcerts
-
pkcs15-tool
Como habilitar log de depuração
Para solucionar os problemas de configuração pam_pkcs11
e pam-krb5
, você pode ativar o log de depuração.
-
No arquivo
/etc/pam.d/system-auth-ac
, edite a açãoauth
e altere o parâmetronodebug
depam_pksc11.so
paradebug
. -
No arquivo
/etc/pam_pkcs11/pam_pkcs11.conf
, alteredebug = false;
paradebug = true;
. A opçãodebug
se aplica separadamente a cada módulo mapeador, portanto, talvez seja necessário alterá-la diretamente na seçãopam_pkcs11
e também na seção apropriada do mapeador (por padrão, émapper generic
). -
No arquivo
/etc/pam.d/system-auth-ac
, edite a açãoauth
e adicione o parâmetrodebug
oudebug_sensitive
parapam_krb5.so
.
Depois de habilitar o log de depuração, o sistema imprime mensagens de depuração pam_pkcs11
diretamente no terminal ativo. As mensagens de pam_krb5
estão registradas em /var/log/secure
.
Para verificar a qual nome de usuário um certificado de cartão inteligente está mapeado, use o seguinte comando pklogin_finder
:
sudo pklogin_finder debug config_file=/etc/pam_pkcs11/pam_pkcs11.conf
Quando solicitado, digite o PIN do cartão inteligente. pklogin_finder
gera como saída em stdout
o nome de usuário no certificado do cartão inteligente no formato
. Esse nome de usuário deve corresponder ao nome de usuário do WorkSpace.NETBIOS
\username
Nos Serviços de Domínio do Active Directory (AD DS), o nome de domínio NetBIOS é o nome de domínio anterior ao Windows 2000. Normalmente (mas nem sempre), o nome de domínio NetBIOS é o subdomínio do nome de domínio do Sistema de Nomes de Domínio (DNS). Por exemplo, se o nome do domínio DNS for example.com
, o nome de domínio NetBIOS geralmente é EXAMPLE
. Se o nome do domínio DNS for corp.example.com
, o nome de domínio NetBIOS geralmente é CORP
.
Por exemplo, para o usuário mmajor
no domínio corp.example.com
, a saída de pklogin_finder
é CORP\mmajor
.
nota
Se você receber a mensagem "ERROR:pam_pkcs11.c:504: verify_certificate()
failed"
, essa mensagem indica que pam_pkcs11
encontrou um certificado no cartão inteligente que corresponde aos critérios do nome de usuário, mas que não está vinculado a um certificado de CA raiz reconhecido pela máquina. Quando isso acontece, pam_pkcs11
gera a mensagem acima e, em seguida, tenta o próximo certificado. Isso permite a autenticação somente se encontrar um certificado que corresponda ao nome de usuário e esteja encadeado a um certificado de CA raiz reconhecido.
Para solucionar problemas de configuração pam_krb5
, você pode invocar manualmente kinit
no modo de depuração com o seguinte comando:
KRB5_TRACE=/dev/stdout kinit -V
Esse comando deve obter com sucesso um tíquete de concessão de tíquetes (TGT) Kerberos. Se isso falhar, tente adicionar explicitamente o nome de entidade principal correto do Kerberos ao comando. Por exemplo, para o usuário mmajor
no domínio corp.example.com
, use este comando:
KRB5_TRACE=/dev/stdout kinit -V mmajor
Se esse comando for bem-sucedido, o problema provavelmente está no mapeamento do nome de usuário do WorkSpace para o nome de entidade principal do Kerberos. Verifique a seção [appdefaults]/pam/mappings
no arquivo /etc/krb5.conf
.
Se esse comando não for bem-sucedido, mas um comando kinit
baseado em senha tiver sucesso, verifique as configurações relacionadas a pkinit_
no arquivo /etc/krb5.conf
. Por exemplo, se o cartão inteligente possuir mais de um certificado, talvez seja necessário fazer alterações no pkinit_cert_match
.